Linux Install Memo

サーバー管理者によるLinux関連ソフトのインストールメモ

Home » □iptables

□iptables

参考URL:
http://www.iptables.org/
http://www.linux.or.jp/JF/JFdocs/packet-filtering-HOWTO.html#toc3
http://www-6.ibm.com/jp/developerworks/linux/010706/j_l-fw-index.html

Kernel-2.4系以上では iptables がパケットフィルターの処理をします。
我々のサーバーを外敵から守る為にも、パケットフィルターは必ず設定
しましょう。

デフォルトのままでは使えないので、まずはカーネルオプションの設定
からです。

2.4系でも2.6系でも基本的には全部オプションはONにしてしまいましょう。

カーネルの再構築は前述の項目を参考にしてください。

続いて「iptables」パッケージインストールです。これは bz2 パッケージ
なので、bunzip2 を使います。

cd /usr/src/
bunzip2 -c package/iptables-1.3.8.tar.bz2 | tar xvpf – -C ./
cd iptables-1.3.8/
make BINDIR=/usr/bin LIBDIR=/usr/lib MANDIR=/usr/man KERNEL_DIR=/usr/src/linux-2.x.xx
make install BINDIR=/usr/bin LIBDIR=/usr/lib MANDIR=/usr/man KERNEL_DIR=/usr/src/linux-2.x.xx

とすると、「/usr/bin」の中に「iptables」等が入ります。
(カーネルのありかに注意!!)

補足:1.4以降?からは

cd /usr/src/
bunzip2 -c package/iptables-1.4.4.tar.bz2 | tar xvpf – -C ./
cd iptables-1.4.4/
./configure –prefix=/usr
make
make install
※/usr/sbin/ に iptables などが入ってしまいます。

さて、設定のポイントですが、詳しくはその筋の本を見てもらうとして、
ipchains との違いとしてまずはまる(と思われる)のが、input,output
等が大文字「INPUT,OUTPUT」になったということが上げられるでしょう。
さらに、「ポリシー」には「REJECT」が使えなくなった。これを使いたい
場合、つまり閉じているポートに接続が来た時にだんまりではなく来るな
と返事を返したい場合には、ポリシーとしては「DROP」(ipchainsでいう
ところのDENY)ではなく「ACCEPT」としておき、ポリシーチェーンの最後
で「REJECT」すればOK。

> # ALL
> /sbin/iptables -P INPUT ACCEPT
> /sbin/iptables -P OUTPUT ACCEPT
> /sbin/iptables -P FORWARD ACCEPT
> :
> :
> :
> # OTHER
> /sbin/iptables -A INPUT -s $ALL_IP -j REJECT
> #/sbin/iptables -A OUTPUT -s $ALL_IP -j REJECT
> /sbin/iptables -A FORWARD -s $ALL_IP -j REJECT

こんな感じ。

ログを取りたかったら、この「REJECT」の前ですれば良い。

それと、もう一つはまるのが「-b」(bidirection)オプションが無く
なってしまったこと。これが無いとどうなるかというと、どこかから何か
しらのアクセスがあった時に、いわゆるIPからホスト名を引くときに、
ターゲットサーバーから外部DNSへの問合わせても返事が受信出来ず、
タイムアウトまでだんまりになってしまう。というわけで、特にDNSに
関しては、ターゲットマシンの「/etc/resolv.conf」に書いてあるマシン
の53番ポートからの「INPUT」に関しては許可してあげないといけない。

他にも ssh や telnet、ftp など内部から外部へ接続する場合については
一通り同じように設定してあげないといけない。(ipchains なら -b だけ
で良かったのに… )? ftp といえば、ftp は実際のやり取りはセッション
確立後は全く違うポートを使うので「Connection tracking」オプションを
有効にしないと、内部から外部へのFTPができなくなりますので要注意!

あとは参考サイトとか見て設定して下さい。

また、

http://bifrost.heimdalls.com/

ここにはGUIでフィルターが設定できるツールがあります。

設定スクリプトを作って /etc/rc.d/rc.M の最後で

> # Start FIREWALL setup procedure.
> if [ -x /etc/rc.d/rc.iptables ]; then
>???? /etc/rc.d/rc.iptables
> fi

というように設定してあげてもいいとおもいます。

補足:しばらく運用しているとFTPとかがおかしくなってきた

ログに

> ip_conntrack: maximum limit of 65536 entries exceeded

みたいなメッセージが出てきた場合、コネクショントラッキングテーブル
が一杯になってしまっているので、FTPの接続とかを追従することができ
なくなってしまっています。

その場合には /etc/rc.d/rc.inet1 の最後にでも

> echo “327520” > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
> #echo “327520” > /proc/sys/net/ipv4/ip_conntrack_max

とすればいい。
上段は Linux version 2.6.21.3 以降?の場合。下段はそれ以前。

以下余談:

それにしてもこれらを検証するにはマシンは2台要るんだよなぁ…
かくしてマシンはどんどん増える。(^^;

Name of author

Name: admin

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です