iptables更新シェルスクリプト

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が行われるように設定。

参考

連載記事 「習うより慣れろ! iptablesテンプレート集」

Leave a Comment