이 튜토리얼 다음에 나오는 iptables 규칙과 "최근" 모듈만 사용하여 Linux에서 SSH에 대한 작업 포트 노킹 설정이 있습니다.https://wiki.archlinux.org/index.php/Port_knocking#Port_knocking_with_iptables_only.
이제 내 문제는 내 작업 네트워크와 같은 여러 네트워크가 22, 80, 443과 같은 비표준 포트에 대한 트래픽을 차단하므로 노크 패킷을 보낼 수 없다는 것입니다. 반면에 내 모바일 인터넷에서는 허용됩니다.
해결 방법으로 올바른 노크 시퀀스가 전송될 때마다 SSH 포트를 열고 싶습니다.어느호스트, 단지 동일한 호스트가 아닙니다.
iptables로 이를 달성할 수 있는 방법이 있나요? 예를 들어 하나의 규칙으로 켜고 다른 규칙으로 확인할 수 있는 "상태 스위치" 또는 전역 변수를 상상할 수 있습니다. 시간 초과 후에는 다시 "꺼짐" 상태로 돌아갑니다.
답변1
나는 노크 루트로 가는 것을 제안하고 싶다. 이 방법이 더 간단합니다. 이 기본 구성을 사용하는 대신에만
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
이것을 사용합니다(참고 -s %IP% 제거됨).
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -D INPUT -p tcp --dport 22 -j ACCEPT