ADSLで常時接続 - ホームサーバを作ろう

戻る

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,53

LANからのみ空けたいポートをここに設定

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 MASQUERADE

LANから外にでるパケットに関して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以下の使用しないサービスはすべて止め、ここなどで、外部からのセキュリティ無料検査などするとよい。

Apache, sendmailの設定へ


Copyright (C) 2000-2005 俺 All Right Reserved