
iptablesを使用してファイアウォールを設定したい。
サーバーは httpd サービス (httpd) を実行しています。OS は Centos7 で、以下の情報は iptables-services をインストールし、何も変更せずに iptables を起動した後のものです。
[root@iptables ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
ご覧のとおり、INPUT チェーンの行番号 3 で、サーバーが開かれているようです。
しかし、ブラウザ経由での Web ページへのアクセスは機能しません。
何か設定する必要があるのでしょうか?
出力としてiptables-save
(コメントから抜粋):
# Generated by iptables-save v1.4.21 on Thu Sep 16 13:41:53 2021
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [527:50260]
-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 -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Thu Sep 16 13:41:53 2021
答え1
予想通り、iptables -L
追加の一致は隠されていますが、iptables-save
真実は明らかです。ルール #3 はlo
ループバック インターフェイスにのみ一致します。このファイアウォールは、外部からの tcp/22 (SSH) への接続のみを受け入れます。
最も簡単な解決策は次のようになります。
iptables -I INPUT 4 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT 5 -p tcp --dport 443 -j ACCEPT
さらに、conntrack を使用してフィルタリングし、両方のルールをマルチポートで 1 つに組み合わせることもできます。
iptables -I INPUT 4 -m conntrack --ctstate NEW -p tcp -m multiport --dports 80,443 -j ACCEPT -m comment --comment "HTTP/HTTPS service"
私が追加したコメントにも注目してください。コメントはそれぞれルールを 1 つ追加しておけば、ファイアウォールのルールが 50 個を超えるようになったときに、このアドバイスに感謝することになるでしょう。
は使用しないでください-m state
。これは廃止されています。実際には-m conntrack
内部的に使用されており、このように明示的に記述する方が透明性が高くなります。
は使用しないでくださいiptables -L
。 ご覧のとおり、 の出力は「よりきれいに」見えますが、利点はここで終わります。また、 では必要な詳細がすべて表示されません。 の出力は見た目があまりきれいではありませiptables-save
んが、最も細かい詳細がすべて表示されるため、常に後者を使用してください。