이건 그냥 쓸데없는 호기심일 뿐입니다. 내 친구가 "Linux에서는 어떤 포트 범위를 루트로만 사용할 수 있나요?"라고 물었고 나는 그에게 0-1024가 제한되어 있다고 말했습니다. 그리고 그는 나에게 왜 이런 일이 일어나는지 물었습니다. 나는 혼란스러웠습니다. 전혀 모른다.
이러한 포트는 제한되어 있지만 1025-65535는 제한되지 않는 이유가 있나요?
대부분의 주요 웹 서비스(HTTP, FTP, SSH, Telnet, HTTPS, POP, SMTP 등)가 이 범위에 속하므로 마음에 드는 가능한 대답은 다음과 같습니다.
- 신뢰할 수 없는 사용자는 이러한 포트에서 로그인 세부 정보를 수신하는 프로그램을 실행할 수 있습니다.
- 신뢰할 수 없는 사용자는 인증되지 않은 서버 응용 프로그램을 실행할 수 있습니다.
누군가 여기에 빛을 비출 수 있습니까?
답변1
포트 <1024에서 컴퓨터와 데이터를 교환하고 있고 컴퓨터가 UNIX 변형을 실행하고 있다는 것을 알고 있다고 가정합니다. 그러면 해당 포트에서 실행되는 서비스가 시스템 관리자에 의해 승인되었음을 알 수 있습니다. 이 서비스는 루트로 실행되거나 최소한 루트로 시작되어야 합니다.
크고 거친 인터넷 세계에서는 그런 것이 중요하지 않습니다. 대부분의 서버는 해당 서버에서 실행되는 서비스와 동일한 사람에 의해 관리되며 다른 사용자보다 루트를 더 이상 신뢰하지 않습니다.
이는 특히 로컬 네트워크의 다중 사용자 컴퓨터에 중요할 수 있습니다. 예를 들어, 민간 암호화가 출현하기 전에는 다른 시스템에서 쉘 명령을 실행하는 널리 사용되는 방법은 다음과 같습니다.rsh
.아르 자형표현쉿er) 비밀번호 인증을 사용하거나 단순히 시스템 A의 사용자 X임을 증명하여 인증할 수 있습니다(시스템 B는 X@A가 비밀번호 없이 X@B로 로그인할 수 있다는 것을 알고 있습니다). 이것을 어떻게 증명할 수 있나요? 고객rsh
는 setuid 루트이고 포트 번호 < 1024를 사용하므로 서버는 통신 중인 클라이언트가 신뢰할 수 있다는 것을 알고 A의 어떤 사용자가 호출하는지 거짓말을 할 수 없습니다. 비슷하게네트워크 파일 시스템은 사용자 및 권한이 투명하도록 설계되었으므로 일반적인 구성은 로컬 네트워크의 모든 컴퓨터가 동일한 사용자 데이터베이스를 사용하고 서버 B에서 파일 시스템을 마운트하는 A의 사용자 N이 B의 사용자 N의 권한을 얻는다는 것입니다. 마찬가지로, NFS 클라이언트가 포트 번호 <1024에서 나온다는 사실은 A의 루트가 NFS 클라이언트를 감사했다는 것을 증명합니다. NFS 클라이언트는 사용자 N으로부터 요청을 전송하는 경우 해당 요청이 실제로 사용자 N으로부터 온 것인지 확인해야 합니다.
권한이 없는 사용자가 낮은 포트에서 서버를 실행할 수 없다는 점은 또 다른 이점이지만 주요 이점은 아닙니다. 과거에는 스푸핑이 아주 새로운 일이었고 스푸핑된 서버를 실행하는 사용자는 어쨌든 경계하는 관리자에 의해 빠르게 제거되었습니다.