質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

firewalld

firewalldは、CentOS7からデフォルトになったパケットフィルタリングです。一時的なルールと永続的なルールが設定でき、通信の許可・拒否をコントロール。バージョン6まで利用されてきた「iptables」における課題をカバーしています。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Q&A

解決済

1回答

5487閲覧

firewalldでoutboundの通信制限

enoenoeno

総合スコア6

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

firewalld

firewalldは、CentOS7からデフォルトになったパケットフィルタリングです。一時的なルールと永続的なルールが設定でき、通信の許可・拒否をコントロール。バージョン6まで利用されてきた「iptables」における課題をカバーしています。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

0グッド

0クリップ

投稿2020/08/12 00:37

firewalldでoutboundの通信制限をかけたところ、Inboundの通信もできなくなりました。
Inboundの許可設定はリッチルールで、Ounboundの許可設定とその他Outboundの拒否設定は
ダイレクトルールで設定しました。

#####やりたいこと
SSH足場サーバ→設定対象サーバ ssh接続許可(Inbound)
設定対象サーバ→メールサーバ smtp接続許可(Outbound)
その他全ての通信(Inbound/Outbound)を遮断

######構成

サーバIPアドレス
設定対象サーバ192.168.1.100
SSH足場サーバ192.168.1.22
メールサーバ192.168.1.25

#####やったこと
[SSH足場サーバ→設定対象サーバ ssh接続許可(Inbound)]

# firewall-cmd --permanent --add-rich-rule "rule family="ipv4" source address="192.168.1.22" port port="22" protocol="tcp" accept" # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens192 sources: services: ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="192.168.1.22" port port="22" protocol="tcp" accept

[設定対象サーバ→メールサーバ smtp接続許可(Outbound)]

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -o ens192 -m tcp -p tcp -d 192.168.1.25 --dport 25 -j ACCEPT

[その他全ての通信を遮断]

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 10 -o ens192 -j REJECT ←この設定後ssh接続の通信が遮断され、接続できなくなりました。

#####質問事項
①リッチルールとダイレクトルールは共存できますか?
②共存できる場合、どちらの設定が優先されますか?リッチルールで許可していてもダイレクトルール側の全拒否ルールが優先されるのでしょうか。
③共存できない場合は、Outboundの制限を設定したい以上、Inbound含め全てダイレクトルールで設定した方がよいのでしょうか。

リッチルールよりもダイレクトルールが優先されているためにやりたいことが実現できていないと考えたので上記のような質問の仕方をしておりますが、
コマンドがそもそも違う等、その他の原因がございましたらご指摘いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

①リッチルールとダイレクトルールは共存できますか?

共存できます。

②共存できる場合、どちらの設定が優先されますか?
リッチルールで許可していてもダイレクトルール側の全拒否ルールが優先されるのでしょうか。

iptables (CentOS 8 の場合、nft) で確認できます。
INPUT はダイレクトルール、リッチルールの順、OUTPUT はダイレクトルールのみです。

リッチルールやその他 "--add-service" などの INPUT 許可ルールは、OUTPUT で全許可している前提のようで、戻りパケットの許可ルールは特に設定しません。
なので、OUTPUT のダイレクトルールで全拒否すると、INPUT で許可されたパケットの戻りが返らず、通信できなくなります。

戻りパケットを許可するルールを入れるといいと思います。

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -o ens192 -m tcp -p tcp -d 192.168.1.25 --dport 25 -j ACCEPT # firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 2 -o ens192 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 10 -o ens192 -j REJECT

③共存できない場合は、Outboundの制限を設定したい以上、Inbound含め全てダイレクトルールで設定した方がよいのでしょうか。

設定しやすい、わかりやすいと思う方法でいいと思います。
すべてダイレクトルールにするのであれば、firewalld をやめて、iptables, nft を使ってもいいかと。

投稿2020/08/12 09:36

TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

enoenoeno

2020/08/17 00:37

ご提示いただいた戻りパケットの許可ルールを追加いたしましたところ、意図した動作をするようになりました。ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問