홈페이지 » 어떻게 » 네트워크 노크하기, 제 2 부 VPN 보호 (DD-WRT)

    네트워크 노크하기, 제 2 부 VPN 보호 (DD-WRT)

    라우터에서 "포트 노킹 (Port Knocking)"으로 원격으로 WOL을 트리거하는 방법을 설명했습니다. 이 기사에서는이를 사용하여 VPN 서비스를 보호하는 방법을 보여줍니다..

    이미지 Aviad Raviv & bfick.

    머리말

    DD-WRT에 내장 된 VPN 기능을 사용하거나 네트워크에 다른 VPN 서버가있는 경우 노크 시퀀스 뒤에 숨겨서 무차별 공격으로부터 시스템을 보호 할 수 있습니다. 이렇게하면 네트워크 액세스 권한을 얻으려는 스크립트 키디를 걸러 낼 수 있습니다. 이전 기사에서 언급했듯이 포트 노킹은 좋은 암호 및 / 또는 보안 정책을 대체하지 않습니다. 충분한 인내심을 가지고 공격자가 시퀀스를 발견하고 재생 공격을 수행 할 수 있음을 기억하십시오.
    또한이 구현의 단점은 VPN 클라이언트가 연결할 때 노크 시퀀스를 트리거해야한다는 것입니다 미리 어떤 이유로 든 시퀀스를 완료 할 수 없다면 VPN에 전혀 참여할 수 없다는 것.

    개요

    VPN 서비스를 보호하기 위해 먼저 1723의 인스턴스 포트를 차단하여 가능한 모든 통신을 비활성화합니다.이 목표를 달성하기 위해 iptables를 사용합니다. 이것은 통신이 대부분의 최신 Linux / GNU 배포판과 특히 DD-WRT에서 필터링되는 방식이기 때문입니다. iptables checkout에 대한 더 많은 정보를 원한다면 위키 항목을 읽어 보시고 주제에 대한 이전 기사를보십시오. 일단 서비스가 보호되면, VPN 인스턴스 포트를 일시적으로 열고, 이미 설정된 VPN 세션을 연결된 상태로 유지하면서 설정된 시간이 지나면 자동으로 닫는 노크 시퀀스를 생성합니다.

    참고 :이 가이드에서는 PPTP VPN 서비스를 예로 들어 설명합니다. 즉, 다른 VPN 유형에도 동일한 방법을 사용할 수 있습니다. 차단 된 포트 및 / 또는 통신 유형을 변경하면됩니다..

    선행 조건, 가정 및 권장 사항

    • Opkg를 사용할 수있는 DD-WRT 라우터가 있다고 가정합니다..
    • "네트워크에 두는 방법 (DD-WRT)"가이드의 단계를 이미 수행했다고 가정합니다..
    • 일부 네트워킹 지식이 있다고 가정합니다..

    깨지게하자..

    태만 DD-WRT에서 "새 VPN 차단"규칙

    아래의 코드는 Linux / GNU 배포판을 사용하는 모든 자존심있는 iptables에서 작동하지만, DD-WRT에서 사용하는 방법은 매우 다양합니다. 원하는 경우 VPN 상자에서 직접 구현하는 것을 막을 수있는 방법은 없습니다. 그러나이를 수행하는 방법은이 가이드의 범위를 벗어납니다..

    우리는 라우터의 방화벽을 확장하기를 원하기 때문에 "방화벽"스크립트에 추가하는 것은 논리적 일뿐입니다. 이렇게하면 방화벽이 새로 고침 될 때마다 iptables 명령이 실행되어 유지 보수를 위해 우리의 기능 보강이 유지됩니다.

    DD-WRT의 웹 GUI에서 :

    • "관리"-> "명령"으로 이동하십시오..
    • 텍스트 상자에 아래의 "코드"를 입력하십시오 :

      inline = "$ (iptables -L INPUT -n | grep -n"상태, 관련 | "awk -F : 'print $ 1')"; 인라인 = $ (($ 인라인 - 2 + 1)); iptables -I INPUT "$ inline"-p tcp --dport 1723 -j DROP

    • "방화벽 저장"을 클릭하십시오..
    • 끝난.

    이 "부두"명령은 무엇입니까??

    위의 "voodoo magic"명령은 다음을 수행합니다.

    • 이미 설정된 통신을 통과시킬 수있는 iptable 라인이 어디에 있는지 찾습니다. A. DD-WRT 라우터에서 VPN 서비스를 사용하는 경우이 줄과 B 바로 아래에 위치하게됩니다. VPN 서비스를 다시 시작한 후에 이미 설정된 VPN 세션을 계속 사용하도록하는 것이 중요합니다. 노크 이벤트.
    • 정보 열 머리글로 인한 오프셋을 설명하기 위해 리스팅 명령의 출력에서 ​​2를 공제합니다. 일단 끝나면 위의 숫자에 하나를 더하여 삽입하려는 규칙이 이미 설정된 통신을 허용하는 규칙 바로 뒤에옵니다. 나는 여기에 아주 간단한 "수학 문제"를 남겨 두었습니다. 단지 왜 "하나를 추가하는 대신 규칙의 자리에서 하나를 줄여야하는지"의 논리를 만들기 위해서입니다..

    녹다운 구성

    새로운 VPN 연결을 만들 수있는 새로운 트리거링 시퀀스를 만들어야합니다. 이렇게하려면 터미널에서 실행하여 knockd.conf 파일을 편집하십시오.

    vi /opt/etc/knockd.conf

    기존 구성에 추가 :

    [enable-VPN]
    시퀀스 = 02,02,02,01,01,01,2010,2010,2010
    seq_timeout = 60
    start_command = iptables -I 입력 1 -s % IP % -p tcp - dport 1723 -j 승인
    cmd_timeout = 20
    stop_command = iptables -D INPUT -s % IP % -p tcp --dport 1723 -j ACCEPT

    이 구성은 다음을 수행합니다.

    • 시퀀스를 완료 할 기회를 60 초로 설정하십시오. 가능한 한 짧게 유지하는 것이 좋습니다.
    • 포트 2, 1 및 2010에서 3 회의 노크를 듣습니다 (이 순서는 포트 스캐너를 쫓아 버리는 데 계획적입니다).
    • 시퀀스가 감지되면 "start_command"를 실행하십시오. 이 "iptables"명령은 방화벽 규칙의 맨 위에있는 "노크가 왔던 곳에서 포트 1723을 대상으로 트래픽을 수락"합니다. (% IP % 지시자는 KnockD에 의해 특별하게 취급되고 노크 원점의 IP로 대체된다).
    • "stop_command"명령을 실행하기 전에 20 초 동안 기다리십시오..
    • "stop_command"를 실행하십시오. 이 "iptables"명령은 위와 반대로 수행하고 통신을 허용하는 규칙을 삭제합니다.
    바로 그 것입니다, 당신의 VPN 서비스는 이제 성공적인 "노크"후에 연결 가능해야합니다..

    저자님의 팁

    당신이 모든 준비를해야하는 동안, 나는 언급해야 할 점이 몇 가지있다..

    • 문제 해결. 문제가있는 경우 첫 번째 기사의 마지막 부분에있는 "문제 해결"세그먼트가 첫 번째 중단 점이되어야 함을 기억하십시오..
    • 원하는 경우 "시작 / 정지"지시문을 세미 콜린 (;) 또는 스크립트로 구분하여 여러 명령을 실행할 수 있습니다. 그렇게하면 멋진 물건을 만들 수 있습니다. 예를 들어, 내가 주문한 것을 이메일로 보내왔다..
    • "이 응용 프로그램이 있습니다"라는 것을 잊지 마십시오.이 기사에서 언급하지는 않았지만 StavFX의 Android knocker 프로그램을 얻는 것이 좋습니다.
    • 안드로이드에 관해서는, PPTP VPN 클라이언트가 보통 제조사로부터 운영 체제에 내장되어 있음을 잊지 마십시오..
    • 초기에 무언가를 차단하고 이미 설정된 통신을 허용하는 방법은 사실상 모든 TCP 기반 통신에 사용할 수 있습니다. 실제로 Knockd on DD-WRT 1 ~ 6 영화에서는 포트 3389를 예로 사용하는 원격 데스크톱 프로토콜 (RDP)을 사용한 적이 있습니다..
    참고 :이 작업을 수행하려면 라우터에서 전자 메일 기능을 가져와야합니다. 현재 OpenWRT의 opkg 패키지의 SVN 스냅 샷이 혼란 스럽기 때문에 실제로 작동하지 않습니다. 그래서 knockd를 VPN 상자에서 직접 사용하여 SSMTP 및 sendEmail과 같이 Linux / GNU에서 사용할 수있는 전자 메일을 보내는 모든 옵션을 사용할 수있게하는 것이 좋습니다.

    누가 내 잠을 방해하는지?