iptablesでhttp・https接続を許可する方法

iptablesでhttp・https接続を許可する方法

Posted at April 11,2017 12:03 AM
Tag:[]

iptablesでhttp・https接続を許可する方法を紹介します。

1.問題点

使い回しのLinuxサーバにApacheをインストールしましたが、外部からアクセスするとタイムアウトが発生します。

Linux内部からのアクセスはOKなので、iptablesで接続が許可されていない可能性があります。

ということで、iptablesでhttp・https接続を許可する方法を紹介します。

2.iptablesでhttp・https接続を許可する

iptablesの設定状況を確認するには"-L"オプションを指定します。

情報が設定されていれば次のような内容が表示されます。

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ms-wbt-server
ACCEPT     udp  --  anywhere             anywhere            state NEW udp dpt:ntp
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
 
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

ちなみに、iptablesに何も設定していない状態であれば次のように表示されます。

# 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

また、"--line-numbers"を設定すれば、一番左に"num"が表示されます。

# 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            state NEW tcp dpt:ms-wbt-server
6    ACCEPT     udp  --  anywhere             anywhere            state NEW udp dpt:ntp
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

iptablesのルールは上から適用されるようで、http接続を許可するための新しいルールは7番目のREJECTよりも上に設定する必要があります。

今回はすでにiptablesが設定された状態のため、5と6の間に新しいルール(http接続許可)を、下記のコマンドで追加します。

# iptables -I INPUT 6 -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

以下、パラメータの説明です。

"-I INPUT 6"でルールを追加する位置を指定します。「6」を指定したので5の直後にルールが追加され、既存の「6」以降のルールはひとつずつ後ろにずれます。

"--state NEW"は接続開始要求パケット(SYNパケット)のみ許可することを意味します。

上記のstateマッチを利用するため、"-m state"もペアで設定し、拡張モジュールを指定します。

"-p tcp"はTCPプロトコルを指定します。"-m tcp"もペアで設定し、拡張モジュールを指定します(/etc/sysconfig/iptablesでは暗黙的に設定されているもので、コマンドラインでは設定不要かも)。

"--dport 80"でポート番号80(http)を指定します。httpsの場合は80の部分が443になります。

"-j ACCEPT"で許可を指定します。

設定後の表示は次のようになります(赤色が追加された内容)。

# 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            state NEW tcp dpt:ms-wbt-server
6    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
7    ACCEPT     udp  --  anywhere             anywhere            state NEW udp dpt:ntp
8    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

設定変更後、iptablesを再起動しなくてもhttp接続OKになりました。

3.iptablesの設定を削除する

もしiptablesの設定を削除したいのであれば、

# iptables -F

を実行します。

4.参考サイト

参考サイトは下記です。ありがとうございました。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)