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

관련 정보