Книга: Linux глазами хакера

Внимание!

Внимание!

Если вы вручную внесли исправления в конфигурационный файл, то после этого использовать графическую утилиту нельзя, потому что она может неправильно интерпретировать ваши правки и поменяет их на свои значения. Чтобы изменения вступили в силу, необходимо перезапустить сервер. Сервис Apache считывает параметры из конфигурационного файла только во время старта.

За счет прямого редактирования файла конфигурации можно добиться максимально безопасной и быстрой работы. Рассмотрим основные параметры Web-сервера:

ServerType — тип сервера, может принимать значения inetd или Standalone. Если выбрать inetd, то такие параметры, как порт, игнорируются. а используются значения из конфигурации демона inetd (см. разд. 5.4);

ServerRoot — корневая директория, в которой находятся файлы конфигураций и журналы;

Timeout — предельное время ожидания в секундах для получения и отправки пакетов;

Port — порт, на котором будет работать сервис. По умолчанию и для общедоступных серверов используется значение 80. Но для закрытых серверов, которыми пользуется узкий круг людей, можно изменить значение, например, на 10387. В этом случае в качестве адреса страницы надо использовать URL типа ИмяСервера:10387 (например, www.linux.com:10387/index.htm). Таким образом, не зная порта, злоумышленник не сможет проникнуть в систему, пока не просканирует весь диапазон портов и не выяснит, что 10387 — это порт Web-сервера. Это простейшая, но достаточно эффективная защита от скриптеров, которые обладают минимумом знаний о безопасности и взламывают компьютеры только с помощью сплоитов, написанных другими хакерами;

ServerTokens — при обращении к серверу возвращает заголовок с подробной информацией о системе, которая включает версии Apache, ОС Linux и всех имеющихся модулей. Если хакер узнает, что на сервере установлена старая версия интерпретатора PHP (или любой другой программы), то на взлом уйдет намного меньше времени. Болтливые параметры необходимо отключать, а информацию о сервере прятать. ServerTokens может принимать одно из следующих значений:

 • Full — отображать полную информацию о сервере и установленных модулях, включая их версии. Самое опасное для сервиса — это использование именно этого параметра;

 • Min — показать минимум сведений (только название сервера и установленные модули). Иногда даже такой простой список без версий может сказать хакеру слишком много;

 • ProductOnly — только название сервера, в нашем случае Apache вернет свое имя (apache) без указания версий. Вот это как раз то, что нам нужно.

Очень опытные администраторы могут даже подменить имя сервера, но для этого необходимо будет перекомпилировать исходные коды Apache. Заголовок хранится в файле include/ap_releas.h в виде следующих двух строк:

#define SERVER_BASEPRODUCT "Apache"
#define SERVER_BASEVERSION "2.0"

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

В более ранних версиях Apache расположение файла было другим, но мы же договорились, что устанавливать надо все только последнее;

HostnameLookup — если установлено значение on, то IP-адрес клиента, запросившего данные с сервера, будет преобразован в доменное имя, иначе будет использоваться IP-адрес;

User и Group — группа и имя пользователя, с правами которого будет работать сервис. По умолчанию в Linux для этих параметров используется Apache. Этот пользователь и группа должны обладать минимальными правами в системе, которые только необходимы для работы Web-сервера и его модулей. Ничего лишнего разрешать им нельзя;

ErrorLog и CustomLog — определяют местоположение журналов;

LogLevel — обусловливает, что будет писаться в журнал. Можно указать одно из следующих значений: emerg, alert, crit, error, warn, notice, info, debug;

KeepAlive — разрешение обрабатывать несколько запросов за одно соединение. По умолчанию этот параметр выключен (off), и для получения каждого файла требуется отдельное соединение. Это неэффективно и приводит к расходу лишних ресурсов. Допустим, что пользователь запросил страницу с 10 картинками. В ответ на это браузер клиента страницу с 10 картинками. В ответ на это браузер клиента откроет одиннадцать соединений с Web-сервером (одно для получения документа html и десять — для картинок документа). Если включить этот параметр, то за одно подключение может быть обработано несколько запросов;

MaxKeepAliveRequests — максимальное число запросов, которое может быть выполнено в течение одного соединения;

KeepAliveTimeout — время ожидания в секундах очередного запроса от одного и того же клиента. Если за указанный период запрос не поступит, то соединение завершается;

MaxClients — максимальное количество клиентов, которые могут подключиться одновременно. Если сделать это значение слишком большим, то злоумышленник сможет произвести атаку DoS (отказ от обслуживания), открыв слишком много соединений, с которыми не справится сервер. По умолчанию установлено 150, но этого будет достаточно только для небольшого сервера. Apache способен обработать намного больше даже на слабеньком железе. Вы должны указать такое значение, при котором сервер сможет обрабатывать максимальное число запросов и при этом успешно работать (не зависнуть) с предельной загрузкой;

MaxRequestsPerChild — число запросов, которое позволено обрабатывать дочернему процессу до переполнения. Если Apache или используемые им библиотеки допускают некорректную работу с памятью (выделяют, но не освобождают) или другими ресурсами, то во избежание проблем при длительной непрерывной работе сервера дочерний процесс при переполнении будет принудительно завершен. Большинству систем это не требуется, но некоторые (например, Solaris) страдают заметными "утечками" в библиотеках.

Оглавление книги

Оглавление статьи/книги

Генерация: 0.057. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз