Firewall-cmdを使用して特定のポートを除くすべてのポートをブロックする方法

Firewall-cmdを使用して特定のポートを除くすべてのポートをブロックする方法

私はCentOS Linuxバージョン7.7.1908(コア)を使用しています。

いくつかのポートを除くすべてのTCP / UDPポートに対して着信および発信接続をブロックしたいと思います。

以下は、現在のオペレーティングシステムのファイアウォール構成です。

# firewall-cmd --get-active-zones
public
  interfaces: ens160

# firewall-cmd --list-ports
5901/tcp 5902/tcp 5912/tcp 5911/tcp 5913/tcp 5914/tcp

# firewall-cmd --list-services
dhcpv6-client ssh

ファイアウォールは上記のポートを介してのみ接続を許可するように見えますが、22(SSH)、80(HTTP)などの特定のポートはまだ利用可能です。

この問題をどのように解決できますか?

答え1

そこからiptablesを使って答えを見つけることができます

https://superuser.com/questions/769814/how-to-block-all-ports-Exception-80-443-with-iptables/770191

80と443の代わりに開く必要があるポートをそこに配置できます。

答え2

/etc/firewalld/zonesディレクトリを表示してpublic.xmlを変更できます。

デフォルト/etc/firewalld/zones/public.xml

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <service name="cockpit"/>
</zone>

それから

firewall-cmd --reload

ゾーンを公開から子に変更できます。

cp /usr/lib/firewalld/zones/drop.xml /etc/firewalld/zones/
 
#Add to /etc/firewalld/zones/ the following to permit ssh.
<service name="ssh"/>
 
firewall-cmd --set-default-zone=drop
firewall-cmd --reload

デフォルトのファイアウォール領域をDROPに変更することを選択した場合は、ここにreaddポートを追加する必要があります。

firewall-cmd --permanent --add-port={5901,5902,5912.5911,5913,59124}/tcp
firewall-cmd --reload

関連情報