Ich habe vor Kurzem Fedora 25 (Workstation) auf einem meiner Computer installiert. Dies ist meine erste Erfahrung mit einer RH-artigen Distribution – ich habe zuvor nur Debian-basierte Systeme verwendet und auf diesen Systemen habe ich ufw verwendet, um meine Firewall zu konfigurieren. Ich kann mir überhaupt nicht erklären, warum ich Firewalld nicht zum Laufen bekomme.
Ich versuche, für eingehende Verbindungen nur den Zugriff auf die folgenden Ports zuzulassen: 22/TCP (SSH), 3306/TCP (MySQL).
Ich habe die Standardzone auf öffentlich eingestellt und meine Netzwerkschnittstelle manuell auf die öffentliche Zone eingestellt. Ich habe SSH- und MySQL-Dienste zur öffentlichen Zone hinzugefügt, was die Änderungen in der Runtime-Firewall hätte bewirken sollen, aber ohne Erfolg. Mein Computer lehnt alle Versuche ab, eine SSH-Verbindung herzustellen. Nmap meiner IP zeigt Folgendes:
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
Ich habe versucht, die Änderungen an der Laufzeit-Firewall vorzunehmen und die Einstellungen dauerhaft zu machen. Keines von beiden hat zu einer Änderung der offenen Ports geführt. Egal, was ich tue (einschließlich des ENTFERNENS von MySQL als zulässigem Dienst), nichts ändert die Ausgabe eines Nmap-Scans. (Ja, ich starte Firewalld neu, nachdem ich dauerhafte Änderungen vorgenommen habe).
So wie ich das verstehe, ist Firewalld einfach ein Wrapper für iptables, ähnlich wie ufw. Ich hatte jedoch noch nie ein Problem damit, eine Firewall mit ufw zu konfigurieren. Das bringt mich in Verlegenheit. Ich bin für jede Hilfe dankbar, die Sie mir anbieten können. Danke.
Ausgabe einiger Befehle, um Ihnen meine Einstellungen anzuzeigen:
$ 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
Antwort1
Ihre Firewall sieht einwandfrei aus und scheint kein Problem darzustellen.
Der Grund, warum Sie sich nicht per SSH mit Ihrer Workstation verbinden können, liegt darin, dass bei Fedora Workstation-Installationen der SSH-Daemon standardmäßig deaktiviert ist. (Im Gegensatz zu Server, Cloud und Atomic, bei denen SSH aktiviert ist.)
Um das Problem zu beheben, müssen Sie den SSH-Daemon installieren und explizit aktivieren.
dnf -y install openssh-server
systemctl enable sshd
systemctl start sshd