Linux 64비트 SSH 포트 번호?

Linux 64비트 SSH 포트 번호?

일반적으로 64,000개가 넘는 사용 가능한 포트는 필요하지 않지만 64비트 포트 번호를 사용하면 액세스 포트(ssh, vpn...)에 대한 일반적인 공격을 완화할 수 있기 때문에 PoC에 관심이 있습니다. 포트 64b를 사용하면 DoS 또는 로그인을 위해 서비스를 무작위로 공격하는 것이 거의 불가능합니다. 좋다

 ssh -p 141592653589793238 my.site.com
  • 64비트 포트를 사용하도록 Linux를 구성할 수 있습니까? (물론 클라이언트와 서버가 모두 구성되어 있어야 합니다)

그리고 실제로

  • 이것이 인터넷 장치를 방해합니까? ("전송"은 IP 위에 있는 OSI 계층 4이므로 라우팅 자체는 영향을 받지 않지만 일부 장치는 분석/악성 코드 탐지를 위해 상위 계층으로 올라갑니다...; 64비트 포트 Linux 상자는 다음과 같은 역할을 합니다. 홈 라우터)

답변1

64비트 포트를 사용하도록 Linux를 구성할 수 있습니까?

TCP/UDP에서 64비트 포트를 사용하도록 매개변수를 변경할 수 없습니다.

할 수 있다유사한 프로토콜을 생성하십시오. 그러나 수정된 ​​호스트하고만 통신할 수 있으며 이는 TCP/UDP가 아니라 TCP64/UDP64와 같은 새로운 프로토콜 세트입니다.

메모리 영향과 기타 수많은 문제를 고려하기 전에 이러한 프로토콜이 작동하도록 하려면 다음 중 일부를 추가해야 합니다.

  • TCP64의 정의(현재 TCP 세그먼트 수정)
  • 새로운 제품군 AF_INET은 확장 포트와 이를 처리하는 커널 코드를 수용할 수 있습니다. (복사/붙여넣기를 고려하고 있다면 최소한 구조체 정의, 유형 정의 목록 및 목록을 변경해야 한다는 점에 유의하십시오. 전화 htons()하거나 ntohs()예를 들어
  • 방화벽(트래픽을 필터링하려는 경우)과 같은 네트워크 가장자리에 있는 프로그램을 포함하여 새 스택을 사용하도록 설계된 모든 사용자 공간 프로그램에 코드를 작성합니다.

이는 자체 프로토콜을 사용하는 다른 프로토콜 세트가 되기 때문입니다.IP 번호, IP 프로토콜 번호를 알 수 없기 때문에 라우팅 노드에 의해 삭제될 수 있지만 라우팅 노드를 방해하지 않습니다.

완화의 경우: fail2ban그러나 유사한 소프트웨어 및 사용자 정의 서비스 포트(16비트 범위)가 일반적인 기술입니다.유일한 사람은 아니다.

답변2

포트 64b를 사용하면 DoS 또는 로그인을 위해 서비스를 무작위로 공격하는 것이 거의 불가능합니다. 좋다

ssh -p 141592653589793238 my.site.com

고객은 141592653589793238을 어떻게 알 수 있나요? 이 정보를 일부 디렉터리 또는 쿼리 서비스에서 얻을 수 있다면 공격자는 해당 서비스에서 포트 번호를 얻을 것이므로 아무런 이점도 없습니다. 141592653589793238이 비밀인 경우 프로토콜의 유용성이 제한됩니다. 즉, 클라이언트는 이전에 비밀 정보를 받은 잘 알려진 서버에만 연결됩니다. 이 설명에 맞는 서비스는 거의 없습니다. SSH는 적합한 몇 안 되는 프로토콜 중 하나이지만, 그래도 추가적인 장애물이 됩니다.

또한 전송 중인 패킷을 관찰할 수 있는 공격자는 포트 번호를 볼 수 있습니다. 그래서 그 비밀은 오랫동안 비밀로 유지되지 않을 것입니다.

이점은 거의 존재하지 않습니다. 일부 서비스 거부 공격을 제외하고 공격자가 서비스에 대한 연결을 열 수 있는지 여부는 중요하지 않습니다. 중요한 것은 서비스에 악용 가능한 취약점이 없다는 것입니다. 일반적인 SSH 서버의 보안보다 훨씬 약한 추가 비밀 뒤에 특정 서비스(SSH)를 숨기면 실제로 보안을 얻을 수 없습니다.

64비트 포트를 사용하도록 Linux를 구성할 수 있습니까? (물론 클라이언트와 서버가 모두 구성되어 있어야 합니다)

아니요. 포트 번호의 자릿수는 시스템 속성이 아닙니다. 그것은규약(일면전송 제어 프로토콜) 모두가 동의합니다. 서로 다른 시스템이 서로 다른 포트 번호 크기를 사용하는 경우 서로 통신할 수 없습니다.

확신하는구현하다TCP와 유사하지만 64비트 포트 번호를 사용하는 프로토콜입니다. 그러나 이것은 단지 구성 항목을 변경하는 문제가 아니라 완전히 새로운 코드 조각이자 완전히 새로운 프로토콜입니다.

이것이 인터넷 장치를 방해합니까?

예. 거의 모든 TCP/IP 클라이언트 뒤에는네트워크 주소 변환. NAT는 포트 번호로 연결을 식별합니다. NAT는 또한 새로운 프로토콜을 지원해야 합니다.

답변3

다른 사람들이 언급했듯이 이것은 불가능합니다.TCP와 UDP 모두 16비트를 사용합니다.포트 지정에 사용됩니다. 따라서 인터넷의 모든 호스트가 TCP 프로토콜을 다른 프로토콜로 변경하도록 해야 하지만 이런 일이 발생할 가능성은 거의 없습니다.

다행히도 우리는IPv6이제 많은 장소에 배포되어 호스트에서 다양한 IPv6 주소를 수신하는 다양한 서비스를 가질 수 있으며 공격자가 포트가 무엇인지 추측하여 IP 주소를 추측하는 대신 검색을 통해 더 많은 범위를 검색할 수 있습니다. 같은 일을 성취하십시오. IPv6 주소는 128비트를 가지며 심지어 컴퓨터도 항상 자체적으로 최소 64비트(허용되는 경우 그 이상)를 사용할 수 있으므로 공격자가 64비트 포트에 대한 아이디어보다 추측하기가 더 어렵습니다.

물론, 포트를 숨기는 아이디어와 마찬가지로 공격자가 숨겨진 IPv6 주소를 쉽게 얻을 수 없도록 주의해야 합니다.

(물론 원본 컴퓨터와 대상 컴퓨터 모두 IPv6 연결이 있어야 합니다. 그렇지 않은 경우 ISP에 로비하여 로컬로 제공하고 일부 IPv6 터널링을 사용합니다.터널 중개 네트워크그럴 때까지)

답변4

TCP 스택을 수정하는 것은 가능하지 않다고 생각합니다. 서버 측에서 수정하더라도 클라이언트와 그 위에서 실행되는 소프트웨어를 패치해야 하기 때문입니다.

완화 방법으로 CrowdSec을 사용하는 것이 좋습니다. 이것은 현대적인 Fail2ban(로그에서 동작을 찾아 차단함)이지만 IPv6를 준수하고 더 빠르며 분리되어 있습니다. 또한 해당 포트를 표적으로 삼는 공격적인 IP를 식별하는 SSH 포트를 보호하는 다른 모든 사용자의 IP 블랙리스트를 통해 이점을 얻을 수 있습니다.

면책조항: 저는 CrowdSec 팀의 일원입니다.

관련 정보