作業ノート

様々なまとめ、雑感など

iptablesで、httpとhttpsの接続を許可する設定

VirtualBoxで CentOSの仮想環境を構築した時に行った設定。iptablesの設定を変更して、httpとhttpsでアクセスできるようにした。

1.現在の設定の確認

$ sudo /sbin/iptables -L --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
2    ACCEPT     icmp --  anywhere             anywhere
3    ACCEPT     all  --  anywhere             anywhere
4    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
5    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

-Lオプション現在の設定一覧を表示する。--line-numbersオプションで、各ルールに番号がつく。

2.httpとhttpsの接続許可の設定

$ sudo /sbin/iptables -I INPUT 5 -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo /sbin/iptables -I INPUT 6 -p tcp -m tcp --dport 443 -j ACCEPT

-Iでチェインと番号を指定すると、指定したチェインの指定した番号にルールを挿入する。指定した番号以降のルールは、それぞれ一つ下にずれる。番号をつけない場合は、先頭(1番)にルールを挿入する。

ここでのポイントは、挿入する場所をREJECTのルール(上記の場合は5のルール)より前にすること。そうしなければ、挿入したルールが適用される前にREJECTのルールが適用され、接続が拒否される。

3.変更内容の確認

$ sudo /sbin/iptables -L --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
2    ACCEPT     icmp --  anywhere             anywhere
3    ACCEPT     all  --  anywhere             anywhere
4    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
5    ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http
6    ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https
7    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

設定一覧を再度表示し、設定内容が意図した形で反映されているか確認する。上記の場合5番と6番が手順2で挿入したルールになる。

その後、ブラウザでhttpとhttpsでアクセスし、実際にページが表示されるか確認する。

4.変更内容の保存

$ sudo service iptables save

$ sudo cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Tue Sep 10 18:35:35 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [41:5316]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

このままでは、サーバを再起動すると設定が元の状態に戻る。再起動時に現在の設定を反映するために、iptablesの起動スクリプトを使ってルールを保存する。 設定内容は/etc/sysconfig/iptablesに保存される。当該ファイルを直接開いて、設定内容が反映されているか確認する。

参考