iptables を使用したファイアウォールの作成 / 設定

iptables を使用したファイアウォールの作成 / 設定

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んが、最も細かい詳細がすべて表示されるため、常に後者を使用してください。

関連情報