Назад | Перейти на главную страницу

Безопасный сервер LAMP для производственного использования

Какова процедура защиты Linux, Apache, MySQL, PHP-сервера (или даже Perl) для производственного использования?

Помимо установки пароля MySQL и пароля root для Linux, какие еще (возможно, не столь очевидные) шаги следует предпринять?

И какие шаги я могу предпринять, если собирался стать параноиком, который обычно не нужен?

Это для простого использования на одном сайте, но должно быть безопасным.

Эти рекомендации неуместны и не претендуют на полноту.

Обратите внимание на Bastille, это серия сценариев, реализующих лучшие практики в Linux.

Не отправляйте данные аутентификации по протоколам с открытым текстом. Например, отключите FTP. Если вы отправляете данные аутентификации через Apache, используйте SSL.

Отключите и удалите все ненужное программное обеспечение, включая графический интерфейс.

Проведите аудит всех файлов с установленным битом SUID и удалите. (Это серьезно ограничит возможности пользователей без полномочий root. Поймите последствия каждого отдельного изменения.)

Проверьте общедоступные каталоги с возможностью записи и удалите бит с возможностью записи. (Оставьте / tmp в покое.)

Избегайте запуска любого демона от имени пользователя root.

Подробно изучите все многопользовательское программное обеспечение, которое прослушивает сокеты, на предмет передовых методов безопасности.

Избегать добавления пользователей в систему - один из лучших подходов. Многопользовательские системы требуют большего внимания к деталям.

Обеспечьте соблюдение стандартов паролей. Например: минимум 10 символов, не буквенно-цифровых символов, с использованием букв и цифр. Это сделано для того, чтобы затруднить перебор в случае компрометации файла паролей. Обеспечьте это через систему.

Блокируйте пользователей после 5 неудачных попыток аутентификации с блокировкой не менее 10 минут. Сохраняйте историю паролей, чтобы пользователи не могли использовать последние 5 паролей.

Если у вас более крупная среда, использование разделения сети с несколькими подсетями для изоляции риска является абсолютным требованием. В среде меньшего размера рекомендуется запустить брандмауэр в локальной системе для ограничения уязвимости. Например, разрешить SSH только для вашего IP. tcpwrappers также можно использовать для дополнительного уровня. (/etc/hosts.allow, /etc/hosts.deny)

И, конечно же, поддерживать все программное обеспечение в актуальном состоянии. Особенно публичные демоны.

С SSH:

  • Отключить протокол SSH 1
  • Разрешить только корневую аутентификацию without-password (только пара ключей)

С Apache:

  • Отключите все модули, которые не нужны
  • Отключить .htaccess и общедоступные каталоги
  • Отключите FollowSymlink и любые ненужные параметры
  • Не устанавливайте PHP, если он вам не нужен.

С MySQL:

  • Отключить пользователей по умолчанию.
  • Не используйте хосты с подстановочными знаками.
  • Обязательно установите уникальный хост для каждого пользователя.
  • Не слушайте TCP без необходимости. (Необычно неизбежно.)
  • Максимально ограничьте права пользователей приложения. (SELECT, INSERT, UPDATE, DELETE идеально подходит для записи и SELECT для чтения)

Я бы рекомендовал специально изучить настройку php.ini для обеспечения безопасности. По умолчанию это более рискованное программное обеспечение.

Бастилия

Вот хорошая статья, которую вы можете использовать в качестве основы для своей настройки и изменять в соответствии с вашим распространением: http://it.toolbox.com/blogs/rayheffer/how-to-build-a-secure-lamp-web-server-with-centos-5-36786

В Агентство защиты информации имеет набор контрольные списки безопасности это хорошие места для начала. Еще лучше понять смысл каждой записи, но это не быстрый ответ. Я бы порекомендовал вам взглянуть на Enclave, Network, Unix и Web Server. STIGс.