IPtables 문자열이 특정 URL과 일치합니다.

IPtables 문자열이 특정 URL과 일치합니다.

iptables를 작성하려고 합니다.문자열 일치차단할 규칙 http://example.com:8888https://example.com:8888규칙에 제공된 문자열과 일치하는 경우입니다. 또 다른 규칙은 포트를 8888에서 7777로 리디렉션합니다.

다음 규칙을 따르려고 시도했지만 불행히도 작동하지 않았습니다.

iptables -A INPUT -p tcp -s 0.0.0.0/0 -m string --string linuxcore --algo bm --sport 8888 -j DROP
iptables -t raw -A PREROUTING -m string --algo bm --string linuxcore -p tcp -i eth0 --dport 8888 -j DROP
iptables -t nat -A PREROUTING -p tcp --dport 8888 -m string --algo bm --string "linuxcore" -j REDIRECT --to-port 7777
iptables  -A INPUT -t nat -p tcp --dport 8888 -m string --algo bm --string "linuxcore" -j DROP

답변1

제가 생각하는 것보다 훨씬 더 복잡한 일을 하려고 하시는 것 같네요.

당신은 무엇을 요구합니까?

패킷 페이로드(계층 7)에서 특정 문자열을 차단합니다. 이렇게 하면 누군가 "linuxcore"라는 문자열을 언급하는 이메일이나 IM을 보내거나 포럼에 이에 대한 댓글을 게시하는 것을 방지할 수 있습니다.

나는 당신이 원하는 것을 생각합니다 :

포트 8888로 향하는 패킷을 domain.com이라는 이름으로 확인된 IP 주소로 포트 7777로 리디렉션합니다.

전자는 별로 의미가 없기 때문에 나는 당신이 원하는 것을 가정할 것입니다. 나는 또한 당신이 "foo.domain.com" 매칭에 관심이 없다고 가정합니다. 기억하세요, 이것은아이피조심해, 아니도메인 이름 서버표면.

이 경우 1, 2, 4행은 불필요합니다. 그리고 문자열 일치가 필요하지 않습니다. iptables이름을 적절한 IP 주소로 변환하고 필요에 따라 규칙을 재사용할 만큼 똑똑합니다. 또한 을 사용하고 있으므로 PREROUTING이것이 일치하는 것만 알 수 있습니다.귀하의 시스템에, 데이터 패킷이 아님떠나다시스템(떠나는 패킷을 일치시키려면 을 사용 OUTPUT하거나 각각 하나씩 보유해야 함).

규칙은 다음과 같습니다.

iptables -t nat -A PREROUTING -d domain.com -p tcp --dport 8888 -j REDIRECT --to-ports 7777 

관련 정보