Das Problem
Einer Anwendung wird von anderen Servern die Meldung „Verbindung verweigert“ angezeigt. Auf die Anwendung kann von localhost aus zugegriffen werden, und sie hört auch auf den erwarteten Port.
Die Lösung
Die Firewall auf dem lokalen Server verwirft eingehende Verbindungsversuche von anderen Servern.
Hinweis :Standardmäßig verwendet CentOS/RHEL 7 den FIREWALLD-Dienst, um die IPTABLES-Regeln zu verwalten. Das ältere IPTABLES-Subsystem ist weiterhin verfügbar und kann direkt verwendet werden, wenn der FIREWALLD-Dienst deaktiviert ist.1. Stellen Sie fest, ob der FIREWALLD-Dienst verwendet wird.
# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2017-12-21 15:03:59 EST; 4s ago Docs: man:firewalld(1) Main PID: 18880 (firewalld) CGroup: /system.slice/firewalld.service └─18880 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid Dec 21 15:03:58 testserver systemd[1]: Starting firewalld - dynamic firewall daemon... Dec 21 15:03:59 testserver systemd[1]: Started firewalld - dynamic firewall daemon. Dec 21 15:04:01 testserver firewalld[18880]: WARNING: ICMP type 'beyond-scope' is not supported by the kernel for ipv6. Dec 21 15:04:01 testserver firewalld[18880]: WARNING: beyond-scope: INVALID_ICMPTYPE: No supported ICMP type., ignoring for run-time. Dec 21 15:04:01 testserver firewalld[18880]: WARNING: ICMP type 'failed-policy' is not supported by the kernel for ipv6. Dec 21 15:04:01 testserver firewalld[18880]: WARNING: failed-policy: INVALID_ICMPTYPE: No supported ICMP type., ignoring for run-time. Dec 21 15:04:01 testserver firewalld[18880]: WARNING: ICMP type 'reject-route' is not supported by the kernel for ipv6. Dec 21 15:04:01 testserver firewalld[18880]: WARNING: reject-route: INVALID_ICMPTYPE: No supported ICMP type., ignoring for run-time.
2. Stellen Sie fest, ob der IPTABLES-Dienst verwendet wird.
# systemctl status iptables.service * iptables.service - IPv4 firewall with iptables Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled) Active: active (exited) since Thu 2017-12-21 17:51:12 UTC; 26min ago Process: 440 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS) Main PID: 440 (code=exited, status=0/SUCCESS) CGroup: /system.slice/iptables.service Dec 21 17:51:12 testserver systemd[1]: Starting IPv4 firewall with iptables... Dec 21 17:51:12 testserver iptables.init[440]: iptables: Applying firewall rules: [ OK ] Dec 21 17:51:12 testserver systemd[1]: Started IPv4 firewall with iptables.Achtung :Überprüfen der Firewall mit „iptables -L“ ist nicht ausreichend.
3. Vor CentOS/RHEL 7 war es ausreichend, die System-Firewall mit dem Befehl iptables zu überprüfen, um festzustellen, ob eine Firewall verwendet wurde. Überprüfen Sie beispielsweise mit:
# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT udp -- anywhere anywhere udp dpt:domain ACCEPT tcp -- anywhere anywhere tcp dpt:domain ... INPUT_direct all -- anywhere anywhere INPUT_ZONES_SOURCE all -- anywhere anywhere INPUT_ZONES all -- anywhere anywhere DROP all -- anywhere anywhere ctstate INVALID REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
war genug, um festzustellen, wie die Firewall-Regeln gesteuert werden. Bei CentOS/RHEL 7 könnte entweder der neuere FIREWALLD-Dienst oder der ältere IPTABLES-SERVICE die Firewall-Regeln kontrollieren. Beides muss also überprüft werden, um sicherzugehen.