2013-06-26 7 views
4

최근 Tomcat 7을 Amazon EC2에 설치했습니다. 나는 Tomcat이 기본적으로 포트 8080아파치 httpd 대 톰캣 7 : 포트 80 대 포트 8080

에 리눅스가 슈퍼 사용자에게 낮은 포트를 저장하는 것이 좋습니다 때문이라고 인터넷 지지자의 문서를 수신하는 것을 발견했다. (ec2 btw의 솔루션은로드 밸런서를 생성하여 대상 시스템의 포트 80에서 포트 8080으로 통신 방향을 지정합니다.)

놀랍게도 - 나는 계속해서 다른 시스템에 Apache 서버를 설치했습니다. httpd), 그리고 놀람! 아파치는 기본적으로 포트 80에서 청취한다.

이 지금 내가 생각 ... 어디 '포트 8080'입니다 어색한 옹호입니까?

누구나 개념상의 차이점을 설명해주십시오.

감사

+0

tomcat에는 80을 완벽하게 사용할 수 있지만 일반적으로 Apache httpd 서버에 보관됩니다. –

+0

* 질문은 무엇입니까? * 80과 ​​8080 사이의 '개념적 차이'를 이해하지 못합니까? HTTP 서버가 포트 80에서 수신 대기하는 것에 놀랐습니까? 톰캣이 시인 8080을 듣는 것에 놀라셨습니까? 당신은 '포트 8080 옹호자'의 명백한 무리가 있어야한다고 생각하니? – EJP

답변

6

의 차이는이 시점에서 주로 역사적하지만, 여전히 리눅스와 내가 생각할 수있는 대부분의 유닉스 구현으로 적용됩니다. Unix/Linux는 포트 번호 < 1024를 "특권"으로 간주하고 루트 priv를 바인드해야합니다. 모든 사용자는 1024보다 큰 포트에 바인드 할 수 있어야합니다. 소프트웨어 패키지가 특정 빈티지의 경우, 루트로 시작하여 포트에 바인딩 될 것으로 예상되며, 선택적으로 유효 UID를 비 특권 사용자로 변경합니다. Apache HTTPD가이 범주에 속합니다. 나중에 생성 된 소프트웨어 패키지 (예 : Apache Tomcat)는 일반적으로 권한이없는 사용자로 모든 것을 수행하고 더 높은 포트 번호로 바인딩하는 경로를 기본적으로 거쳤습니다.

일부 방화벽 관리자, 나는 확신, 때로는 어떤 경우 방화벽 구성에서 특별한 치료를받을 방법 1024 < 포트에 대한 세부 사항으로 갈 수 있습니다.

1

나는 설명을 계속한다. @gunglefunk는 이미 answare를 사용하고 있기 때문에 httpd는 루트/권한있는 사용자가 메인 데몬을 실행할 때까지 포트 80을 사용합니다. 즉, 1024 이하의 포트를 바인드 할 수 있습니다. 다른 모든 스레드 또는 작업자는 권한이없는 사용자 (대부분 아파치).

Tomcat은 동일한 원칙을 사용할 수 있습니다. Tomcat은 Java로 작성되었으므로 전체 JVM을 실행하는 데 사용되는 사용자는 한 명입니다. 일반적으로 사용자 '바람둥이'입니다. 당신은 포트 80에서 Tomcat을 듣고 싶을 때

당신은 두 가지 가능성이있다.

'루트'(인 tomcat.conf 또는 catalina.sh에서 변경)에서 바람둥이를 실행합니다. 그러나 보안상의 이유로 권장하지 않습니다.

표준 사용자로 모든 포트에 이상 1024 바람둥이를 실행합니다 (보통 바람둥이)와 proxy_ajp 프로토콜을 사용합니다. 즉, 포트 80에서 Apache HTTPD 서버를 실행하고 트래픽을 tomcat 포트로 전달합니다 (기본값은 http 8080, https 8443, ajp는 8009). https://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.htmlhttp://tomcat.apache.org/connectors-doc/ajp/ajpv13a.htmlhttp://tomcat.apache.org/connectors-doc-archive/jk2/proxy.html

0

프로세스를 루트로 실행하여 권한있는 포트에 바인딩 할 필요가 없습니다.

당신은이 권한을 부여 setcap을 사용할 수 있습니다 :이 정말 필요하지 않습니다

https://wiki.apache.org/httpd/NonRootPortBinding

하지만.

예를 들어 iptables를 사용하여 상위 포트로 전달할 수 있습니다.

또한이 목적으로 만들어진 authbind와 같은 도구가 있습니다.

또한 보안이 중요하면이 프로세스를 chroot jail에서 실행할 수도 있습니다.