우분투 20.04에서 iptable을 사용하여 원격 mysql 데이터베이스에 대한 액세스 차단

우분투 20.04에서 iptable을 사용하여 원격 mysql 데이터베이스에 대한 액세스 차단

Ubuntu 20.04 시스템(클라이언트)에서 iptable 규칙을 구성하고 있습니다. 원격 머신(서버)에 mysql db가 있습니다. 클라이언트 시스템에서 mysql DB 서버로의 액세스를 차단해야 합니다. 이러한 구성은 클라이언트 측에서 수행되어야 합니다. 서버 측이 아닙니다. 나는 아래의 규칙을 시도했습니다. 하지만 행운은 없습니다.

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-save산출:

# 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

클라이언트 측에서 원격 mysql DB 서버에 대한 액세스를 어떻게 차단합니까?

답변1

그래서 당신은 UFW를 가지고 있습니다. 더 나은어느 하나ufw방화벽 관리에만 사용또는그것을 제거하고 raw와 같은 다른 것을 사용하십시오. iptables그렇지 않으면 모든 종류의 원치 않는 간섭이 발생하게 됩니다.

적어도 그것이 작동하지 않는 이유는 이제 분명해졌습니다. 규칙을 추가하면 규칙 세트의 끝 부분으로 이동합니다.~ 후에모든 트래픽을 활성화하는 ACCEPT 규칙이므로 차단 규칙에 도달하지 못했습니다.

해결 방법(및 테스트)으로 강제로 앞쪽으로 삽입할 수 있습니다(첫 번째 규칙으로 삽입).

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

하지만 반복해서 말씀드리지만, ufw이것을 위해 사용하거나 전혀 사용하지 마세요. 그리고 이는 클라이언트 측에서 데이터베이스에 대한 원격 연결을 비활성화하는 매우 이상한 요구 사항입니다. 왜 그렇게 특이한 방식으로 하려는지 모르겠습니다. 아마당신의원래의문제원하지 않는 부작용 없이 완전히 다른, 더 우아하고 명확하고 간단한 방법으로 해결될 수 있습니다. 우리가 그것을 모른다는 것은 유감입니다.

관련 정보