IPfilter でセキュリティ対策
このページでは,IPfilter のインストール法と設定法を説明します. IPfilter とは,「LAN 内」あるいは「指定されたポート/アドレスからのアクセス」のみ許可し、それ以外は拒否というような設定が簡単にできるソフトです.
- ルータのセキュリティ: 不要なパケットをルーティングしない
- デスクトップマシン、サーバのセキュリティ: 不要なパケットを送受信しない。
Solaris でのインストール手順
IPFilter のインストール手順である. Solaris 10 では、OS に IPFilter が付属しているので、この手順は不要です。 下記のインストール手順は,Solaris 9 で確認済みです. (他の UNIX でも,同様の手順になるでしょう).
cd /tmp # wget pfil-2.1.9.tar.gz mkdir /tmp/pfil-2.1.9 cd /tmp/pfil-2.1.9 gzip -d < /tmp/pfil-2.1.9.tar.gz | tar -xvf - cd /tmp/pfil-2.1.9/pfil /usr/ccs/bin/make /usr/ccs/bin/make package pkgadd -d /tmp/pfil.pkg cd /tmp # wget pfil-2.1.9.tar.gz # wget ip_fil4.1.31.tar.gz rm -rf /tmp/pfil cd /tmp gzip -d < /tmp/pfil-2.1.9.tar.gz | tar -xvf - gzip -d < /tmp/ip_fil4.1.31.tar.gz | tar -xvf - cd ip_fil4.1.31 /usr/ccs/bin/make solaris cd SunOS5 /usr/ccs/bin/make package
ipflter ルール設定
ipflter で設定すべきルールの例は、次のようになります。 /etc/ipf/ipf.conf (上記の「インストール手順」で自前でインストールしたとき は、設定ファイルは /etc/opt/ipf/ipf.conf) の設定です。 「eri0」の部分は、「ifconfig -a」で確かめてから、適切に書き換えて下さ い。
この場合、LAN 内部の通信、外からの ssh は許可し、それ以外は拒否という 方針です。LAN の外側にサービスしないマシンを想 定しています。つまり、LAN 外部との通信を行なうメールサーバ, DNSサーバ, WWWサーバ、NTP サーバなどは対象外です(下記をベースとして設定できると思います)。
- ループバック(lo0)は許可
- out パケットは許可
- in パケットは拒否
- local IP 偽造パケットは拒否
- 不正な IP option が設定されたパケットは拒否
- 短過ぎる IP fragment をもつパケットは拒否
- 但し、外部からの ssh だけは許可
IPFilter の種類(バージョン?)によっては、デフォルトルールを最初に書 かないといけないものもあるので注意のこと。 下記は Solaris 10 に付属の IPFilter の設定例です。
# # lo0 # pass out quick on lo0 # pass in quick on lo0 # # out packet: # # allow LAN (for router) # pass out quick on hme0 proto tcp/udp from any to 133.xx.yy.0/0xffffff00 # allow 20(ftp-data), 21(ftp), 25(smtp), 80(http) # pass out quick on hme0 proto tcp from any to any port = 20 keep state # pass out quick on hme0 proto udp from any to any port = 20 # pass out quick on hme0 proto tcp from any to any port = 21 keep state # pass out quick on hme0 proto udp from any to any port = 21 # pass out quick on hme0 proto tcp from any to any port = 25 keep state # pass out quick on hme0 proto udp from any to any port = 25 # pass out quick on hme0 proto tcp from any to any port = 80 keep state # pass out quick on hme0 proto udp from any to any port = 80 # allow all tcp/udp and icmp pass out quick on hme0 proto tcp/udp all keep state pass out quick on hme0 proto icmp all keep state # # in packet: # # allow LAN pass in quick on hme0 proto tcp/udp from 133.xx.yy.0/0xffffff00 to any # 外部からのアクセスで、許可するもの (もしあれば) # ssh(22) を公開する場合の設定例です。 # pass in quick on hme0 proto tcp from any to any port = 22 flags S/SA keep state # attack by local IP packet block in log quick on hme0 from 127.0.0.0/8 to any block in log quick on hme0 from 10.0.0.0/8 to any block in log quick on hme0 from 169.254.0.0/16 to any block in log quick on hme0 from 172.16.0.0/12 to any block in log quick on hme0 from 192.168.0.0/16 to any # attack by invalid IP option block in log quick on hme0 all with opt lsrr block in log quick on hme0 all with opt ssrr # block in log quick from any to any with ipopts # attack by too-short IP fragment block in log quick on hme0 proto tcp all with short # # default rule # # deny all (default rule) block out log on hme0 all # deny all (default rule) block in log on hme0 all
IPfilter ルールの動作確認 (Solaris 10 に付属のものを使った場合)
IPfilter ルールの動作確認 (自前で Solaris に IPfilter をインストールした場合)
- /etc/init.d/ipfboot reload
- /sbin/ipstat -i
- 参考 Wep ページ: http://www.colby.edu/personal/j/jaearick/sysadmin/sol10.ipfilter.upgrade
- 参考 Wep ページ: http://iihito.dip.jp/docs/solaris/no07/ipfilter2.html (現在は公開停止されているようです)