Безопасный сервер 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.