会社概要
業務内容
テクニカルノート
トップページ
テクニカル ノート
ファイアウォールの設定

ファイアウォールは,NIC(イーサカード)を通過するパケットを,その種類やIPによってフィルタリングするものです。たとえば,ssh は通すけど,telnetは通さない…といったことを設定します。一般的には,ipchainsiptablesというパケットフィルタリングソフトによって行います。

ipchainsのほうが古くからある枯れた技術で,iptablesが全盛となりつつある昨今でも根強い人気をほこっています。しかし,ipchainsはターゲットとなるポートを指定しなければならないため,DHCPからIPアドレスをリースして運営するサーバーでは使用しづらいことがデメリットと言えます。また,RedHat 9からはipchainsが標準でサポートされていないため,RedHatのサイト等からダウンロードしてきてインストールする必要があります。

ちなみに,筆者は未だにipchainsを使いつづけていますし,仕事で構築する場合でも,とくにiptablesを指定されない限りipchainsをインストールします。しかし,今からファイアウォールの設定を覚えようと考えている方は,iptablesにすべきでしょう。


iptableを設定する

設定に先がけて,iptableを初期化します。以下の4行を実行してください。

#
#
#
#
/sbin/iptables -F
/sbin/iptables -t filter -P INPUT DROP
/sbin/iptables -t filter -P OUTPUT ACCEPT
/sbin/iptables -t filter -P FORWARD DROP

1行目で現在登録されている全てのチェインを初期化しています。

2〜4行目で,INPUT,OUTPUT,FORWARDのそれぞれについてのデフォルトの取り扱いを定めています。DROPは拒否,ACCEPTは許可を意味し,この場合,NICに入ってくる(INPUT)パケットは全て拒否し,NICから外に出ていく(OUTPUT)パケットは全て許可します。FORWARDはNICを2枚刺している場合にそれぞれの間でやりとりするパケットについての設定を意味し,ここでは拒否に設定してあります。

当然このままでは外から一切のデータが入ってくることができないので,例外を定義します。以下の2行を実行してください。

#
#
/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 22 -j ACCEPT

たとえば,上の例の場合には,外からport 22(ssh)に入ってくるパケットを許可することを定義しています。1行目ではサーバー側のport 22をターゲットとするパケットを許可し,2行目では発信元のポートが22であるパケットを許可しています。この2行を1セットにして成立すると考えてください。

これらを必要なパケットに対して実行してやれば良いことになります。よく用いられるポートには以下のようなものがあります。

サービス
ポート番号
プロトコル
ftp
20, 21
tcp
ssh
22
tcp
ssh
23
tcp
http
80
tcp

他にもたくさんのポートがあり,主なものは /etc/services に記載されているので,ぜひ目を通してみてください。

なお,これらの一連の内容は,スクリプト化して手軽に実行できるようにしておきます。以下にスクリプトの一例を示します。

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
#!/bin/sh

# 初期化
/sbin/iptables -F
/sbin/iptables -t filter -P INPUT DROP
/sbin/iptables -t filter -P OUTPUT ACCEPT
/sbin/iptables -t filter -P FORWARD DROP

# 同一ネットワーク上からのアクセスを全許可
/sbin/iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT

# icmpを許可
/sbin/iptables -A INPUT -p icmp -j ACCEPT

# ssh
/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 22 -j ACCEPT
# http
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 80 -j ACCEPT
# sftp
/sbin/iptables -A INPUT -p tcp --dport 115 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 115 -j ACCEPT
# ntp
/sbin/iptables -A INPUT -p udp --dport 123 -j ACCEPT
/sbin/iptables -A INPUT -p udp --sport 123 -j ACCEPT




会社概要
業務内容
テクニカルノート
トップページ

©2003 Alchemy Inc Allright Reserved