金子邦彦研究室インストールSolarisIPfilter でセキュリティ対策

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 サーバなどは対象外です(下記をベースとして設定できると思います)。

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 に付属のものを使った場合)

  • ipf -Fa
  • ipf -f /etc/ipf/ipf.conf

    IPfilter ルールの動作確認 (自前で Solaris に IPfilter をインストールした場合)