iptablesの設定
ネットワーク構成
①CTU → ②KVM Server → ③サーバ(eth0)=④サーバ(eth1) → ⑤内部ネットワーク
- CTU 192.168.24.1 フレッツのルータ
- KVM Server 192.168.24.150 KVM Server
- FW サーバ(eth0) 192.168.24.200 フレッツ側のLAN(internet)
- FW サーバ(eth1) 192.168.0.200 内部側のLAN(internal)
- 内部ネットワーク 192.168.0.0/24 内部ネットワーク
【要件】
- 外部からの接続パケットは基本的にすべて破棄
- ただし接続済み通信のパケットは許可
- 内部からの接続パケットは基本的にすべて許可
- ループバックアドレスに関してはすべて許可
- メンテナンスホスト(192.168.24.200)へのSSHは許可(TCP 22)
- Linuxサーバ(eth1)を経由して外部へ出ていくパケットのソースアドレスを変換(内部アドレス→外部アドレス)
NICの設定
(1)外部用のネットワークをeth0 に設定
# vi /etc/sysconfig/network-scripts/ifcfg-eth0 # Xen Virtual Ethernet DEVICE=eth0 BOOTPROTO=none ONBOOT=yes HWADDR=5e:15:d3:78:5e:ac NETMASK=255.255.255.0 IPADDR=192.168.24.200 TYPE=Ethernet
(2)内部用のネットワークをeth1 に設定
# vi /etc/sysconfig/network-scripts/ifcfg-eth1 # Xen Virtual Ethernet DEVICE=eth1 BOOTPROTO=none ONBOOT=yes HWADDR=52:9c:72:91:33:e2 NETMASK=255.255.255.0 IPADDR=192.168.0.200 TYPE=Ethernet
(3)外部接続時のルートを設定
# route add -net 192.168.24.0 gw 192.168.24.1 metric 1 netmask 255.255.255.0 eth0
(4)内部部接続時のルートを設定
# route add -net 192.168.0.0 gw 192.168.0.200 metric 1 netmask 255.255.255.0 eth1
iptabls の設定
(1)ip_forwardを有効にする
暫定的に有効(再起動すると初期値に戻る)
#echo 1 > /proc/sys/net/ipv4/ip_forward
(2)sysctl.confを編集
暫定的に有効(再起動しても有効)
# vi /etc/sysctl.conf # Kernel sysctl configuration file for Red Hat Linux # Kernel sysctl configuration file for Red Hat Linux # # For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and # sysctl.conf(5) for more details. # Controls IP packet forwarding net.ipv4.ip_forward = 1
(3)sysctl.confの内容を反映
# sysctl -p
(4)iptables の設定をおこなう
@it のip_forwardを参考にしながらスクリプトを作成
#! /bin/sh trusthost='192.168.24.200' internal_ip='192.168.0.0/24' my_internet_ip='192.168.24.200' my_internal_ip='192.168.0.200' ############## #Flush & Reset ############## iptables -F iptables -t nat -F iptables -X ############## #Deafult Rule ############## iptables -P INPUT DROP iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP iptables -A FORWARD -i eth1 -o eth0 -s $internal_ip -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT ######### #loopback ######### iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT ####################### #ICMP ####################### iptables -A INPUT -p icmp --icmp-type echo-request -s $my_internet_ip -d $my_internal_ip -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type echo-reply -s $my_internal_ip -d $my_internet_ip -j ACCEPT ####################### #ssh trusthost-> myhost ####################### iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP iptables -A INPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -s $trusthost -d $my_internal_ip --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp -s $my_internal_ip --sport 22 -d $trusthost -j ACCEPT ################# #SNAT(masquerade) ################# iptables -t nat -A POSTROUTING -o eth0 -s $internal_ip -j MASQUERADE ################################################ #Outgoing packet should be real internet Address ################################################ #iptables -A OUTPUT -o eth0 -d 10.0.0.0/8 -j DROP #iptables -A OUTPUT -o eth0 -d 176.16.0.0/12 -j DROP #iptables -A OUTPUT -o eth0 -d 192.168.0.0/16 -j DROP #iptables -A OUTPUT -o eth0 -d 127.0.0.0/8 -j DROP ######### #logging ######### iptables -N LOGGING iptables -A LOGGING -j LOG --log-level warning --log-prefix "DROP:" -m limit iptables -A LOGGING -j DROP iptables -A INPUT -j LOGGING iptables -A FORWARD -j LOGGING
iptablesの起動
(1)iptablesのルールを保存(再起動しても有効とするため)
# /etc/rc.d/init.d/iptables save ファイアウォールのルールを /etc/sysconfig/iptables に保存中[ OK ]
(2)iptablesを起動
# /etc/init.d/iptables start ファイアウォールルールを適用中: [ OK ] チェインポリシーを ACCEPT に設定中filter nat [ OK ] iptables モジュールを取り外し中 [ OK ] iptables ファイアウォールルールを適用中: [ OK ] iptables モジュールを読み込み中ip_conntrack_netbios_ns ip_c[ OK ]_ftp
(3)自動起動を設定
# chkconfig iptables on
(4)自動起動を確認
chkconfig --list iptables iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ディスカッション
コメント一覧
まだ、コメントがありません