Мой веб-сервер и сервер базы данных разделены. Все, что я сделал для защиты веб-сервера, используется ufw
и запрещен для всех, кроме портов 22, 80 и 443. Что еще действительно нужно там делать?
На моем сервере базы данных я разрешаю только порты 22 и порт, который прослушивает база данных (mysql). Это заставило меня задуматься. Обычно я просто разрешаю весь трафик. В случае с базой данных я обычно делал строгих «пользователей» и говорил что-то, что касается программного обеспечения, типа «разрешать доступ к базе данных только user @ internal_ip_address». Но должен ли это быть брандмауэр? Или оба? Похоже, если брандмауэр разрешает трафик только на порт 22 и на 3306 с внутреннего IP-адреса моего веб-сервера, этого должно быть достаточно? Вы делаете и то, и другое просто из "хорошей практики"?
Какие еще общие правила брандмауэра я должен установить для них?
Это намного лучше, чем у многих людей!
На этом этапе следует сосредоточиться на некоторых вещах:
%
, но было бы лучше заблокировать слушателя; для некоторых атак требуется только отправить созданный пакет в прослушивающий сокет без аутентификации. Можете ли вы осуществлять необходимое управление через свой SSH-доступ? Приводит меня к:limit
режим в ufw
вместо прямого allow
чтобы помочь против попыток перебора. Изменение адреса слушателя на порт высокого уровня является стандартной практикой для некоторых, но фактическое значение безопасности этой неясности незначительно.Короткий ответ:
Да. Использование всех доступных методов защиты - это хорошо, и фраза «Глубокая защита» описывает наличие нескольких перекрывающихся уровней защиты.
Менее короткий ответ:
В общем случае при создании правил брандмауэра необходимо помнить о трех вещах:
Под этим мы подразумеваем, что для сервера MySQL недостаточно ограничивать только входящие соединения. к порт 3306 / tcp, но мы должны также ограничить это от клиентов MySQL. В идеале этот список клиентов должен быть как можно меньше для каждого порта, однако в действительности иногда он может быть больше. Так что подумайте о каждом из этих портов, SSH и Интернете, и определите, кто фактически необходимо получить доступ к ним.
Если ваше приложение включает собственный механизм ограничения области видимости, используйте их также, см. Короткий ответ выше. Это будет включать ограничения доступа к MySQL в форме user@internal_ip_address
упомянутый в вашем вопросе, а также настройку файлов htaccess (или аналогичных) на вашем веб-сервере. Конечно, найдите время, чтобы взвесить преимущества безопасности от использования этих дополнительных шагов по сравнению с накладными расходами на управление их внедрением и обслуживанием.