1024 미만의 포트에 권한이 부여되는 이유는 무엇입니까?
보안 기능을 의미한다고 들었지만 종종 보안 문제처럼 보입니다. 권한있는 포트를 사용하는 서버를 작성하려면 내 코드가 얼마나 안전한지 걱정해야 할뿐만 아니라 setuid 권한을 사용하고 권한을 삭제하는지 특히 걱정해야합니다.
진실. 그러나 이는 또한 귀하와 대화하는 사람이 해당 서버를 실행하려면 루트 권한이 있어야한다는 것을 알고 있음을 의미합니다. 포트 22에서 서버에 로그인 할 때 (예 :) 루트에서 실행 한 프로세스 (보안 문제 제외)와 대화하고 있다는 것을 알고 있으므로 해당 시스템의 암호 또는 기타 정보로 신뢰합니다. 해당 시스템의 사용자 계정을 가진 사람을 신뢰하지 마십시오.
참조 : http://www.w3.org/Daemon/User/Installation/PrivilegedPorts.html .
추론에 대해 자세히 설명하기 위해 편집하십시오. 텔넷 (예, 여전히 사용됩니다-놀랍게도 자주 사용됨), SSH, 많은 HTTP 서비스, FTP 등 가장 중요한 네트워크 서비스는 유선을 통해 암호와 같은 중요한 데이터를 전송하는 것과 관련이 있습니다. 보안 설정에서 프로토콜 (SSH)에 내재되어 있든 그 주위에 래핑되어 있든 (stunnel, IPSec) 일종의 암호화는 데이터가 유선에서 스누핑되지 않도록 보호하지만 이러한 모든 보호는 서버에서 끝납니다.
데이터를 올바르게 보호하려면 '실제'서버와 통신하고 있는지 확인해야합니다. 오늘날 보안 인증서는 웹 (및 다른 곳)에서이 작업을 수행하는 가장 중요한 방법입니다. '실제'서버 만 인증서에 액세스 할 수 있다고 가정하므로 대화하는 서버에 해당 인증서가 있는지 확인하면 그것을 신뢰합니다.
권한이있는 포트는 매우 유사한 방식으로 작동합니다. 루트 만 권한이있는 포트에 액세스 할 수 있으므로 권한이있는 포트와 통신하는 경우 루트와 통신하고 있음을 알 수 있습니다. 이것은 현대 웹에서는 그다지 유용하지 않습니다. 중요한 것은 IP가 아니라 서버 의 ID 입니다. 다른 유형의 네트워크에서는 그렇지 않습니다. 예를 들어 학술 네트워크에서 서버는 보안 실에서 신뢰할 수있는 직원이 물리적으로 제어하는 경우가 많지만 학생과 직원은 사용자로서 매우 자유롭게 액세스 할 수 있습니다. 이 상황에서는 항상 루트를 신뢰할 수 있다고 가정하는 것이 안전하므로 로그인하여 권한있는 포트에 안전하게 개인 데이터를 보낼 수 있습니다. 일반 사용자가 모든 포트에서 수신 할 수 있다면 특정 프로그램이 특정 데이터로 신뢰할 수 있는지 확인하기 위해 전체 추가 계층이 필요합니다.
당신은 당신이 사용하는 어떤 플랫폼 말을하지 않지만, 리눅스에 적어도 루트가 아닌 프로세스가 1024 페이지보다 작은 포트에서 수신 할 수 있도록 기능 (특히 CAP_NET_BIND_SERVICE)를 사용할 수 있습니다, 예를 들어, 방법에 대한 있는가 Linux에서 "특권"포트에 바인드하는 비 루트 프로세스?
또 다른 대안은 iptables 규칙을 설정하여 권한이있는 포트에서 권한이없는 포트로 트래픽을 전달하는 것입니다 (프로덕션에서 이것을 사용했으며 상당히 간단하고 잘 작동합니다). 위의 링크에도 설명되어 있습니다.
참조 URL : https://stackoverflow.com/questions/10182798/why-are-ports-below-1024-privileged
'Program Club' 카테고리의 다른 글
| 경고없이 Ruby 상수를 재정의하는 방법은 무엇입니까? (0) | 2021.01.08 |
|---|---|
| io 리디렉션을 사용하지 않고 명령 줄에서 파일에 텍스트 추가 (0) | 2021.01.08 |
| 플라스크에서 g.user global을 사용하는 방법 (0) | 2021.01.08 |
| cpp.react 라이브러리의 C ++ 소스 코드에서 이상한 "-> * []"표현식 (0) | 2021.01.08 |
| Dagger 2 예제 (0) | 2021.01.08 |