RHEL7/CentOS7は、iptables service
に代わる新しいfirewalld
ファイアウォールサービスを備えています(どちらもiptables
ツールを使用して、カーネルのNetfilterと対話します)。
firewalld
は、着信トラフィックをブロックするように簡単に調整できますが、 Thomas Woernerが指摘したように 1.5年前「ファイアウォールを使用した発信トラフィックの制限は、現時点では単純な方法では不可能です」 。そして、私が見る限り、状況はそれ以来変わっていません。それとも? firewalld
で発信トラフィックをブロックする方法はありますか?ない場合、iptables
ツールを使用して手動でルールを追加する以外に、発信トラフィックをブロックする他の「標準」の方法(RHEL7ディストリビューション)はありますか?
その素敵な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
同じ質問を自分自身で行った後、いじくり回して、発信トラフィックを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'引数を省略してテストすることをお勧めします。
私は決して専門家ではありませんが、これは私にはうまくいくようです:)
GUIについて;これは "Direct Configuration"の下にあると思います。これにアクセスするには、「ビュー」で選択する必要があります。私は間違っている可能性があります。
補足
ルールを削除するには、終了してから再入力する必要があります。