1 #! /bin/sh
2
3 trusthost=’10.20.1.37′
4 myhost=’10.20.1.16′
5 any=’0.0.0.0/0′
6
7 ##############
8 #Flush & Reset
9 ##############
10 iptables -F
11 iptables -X
12 ##############
13 #Deafult Rule
14 ##############
15 iptables -P INPUT DROP
16 iptables -P OUTPUT DROP
17 iptables -P FORWARD DROP
18 #########
19 #loopback
20 #########
21 iptables -A INPUT -i lo -j ACCEPT
22 iptables -A OUTPUT -o lo -j ACCEPT
23 #######################
24 #ICMP trusthost->myhost
25 #######################
26 iptables -A INPUT -p icmp –icmp-type echo-request -s $trusthost -d $myhost -j ACCEPT
27 iptables -A OUTPUT -p icmp –icmp-type echo-reply -s $myhost -d $trusthost -j ACCEPT
28 #######################
29 #ICMP myhost->trusthost
30 #######################\
31 iptables -A OUTPUT -p icmp –icmp-type echo-request -s $myhost -d $trusthost -j ACCEPT
32 iptables -A INPUT -p icmp –icmp-type echo-reply -s $trusthost -d $myhost -j ACCEPT
33 #######################
34 #ssh trusthost-> myhost
35 #######################
36 iptables -A INPUT -p tcp -s $trusthost -d $myhost –dport 22 -j ACCEPT
37 iptables -A OUTPUT -p tcp -s $myhost –sport 22 -d $trusthost -j ACCEPT
38 #########
39 #logging
40 #########
41 iptables -N LOGGING
42 iptables -A LOGGING -j LOG –log-level warning –log-prefix “DROP:” -m limit
43 iptables -A LOGGING -j DROP
44 iptables -A INPUT -j LOGGING
45 iptables -A OUTPUT -j LOGGING
スクリプト解説
3、4行目
メンテナンスホスト(trusthost)とサーバ(myhost)のIPアドレス指定。
5行目
不特定クライアント指定。
10、11行目
既存iptables設定リセット。
15行目
すべての送受信パケットを破棄(DROP)。
一旦ネットワークを塞いだ後、用途に応じて穴を開ける。
下記3種類のパケットを破棄。
- 送信先が受信したホスト自身であるパケット(INPUTチェイン)
- ホスト自身で生成されたパケット(OUTPUTチェイン)
- 受信したパケットの送信先が別のホストであるパケット(FORWARDチェイン)
※チェイン:フィルタルールを集めてモジュール化したもの
※-P INPUT:INPUTチェインで定義されたパケットの破棄(DROP)を指定。
16行目
「-P OUTPUT」:OUTPUTチェインの破棄を設定。
17行目
「-P FORWARD」:FORWARDチェインの破棄を設定。
21、22行目
ループバックインターフェイスを経由するすべての送受信パケットの通過を許可。
「-i」で受信側インターフェイス、「-o」で送信側インターフェイスを指定。
サーバからサーバ自身へのローカル接続をすべて許可。
26、27行目
メンテナンスホストからサーバへのpingを許可するルールの追加。
pingは、「request」(26行目)とそれに答える「reply」(27行目)が対で必要。
31、32行目
サーバからメンテナンスホストへのpingを許可するルール。
送信と受信が入れ替わるため、26、27行目におけるソースホスト(「-s ホストまたはネットワーク」)とディスティネーションホストの指定(「-d ホストまたはネットワーク」)、INPUT/OUTPUTチェインが入れ替わっている。
36、37行目
sh設定。ソースIPアドレスだけで制限。
「-p tcp」:プロトコル、TCP
「-s $trusthost」:ソースIPアドレス、$trusthost
「-d $myhost」:ディスティネーションIPアドレス、$myhost
「–dport 22」:ディスティネーションポート、22
「–sport 22」:ソースポート、22
「-j ACCEPT」:許可
43行目
無効パケットの破棄(DROP)を指定。
ログ出力の後に破棄。
44、45行目
INPUTおよびOUTPUTチェインに対しこのLOGGINGが行われるように設定。