Blockieren Sie den Zugriff auf die Remote-MySQL-Datenbank mithilfe von iptable in Ubuntu 20.04

Blockieren Sie den Zugriff auf die Remote-MySQL-Datenbank mithilfe von iptable in Ubuntu 20.04

Ich konfiguriere iptable-Regeln auf einem Ubuntu 20.04-Rechner (Client). Auf einem Remote-Rechner (Server) befindet sich eine MySQL-Datenbank. Ich muss den Zugriff vom Client-Rechner auf den MySQL-DB-Server blockieren. Diese Konfigurationen sollten clientseitig vorgenommen werden. Nicht serverseitig. Ich habe die folgenden Regeln ausprobiert. Aber ohne Erfolg.

MYQSL DB server details
OS:- Ubuntu 20.04 
IP: 192.168.47.128

Client machine server details
OS:- Ubuntu 20.04
IP: 192.168.47.130

iptables -A INPUT -p tcp -m tcp --dport 3306 -s 192.168.47.128/32 -j DROP

iptables -A OUTPUT -d 192.168.47.128 -j REJECT

iptables -A INPUT -s 192.168.47.128 -j DROP

iptables -A OUTPUT -s 192.168.47.130 -d 192.168.47.128 -p tcp --dport 3306 -j DROP

iptables-saveAusgabe:

# Generated by iptables-save v1.8.4 on Tue Sep  5 03:55:31 2023
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:ufw-after-forward - [0:0]
:ufw-after-input - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-before-input - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-output - [0:0]
:ufw-logging-allow - [0:0]
:ufw-logging-deny - [0:0]
:ufw-not-local - [0:0]
:ufw-reject-forward - [0:0]
:ufw-reject-input - [0:0]
:ufw-reject-output - [0:0]
:ufw-skip-to-policy-forward - [0:0]
:ufw-skip-to-policy-input - [0:0]
:ufw-skip-to-policy-output - [0:0]
:ufw-track-forward - [0:0]
:ufw-track-input - [0:0]
:ufw-track-output - [0:0]
:ufw-user-forward - [0:0]
:ufw-user-input - [0:0]
:ufw-user-limit - [0:0]
:ufw-user-limit-accept - [0:0]
:ufw-user-logging-forward - [0:0]
:ufw-user-logging-input - [0:0]
:ufw-user-logging-output - [0:0]
:ufw-user-output - [0:0]
-A INPUT -j ufw-before-logging-input
-A INPUT -j ufw-before-input
-A INPUT -j ufw-after-input
-A INPUT -j ufw-after-logging-input
-A INPUT -j ufw-reject-input
-A INPUT -j ufw-track-input
-A FORWARD -j ufw-before-logging-forward
-A FORWARD -j ufw-before-forward
-A FORWARD -j ufw-after-forward
-A FORWARD -j ufw-after-logging-forward
-A FORWARD -j ufw-reject-forward
-A FORWARD -j ufw-track-forward
-A OUTPUT -j ufw-before-logging-output
-A OUTPUT -j ufw-before-output
-A OUTPUT -j ufw-after-output
-A OUTPUT -j ufw-after-logging-output
-A OUTPUT -j ufw-reject-output
-A OUTPUT -j ufw-track-output
-A OUTPUT -s 192.168.47.128/32 -j DROP
-A OUTPUT -s 192.168.47.128/32 -j DROP
-A OUTPUT -s 192.168.47.128/32 -j DROP
-A ufw-after-input -p udp -m udp --dport 137 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 138 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 139 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 445 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 67 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 68 -j ufw-skip-to-policy-input
-A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input
-A ufw-after-logging-forward -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-after-logging-input -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-forward -j ufw-user-forward
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP
-A ufw-before-input -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-input -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A ufw-before-input -j ufw-not-local
-A ufw-before-input -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j ACCEPT
-A ufw-before-input -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j ACCEPT
-A ufw-before-input -j ufw-user-input
-A ufw-before-output -o lo -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -j ufw-user-output
-A ufw-logging-allow -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW ALLOW] "
-A ufw-logging-deny -m conntrack --ctstate INVALID -m limit --limit 3/min --limit-burst 10 -j RETURN
-A ufw-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-not-local -j DROP
-A ufw-skip-to-policy-forward -j DROP
-A ufw-skip-to-policy-input -j DROP
-A ufw-skip-to-policy-output -j ACCEPT
-A ufw-track-output -p tcp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-track-output -p udp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 22 -j ACCEPT
-A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT --reject-with icmp-port-unreachable
-A ufw-user-limit-accept -j ACCEPT
COMMIT
# Completed on Tue Sep  5 03:55:31 2023

Wie blockiere ich den Zugriff auf den Remote-MySQL-DB-Server auf der Clientseite?

Antwort1

Sie haben also UFW. Besserentwedernur ufwzur Verwaltung der Firewall verwendenoderentfernen Sie es und verwenden Sie iptablesdazu etwas anderes, z. B. Raw, sonst treten alle möglichen unerwünschten Störungen auf.

Zumindest ist jetzt klar, warum es nicht funktioniert hat. Als Sie Ihre Regel hinzugefügt haben, landete sie am Ende des Regelsatzes.nachdie ACCEPT-Regel, die den gesamten Datenverkehr zulässt, sodass Ihre Sperrregel nie erreicht wurde.

Als Workaround (und Test) können Sie es nach vorne zwingen (als erste Regel einfügen):

iptables -I OUTPUT 1 -s 192.168.47.130 -d 192.168.47.128 -p tcp --dport 3306 -j REJECT

Aber ich wiederhole: Entweder verwenden Sie ufwes dafür oder Sie verwenden es überhaupt nicht. Und es ist eine sehr seltsame Anforderung, die Remote-Verbindung zur Datenbank auf der Clientseite zu deaktivieren. Wir wissen nicht, warum Sie das auf so eigenartige Weise tun möchten. WahrscheinlichdeinOriginalProblemkönnte auf eine ganz andere, elegantere, klarere und direktere Weise gelöst werden, ohne unerwünschte Nebeneffekte. Schade, dass wir es nicht wissen.

verwandte Informationen