포트 < 1024에 대한 바인딩이 Unix 시스템의 루트에만 승인되는 이유가 여전히 있습니까?

포트 < 1024에 대한 바인딩이 Unix 시스템의 루트에만 승인되는 이유가 여전히 있습니까?

Unix 시스템에서는 루트 권한이 없는 프로세스에서 tcp 포트 < 1024에 대한 바인딩이 거부됩니다.

최초의 이유는 무엇이었으며 여전히 유효한가요?

예를 들어 http 서버는 html 페이지를 제공하기 위해 루트 권한이 필요하지 않습니다.

Unix 사용자가 루트 권한으로 실행되도록 하려면 어떤 프로세스/프로토콜이 필요합니까?

감사해요

답변1

해당 포트 범위는 프로그래머가 정의해서는 안 됩니다.
그것은IANA에 의해 예약됨,

잘 알려진 포트는 0부터 1023까지의 포트입니다.

DCCP 잘 알려진 포트는 IANA 등록 없이 사용하면 안 됩니다. 등록 절차는 [RFC4340], 섹션 19.9에 정의되어 있습니다.

의견이 다른 경우 확인하세요.

  1. 에서리눅스질문 스레드(자세한 내용은 링크를 참조하세요)

    포트 1024 제한은 실제로 꼬리에 물립니다. 이는 보안 조치로서 제한을 무효화하는 보안 허점을 열 수 있는 데몬 실행을 강제합니다.

    • 그만큼SANS 상위 20개 취약점노트

      핵심 시스템 서비스 중 일부는 RPC(원격 프로시저 호출)를 통해 클라이언트 구성 요소에 대한 원격 인터페이스를 제공합니다. 이는 CIFS(Common Internet File System) 프로토콜, 잘 알려진 TCP/UDP 포트 및 경우에 따라 임시 TCP/UDP 포트를 통해 액세스할 수 있는 명명된 파이프 끝점을 통해 대부분 노출됩니다. 지금까지 서비스에는 익명 사용자가 악용할 수 있는 취약점이 많이 있었습니다. 이러한 취약점이 악용되면 공격자는 서비스가 호스트에서 갖고 있던 것과 동일한 권한을 갖게 됩니다.


요즘에는 다음과 같은 프로토콜이 사용됩니다.비트토렌트그리고스카이프임시 포트를 통해 예약되지 않은 공간으로 이동했으며 루트 액세스에 신경 쓰지 않습니다. 목표는이 오래된 예약 포트 보안을 우회하는 것뿐만 아니라; 오늘날의 프로토콜은 다음을 원합니다.네트워크 경계까지 우회(스카이프가 이에 대한 좋은 예입니다). 모든 컴퓨터 사용자가 아마도 네트워크 대역폭과 가용성이 증가함에 따라 상황은 더욱 발전할 것입니다.웹 서버를 스스로 실행-- 그리고아마도,무의식적으로, BE의 일부 봇넷.


우리는 이러한 오래된 방법에서 원하는 보안이 필요
하지만 이제는 더 새로운 방법으로 수행해야 합니다.

답변2

글쎄요, 제가 BSD Unix 시절부터 기억하는 원래 생각은 1024 미만의 포트는 "잘 알려진 서비스"용으로 예약되어야 한다는 것이었습니다. 그리고 여전히 서버가 상대적으로 드물고 루트 권한을 가진 사람들이 어떤 식으로든 "신뢰할 수 있는" 것으로 추정됩니다. 따라서 다른 사용자가 액세스하는 네트워크 서비스를 나타내는 포트에서 수신 대기하도록 소켓을 바인딩할 수 있는 권한이 있어야 했습니다.

포트 1024-4999는 TCP 연결의 클라이언트 측을 나타내는 "임시" 포트로 사용되도록 만들어졌습니다. 포트 5000+는 루트가 아닌 서버용으로 만들어졌습니다.

분명히 그 모든 가정은 꽤 빨리 창 밖으로 사라졌습니다. IANA TCP 포트 번호 예약 목록을 확인하여 상황이 얼마나 높아졌는지 확인하세요.

이 문제에 대한 한 가지 해결책은 RPC portmapper 아이디어였습니다. 각 서비스에 대해 TCP 포트를 예약하는 대신 서비스는 임의의 포트에서 시작되어 portmapper 데몬에게 수신 위치를 알려줍니다. 클라이언트는 portmapper에게 "서비스 X는 어디에 있습니까?"라고 묻고 거기서부터 진행합니다. 잘 알려진 RPC 서비스를 가장으로부터 보호하기 위해 어떤 보안 메커니즘이 마련되어 있는지 기억이 나지 않습니다.

요즘 이 모든 것에 대한 타당한 이유가 있는지는 잘 모르겠지만 대부분의 *nix 세계와 마찬가지로 모든 것이 완전히 재발명되는 대신 축적되는 경향이 있습니다.

Vernor Vinge를 읽어본 사람 있나요? 나는 그가 고대 과거의 코드 계층을 통합하고 시간이 고대 날짜(1970년 1월 1일) 이후 초 단위로 표시되는 먼 미래의 컴퓨터 시스템에 대해 소설 중 하나에 쓴 것을 기억합니다. 정확히는). 그는 아마도 멀지 않을 것입니다.

답변3

예전에는 일반 사용자가 Unix 시스템에 로그인하곤 했습니다. 따라서 일반 사용자가 가짜 FTP 서비스 등을 설정하는 것을 원하지 않을 것입니다.

요즘 일반적인 사용법은 관리자와 신뢰할 수 있는 소수의 사람들만 서버에 로그인하는 것이므로 오늘 모델을 다시 수행하면 < 1024 제한이 존재하지 않을 수 있습니다.

답변4

시스템 비밀번호를 허용하는 서비스가 권한 있는 포트에서 실행되는 것이 합리적입니다. 즉, 쉘 계정을 가진 사용자는 사람들의 로그인 세부 정보를 캡처하기 위해 동일한 포트에 "가짜" 서비스를 설정할 수 없으며, 동일한 포트에 작동하지 않는 서비스를 설정하여 액세스를 거부할 수 없습니다.

다중 사용자 상자가 있고 권한이 없는 사용자가 악성 SSH 데몬을 설정할 수 있었다면 다른 사용자의 비밀번호를 캡처하고 자신의 계정에 액세스할 수 있습니다(물론 컴퓨터가 작동하는 동안 이를 수행해야 합니다). 합법적인 SSH 데몬이 다운되었습니다(유지 관리 또는 시스템 시작이나 종료 중에).

다중 사용자 상자에서 사용자 간에 웹 서버와 같은 것을 공유하는 데에는 주요 보안 문제가 있지만 시스템 암호를 허용하지 않는 것들은 그다지 중요하지 않습니다(공유 호스팅 공급자가 발견한 것처럼).

관련 정보