IPTABLES : 선택된 네트워크의 IP당 시간 단위로 포트 25에 접근하도록 제한하는 방법

IPTABLES : 선택된 네트워크의 IP당 시간 단위로 포트 25에 접근하도록 제한하는 방법

나는 메일 서버를 가지고 있는데 사용자가 보내기/받기 버튼을 동시에 클릭하는 것을 좋아하는 나쁜 습관이 있어서 로그에 불필요한 정보가 넘쳐나게 됩니다.

내 네트워크의 각 IP 주소(내부 IP 주소)를 30초에 한 번씩 메일 서버에 연결할 수 있도록 제한하려고 합니다. 하지만 외부 IP 주소에는 적용하면 안 됩니다. 메일 서버는 언젠가 다음에서 전달 메일을 받게 됩니다. 또 다른 허용된 메일 서버.

나는 iptables의 맨페이지를 읽었지만 --connlimit-above N시간 단위가 아닌 연결만 제한한다는 것을 알았습니다.

누구든지 iptables 또는 ufw를 사용하여 수행할 수 있는 방법을 보여줄 수 있습니까?

답변1

이는 속도 제한의 표준 사례입니다.

iptables -I INPUT -p tcp --dport 25 -i eth0 -s 192.168.0.0/24 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 25 -i eth0 -s 192.168.0.0/24 -m state --state NEW -m recent --update --seconds 30 --hitcount 2 -j DROP

여기서는 귀하의 LAN이 다음과 같다고 가정했습니다.192.168.0.0/24그리고 당신의 인터페이스는eth0, 그렇지 않은 경우 그에 따라 변경하십시오.

첫 번째 규칙은 모든 항목을 탐지합니다.새로운패킷이 오고 있어요eth0LAN에서 TCP 포트 25로 향하고 IP 주소를최근의목록; 두 번째 명령을 받은 후새로운동일한 포트의 패킷을 확인합니다.최근의목록 (--업데이트) 그리고 주소가 목록에 다음보다 적게 입력된 경우--초 30before , 주어진 개수만큼 패킷을 삭제합니다.--적중 횟수 2도달했습니다.

해당 사항만 적용되니 참고해주세요새로운패킷: 합법적인 대화가 진행 중인 경우 이를 방해하고 싶지 않고 다른 대화의 설정을 차단하면 됩니다. 이에 대해 내 대답은 Angelo의 대답과 완전히 다릅니다.

답변2

좋아, 나는 이것을 테스트하지 않았으므로 작동하지 않으면 미리 사과드립니다. (그러나 이것이 당신이 그것을 알아낼 수 있을 만큼 충분히 도움이 되기를 바랍니다):

iptables -A INPUT -s 192.168.0.0/24 -p tcp -m state --state ESTABLISHED --tcp-flags FIN,ACK FIN,ACK --dport 25 -m recent --name smtplimit --set
iptables -A INPUT -s 192.168.0.0/24 -p tcp -m state --state ESTABLISHED --tcp-flags RST RST --dport 25 -m recent --name smtplimit --set
iptables -A INPUT -s 192.168.0.0/24 -m recent --name smtplimit --rcheck --seconds 30 --hitcount 1 -m limit --limit 1/minute -j LOG --log-prefix 'SMTP limit:'
iptables -A INPUT -s 192.168.0.0/24 -m recent --name smtplimit --rcheck --seconds 30 --hitcount 1 -j DROP

관련 정보