Miklix

Как настроить брандмауэр на сервере 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, но если у вас его нет, просто установите его из репозиториев:

sudo apt-get install 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 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Если вам нужны дополнительные правила, просто добавьте их, как указано выше.

Если у вас статический IP-адрес и вам нужно подключаться по SSH только из одного места, вы также можете ограничить SSH-подключения одним исходным адресом следующим образом:

sudo ufw allow from 192.168.0.1 to any port 22

Конечно, вместо этого введите свой собственный IP-адрес.

После завершения включите ufw, введя:

sudo ufw enable

И всё! Брандмауэр запущен и автоматически включится при перезагрузке сервера :-)

Если вы внесете изменения в конфигурацию ufw, вам может потребоваться отключить и снова включить его, чтобы изменения вступили в силу, следующим образом:

sudo ufw disable
sudo ufw enable

Чтобы посмотреть текущую конфигурацию, просто введите:

sudo ufw status

Если ufw не включен, отобразится сообщение «неактивно», в противном случае будет перечислен список текущих определенных правил.

Поделиться на BlueskyПоделиться на FacebookПоделиться на LinkedInПоделиться на TumblrПоделиться на XПоделиться на LinkedInЗакрепить на Pinterest

Миккель Кристенсен

Об авторе

Миккель Кристенсен
Миккель - создатель и владелец сайта miklix.com. Он имеет более чем 20-летний опыт работы в качестве профессионального программиста/разработчика программного обеспечения и в настоящее время работает на полную ставку в крупной европейской IT-корпорации. Когда он не ведет блог, то тратит свое свободное время на огромное количество интересов, хобби и занятий, что в некоторой степени отражается в разнообразии тем, освещаемых на этом сайте.