Как настроить брандмауэр на сервере Ubuntu
Опубликовано: 15 февраля 2025 г. в 21:34:21 UTC
В этой статье объясняется и приводятся некоторые примеры того, как настроить брандмауэр в GNU/Linux с помощью UFW (сокращение от Uncomplicated FireWall), и название вполне подходящее: это действительно очень простой способ убедиться, что у вас не открыто больше портов, чем нужно.
How to Set Up a Firewall on Ubuntu Server
Информация в этом посте основана на Ubuntu Server 14.04 x64. Она может быть или не быть действительной для других версий. (Обновление: я могу подтвердить, что информация в этом посте в основном все еще действительна и функциональна по состоянию на Ubuntu Server 24.04, однако за промежуточные 10 лет ufw стал несколько «умнее», имея профили для общих серверных приложений (например, вы можете включить «Nginx full» вместо портов 80 и 443 по отдельности), и отключение/включение всего брандмауэра для применения новых правил больше не требуется)
Когда я впервые начал работать с серверами GNU/Linux (Ubuntu), настройка брандмауэра включала в себя ручное создание и поддержку потенциально сложного файла конфигурации для iptables. Однако недавно я обнаружил ufw , что является сокращением от Uncomplicated Firewall – и это действительно так :-)
В моей установке Ubuntu Server 14.04 уже установлен UFW, но если у вас его нет, просто установите его из репозиториев:
UFW на самом деле является просто инструментом, который упрощает настройку iptables – за кулисами фильтрацию выполняют iptables и брандмауэр ядра Linux, поэтому ufw не менее и не более безопасен, чем они. Однако, поскольку ufw значительно упрощает правильную настройку брандмауэра, он может снизить риск человеческой ошибки и, следовательно, возможно, более безопасен для неопытных администраторов.
Если ваш сервер настроен с IPv6, а также IPv4, убедитесь, что он также включен для UFW. Отредактируйте файл /etc/default/ufw и найдите строку IPV6=yes . В моей установке она уже была там, но если ее нет или она говорит no, вам следует ее отредактировать
Затем просто используйте командную строку, чтобы включить порты, которые вы хотите открыть. Если вы подключены к серверу через ssh, убедитесь, что вы также разрешили это, иначе это может нарушить ваше соединение и, возможно, заблокировать вас от вашего сервера, когда вы его активируете – в зависимости от того, есть ли у вас физический доступ к серверу или нет, это может быть довольно неудобно ;-)
Например, если вы используете ssh на стандартном порту 22 и настраиваете веб-сервер, который поддерживает как незашифрованные (HTTP на порту 80), так и зашифрованные (HTTPS на порту 443) соединения, вам нужно выполнить следующие команды для настройки UFW:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Если вам нужно больше правил, просто добавьте их, как указано выше.
Если у вас статический IP-адрес и вам нужно иметь возможность подключаться по SSH только из одного местоположения, вы также можете ограничить SSH-подключения одним исходным адресом, например:
Конечно, вместо этого введите свой собственный IP-адрес.
После завершения включите UFW, введя:
И все готово! Брандмауэр запущен и автоматически запустится, когда вы перезагрузите сервер :-)
Если вы вносите изменения в конфигурацию UFW, вам может потребоваться отключить и снова включить его, чтобы изменения вступили в силу, например:
sudo ufw enable
Чтобы просмотреть текущую конфигурацию, просто введите:
Если UFW не включен, будет просто показано сообщение «неактивно», в противном случае будут выведены списки определенных в данный момент правил.