前のページ 次のページ 目次

4. 何をすればいいか

さて、では、いよいよfirewallの設定に入りますが、この設定はポリシーやネットワーク環境などにより、さまざまです。ここでの例はあくまで参考にとどめておいてください。(また私がこのような設定をしてるとも限りません。)

ipchainsを用いたfirewallingは柔軟な設定を可能としています。というと、設定は複雑になるのでは…と思われるかもしれませんが、それほどではありません。どちらかというと、どう設定するかよりも、どのような設定をすればいいかの方で悩むことでしょう…

では、いくつかの例をあげながら説明を試みてみます。

4.1 X serverへの接続を制限する

# ipchains -A input -p tcp -s ! 192.168.1.2 -i eth0 -d 192.168.1.1 6000:6010 -j REJECT
自ホストが192.168.1.1であるとします。-Aは追加、inputはinput chainへの追加を表します。以降がruleの指定ですが、-pがprotocol(TCP)、-sがsource(192.168.1.2以外)、-iがinterface(eth0)、-dがdestination(192.168.1.1 のport 6000-6010)、最後の-jがjump to target(REJECT)となります。つまり192.168.1.2以外からport 6000などにeth0経由でconnectしようとするとREJECTされる、という設定になります。オプションの詳細はipchains -hやman、HOWTOを御覧ください。

IPアドレスを適当に変更して、このruleを設定して実際に接続をこころみてみましょう。telnetをたたくだけでいいです。どうでしょうか、すぐ切られてしまうはずです。次にpacketがcountされてるか確認してみましょう。

# ipchains -L input -n -v
Chain input (policy ACCEPT: 40983 packets, 11807637 bytes):
 pkts bytes target(略)
   14  1518 REJECT(略)
細かな数字はどうでもいいのですが、pktsやbytesが0でなければ、そのruleにmatchするpacketがそれだけ来た、ということになります。

4.2 web serverへの接続だけ許可する

# ipchains -P input REJECT
# ipchains -A input -p tcp -d 192.168.1.1 80 -j ACCEPT

なお、ftpのクライアントになる場合は注意が必要です。1024以上のport(X等の予約分のぞく)をひらかない場合、passive modeでないとserverからclientにデータを送れません。

4.3 localnetからのアクセスにはrpc,Xへの接続を許可する

# ipchains -P input REJECT
# ipchains -N localnet
# ipchains -A input -s 192.168.0.0/24 -d 192.168.0.1 -j localnet
# ipchains -A localnet -p tcp -d 192.168.0.1 6000:6010 -j ACCEPT
# ipchains -A localnet -p tcp -d 192.168.0.1 sunrpc -j ACCEPT

もうちょっとipchainsっぽい定義(?)をしてみます。localnetからのアクセスがあると、ユーザ定義chainであるlocalnetのrule群をみるように設定します。-N localnetで新しいchainを作り、Xに対するアクセス、rpcに対するアクセスをACCEPTするように設定します。


前のページ 次のページ 目次