저는 NGINX와 PHP-FPM을 사용하여 일부 PHP 웹 페이지를 실행하고 있습니다. 최근에 나는 WordPress 보안 문제를 겪고 있는 친구를 위해 웹사이트를 호스팅하고 모든 업그레이드, WP 및 플러그인을 완료했습니다.
하지만 오늘 웹사이트가 PHP-FPM에서 실행되고 있는 사용자가 시스템 명령을 실행하고 있다는 사실을 알게 되었습니다. 예를 들어 /usr/bin/host
덮어쓰는 파일을 찾지 못했고 php.ini
for php-fpm
.
명령이 실행되는 방법을 알아낼 수 있는 방법이 있습니까? 명령이 PHP 프로세스에 의해 직접 실행됩니까, 아니면 실행되는 서버에 일부 스크립트가 있습니까?
명령에 액세스할 수 있는 사용자를 제한할 수 있나요?
Linux 서버 보안에 관한 좋은 책/기사, 자세한 정보는 어디서 검색할 수 있나요?
서버는 최신 Ubuntu LTS 14.04와 Ubuntu 버전의 NGINX 및 PHP를 실행합니다.
답변1
명령에 액세스할 수 있는 사용자를 제한할 수 있나요?
예, php.ini 파일에서 매개변수를 확장하면 됩니다. disable_functions
(위치는 설정에 따라 다릅니다. 예를 들어 /etc/php5/cgi/php/ini
)
disable_functions = system,exec,shell_exec,escapeshellcmd,show_source,leak,ini_restore,pfsockopen,popen,eproc_c,posix_kill,posix_setuid,posix_setpgid,posix_setsid,proc_open,proc_terminate,proc_get_status,proc_nice,proc_close,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority