web-dev-qa-db-ja.com

Firewalldを使用してRHEL7 / CentOS7の発信接続をブロックしますか?

RHEL7/CentOS7は、iptables serviceに代わる新しいfirewalldファイアウォールサービスを備えています(どちらもiptablesツールを使用して、カーネルのNetfilterと対話します)。

firewalldは、着信トラフィックをブロックするように簡単に調整できますが、 Thomas Woernerが指摘したように 1.5年前「ファイアウォールを使用した発信トラフィックの制限は、現時点では単純な方法では不可能です」 。そして、私が見る限り、状況はそれ以来変わっていません。それとも? firewalldで発信トラフィックをブロックする方法はありますか?ない場合、iptablesツールを使用して手動でルールを追加する以外に、発信トラフィックをブロックする他の「標準」の方法(RHEL7ディストリビューション)はありますか?

12
golem

その素敵なGUIでオプションは見つかりませんでしたが、直接インターフェースを介して可能です

発信ポート80のみを有効にするには:

firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp -m tcp --dport=80 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -j DROP

これにより、ランタイムルールではなく永続的なルールに追加されます。
ランタイムルールになるように、永続的なルールをリロードする必要があります。

firewall-cmd --reload

永続的なルールを表示する

firewall-cmd --permanent --direct --get-all-rules

ランタイムルールを表示する

firewall-cmd --direct --get-all-rules
13
Fedora-user

同じ質問を自分自身で行った後、いじくり回して、発信トラフィックをHTTP/HTTPSおよびDNSクエリに制限するためのいくつかの素晴らしいルールを集めました。

確立された接続を許可する:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -m state --state ESTABLISHED,RELATED -j ACCEPT

HTTPを許可:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT

HTTPSを許可:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT

DNSクエリを許可:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 53 -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p udp --dport 53 -j ACCEPT

その他すべてを拒否します。

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 2 -j DROP

最初に '--permanent'引数を省略してテストすることをお勧めします。

私は決して専門家ではありませんが、これは私にはうまくいくようです:)

6
user253068

GUIについて;これは "Direct Configuration"の下にあると思います。これにアクセスするには、「ビュー」で選択する必要があります。私は間違っている可能性があります。

補足

ルールを削除するには、終了してから再入力する必要があります。

1
user301864