社内のネットワークに接続 iptablesを自宅用、会社用に使い分ける

10/06/06
AS/400からJavaでデータの扱いをいろいろと試すために、私のクライアントパソコンを社内のネットワークに接続できるよう許可をもらいました。


クライアントパソコン

  • 6〜7年前のEpsonDirect Endeavor
  • CPU:Mobile AthronXP-M 1600+
  • メモリ:1G
  • HD:20G
以前当ブログで紹介した通り、自宅ではファイアーウォール機で作られた内部ネットワークの中に配置しています。ファイアーウォールでのパケットフィルタリングはもちろん行っていますが、クライアントパソコン単体にもiptablesによりパケットフィルタリングの機能を設定しています。これにより、プライベートネットワーク内に拡散するようなウィルスであっても、ブロックもしくは外に出さないようにできるでしょう。この発想は「要塞ホスト」と言って、「Linuxサーバセキュリティ」という本にて解説されていた考え方です。


本日仕事が終わった後、少し時間がありましたので、試しに接続してみました。設定内容は…
  1. IPアドレス等のネットワーク設定を変更する。
  2. iptablesの設定変更(シェルスクリプト)を行う。
  3. iptables設定を保存する。
  4. iptablesをリスタートする。
やはりここでも、iptables設定のシェルスクリプトが非常に役に立ちました。まずスクリプト自体をコピーして、自宅用と会社用に分けました。それから会社用のスクリプトを設定し、上の手順を踏んで、無事接続できました。

スクリプトの例(一部分のみ抜粋)
#!/bin/sh
#

#define IP Address
FW_IN=ファイアーウォールIPアドレス
R_CRI=クライアントパソコンのIPアドレス

# Flush chains
/sbin/iptables -F
#
# すべてのパケットを拒否
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT DROP

# ループバックアドレスに関してはすべて許可
/sbin/iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
/sbin/iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
# 一度許可されたセッションからの通信を許可する
/sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#クライアントからのインターネットを許可
/sbin/iptables -A OUTPUT -p TCP -s $R_CRI --dport 80 -j ACCEPT
#クライアントからのDNS問い合わせを許可
/sbin/iptables -A OUTPUT -p UDP -s $R_CRI --dport 53 -j ACCEPT

このスクリプトによって、DHCPなどでIPアドレスが変わっても、上部のアドレス変数を変えるだけですぐルールとして使用できます。詳しい説明は「ゼロから始めるLinuxセキュリティ」のファイアーウォールの項を参照してください。