iptablesの設定
NATとパケットフィルタ
Webminのiptable Firewallは使わない(使えない)。firewall-masq内のipchainsはバイナリがインストールされていないので動かない。で結局どうなるかというとip-upから呼ばれる、pppoe-firewallが有効になる。良いのか悪いのか分からんがこんな感じで動かした。ポイントは赤字にします。
IPTABLES="/sbin/iptables"
LOCALHOST="127.0.0.1"
LAN_INTERFACE="eth0"
ADSL_INTERFACE="eth1"
insmod /lib/modules/2.4.10/kernel/net/ipv4/netfilter/ipt_LOG.o
とりあえずLOGを使えるようにする
# Flush the Table rules$IPTABLES -F FORWARD
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -t nat -F POSTROUTING
# Policy
$IPTABLES -P FORWARD DROP
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
とりあえずデフォルトドロップ
# Permit all packet for Loopback
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
# Deny IP Spoofing
iptables -A FORWARD -i $ADSL_INTERFACE -s 192.168.253.0/24 -j DROP
外部インターフェイスからPrivateIPは来ない(というか来たらSpoof)ので拒否
# Deny SYN Flood
$IPTABLES -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
# Deny port scan
$IPTABLES -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
## Rules
# Permit all packet from LAN
$IPTABLES -A INPUT -i $LAN_INTERFACE -j ACCEPT
1つ上でSppofingを禁止した上でLANからは許可
# Accept packets for established connections
$IPTABLES -A INPUT -i $ADSL_INTERFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
まずはEstablish Connectionを許可
# Accept new connections to WWW,SSL
$IPTABLES -A INPUT -p tcp -m multiport --destination-port 80,443 -m state --state NEW -j ACCEPT
空けたいポートをここに設定
$IPTABLES -A INPUT -p tcp -i $LAN_INTERFACE -m multiport --destination-port 23,53LANからのみ空けたいポートをここに設定
3 -j ACCEPT# IP Masquerade
$IPTABLES -A FORWARD -s 192.168.253.0/24 -j ACCEPT
LANからのパケットをNATのルールにたどり着けるようにする
$IPTABLES -A FORWARD -p tcp --tcp-flags ACK ACK -j ACCEPT$IPTABLES -A FORWARD -p tcp --tcp-flags FIN FIN -j ACCEPT
戻りパケットは許可する
$IPTABLES -t nat -A POSTROUTING -o $ADSL_INTERFACE -j MASQUERADELANから外にでるパケットに関してNATを設定する
# Deny SMB
$IPTABLES -A OUTPUT -o $ADSL_INTERFACE -p tcp -m multiport --source-port 135,137,138,139,445 -j DROP
$IPTABLES -A OUTPUT -o $ADSL_INTERFACE -p udp -m multiport --source-port 135,137,138,139,445 -j DROP
$IPTABLES -A OUTPUT -o $ADSL_INTERFACE -p tcp -m multiport --destination-port 135,137,138,139,445 -j DROP
$IPTABLES -A OUTPUT -o $ADSL_INTERFACE -p udp -m multiport --destination-port 135,137,138,139,445 -j DROP
OpenBlocksはSAMBAが動いてたりする。OUTPUTはデフォルトACCEPTなので明示的に禁止する
echo 1 > /proc/sys/net/ipv4/ip_forward
iptablesに関しては詳しいページがたくさんあるので、これ以上のことはそれらのページを参照にしてください。
ついでにinetd.confや/etc/rc以下の使用しないサービスはすべて止め、ここなどで、外部からのセキュリティ無料検査などするとよい。