nginx 감청 포트 와 역방향 프 록 시 포트 의 권한 문제

3624 단어
Linux 의 SELinux 보안 통 제 는 파일 시스템 외 에 포트 에 도 작용 하기 때문에 서비스 로 시작 하 는 프로 세 스 는 규정된 몇 개의 포트 에서 만 감청 할 수 있 습 니 다.서술 의 편 의 를 위해 우 리 는 그것 을 제어 포트 라 고 부른다.
nginx 감청 포트
현재 어떤 제어 포트 가 실행 가능 한 지 확인 하려 면:
# semanage port -l | grep '^http_port_t'
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

여기 에는 80 포트 를 포함 한 8 개의 포트 번호 가 표시 되 어 있다.nginx 는 기본적으로 80 포트 에서 감청 하기 때문에 정상적으로 작 동 합 니 다.
# service nginx start

우 리 는 다음 에 nginx 가 8888 포트 와 같은 다른 포트 에서 감청 할 수 있 는 지 시험 해 볼 수 있다.이 를 위해 / etc / nginx / conf. d / test. conf 파일 을 새로 추가 합 니 다:
# /etc/nginx/conf.d/test.conf
server {
    listen       8888;
    server_name  localhost;
}

이 파일 을 새로 추가 하지 않 고 / etc / nginx / conf. d / default. conf 파일 을 직접 수정 할 수도 있 습 니 다.
완료 후 nginx 설정 다시 불 러 오기:
# nginx -s reload

이 명령 이 실 행 됐 지만 실제 8888 포트 는 감청 상태 에 있 지 않 습 니 다.
# netstat -anp | grep 8888

위의 netstat 명령 은 출력 이 없 으 며 8888 포트 가 감청 상태 에 있 지 않 음 을 나타 낸다.더 나 아가 회계 감사 일 지 를 살 펴 보 자.
vi /var/log/audit/audit.log

파일 끝 에서 다음 두 줄 을 발견 합 니 다.
1 type=AVC msg=audit(1452146884.454:2430): avc:  denied  { name_bind } for  pid=1268 comm="nginx" src=8888 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:port_t:s0 tclass=tcp_socket
2 type=SYSCALL msg=audit(1452146884.454:2430): arch=c000003e syscall=49 success=no exit=-13 a0=b a1=1b5cc60 a2=10 a3=7ffdaf0be83c items=0 ppid=1 pid=1268 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="nginx" exe="/usr/sbin/nginx" subj=system_u:system_r:httpd_t:s0 key=(null)

이곳 의 상세 한 의 미 는 저도 잘 모 르 겠 지만 분명 한 것 은 nginx 가 8888 포트 에서 감청 할 수 있 는 권한 이 없다 는 것 입 니 다.만약 nginx 가 8888 포트 에서 감청 하 기 를 원한 다 면 8888 포트 번 호 를 제어 포트 로 등록 할 수 있 습 니 다.등록 하기 전에 8888 포트 가 등록 되 었 는 지 확인 하 십시오.
semanage port -l | grep 8888

출력 이 있 으 면 8888 포트 가 등록 되 었 음 을 표시 합 니 다. 이 때 다른 포트 로 바 꾸 십시오.
http 8888 포트 번 호 를 등록 하려 면 실행 하 십시오:
semanage port -a -t http_port_t -p tcp 8888

좋 은 습관 으로서 우 리 는 제 어 된 포트 목록 을 다시 한 번 검사 해서 방금 등 록 된 포트 번호 가 있 는 지 확인 해 야 한다.
semanage port -l | grep '^http_port_t'

마지막 으로 nginx 설정 을 다시 불 러 옵 니 다:
# nginx -s reload

이때 8888 포트 는 감청 상태 에 있어 야 합 니 다.
# netstat -anp | grep 8888

 
nginx 역방향 에이전트 포트
만약 당신 이 nginx 에 의 해 역방향 대 리 를 받 게 하려 면, 역방향 에이전트 의 포트 번호 도 제 어 된 포트 여야 합 니 다.
기타 설명
왠 지 모 르 게 nginx 를 서비스 로 시작 할 때 만 포트 는 Linux 보안 에 의 해 제 어 됩 니 다. nginx 를 직접 실행 하면 이 제 어 를 받 지 않 습 니 다.

좋은 웹페이지 즐겨찾기