IP 연결 차단

IP 연결 차단

내 서버에 연결하는 것보다 IP가 있는 Apache 웹 서버에 문제가 있습니다. 많은 연결을 사용하고 죽지 않아 결국 웹 서버 시간 초과가 발생합니다. 다음을 사용하여 확인하면 연결이 SYN_SENT 상태로 유지됩니다.

netstat -netapu

iptable을 플러시하고 기본 규칙을 사용해도 여전히 작동하지 않습니다. Apache를 시작하면 IP가 연결됩니다.

내가 사용하는 기본 규칙:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

iptables -A INPUT -s 89.149.244.117 -j REJECT

iptables -A OUTPUT -s 89.149.244.117 -j REJECT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT

굵은 부분이 문제의 규칙입니다.

이것이 관련되어 있는지 확실하지 않지만 tcp_syncookies 값은 1입니다.

누군가 내 실수를 지적할 수 있나요? 영원히 차단할 수 있는 방법이 있나요?

답변1

우리에게 출력을 보여줄 수 있습니까?

iptables-save

? 어쩌면 규칙의 순서가 당신이 생각하는 것과 다를 수도 있습니다. 그 다음에

iptables -A OUTPUT -s 89.149.244.117 -j REJECT

아마도 읽어야 할 것입니다 :

iptables -A OUTPUT -**d** 89.149.244.117 -j REJECT

그런데 왜 REJECT 하고 DROP 하지 않습니까? 그런 다음 상태 모듈을 사용하는 경우 다음과 같이 작성해야 합니다.

iptables -A INPUT  -m state --state NEW -p tcp --dport 80 -j ACCEPT

그리고 서버가 DSR 모드의 로드 밸런서 뒤에 있으면 상태 모듈이 올바르게 작동하지 않습니다.

답변2

SYN_SENT 상태에서 멈춰 있는 연결을 다음과 같이 부릅니다.배아 연결. 이는 IP 주소에 연결하려고 할 때 어떤 이유로 IP가 다시 연락할 수 없을 때 발생합니다. 이는 다음을 의미합니다.그 반대가 아닌 그와 연결하려고합니다.

이 두 규칙을 추가하기 전에는 어떤 모습이었는지 모르겠지만 지금의 방식으로는 3방향 핸드셰이크의 첫 번째 부분(SYN)을 보낼 수 있지만 두 번째 부분(SYN)은 받을 수 없습니다. /ACK) 각 시도에 대해 연결을 SEN_SENT 상태로 유지합니다.

두 번째 규칙을 만들기 위해 첫 번째 규칙을 복사/붙여넣고 INPUT을 OUTPUT으로 변경 -s했지만 -d. 나도 한 번 이상 직접 해봤기 때문에 안다.

답변3

이러한 무차별 대입 공격을 대부분 차단하는 "FAIL2BAN" Linux 유틸리티를 사용해 보아야 합니다. Fail2Ban은 SSH, Apache 및 기타 여러 서비스에 대한 무차별 대입 공격 보호를 지원합니다. 예를 들어, IP 주소가 엄청난 수의 동시 연결을 시도하는 경우, Fail2ban은 iptables를 통해 해당 IP 주소를 자동으로 추가하고 일정 시간이 지나면 제거하여 이를 차단합니다.

관련 정보