ChocoMemo

学んだことをメモがわりにアップしていきます!

さくらVPS初期設定 8 - iptablesの設定


iptables

iptablesはパケットフィルタリング機能を提供するプログラムで、ファイアーウォールの構築などに利用できる。非常に多機能で奥の深いプログラムだが、とりあえず必要最小限と思われる設定をおこなう。

まず、さくらのVPSにiptablesがインストールされていることを確認する。インストールされていた以下のように表示される。

$ yum list installed | grep iptables
iptables.x86_64     1.4.7-9.el6         @anaconda-CentOS-201303020151.x86_64/6.4
iptables-ipv6.x86_64

インストールされていない場合は、以下を実行する。

$ yum install iptables

インストールされていたら、現在の設定を確認する。

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target    prot opt source               destination

Chain FORWARD (policy ACCEPT)
target    prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target    prot opt source               destination

上記が表示されたら何も設定されていないことになるので、改めて設定をおこなう。

iptablesのフィルタ設定

iptablesが未設定の状態からSSH、HTTPだけに限定してポート解放し、後は利用しないようにする。SSHについては22もしくは変更したポート、HTTPは80番を使用する。 ※セキュリティを考えてSSHは変更したポート(Port)番号にする方がよい。

iptablesの設定は/etc/sysconfig/iptablesに対して記述する。初期状態ではこのファイルが存在しないので新規作成する。root権限の必要な場所に保存するのでrootになるかsudoで作成する。

$ sudo vi /etc/sysconfig/iptables

ファイルの内容は以下のようになる。

*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH, HTTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport xxxxx -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80    -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

SSHポート番号以外は、汎用な設定になっていると思う。ファイルの編集が完了したらescキーでコマンドモードに戻り、:wqで保存する。

再起動と設定の確認

設定ファイルが作成されたので、iptablesを再起動する。rootになるかsudoで/etc/rc.d/init.d/iptables restartでおこなえる。設定が適切ならば、以下のように出力される。

$ sudo /etc/rc.d/init.d/iptables restart
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]
iptables: ファイアウォールルールを適用中:                  [  OK  ]

最後に、設置がどのように反映されているかを確認しておく。

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
RH-Firewall-1-INPUT  all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
RH-Firewall-1-INPUT  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     icmp --  anywhere             anywhere            icmp any 
ACCEPT     esp  --  anywhere             anywhere            
ACCEPT     ah   --  anywhere             anywhere            
ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns 
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:xxxxx 
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http 
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

設定がバッチ反映されている。

参考サイト:さくらのVPS を改めて使いはじめる 3 – iptables と logwatch