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

10

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

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

Кроме того, какие шаги я могу предпринять, если я собираюсь быть параноиком, это обычно не требуется?

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

WalterJ89
источник
Apache Hardening на родственном сайте.
Марчин

Ответы:

13

Эти рекомендации не в моей голове и не должны быть исчерпывающими.

Проверьте Bastille, это серия сценариев, которые реализуют лучшие практики в Linux.

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

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

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

Аудит общедоступных записываемых каталогов и удаление доступных для записи битов. (Оставьте / TMP в одиночку.)

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

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

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

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

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

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

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

С SSH:

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

С Apache:

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

С MySQL:

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

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

Бастилия

сигнализатор
источник
Я предлагаю прочитать cyberciti.biz/tips/php-security-best-practices-tutorial.html для настройки php
ALex_hha
2

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

Александр Низу
источник
Но в основном не загружайте модули, которые вам явно не нужны, скрывайте все номера версий и страницы отладки / информации, создавайте пользователя mysql для каждого приложения с надежными паролями, всегда заставляйте людей работать на вашем сервере, используя учетную запись обычного пользователя, и делайте их sudo если им нужны полномочия root, используйте брандмауэр, такой как iptables, и открывайте порты только в зависимости от того, что вам абсолютно необходимо, чтобы войти в ваш ящик ... Это плюс последние патчи уже обеспечат вам довольно безопасную настройку.
Александр Низу
Эта статья не хороша. Отключение selinux, ничего про усиление mysql, отключение ненужных модулей apache ...
sumar
0

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

mpez0
источник