Remote Code Evaluation (이하 RCE, 원격 코드 실행) 취약성 공격을 피하기위해 root 권한으로 앱 실행하는 것이 바람직하다. 즉,  특정 기능을 수행하는 프로세스는 root 권한이 아닌 일반 사용자 계정으로 실행하는 것이 일반적이다. 그런데 Nginx와 Apache Web Server의 경우 root 권한으로 실행되는데 보안문제가 있지 않을까?

Linux 계열의 운영체제의 경우 시스템 공격자들을 어렵게하기 위해 1024 보다 작은 포트를 사용하기 위해 root 권한을 요구한다.

Nginx와 Apache가 80 또는 443 포트를 사용할 때 가능하면 최소로 root 권한을 이용한다. root 권한으로 실행되어 즉시 non-root 권한의 자식 프로세스를 생성한다. root 프로세스는 80, 443 포트의 bind 하기위해 사용한다. Nginx 역시 자체적으로 어떠한 앱도 실행하지 않고 독립적인 자식 프로세스와 통신 방식을 이용해 연동하여 보안을 유지한다.

요약하면 프로세스 목록에서 Nginx와 Apache httpd의 main 프로세스가 root 권한으로 실행되는 경우 보안 관점에서 문제가 있지는 않다.

Apache httpd 예)

root     16650  0.0  0.3 232884 12900 ?        Ss   Mar02   0:52 /opt/httpd/bin/httpd -d /opt/httpd -f /opt/httpd/conf/httpd.conf -DFOREGROUND -k start
daemon   16651  0.0  0.2 232544  8228 ?        S    Mar02   0:00  \_ /opt/httpd/bin/httpd -d /opt/httpd -f /opt/httpd/conf/httpd.conf -DFOREGROUND -k start
daemon   16973  0.0  0.5 2159464 22404 ?       Sl   Mar02   5:21  \_ /opt/httpd/bin/httpd -d /opt/httpd -f /opt/httpd/conf/httpd.conf -DFOREGROUND -k start
daemon   18482  0.0  0.5 2159464 22172 ?       Sl   Mar03   4:40  \_ /opt/httpd/bin/httpd -d /opt/httpd -f /opt/httpd/conf/httpd.conf -DFOREGROUND -k start
daemon   18483  0.0  0.5 2159464 22380 ?       Sl   Mar03   4:50  \_ /opt/httpd/bin/httpd -d /opt/httpd -f /opt/httpd/conf/httpd.conf -DFOREGROUND -k start
daemon   18560  0.0  0.5 2159464 22268 ?       Sl   Mar03   4:46  \_ /opt/httpd/bin/httpd -d /opt/httpd -f /opt/httpd/conf/httpd.conf -DFOREGROUND -k start
daemon   18589  0.0  0.5 2159464 20508 ?       Sl   Mar03   4:39  \_ /opt/httpd/bin/httpd -d /opt/httpd -f /opt/httpd/conf/httpd.conf -DFOREGROUND -k start
daemon   18675  0.0  0.5 2159464 21812 ?       Sl   Mar03   4:41  \_ /opt/httpd/bin/httpd -d /opt/httpd -f /opt/httpd/conf/httpd.conf -DFOREGROUND -k start
daemon   18893  0.0  0.5 2159464 20808 ?       Sl   Mar03   4:08  \_ /opt/httpd/bin/httpd -d /opt/httpd -f /opt/httpd/conf/httpd.conf -DFOREGROUND -k start
daemon   23553  0.0  0.4 2159464 19260 ?       Sl   Mar08   1:07  \_ /opt/httpd/bin/httpd -d /opt/httpd -f /opt/httpd/conf/httpd.conf -DFOREGROUND -k start
daemon   24113  0.0  0.4 2159464 17864 ?       Sl   Mar09   0:42  \_ /opt/httpd/bin/httpd -d /opt/httpd -f /opt/httpd/conf/httpd.conf -DFOREGROUND -k start

Nginx 예)

root   12231  0.0  0.0  40336   460 ?        Ss   Mar03   0:00  |   nginx: master process /opt/gitlab/embedded/sbin/nginx -p /var/opt/gitlab/nginx
daemon 12233  0.0  0.0  44508  1404 ?        S    Mar03   0:57  |   \_ nginx: worker process
daemon 12234  0.0  0.0  40336   396 ?        S    Mar03   0:02  |   \_ nginx: cache manager process