root@ip-172-31-38-0:/var/www# ps aux | egrep '(apache|httpd)'
root 1086 0.0 0.3 88480 3160 ? Ss Mar08 0:09 /usr/sbin/apache2 -k start
www-data 1089 0.0 0.8 445500 8840 ? Sl Mar08 0:56 /usr/sbin/apache2 -k start
www-data 1090 0.0 0.8 445564 8832 ? Sl Mar08 0:56 /usr/sbin/apache2 -k start
root 12072 0.0 0.0 8160 932 pts/0 S+ 19:20 0:00 egrep --color=auto (apache|httpd)
может sum1 сообщать о 1 086 апачских процессах, выполненных полностью. Действительно ли это - проблема безопасности?
Нет, это нормально. В находящихся в Debian системах apache2 запускается как корень. Это затем ветвления прочь и выполнения при непривилегированном пользователе (обычно www-data
). Фактическая работа сделана этими процессами.
Только привилегированный процесс может связать с портами ниже 1024. Так, по крайней мере, для привязки к значению по умолчанию 80 и 443 порта, это должно будет работать как корень.
И, среди прочего, исходный процесс читает закрытые ключи сертификата SSL, которые обычно только читаются корнем. От /usr/share/doc/apache2/README.Debian.gz
:
The SSL key file should only be readable by root; the certificate file may be
globally readable. These files are read by the Apache parent process which runs
as root, and it is therefore not necessary to make the files readable by the
www-data user.
Так, это - зарегистрированное поведение.
Нет. Apache всегда запускается как "корень", и он затем использует "setuid" для порождения детей, которые делают на самом деле обработку запросов на апачского пользователя.
, Если Вы хотите создать сокет слушания на привилегированном порте (так один ниже порта 1024) необходимо сделать это как корень (или быть более точным: с идентификатором пользователя 0). Порт 80 и 443 для SSL.
Так..., если Вы не делаете никакого доверительного Apache для привязки с сокетом, Вы не должны выполнять веб-сервер на своем сервере.
Посмотрите, например http://www.thegeekstuff.com/2011/03/apache-hardening/