iptable 규칙이 유효한지 확인하는 방법

iptable 규칙이 유효한지 확인하는 방법

저는 iptables와 네트워킹 전반에 익숙하지 않아서 시도해 보고 있습니다.

포트를 닫는 방법을 배우고 있습니다. 특히 네트워크의 다른 시스템이 패킷을 수신하지 못하도록 호스트의 특정 포트를 닫으려고 합니다.

특정 시스템(192.168.100.3)에서 시스템(192.168.100.10)으로 SSH를 연결할 수 없도록 포트 22에서 나가는 트래픽을 제거하고 싶습니다.

트래픽을 제거하려는 컴퓨터(192.168.100.3)에 이 규칙을 작성했습니다.

iptables -I OUTPUT -s 192.168.100.10 -p tcp --dport 22 -j DROP

지금까지는 오류가 발생하지 않았지만 이 컴퓨터에 SSH로 연결하려고 하면 문제 없이 수행할 수 있습니다.

내 규칙은 "해당 포트의 해당 IP로 전달되는 출력에서 ​​모든 패킷을 삭제"하는 것입니다. 이렇게 하면 포트 22에서 실행 중이므로 ssh 연결이 시작되지 않습니다.

내가 무엇을 놓치고 있나요? 규칙이 실제로 유효한지 어떻게 확인할 수 있나요?

편집: 귀하의 의견에 감사드립니다. d 대신 s를 사용했기 때문에 아마도 작동하지 않았을 것입니다.

답변1

어쩌면 누군가가 더 나은 대답을 할 수도 있지만 이것은 내 것입니다.

  1. LOG또는 ACCEPT등이 DROP아닌 대상을 사용하여 동일한 규칙을 만듭니다 . 이 규칙은 다음에서 유래합니다.앞으로테스트하고 싶은 것.

    iptables -I OUTPUT -s 192.168.100.10 -p tcp --dport 22 -j LOG --log-level info 
    

    커널 로그를 지시하는 곳 어디에서나 로그 출력을 찾을 수 있습니다. (모른다면 다른 문제입니다.) tail -f다른 호스트에서 해당 포트에 접속하려고 할 때 이 파일을 사용하세요.

  2. /u/richard가 제안한 대로 규칙이 적용되면 nmap다른 도구를 사용하여 테스트 중인 포트에 도달하려고 시도하고 iptables-v옵션을 실행하여 -x각 규칙에 맞는 정확한 패킷 수를 확인합니다. 나는 사용한다:

    iptables -L OUTPUT -nvx
    

    규칙이 목록의 #6이라고 가정해 보겠습니다. 편리한 프로그램을 사용하여 이 프로그램을 모니터링할 수 있습니다 watch.

    watch -n 0.5 iptables -L OUTPUT 6 -nvx
    

    디스플레이는 1/2초마다 업데이트됩니다.

답변2

iptables들어오는 요청이 강력한 TRACE목표 와 일치하는 규칙을 자세히 확인하기 위해
문서에 이를 가장 잘 요약되어 있습니다.

TRACE
이 목표는 패킷이 테이블, 체인 및 규칙을 통과할 때 커널이 패킷과 일치하는 각 규칙을 기록하도록 패킷을 표시합니다.
...
원본 테이블에서만 사용할 수 있습니다.

귀하의 경우에는 다음을 수행하십시오.

iptables -t raw -A PREROUTING -s 192.168.100.10 -p tcp --dport 22 -j TRACE

설명:
192.168.100.10에서 시스템 포트 22로 전송된 모든 TCP 패킷이 표시되므로 해당 패킷에 적용되는 모든 규칙이 커널 로그에 기록됩니다.
이를 사용하려면 TRACE체인이 포함된 원본 테이블에 추가 해야 합니다 PREROUTING.

패킷이 테이블과 체인을 통해 어떻게 흐르는지 알고 싶다면 iptables그림을 살펴보세요. iptables를 통한 데이터 패킷의 경로

테이블, 체인 등이 무엇인지 더 잘 이해하려면 다음을 참조하세요.여기

답변3

들어오는 연결 테스트: nmap은 다른 컴퓨터에서 실행하는 데 필요한 훌륭한 도구입니다. Zenmap은 nmap의 그래픽 사용자 인터페이스입니다. 이를 사용하여 열린 포트 등을 검색할 수 있습니다.

특정 IP 포트를 차단하는 경우 쉽게 변경할 수 있습니다. 포트 22를 사용하지 못하도록 차단하시면 SSH 서버를 다른 포트에 추가하겠습니다.

일반적으로 필요한 콘텐츠를 제외한 모든 콘텐츠를 차단하려고 합니다.

관련 정보