모든 소스 IP에서 포트 충돌 후 SSH 액세스 허용

모든 소스 IP에서 포트 충돌 후 SSH 액세스 허용

이 튜토리얼에 따라 iptables 규칙과 "최근" 모듈만 사용하여 Linux에서 SSH에 대한 작동 포트 노킹 설정을 설정했습니다.https://wiki.archlinux.org/index.php/Port_knocking#Port_knoking_with_iptables_only.

이제 내 문제는 내 작업 네트워크와 같은 여러 네트워크가 22, 80, 443과 같은 비표준 포트에 대한 트래픽을 차단하므로 노크 패킷을 보낼 수 없다는 것입니다. 반면에 내 모바일 인터넷에서는 허용됩니다.

해결 방법으로 올바른 탭 순서를 전송하면서 SSH 포트를 열고 싶습니다.어느호스트, 단지 동일한 호스트가 아닙니다.

iptables를 사용하여 이를 달성할 수 있는 방법이 있습니까? 예를 들어, 한 규칙에 의해 켜지고 다른 규칙에 의해 검사될 수 있는 "상태 스위치" 또는 전역 변수를 상상할 수 있습니다. 시간 초과 후에는 "꺼짐" 상태로 돌아갑니다.

답변1

노크온더노크(Knock-on-the-knock) 루트로 가는 것을 추천합니다. 이 방법이 더 쉽습니다. 대신 이 기본 구성을 사용하세요.

[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

관련 정보