Fedora 25: 방화벽 설정이 적용되지 않습니다.

Fedora 25: 방화벽 설정이 적용되지 않습니다.

최근 컴퓨터에 Fedora 25(워크스테이션)를 설치했습니다. RH 스타일 배포판을 사용한 것은 이번이 처음입니다. 이전에는 데비안 기반 시스템에서만 작업했는데, ufw를 사용하여 방화벽을 구성했습니다. 방화벽이 작동하지 않는 이유를 설명하기가 너무 어렵습니다.

들어오는 연결에 대해 다음 포트에만 액세스를 허용하려고 했습니다: 22/tcp(SSH), 3306/tcp(mysql)

기본 영역을 공개 영역으로 설정하고 네트워크 인터페이스를 공개 영역으로 수동으로 설정했습니다. 공개 영역에 SSH 및 mysql 서비스를 추가했는데, 이는 런타임 방화벽의 변경 사항에 영향을 주었지만 운이 없었습니다. 내 컴퓨터가 SSH 연결을 설정하려는 모든 시도를 거부합니다. 내 IP의 nmap은 다음과 같습니다.

Nmap scan report for 192.168.1.241
Host is up (0.000014s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
111/tcp  open  rpcbind
3306/tcp open  mysql

런타임 방화벽을 변경하고 설정을 영구적으로 만들어 보았습니다. 열린 포트에 대한 변경 사항도 생성되지 않았습니다. 내가 무엇을 하든(허용된 서비스에서 mysql을 제거하는 것을 포함하여) nmap 스캔의 출력은 변경되지 않습니다. 내가 이해한 바에 따르면 Firewalld는 ufw와 유사한 iptables를 둘러싼 래퍼일 뿐이지만 ufw로 방화벽을 구성하는 데 문제가 발생한 적이 없습니다. 이것이 나를 압도했습니다. 당신이 제공할 수 있는 도움에 감사드립니다. 감사해요.

유효한 설정은 다음과 같습니다.

$ firewall-cmd --get-default-zone
public



$ firewall-cmd --get-zone-of-interface=enp0s25
public


$ cat /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="mysql" />
</zone>


$ cat /usr/lib/firewalld/services/ssh.xml 
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="22"/>
</service>


$ cat /usr/lib/firewalld/services/mysql.xml 
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>MySQL</short>
  <description>MySQL Database Server</description>
  <port protocol="tcp" port="3306"/>
</service>


$ cat /etc/sysconfig/network-scripts/ifcfg-enp0s25 
HWADDR=<removed>
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
BROADCAST=192.168.1.255
NETWORK=192.168.1.0
DNS1=8.8.8.8
DNS2=8.8.4.4
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s25
UUID=<removed>
ONBOOT=yes
AUTOCONNECT_PRIORITY=-999
ZONE=public
IPADDR=192.168.1.241
PREFIX=24
GATEWAY=192.168.1.1
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes


$ iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N FORWARD_IN_ZONES
-N FORWARD_IN_ZONES_SOURCE
-N FORWARD_OUT_ZONES
-N FORWARD_OUT_ZONES_SOURCE
-N FORWARD_direct
-N FWDI_public
-N FWDI_public_allow
-N FWDI_public_deny
-N FWDI_public_log
-N FWDO_public
-N FWDO_public_allow
-N FWDO_public_deny
-N FWDO_public_log
-N INPUT_ZONES
-N INPUT_ZONES_SOURCE
-N INPUT_direct
-N IN_public
-N IN_public_allow
-N IN_public_deny
-N IN_public_log
-N OUTPUT_direct
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j INPUT_direct
-A INPUT -j INPUT_ZONES_SOURCE
-A INPUT -j INPUT_ZONES
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -j FORWARD_direct
-A FORWARD -j FORWARD_IN_ZONES_SOURCE
-A FORWARD -j FORWARD_IN_ZONES
-A FORWARD -j FORWARD_OUT_ZONES_SOURCE
-A FORWARD -j FORWARD_OUT_ZONES
-A FORWARD -m conntrack --ctstate INVALID -j DROP
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT
-A OUTPUT -j OUTPUT_direct
-A FORWARD_IN_ZONES -i enp0s25 -g FWDI_public
-A FORWARD_IN_ZONES -g FWDI_public
-A FORWARD_OUT_ZONES -o enp0s25 -g FWDO_public
-A FORWARD_OUT_ZONES -g FWDO_public
-A FWDI_public -j FWDI_public_log
-A FWDI_public -j FWDI_public_deny
-A FWDI_public -j FWDI_public_allow
-A FWDI_public -p icmp -j ACCEPT
-A FWDO_public -j FWDO_public_log
-A FWDO_public -j FWDO_public_deny
-A FWDO_public -j FWDO_public_allow
-A INPUT_ZONES -i enp0s25 -g IN_public
-A INPUT_ZONES -g IN_public
-A IN_public -j IN_public_log
-A IN_public -j IN_public_deny
-A IN_public -j IN_public_allow
-A IN_public -p icmp -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 3306 -m conntrack --ctstate NEW -j ACCEPT

답변1

문제가 해결되었습니다. 저는 Fedora Workstation에 OpenSSH가 사전 설치되어 있지 않다는 사실을 완전히 무시했습니다. sshd가 실행되고 있지 않기 때문에 nmap 스캔은 방화벽 구성에 관계없이 열린 포트를 표시하지 않습니다.

관련 정보