it-swarm-korea.com

포트 노킹이 좋은 생각입니까?

일반적으로 서버의 경우 특정 IP 주소로만 액세스 할 수 있도록 SSH 및 기타 비공개 서비스를 잠그고 싶습니다. 그러나 비즈니스에 고정 IP 주소가 없거나 외부 개발자가 액세스해야하는 경우 항상 실용적이지는 않습니다.

나는 얼마 전에 포트 노킹에 대해 들었고 마침내 위의 문제에 대한 해결책으로 그것을 볼 기회를 얻었습니다. 이 결과로 사람들이 나를 도울 수있는 많은 질문이 있습니다.

  • 누구나 자신의 비즈니스/조직 내에 배포하고 조언을 제공 할 수 있습니까?
  • Linux에서 실행하기에 가장 좋은 노크 데몬은 무엇입니까?
  • Linux, Windows 및 OSX에 가장 적합한 클라이언트는 무엇입니까?
  • 노크 시퀀스의 권장 길이는 얼마이며 TCP, UDP 또는 둘 다를 사용하는 것이 가장 좋습니다?
  • 사용에 따른 단점과 문제점은 무엇입니까?
  • 보안을 통한 보안 일 뿐입니 까?
  • 포트 노킹 방식에 대한 대안이 있습니까?
41
Mark Davidson

아직 배포하지는 않았지만 배포 한 많은 사람들을 알고 있습니다. 그들 모두는 그 결과 SSH 무차별 대입 공격과 같은 것들에 의해 소비되는 대역폭의 양이 크게 감소한 것으로 나타났습니다.

그러나 단점이 없다고 말하는 것은 아닙니다. AFAIK, 사용 가능한 커널 기반 포트 노킹 구현이 없으므로 채택의 핵심입니다. 포트 노킹 데몬은 방화벽 시스템에서 실패한 (및 필터링/금지 된) 로그 파일 항목을 읽습니다. 그것은 모두 훌륭하고 멋지지만 파일 시스템이 가득 차면 어떻게됩니까? 시스템의 RAM 및 스왑을 잡아 먹는 일부 런 어웨이 프로세스로 인해 데몬이 종료되면 어떻게됩니까?이 두 가지 중 하나에 의존하여 작동을 멈 추면 어떻게됩니까? 물리적으로 액세스해야하는 서버가 생길 수 있습니다. 특히 서버에서 수십 마일 이상 떨어져 있고 전화를 걸 수있는 사람이없는 경우 합리적보다 비용이 많이들 수 있습니다. 서두르십시오.

내가 말할 수있는 한 가지는 "모호함을 통한 보안"이 아니라는 것입니다. 포트 노킹은 인증의 한 형태이며 다른 인증 시스템과 마찬가지로 원하는만큼 간단하거나 복잡하게 만들 수 있습니다. "포트 10,000 + 실제 포트 번호에 대한 노크"와 같은 간단한 작업을 수행 할 수 있습니다. 이는 사소한 중단에 해당하거나 포트 노킹 자체를 사용하여 실제 형태의 인증을 전송하는 데 사용될 수 있습니다 (예 : 다른 방법으로 파생 된 키). 단 하나의 패킷을 보내는 것보다 상당히 오래 걸리고 패킷이 적어도 TCP 이상인 경우)보다 많은 양의 데이터를 전송하기 위해 포트 노킹을 사용하는 것은 불가능합니다. 성공적으로 수신되었거나 어떤 형태의 오류가 발생했는지 알 수 있습니다.

그러나 이것이 제기하는 흥미로운 질문 중 하나는 로그 파일을 관리하는 방법입니다 .-- 사용자 구현에서는 노크가 성공적으로 전송되었는지 여부와 로그가 유출되면 어떻게됩니까? 인증 데이터가 알려 지므로 이는 그리 좋지 않습니다.

설정에서 포트 노킹을 사용할지 여부를 알 수 없습니다. 아직은 아니고 앞으로도 100 % 확신 할 수 없습니다. 포트 노킹을 방해하는 것보다 강력한 암호화 (예 : PKI 인프라)를 기반으로하는 강력한 인증 시스템을 사용하는 것이 더 합리적입니다. 또한 중요한 인프라에 액세스하는 데 실패한 단일 지점을 추가하는 것은 나쁜 생각처럼 보이고 어떤 종류의 보증으로도 제대로 지원하기가 더 어려워 보입니다. 다시 말하지만, 이는 운영 체제 커널 수준에서 방화벽과 통합되지 않은 포트 노킹 소프트웨어의 개념을 기반으로합니다. 그래도 바뀌면 사용에 대한 느낌도 바뀔 수 있습니다.

34
Michael Trausch

포트 노킹은 또 다른 일반 텍스트 비밀번호가 아닙니다. 적어도 SSH와 같은 TCP 포트에서 수신하는 서비스를 보호하는 데 사용될 때) 포트 노킹은 nmap을 통한 서비스 검색이 더 이상 가능하지 않다는 것을 의미합니다. 기본 드롭 방화벽 정책 사용 SSHD는 원격으로 악용 가능한 취약점을 가지고 있으며, 이것들은 약한 암호와 아무 관련이 없습니다. 누군가가 nmap을 실행하여 SSHD 수신 대기를 할 수 있기를 원하지 않습니다.

또한 "Single Packet Authorization"이라는 강력한 포트 노킹 변형이 있지만 완전히 수동적 인 인증 방식이므로 포트 노킹의 이점은 유지하지만 한계를 해결합니다 (재생 공격은 쉽고 DoS 공격은 쉽습니다) ).

13
Michael Rash

모든 인터넷 연결 서비스에는 SSH, OpenSSL 등의 서비스와 같은 보안 취약점이 상대적으로 자주 존재한다는 사실을 쉽게 확인할 수 있습니다. 이러한 공격은 인터넷에서 대규모로 시도되어 적절한 개방 포트가있는 시스템을 대상으로합니다.

내 생각에 포트 노킹은 일반적인 취약점을 찾는 인터넷에서 이러한 임의의 공격자를 멀리하는 목적을 가지고 있습니다. 즉, 전용 공격자를 멀리하거나 실제 서비스 보안의 일부를 형성해서는 안됩니다. 포트 노킹의 이점은 실제로 익스플로잇 가능한 버그가있을 가능성이 없을 정도로 단순해야한다는 것입니다.

이 사용법은 포트 노킹이 공격자의 majority를 유지하는 한 최대한 느슨 할 수 있음을 의미합니다. may 모호한 보안 일 뿐이지 만 더 나은 방법은 "암호"인증의 약한 형태로 만드는 것입니다.

따라서 "최상의"포트 노킹 서비스는 공격을 상상할 수는 없지만 합법적 인 사용자가 모든 종류의 클라이언트 시스템에서 사용할 수있을 정도로 사소한 서비스입니다.

9
Nakedible

포트 노킹은 모호함을 통한 보안이 아닙니다. 심층 방어입니다. 그것은 좀 더 훔칠 수있는 차 옆에 차를 주차하는 것과 같습니다. 표적 공격을 막기 위해 많은 일을하지는 않지만, 다른 방향을 바라 보는 기회 주의자들을 보낼 수도 있습니다.

8
jl6

다른 곳의 의견에 따르면 노크에 응답하기 위해 모든 종류의 특수 트릭을 사용하는 많은 구현이 있지만 Linux 시스템에서 순전히 iptables 사용 을 구현할 수 있습니다. 즉, 이것은 효과적으로 커널 기반 포트 노킹 구현입니다

노크는 네트워크에서 볼 수 있기 때문에 3 노크 이상의 시퀀스를 사용하면 거의 이점이 없습니다. TCP-사용하는 것이 좋습니다. 속도는 느리지 만 노크가 전달되었음을 더 잘 보장합니다.

그러나 사용자 공간 프로그램에 의존하지만 선호하는 fail2ban 은 연결하는 데 추가 단계/소프트웨어가 필요하지 않고 안정적으로 실행되며 실패하더라도 서버 액세스를 방해하지 않습니다. .

RFC1413은 작동 방식을 정의하는 대신 프로토콜을 사용하여 가능한 접근 방식을 언급하지만, 암호화 된 ID를 거의 채택하지 않았다는 것은 놀랍습니다.

물론 물론 독립적으로 액세스를 최대한 제한했는지 확인해야합니다 (즉, 루트 로그인이없고, 지정된 경우 지정된 그룹에 대한 액세스를 제한하는 경우 키 쌍이 필요함). SSH는 안전하도록 설계되었으며 역사적으로 메인 스트림 구현에는 비교적 적은 취약점이있었습니다. 공격이 성공한 이유는 일반적으로 추측 가능한 사용자 이름, 간단한 암호 및 무차별 대입 공격 또는 사회 공학의 조합입니다. 복잡한 암호 구문 유효성 검사 (최소 길이 제외)를 시행하거나 사용자가 암호를 계속 변경하도록 요구하지는 않지만 더 나은 접근 방법 (예 : 2 단계)이 있지만 안타깝게도 구현은 거의 없습니다.

7
symcbean

몇 년 동안 포트 노킹을 구현하지는 않았지만 원칙적으로 크게 변경되지 않았다고 생각합니다. 다른 의견에는 많은 유효한 요점이 포함되어 있으며 여기서는 간단히 반복하지 않습니다.

물론 항상 구현 한 포트 노킹의 한 가지 측면은 현재 날짜 및 시간과 같은 의사 난수이지만 반복 가능한 값에서 노크 시퀀스를 기반으로하는 것입니다. 이 전략은 리플레이 공격의 위험을 제거하지 않지만 주어진 노크 시퀀스의 노출을 제한합니다. 분명히 이것이 동기화 된 시간에 성공하기 위해서는 필자의 예에서 일관성을 위해 소스가 필요합니다.

4
Tok

Port Knocking은 또 다른 일반 텍스트 비밀번호입니다. 다른 일반 텍스트 암호와 마찬가지로 무차별 강제 실행, 검색, 캡처 및 재생할 수 있습니다. 텔넷 로그인을 다시 발명해야하는 이유는 무엇입니까?

당신은 무언가를 믿어야합니다. 따라서 OS 네트워킹 스택을 신뢰한다고 가정하고 지연된 압축, 권한 분리로 실행할 때 sshd를 신뢰하고 합리적인 형태의 2 단계 인증 (키 기반) 만 허용합니다.

Authpf를 호출하는 sshd와 같은 "간단한"서비스를 사용하여 더 복잡하고 취약한 서비스를 보호 할 수 있습니다.

authpf를 사용하면 sshd에 대해 성공적으로 인증 한 사람을 기반으로 방화벽 규칙 세트를 수정할 수 있으므로 ssh 게이트웨이에 로그인하도록 관리하는 IP 주소 만 컴파일/컴퓨 트/데이터베이스 팜에 연결할 수 있습니다.

2
Alex Holst