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

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

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

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

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

3 ответа

Решение

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

Проверьте 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 для безопасности. По умолчанию это более рискованное программное обеспечение.

Бастилия

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

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

Другие вопросы по тегам