>お楽しみコーナー>Linux>インターネットサーバー サイトマップ 最終更新日:2005/07/22

センリュウのホームページへ ようこそ!

 LINUXでインターネットサーバー構築  後編 

 ここではIPマスカレードを使ったファイアーウォールの設定をおこなう。

 8 2枚目のNICの導入 
2枚目のNICを認識させる
Redhatの場合
2枚目のNICを導入すると起動のとき新しいハードウェアが検出されるので、configueで自動設定してやる。
/etc/conf.modules に次の項目が加わる。
       alias eth1 3c509  ←ドライバ(/lib/modules/2.2.*/net/にある)
Turbolinux8の場合
手動で上の設定を/etc/conf.modules に書き込んでやる→マシンの再起動。

9 ネットワークの設定 

etc/host.conf multi on となっていることを確認=1つのホストに複数のIPアドレスが割り当てられている場合、そのすべてを答えとしてリゾルバに返す。

/etc/sysconfig/network(2.2系の場合) NETWORKING=yes
FORWARD_IPV4=yes  ←これをyesにする。
HOSTNAME=ns.kaisha.co.jp
DOMAINNAME=kaisha.co.jp
GATEWAY=333.139.162.225
GATEWAYDEV=eth0

 

/etc/sysctl.conf(2.4系以降の場合) net.ipv4.ip_forward=1
/etc/sysconfig/network-script/ifcfig-eth0 そのまま
/etc/sysconfig/network-script/ifcfig-eth1 DEVICE=eth1
IPADDR=192.168.0.1
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255
ONBOOT=yes 

networkサービスを再起動して、コマンドの ifconfig、route などでうまく作動しているか確かめておく。

 10 ファイアーウォールの設定 

/etc/rc.d/rc.local に次のような起動設定を書き込んでおく。

iptablesの例
MYHOST='333.139.162.226'
LOCALNET='192.168.0.0/24'
NS2='333.139.160.69'     ←セカンダリ
######ルールの初期化######
/sbin/iptables -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
######ポリシー######
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT DROP
######なりすましパケットからの防御######
/sbin/iptables -N spoofing
/sbin/iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j spoofing
/sbin/iptables -A INPUT -i eth0 -d 127.0.0.0/8 -j spoofing
/sbin/iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j spoofing
/sbin/iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j spoofing
/sbin/iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j spoofing
/sbin/iptables -A INPUT -i eth0 -s 255.255.255.255 -j spoofing
/sbin/iptables -A INPUT -i eth0 -s $MYHOST -j spoofing
/sbin/iptables -A spoofing -j LOG --log-prefix "IPTABLES SPOOFING:"
/sbin/iptables -A spoofing -j DROP
######win関連禁止ポート######
/sbin/iptables -N win
/sbin/iptables -A FORWARD -p tcp -m multiport --sport 135,137,138,139,445 -j win
/sbin/iptables -A FORWARD -p udp -m multiport --sport 135,137,138,139,445 -j win
/sbin/iptables -A FORWARD -p tcp -m multiport --dport 135,137,138,139,445 -j win
/sbin/iptables -A FORWARD -p udp -m multiport --dport 135,137,138,139,445 -j win
/sbin/iptables -A win -j LOG --log-prefix "IPTABLES USING_WIN_ PORT:"
/sbin/iptables -A win -j DROP
######IPフォアディングとNAT######
/sbin/iptables -A FORWARD -i eth1 -o eth0 -s $LOCALNET -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to $MYHOST
######ループバックのアクセスはすべて許可######
/sbin/iptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
######接続が確立したものは許可######
/sbin/iptables -A FORWARD -m state --state ESTABLISH,RELATED -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISH,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -m state --state ESTABLISH,RELATED -j ACCEPT
######ローカルネットワークからのアクセスは許可######
/sbin/iptables -A INPUT -i eth1 -s $LOCALNET -j ACCEPT
/sbin/iptables -A OUTPUT -o eth1 -d $LOCALNET -j ACCEPT
######DNS、udpはすべて許可######
/sbin/iptables -A INPUT -p udp --dport 53 -d $MYHOST -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --dport 53 -s $MYHOST -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 53 -s $NS2 -d $MYHOST -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 53 -s $MYHOST -d $NS2 -j ACCEPT
######WWWはすべて許可######
/sbin/iptables -A INPUT -p tcp --dport 80 -d $MYHOST -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 80 -s $MYHOST -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 443 -d $MYHOST -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 443 -s $MYHOST -j ACCEPT
######Mailはすべて許可######
/sbin/iptables -A INPUT -p tcp --dport 25 -d $MYHOST -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 25 -s $MYHOST -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 113 -d $MYHOST -j REJECT --reject-with tcp-reset
/sbin/iptables -A OUTPUT -p tcp --dport 113 -s $MYHOST -j ACCEPT
######icmp######
/sbin/iptables -A INPUT -p icmp -d $MYHOST -j ACCEPT
/sbin/iptables -A OUTPUT -p icmp -s $MYHOST -j ACCEPT

 11 追加モジュールの設定 
 プロトコルの中にはポート情報を持たなかったり(ICMP)、応答パケットとは別の独立なパケットを出すプロトコル(一部のFTPやIRC)がある。このような場合には、一般的なIPマスカレードの変換の仕組みを適用できないので、必要に応じてモジュールを追加して対応しなければならない。ICMPはIPマスカレード機能が構築されていればすでに組み込まれているはず。ところがFTPなどは初期状態では組み込まれていないので、必要な場合は別途に追加しておかなければならない。
 このようなときは/etc/rc.d/rc.local に次のように書き込み、起動時に自動的に読み込むようにする。このモジュールの実体は/lib/modules/2.*.*/kernel/net/ipv4/netfilter/にあるので確認しておくこと。

/etc/rc.d/rc.local 

/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp


以上で基本的な設定はすべて終了である。マシンを再起動してみよう。