모든 소스 IP에서 포트 노크 후 SSH 액세스 허용

모든 소스 IP에서 포트 노크 후 SSH 액세스 허용

이 튜토리얼 다음에 나오는 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

관련 정보