열린 소켓 연결이 있고 들어오는 패킷에 특정 문자열이 포함되어 있으면 즉시 연결을 닫고 싶습니다. iptables를 사용하여 다음을 시도했습니다.
sudo iptables -A INPUT -p tcp --dport 1342 -m string --algo bm --string ".." -j REJECT
sudo iptables -A INPUT -p tcp --dport 1342 -m string --algo bm --string ".." -j DROP
그러나 이들 중 어느 것도 작동하지 않으며 연결이 영구적으로 정지됩니다. 연결을 영구적으로 "끊는" 방법은 무엇입니까?
참고: 테스트 애플리케이션으로 간단한 netcat을 사용했습니다. 먼저 클라이언트와 리스너를 연결한 다음 금지된 문자열을 보냅니다. 이후에는 REJECT 규칙을 사용해도 응답이 수신되지 않으며 이 연결을 통해 더 이상 행을 보낼 수 없습니다.
답변1
이것이 당신에게 도움이 되기를 바랍니다. tcp-reset과 함께 REJECT를 사용합니다.
sudo iptables -A INPUT -p tcp --dport 1342 -m string --algo bm --string ".." -j REJECT --reject-with tcp-reset
그래도 작동하지 않으면 kmp를 시도해 보십시오.
sudo iptables -A INPUT -p tcp --dport 1342 -m string --algo kmp --string ".." -j REJECT --reject-with tcp-reset