Какова процедура защиты 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:
without-password
(только пара ключей)С Apache:
С MySQL:
Я бы рекомендовал специально изучить настройку 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с.