ufw가 허용되어야 하는 웹 서버의 특정 트래픽을 차단합니다.

ufw가 허용되어야 하는 웹 서버의 특정 트래픽을 차단합니다.

인터넷 연결 웹 애플리케이션을 호스팅하는 Ubuntu 16.04 시스템에서 /var/log/syslog다음과 같은 메시지가 넘쳐납니다.

Jan  9 17:41:50 ip-172-31-11-100 kernel: [483324.699896] [UFW BLOCK] IN=ens5 OUT= MAC=0a:16:21:97:4e:74:0a:af:bd:31:30:da:08:00 SRC=88.201.58.59 DST=172.31.11.100 LEN=52 TOS=0x10 PREC=0x20 TTL=40 ID=63099 DF PROTO=TCP SPT=6450 DPT=443 WINDOW=343 RES=0x00 ACK URGP=0

Jan  9 17:41:50 ip-172-31-11-100 kernel: [483324.719775] [UFW BLOCK] IN=ens5 OUT= MAC=0a:16:21:97:4e:74:0a:af:bd:31:30:da:08:00 SRC=88.201.58.59 DST=172.31.11.100 LEN=569 TOS=0x10 PREC=0x20 TTL=40 ID=63098 DF PROTO=TCP SPT=6450 DPT=443 WINDOW=343 RES=0x00 ACK PSH URGP=0

Jan  9 17:43:13 ip-172-31-11-100 kernel: [483408.133979] [UFW BLOCK] IN=ens5 OUT= MAC=0a:16:21:97:4e:74:0a:af:bd:31:30:da:08:00 SRC=103.255.6.65 DST=172.31.11.100 LEN=40 TOS=0x00 PREC=0x00 TTL=38 ID=0 DF PROTO=TCP SPT=3277 DPT=443 WINDOW=0 RES=0x00 RST URGP=0

443사용자 트래픽이 최대 몇 초 동안 액세스가 차단되는 것 같습니다 40. 나는 이 문제를 해독할 수 없다. 전문가가 현재 상황을 지적하고 이 상황을 되돌릴 수 있는 방법을 알려줄 수 있습니까?

저와 수많은 사용자가 이 웹 애플리케이션에 액세스할 수 있다는 점에 유의하세요. 즉 차단은 보편적이지 않습니다. 그러나 이에 대해 불만을 토로하는 합법적인 사용자가 있습니다. 어쩌면 일종의 속도 제한 문제일까요?


sudo ufw status verbose수익률:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere                  
80                         ALLOW IN    Anywhere                  
443                        ALLOW IN    Anywhere                  
22 (v6)                    ALLOW IN    Anywhere (v6)             
80 (v6)                    ALLOW IN    Anywhere (v6)             
443 (v6)                   ALLOW IN    Anywhere (v6)

sudo iptables -S | grep ACCEPT수익률:

-P OUTPUT ACCEPT
-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 4 -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-input -i lo -j ACCEPT
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 4 -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 -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-output -o lo -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-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-input -p udp -m udp --dport 22 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 80 -j ACCEPT
-A ufw-user-input -p udp -m udp --dport 80 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 443 -j ACCEPT
-A ufw-user-input -p udp -m udp --dport 443 -j ACCEPT
-A ufw-user-limit-accept -j ACCEPT

sudo iptables -S | grep ufw-user-limit다음을 산출합니다(이 경우비율 제한재생 중입니다):

-N ufw-user-limit
-N ufw-user-limit-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

마지막으로 sudo iptables -S | grep "UFW BLOCK"결과는 다음과 같습니다.

-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-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "

답변1

나는 이것을 전에 본 적이 있으며 온라인에서 이와 관련된 몇 가지 주제를 읽었습니다.

UFW가 RST 패킷을 차단하고 있습니다.

https://frankfu.click/linux/basic/ufw-blocking-fin-rst-and-ack-packets-when-rules-should-allow-it/

답변2

이는 유효하지 않은 패킷에 대한 BLOCK일 가능성이 높습니다. 다음과 같이 tcpdump를 실행하여 패킷을 캡처하고 블록이 발생하는지 확인하세요.

sudo tcpdump port 443 -w /tmp/ufw.log -i eno1 -G 200

출력 파일에 쓰기를 중지하려면 이를 중단하세요. 다음으로 BLOCKS 중 하나(예: SPT=6450)의 소스 포트를 살펴보고 해당 세션에 대한 패킷만 다른 파일로 가져오도록 필터를 수행합니다.

tcpdump -r /tmp/ufw.log -w /tmp/ufw.port6450 port 6450

그런 다음 Wireshark를 사용하여 해당 출력 파일을 살펴보십시오. 해당 ACK 패킷은 가짜 재전송으로 빨간색으로 표시될 가능성이 높으며 해당 RST 패킷은 FIN-ACK 이후에 전송되므로 유효하지 않게 됩니다.

관련 정보