<-
Apache > HTTP Server > Documentation > Version 2.0 > Miscellaneous Documentation

Подсказки Безопасности

некоторые полезные советы на безопасности выходят в настраивании сервера сети. Некоторые из предложений будут общими, другие, определенные для Apacheа.

top

Keep up to Date

Apache Сервер HTTP имеет хороший отчет для безопасности и сообщества разработчика, высоко заинтересованного о проблемах безопасности. Но неизбежно, что некоторые проблемы - маленький или большой - будут обнаружены в программном обеспечении после того, как это выпущено. Поэтому решающее продолжать знать об обновлениях к программному обеспечению. Если Вы получили вашу версию Сервера HTTP непосредственно от Apacheа, мы высоко рекомендуем, чтобы Вы подписались на Apache HTTP Server Announcements List где Вы можете держать информированным относительно новых выпусков и обновлений безопасности. Подобные услуги доступны от большинства имеющих отношение к третьей стороне дистрибьютеров Apacheского программного обеспечения.

конечно, большинство раз, что сервер сети поставлен под угрозу, это - не из-за проблем в кодексе Сервера HTTP. Скорее это прибывает от проблем в кодекс добавления, подлинники CGI, или основную Операционную Систему. Вы должны поэтому остаться знающий о проблемах и обновлениях со всем программным обеспечением на вашей системе.

top

Permissions on ServerRoot Directories

в типичной операции, Apache начат полностью пользователь, и это переключает пользователю, определенному User директива, чтобы служить хитам. Как имеет место с любой командой, что корень выполняет, Вы должны заботиться, что это защищено от модификации пользователями некорня. Не только должен файлы непосредственно быть writeable только корнем, но так должен справочники, и родители всех справочников. Например, если Вы хотите помещать ServerRoot в/usr/local/apache тогда, предложено, что Вы создаете тот справочник как корень, с командами как они:

mkdir /usr/local/apache
cd /usr/local/apache
mkdir bin conf logs
chown 0 . bin conf logs
chgrp 0 . bin conf logs
chmod 755 . bin conf logs

предполагается, что/,/usr, и/usr/local являются только поддающимися изменению корнем. Когда Вы устанавливаете httpd выполнимый, Вы должны гарантировать, что это подобно защищено:

cp httpd /usr/local/apache/bin
chown 0 /usr/local/apache/bin/httpd
chgrp 0 /usr/local/apache/bin/httpd
chmod 511 /usr/local/apache/bin/httpd

Вы можете создать htdocs подсправочник, который является поддающимся изменению другими пользователями - так как корень никогда не выполняет никакие файлы из там, и не должен создавать файлы в там.

если Вы позволяете пользователям некорня изменять какие-нибудь файлы, которые коренятся, или выполняет или пишет на тогда, Вы открываете вашу систему, чтобы внедрить компромиссы. Например, кто - то мог заменить httpd набор из двух предметов так, чтобы в следующий раз Вы начали это, это выполнит некоторый произвольный кодекс. Если справочник регистраций - writeable (пользователем некорня), кто - то мог бы заменить файл системного журнала symlink к некоторому другому файлу системы, и затем укорениться, мог бы переписать тот файл с произвольными данными. Если сами файлы системного журнала - writeable (пользователем некорня), то кто - то может быть в состоянии переписать регистрацию непосредственно с поддельными данными.

top

Server Side Includes

Сторона Сервера Включает (ПЕРВАЯ СТЕПЕНЬ ИНТЕГРАЦИИ), дарят администратору сервера несколько потенциальных рисков безопасности.

первый риск - увеличенный груз на сервере. Все ПОЗВОЛЕННЫЕ ПЕРВУЮ СТЕПЕНЬ ИНТЕГРАЦИИ файлы должны быть разобраны Apache, действительно ли есть любые директивы ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ, включенные в пределах файлов. В то время как это увеличение груза незначительно, в разделенной окружающей среде сервера это могло стать существенным.

файлы ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ также излагают те же самые риски, которые связаны с подлинниками CGI вообще. Используя "эксEC cmd" элемент, ПОЗВОЛЕННЫЙ ПЕРВУЮ СТЕПЕНЬ ИНТЕГРАЦИИ файлы может выполнить любой подлинник CGI или программу согласно разрешениям пользователя и пробегов Apacheа группы как, как формируется в httpd.conf.

есть способы увеличить безопасность файлов ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ, все еще используя в своих интересах выгоды они обеспечивают.

чтобы изолировать повреждение, своенравный файл ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ может вызвать, администратор сервера может позволить suexec как описано в CGI in General секция

предоставление возможности ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ для файлов с .html или .htm расширениями может быть опасным. Это особенно верно в разделенном, или высоком движении, окружающей среде сервера. ПОЗВОЛЕННЫЙ ПЕРВУЮ СТЕПЕНЬ ИНТЕГРАЦИИ файлы должен иметь отдельное расширение, типа обычного .shtml. Это помогает держать груз сервера как минимум и учитывает более легкое управление риском.

другое решение состоит в том, чтобы повредить способность управлять подлинниками и программами от страниц ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ. Сделать это заменяют Includes с IncludesNOEXEC в Options директива. Отметьте, что пользователи могут все еще использовать <--#include действительный = "..." --> выполнять подлинники CGI, если эти подлинники находятся в справочниках desginated a ScriptAlias директива.

top

CGI in General

прежде всего, Вы всегда должны помнить, что Вы должны доверять авторам подлинников/программ CGI или вашей способности определить потенциальные отверстия безопасности в CGI, были ли они преднамеренными или случайными. Подлинники CGI могут управлять чрезвычайно произвольными командами на вашей системе с разрешениями пользователя сервера сети и могут поэтому быть чрезвычайно опасными, если они тщательно не проверены.

все подлинники CGI будут бежать как тот же самый пользователь, таким образом они имеют потенциал, чтобы находиться в противоречии (случайно или преднамеренно) с другими подлинниками например, Пользователь А ненавидит Пользователя Б, таким образом он пишет подлинник, чтобы громить базу данных Пользователя Ба CGI. Одна программа, которая может использоваться, чтобы позволить подлинникам бежать как различные пользователи, suEXEC который включен с Apache на 1.2 и называется от специальных крюков в Apacheском кодексе сервера. Другой популярный способ сделать это - с CGIWrap .

top

Non Script Aliased CGI

позволение пользователям выполнять подлинники CGI в любом справочнике нужно только рассмотреть если:

top

Script Aliased CGI

Ограничивающий CGI к специальным справочникам передает контролю admin, что входит в те справочники. Это неизбежно более безопасно чем не подлинник aliased CGI, но только если пользователи с пишут, что доступу к справочникам доверяют, или admin желает проверять каждый новый подлинник/программу CGI на потенциальные отверстия безопасности.

большинство участков выбирает этот выбор по не подлиннику aliased CGI подход.

top

Other sources of dynamic content

вложенные scripting варианты, которые бежали как часть сервера непосредственно, типа mod_php, mod_perl, mod_tcl, и mod_python, которым управляют под идентичностью сервера непосредственно (см. User директива), и поэтому подлинники, выполненные этими двигателями потенциально могут получить доступ к чему - нибудь, что пользователь сервера может. Некоторые scripting двигатели могут обеспечить ограничения, но лучше быть безопасным и принять нет.

top

Protecting System Settings

чтобы управлять действительно напряженным судном, Вы будете хотеть мешать пользователям настроить .htaccess файлы, которые могут отвергнуть особенности безопасности, которые Вы формировали. Вот - один способ сделать это.

в файле конфигурации сервера, помещенном

<Directory />
AllowOverride None
</Directory>

это предотвращает использование .htaccess файлы во всех справочниках кроме определенно позволенных.

top

Protect Server Files by Default

один аспект Apacheа, который иногда неправильно понимается, - особенность доступа по умолчанию. Таким образом, если Вы не предпринимаете шаги, чтобы изменить это, если сервер может найти его путь к файлу через нормальный URL, наносящий на карту правила, это может служить этому клиентам.

например, рассмотрите следующий пример:

# cd /; ln -s / public_html
Accessing http://localhost/~root/

это позволило бы клиентам идти через всю файловую систему. Чтобы работать вокруг этого, добавьте следующий блок к конфигурации вашего сервера:

<Directory />
Order Deny,Allow
Deny from all
</Directory>

это запретит доступ по умолчанию к местоположениям файловой системы. Добавьте соответствующий Directory блоки, чтобы позволить доступ только в тех областях Вы желаете. Например,

<Directory /usr/users/*/public_html>
Order Deny,Allow
Allow from all
</Directory>
<Directory /usr/local/httpd>
Order Deny,Allow
Allow from all
</Directory>

обратить особое внимание на взаимодействия Location и Directory директивы; например, даже если <Directory /> отрицает доступ, a <Location /> директива могла бы опрокинуть это

также опасайтесь играть в игры с UserDir директива; урегулирование этого кое к чему как "./" имел бы тот же самый эффект, для корня, как первый пример выше. Если Вы используете Apacheа 1.3 или выше, мы настоятельно рекомендуем, чтобы Вы включили следующую линию в ваши файлы конфигурации сервера:

UserDir disabled root

top

Watching Your Logs

держать современный с тем, что фактически продолжается против вашего сервера, который Вы должны проверить Log Files . даже при том, что файлы системного журнала только сообщают, что уже случилось, они дадут Вам некоторое понимание того, какие нападения брошен против сервера и позволяет Вам проверять, присутствует ли необходимый уровень безопасности.

несколько примеров:

grep -c "/jsp/source.jsp?/jsp/ /jsp/source.jsp??" access_log
grep "client denied" error_log | tail -n 10

первый пример перечислит число нападений, пробующих эксплуатировать Apache Tomcat Source.JSP Malformed Request Information Disclosure Vulnerability , второй пример перечислит десять последних отказавших клиентов, например:

[Thu Jul 11 17:18:39 2002] [error] [client foo.bar.com] client denied by server configuration: /usr/local/apache/htdocs/.htpasswd

поскольку Вы можете видеть, файлы системного журнала только сообщают, что уже случилось, так, если клиент был в состоянии к доступу .htpasswd файл Вы видели бы кое-что подобное:

foo.bar.com - - [12/Jul/2002:01:59:13 +0200] "GET /.htpasswd HTTP/1.1"

в вашем Access Log . это означает, что Вы вероятно прокомментировали следующее в вашем файле конфигурации сервера:

<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>