저는 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
어쩌면 누군가가 더 나은 대답을 할 수도 있지만 이것은 내 것입니다.
LOG
또는ACCEPT
등이DROP
아닌 대상을 사용하여 동일한 규칙을 만듭니다 . 이 규칙은 다음에서 유래합니다.앞으로테스트하고 싶은 것.iptables -I OUTPUT -s 192.168.100.10 -p tcp --dport 22 -j LOG --log-level info
커널 로그를 지시하는 곳 어디에서나 로그 출력을 찾을 수 있습니다. (모른다면 다른 문제입니다.)
tail -f
다른 호스트에서 해당 포트에 접속하려고 할 때 이 파일을 사용하세요./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
그림을 살펴보세요.
테이블, 체인 등이 무엇인지 더 잘 이해하려면 다음을 참조하세요.여기
답변3
들어오는 연결 테스트: nmap은 다른 컴퓨터에서 실행하는 데 필요한 훌륭한 도구입니다. Zenmap은 nmap의 그래픽 사용자 인터페이스입니다. 이를 사용하여 열린 포트 등을 검색할 수 있습니다.
특정 IP 포트를 차단하는 경우 쉽게 변경할 수 있습니다. 포트 22를 사용하지 못하도록 차단하시면 SSH 서버를 다른 포트에 추가하겠습니다.
일반적으로 필요한 콘텐츠를 제외한 모든 콘텐츠를 차단하려고 합니다.