Как настроить брандмауэр на сервере Ubuntu
Опубликовано: 15 февраля 2025 г. в 21:34:21 UTC
Последнее обновление: 12 января 2026 г. в 08:37:25 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. В моей установке она уже была, но если её нет или она содержит значение «нет», вам следует её отредактировать.
Затем просто используйте командную строку, чтобы разрешить нужные вам порты. Если вы подключены к серверу через 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 не включен, отобразится сообщение «неактивно», в противном случае будет перечислен список текущих определенных правил.
