ファイアウォールの設定
自宅サーバへの道
今の状態では何も制限をしていないので、インターネット上のマシンから自宅サーバは丸見えな状態です。
インターネット上からは不正なパケット等様々な攻撃が飛んできますので、少しでもセキュリティを高めておかなければ、すぐに不正進入を許してしまいかねません。
というわけで、パケットフィルタリングというものを行います。
これには、ルータの設定でも使用したiptablesもしくはipchainsを使います。
※kernel-2.4 以上は iptables がデフォルトなので可能であれば iptables で設定すべきでしょう。
※ちなみに、パケットフィルタリングも通常の個人使用の環境ではブロードバンドルータにて設定するのが普通です。
基本概念
ipchains,iptablesを使ったファイアウォールの設定では基本概念が大きく分けて次の2つが考えられると思います。
・基本的にパケットを許可し、危険性が考えられるもののみ拒否する
・基本的にパケットを拒否し、必要なパケットのみ許可する
私は危険なパケットに全て対応するのは非常に困難なので後者の概念にて設定しています。
とりあえず全部拒否していればそれなりに安全だろうという考えです。
ただし、この方法では、インターネット向けに新たなサービスを始めたりする時には、いちいちipchains,iptables等でセキュリティに穴を開けないといけないので面倒ではあります。
また、現状ではoutput チェインに対する制限は設定していません。
が、LAN 内から外向けに出るパケットによって内部の情報が外に漏れたりしますので、本来は設定するべきでしょう。
設定
以下、私が設定した内容を簡単に紹介します。
iptablesの設定
以下は、現在の私の設定です。
※これがベースでこの後様々なサービスを稼働させたり制限を加えたりする時に随時追加していってます。
#!/bin/sh /sbin/iptables -F /sbin/iptables -P INPUT DROP /sbin/iptables -P FORWARD ACCEPT /sbin/iptables -A INPUT -i lo -j ACCEPT /sbin/iptables -t nat -A POSTROUTING -j MASQUERADE #--to-ports 10000
上記のscriptを起動時に実行するように設定します。
以下、簡単に説明を。
/sbin/iptables -F
チェインを初期化します。
/sbin/iptables -P INPUT DROP
入ってくるパケットのポリシーをDROP(捨てる)に設定します。
/sbin/iptables -P FORWARD ACCEPT
転送されてくるパケットのポリシーをACCEPT(許可)に設定します。
/sbin/iptables -A INPUT -i lo -j ACCEPT
loopbackアドレスに入ってくるパケットは全て許可します。
/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE #--to-ports 10000
IPマスカレードを有効にします。
ipchainsの設定
現在はiptablesで設定していますので、ここで紹介する設定は以前の設定のものです。
詳細はipchainsのメモを参照してください。
#!/bin/sh /sbin/ipchains -P input DENY /sbin/ipchains -P forward DENY /sbin/ipchains -A input -i lo -j ACCEPT /sbin/ipchains -A input -s 192.168.0.0/24 -i eth1 -j ACCEPT /sbin/ipchains -A input -p ICMP -i ppp0 -j ACCEPT /sbin/ipchains -A input -p TCP -d 0/0 1024: -i ppp0 -j ACCEPT /sbin/ipchains -A input -p UDP -d 0/0 1024: -i ppp0 -j ACCEPT /sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ
また、FTP の IPマスカレード対応のため以下も実行します。
# /sbin/depmod -q # /sbin/modprobe ip_masq_ftp