ipchains

ipchainsを用いたIPマスカレードおよびパケットフィルタリングの設定.カーネル2.4以降は ipchainsではなくiptableを用いるのであしからず.

Debian potetoのカーネルは,はじめからIPマスカレードをサポートしているはずです. modconfでIPマスカレード関連のモジュールを組み込んでやれば後は設定のみです.

フレッツADSLになったので,接続時にパケットフィルタの設定をするようにしました. まずは,参考ページ

90%以上TLECからのパクリでなんですが,以下のようなスクリプトファイルを作成し /etc/ppp/ip-up.d//etc/ppp/ip-down.d/ におきます.debianの場合ip-upとip-downをみればわかりますが,run-parts コマンドによってip-up.d/ip-down.d/ のスクリプトをppp接続の完了時と切断時に実行してくれます.

ipchains-upスクリプト

#!/bin/sh

# create ppp-in chain
/sbin/ipchains -N ppp-in
/sbin/ipchains -A input -i ppp0 -j ppp-in

# create ppp-out chain
/sbin/ipchains -N ppp-out
/sbin/ipchains -A output -i ppp0 -j ppp-out

# packet fillter setting
/sbin/ipchains -A ppp-in -d $PPP_LOCAL -f -j DENY -l

# for IP snoop
/sbin/ipchains -A ppp-in -s 10.0.0.0/8 -j DENY -l
/sbin/ipchains -A ppp-in -s 172.16.0.0/12 -j DENY -l
/sbin/ipchains -A ppp-in -s 192.168.0.0/16 -j DENY -l
/sbin/ipchains -A ppp-in -s 0.0.0.0/8 -j DENY -l
/sbin/ipchains -A ppp-in -s 127.0.0.0/8 -j DENY -l
/sbin/ipchains -A ppp-in -s 169.254.0.0/16 -j DENY -l
/sbin/ipchains -A ppp-in -s 192.0.2.0/24 -j DENY -l
/sbin/ipchains -A ppp-in -s 224.0.0.0/4 -j DENY -l
/sbin/ipchains -A ppp-in -s 240.0.0.0/4 -j DENY -l

# block local packet

# block local address packet
/sbin/ipchains -A ppp-out -s 0/0 -d 10.0.0.0/8 -j DENY -l
/sbin/ipchains -A ppp-out -s 0/0 -d 172.16.0.0/12 -j DENY -l
/sbin/ipchains -A ppp-out -s 0/0 -d 192.168.0.0/16 -j DENY -l

# block samba packet
/sbin/ipchains -A ppp-out -s 0/0 -d 0/0 137:139 -p udp -j DENY
/sbin/ipchains -A ppp-out -s 0/0 -d 0/0 137:139 -p tcp -j DENY

# for Windows2000 packet
/sbin/ipchains -A ppp-out -s 0/0 -d 0/0 445 -p tcp -j DENY
/sbin/ipchains -A ppp-out -s 0/0 -d 0/0 445 -p udp -j DENY

# TCP packet setting
# accept port

# return IP masqulade packet
/sbin/ipchains -A ppp-in -p tcp -s 0/0 -d $PPP_LOCAL 61000:65095 -j ACCEPT
/sbin/ipchains -A ppp-in -p udp -s 0/0 -d $PPP_LOCAL 61000:65095 -j ACCEPT

# ssh
/sbin/ipchains -A ppp-in -p tcp -s 0/0 -d $PPP_LOCAL ssh -j ACCEPT

# DNS tcp packet
/sbin/ipchains -A ppp-in -p tcp -s 0/0 53 -d $PPP_LOCAL -j ACCEPT

# ftp
/sbin/ipchains -A ppp-in -p tcp -s 0/0 -d $PPP_LOCAL ftp-data:ftp -j ACCEPT

# reject port setting

# auth
/sbin/ipchains -A ppp-in -p tcp -s 0/0 -d 0/0 auth -j REJECT

# other tcp packet setting

/sbin/ipchains -A ppp-in -s 0/0 -d $PPP_LOCAL -p tcp -y -j DENY -l

/sbin/ipchains -A ppp-in -s 0/0 -d $PPP_LOCAL -p tcp ! -y -j ACCEPT

# UDP setting

# DNS udp packet
/sbin/ipchains -A ppp-in -p udp -s 0/0 53 -d $PPP_LOCAL -j ACCEPT

# ICMP packet

# ACCEPT
# echo-reply used ping
# destination-unreachable used tcp/udp
# time-exceeded used traceroute

/sbin/ipchains -A ppp-in -p icmp -s 0/0 echo-reply -d $PPP_LOCAL -j ACCEPT
/sbin/ipchains -A ppp-in -p icmp -s 0/0 destination-unreachable -d $PPP_LOCAL -j ACCEPT
/sbin/ipchains -A ppp-in -p icmp -s 0/0 time-exceeded -d $PPP_LOCAL -j ACCEPT

# ICMP reject

/sbin/ipchains -A ppp-in -p icmp -s 0/0 echo-request -d $PPP_LOCAL -j DENY -l

/sbin/ipchains -A ppp-in -j DENY -l

このスクリプトはip-up.d/においてppp接続時にipchains設定を行います. sshとftpのポートを空けてあるので,外部からsshおよびftp接続が可能です. しかし,一般的にftpを空けるのは危険らしいのでやめたほうがいいらしいです.

ipchains-downスクリプト

#!/bin/sh

# delete ppp-in chain from input
/sbin/ipchains -D input -i $PPP_IFACE -j ppp-in
# delete ppp-out from output
/sbin/ipchains -D output -i $PPP_IFACE -j ppp-out

# flush ppp-in rules
/sbin/ipchains -F ppp-in
# flush ppp-out rules
/sbin/ipchains -F ppp-out

# delete ppp-in
/sbin/ipchains -X ppp-in
# delete ppp-out
/sbin/ipchains -X ppp-out

同様にipchains-downスクリプト.こちらはip-down.d/にいれておいて,ppp接続を切断するときに ipchainsルールを削除します.

ipchainsコマンドの簡単な説明

ipchainsコマンドの簡単な説明です.詳しくはman ipchainsをヨロシク

ipchains -A input -i ppp0 -j ppp-in
ipchains -A ppp-in -p tcp -s 0/0 -d $PPP_LOCAL 61000:65095 -j ACCEPT

大体そんな感じ.-lでログを取るように指定したりもできます.

【運営会社「パラダイムシフト」サービス】

無料ホームページ   携帯ホームページ   無料ホームページ作成   レンタルサーバー   ブログ   ホテル   アンドロイド   レップチェッカー   海外旅行   国際電話   宿泊料金比較