iptablesの設定
iptablesはパケットフィルタによるファイアーウォール構築のプログラムです。
iptablesの設定のしかたを簡単に説明します。
iptablesのコマンドは/sbinの中に入っています。実行する際には
/sbin/iptables -P INPUT ACCEPT
等とします。
しかし、iptablesを設定したあと、再起動すると、また1から設定しなおさなければなりません。それではめんどうなので、
/etc/sysconfig/iptables
に保存することにより、設定がここから読み込まれることになります。
/etc/sysconfig/iptables に保存するには、
/sbin/service iptables save
又は、
/etc/init.d/iptables save
と実行します。
そうすると/etc/sysconfig/iptables が作成、もしくは上書きされます。
ちなみに、iptablesが自動起動されるようになっていないとだめです。RedHat7.3では、デフォルトで、ipchains、iptables両方が起動されるようになっています。両方起動した場合、反映されるのはipchainsのほうなので、ipchainsはサービスを停止させておきます。
くれぐれも、SSH等、リモートでiptablesを設定してて
/sbin/iptables -P INPUT DROP
としないように。瞬間フリーズです。
以下に記述例を紹介します。このファイルに設定した後は、必ず、ルートしか読めないようにパーミッションを設定します。
//////Debianの場合///////////////////////////////////////////
/etc/detault/iptables を編集
enable_autosave = false → true
セーブするには
/etc/init.d/iptables save active
すると、
/var/lib/iptables/active
ができる
#eth0 WAN側デバイス
#eth1 LAN側デバイス
iptables -F --------------------全てのチェインを初期化
iptables -F -t nat --------------------natテーブルを初期化
iptables -X --------------------ユーザー定義チェインを初期化
iptables -Z --------------------全てのカウンタを初期化
iptables -P INPUT DROP --------------------パケットの受信を拒否
iptables -P OUTPUT ACCEPT --------------------パケットの送信を許可
iptables -P FORWARD DROP --------------------パケットの転送を拒否
iptables -A INPUT -p ICMP -j ACCEPT -------------------ICMPパケットの着信を許可
iptables -A INPUT -i lo -j ACCEPT --------------------自分自身からの入力を許可
iptables -A INPUT -i eth1 -j ACCEPT --------------------LANからの入力を許可
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT ------------ポート80をあける
iptables -A INPUT -i eth0 -p udp --sport 53 --dport 1024: -j ACCEPT ------------DNS問い合わせを許可
iptables -A INPUT -p tcp --dport 113 -i eth0 -j REJECT --reject-with tcp-reset
iptables -A OUTPUT -p tcp --sport 113 -i eth0 -j ACCEPT
#------------ポート113宛のパケットを拒否してTCP
RSTパケットを返信
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#-----------------WAN側から出て行くパケットに対し、IP変換を行う
iptables -A PREROUTING -t nat -p tcp -d 172.0.0.0 --dport 80 -j DNAT --to 192.168.0.10:80
iptables -A FORWARD -o eth0 -p tcp --sport 80 -j ACCEPT
iptables -A FORWARD -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
#-----------------WEBサーバー172.0.0.0宛を192.168.0.10に転送
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 135:139 -j DROP
iptables -t nat -A PREROUTING -p udp -i eth1 --dport 137:139 -j DROP
#-----------------NetBIOS系パケットの漏洩を防止
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 445 -j DROP
iptables -t nat -A PREROUTING -p udp -i eth1 --dport 445 -j DROP
#-----------------SMBパケットの漏洩を防止
iptables -A FORWARD -m state --state NEW,INVALID -i eth0 -j DROP
#-----------------内部に転送される接続開示パケットと不正なパケットを破棄
チェインの種類
INPUT |
入力(受信)パケット |
OUTPUT |
出力(送信)パケット |
FORWARD |
転送パケット |
PREROUTING |
受信時に変換するチェイン |
POSTROUTING |
送信時に変換するチェイン |
|
オプションの種類
-A |
ルールを追加 |
-D |
ルールを削除 |
-P |
ポリシーを追加 |
-X |
ユーザー定義チェインを削除 |
-N |
ユーザー定義チェインを作成 |
-Z |
全てのチェインのパケットカウンタとバイトカウンタをゼロにする。 |
|
パラメーターの種類
-p |
プロトコルの指定 |
-s |
送信元アドレス |
-d |
送信先アドレス |
-i |
着信元デバイス |
-o |
送信元デバイス |
-j |
ルールに合致したときの処理 |
-t |
テーブルの指定 |
! |
条件反転 |
--sport |
送信元ポート 「-p tcp」を指定したときに使用 |
--dport |
送信先ポート 「-p tcp」を指定したときに使用 |
--icmp-type |
ICMPのタイプを指定 「-p icmp」を指定したときに使用 |
DNAT |
送信先アドレスを変換 natテーブルと PREROUTING、OUTPUTチェインで有効 |
SNAT |
送信元アドレスを変換 natテーブルと POSTROUTINGチェインで有効 |
--to |
変換対象アドレスDNAT、 SNATで使う |
-m state |
ステータスの指定 「-m state --state」として使う |
--syn |
フラグ指定 |
|
処理の種類
ACCEPT |
パケットの通過を許可 |
DROP |
パケットを破棄 |
REJECT |
パケットを拒否し、ICMPパケットを返信 |
REDIRECT |
特定ポートにリダイレクト |
|
ステータスの種類
NEW |
新しいコネクションを開始するパケット |
ESTABLISHED |
すでに確立している接続に属するパケット 応答パケット |
RELATED |
エラー通知パケットなど |
INVALID |
どの接続にも関連せず、接続を開始するものでもない不正なパケット
無効なパケット |
|