저는 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