Fedora 25 워크스테이션: 방화벽이 열렸으며 SSH를 사용할 수 없습니다.

Fedora 25 워크스테이션: 방화벽이 열렸으며 SSH를 사용할 수 없습니다.

최근 내 컴퓨터 중 하나에 Fedora 25(워크스테이션)를 설치했습니다. 이것은 RH 스타일 배포판에 대한 나의 첫 경험입니다. 이전에는 Debian 기반 시스템만 사용했고 해당 시스템에서는 방화벽을 구성하기 위해 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

방화벽은 괜찮아 보이고 문제도 없는 것 같습니다.

워크스테이션에 SSH를 통해 접속할 수 없는 이유는 Fedora Workstation 설치 시 SSH 데몬이 기본적으로 비활성화되어 있기 때문입니다. (이는 모두 SSH가 활성화된 Server, Cloud 및 Atomic과 대조됩니다.)

문제를 해결하려면 SSH 데몬을 설치하고 명시적으로 활성화해야 합니다.

dnf -y install openssh-server
systemctl enable sshd
systemctl start sshd

관련 정보