Основные команды UFW

18 октября 2025 г.
mrx
16 мин чтения

Основные команды UFW

Инструментом настройки брандмауэра по умолчанию для Ubuntu является ufw. Разработанный для упрощения настройки брандмауэра iptables, ufw предоставляет удобный способ создания брандмауэра на базе хоста IPv4 или IPv6. По умолчанию UFW отключен.

Если в вашей версии ufw не установлена, вы можете её установить используя команду:

bash
sudo apt update && sudo apt install ufw

Проверка статуса UFW

Проверить, включен ли брандмауэр, используйте эту команду:

bash
sudo ufw status

Результат покажет, активен ли ваш брандмауэр или нет.

Включение UFW

Если при выполнении команды ufw status вы получили сообщение Status: inactive, это означает, что брандмауэр еще не включен в системе. Вам нужно выполнить команду, чтобы включить его.

По умолчанию, когда UFW включен, он блокирует внешний доступ ко всем портам на сервере. На практике это означает, что если вы подключены к серверу по SSH и включите ufw до разрешения доступа через порт SSH, вы будете отключены.

Чтобы включить UFW в вашей системе, выполните команду:

bash
sudo ufw enable

Чтобы увидеть, что в настоящее время заблокировано или разрешено, вы можете использовать параметр verbose при запуске ufw status, как показано ниже:

bash
sudo ufw status verbose

Отключение UFW

Если по какой-то причине вам нужно отключить брандмауэр, вы можете сделать это с помощью следующей команды:

bash
sudo ufw disable

Будьте внимательны, эта команда полностью отключит службу брандмауэра в вашей системе!

Блокировка обращения IP-адреса

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

bash
sudo ufw deny from 91.198.174.190

В этом примере from 91.198.174.190 указывает IP-адрес источника «91.198.174.190».

Если вы запустите команду sudo ufw status, вы увидите, что указанный IP-адрес находится в списке запрещенных (DENY)

Все соединения, входящие и исходящие, блокируются для указанного IP-адреса.

Заблокировать подсеть

Если вам нужно заблокировать всю подсеть, вы можете использовать адрес подсети в качестве параметра «from» в команде ufw deny. Это заблокирует все IP-адреса в приведенной в примере подсети 91.198.174.0/24:

bash
sudo ufw deny from 91.198.174.0/24

Блокирование входящих подключений к сетевому интерфейсу

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

bash
sudo ufw deny in on eth0 from 91.198.174.192

Параметр «in» указывает брандмауэру применять правило только для входящих соединений, а параметр «on eth0» указывает, что правило применяется только для интерфейса eth0.

Это может быть полезно, если у вас есть система с несколькими сетевыми интерфейсами (включая виртуальные), и вам нужно заблокировать внешний доступ к некоторым из этих интерфейсов, но не ко всем.

Разрешить обращения IP-адреса

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

bash
sudo ufw allow from 91.198.174.192

Если теперь вы запустите «sudo ufw status», вы увидите вывод, похожий на этот, с надписью ALLOW рядом с IP-адресом, который вы только что добавили:

bash
sudo ufw status

Вы также можете разрешить соединения из целой подсети, указав соответствующую маску подсети для хоста, например, 91.198.174.0/24.

Разрешение входящих подключений к сетевому интерфейсу

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

bash
sudo ufw allow in on eth0 from 91.198.174.22

Параметр «in» указывает брандмауэру применять правило только для входящих соединений, а параметр «on eth0» указывает, что правило применяется только для интерфейса eth0.

Удалить правило брандмауэра

Чтобы удалить правило, ранее установленное в UFW, используйте ufw delete, затем введите правило (allow / deny) и целевую спецификацию. В следующем примере удаляется правило, ранее установленное для разрешения всех подключений с IP-адреса 91.198.174.192:

bash
sudo ufw delete allow from 91.198.174.192

Другой способ указать, какое правило вы хотите удалить, – это указать ID правила. Эту информацию можно получить с помощью следующей команды:

bash
sudo ufw status numbered

Из вывода видно, что есть два активных правила. Первое правило, запрещает все соединения, исходящие с IP-адреса 91.198.174.190. Второе правило разрешает соединения на интерфейсе eth0, поступающие с IP-адреса 91.198.174.22.

Поскольку по умолчанию брандмауэр уже блокирует весь внешний доступ, если он не разрешен явным образом, первое правило является избыточным, поэтому его можно удалить. Чтобы удалить правило согласно его ID, выполните команду:

bash
sudo ufw delete 1

Вам будет предложено подтвердить операцию и убедиться, что указанный вами ID относится к правильному правилу, которое вы хотите удалить.

Список доступных профилей приложений

При установке приложения, которые полагаются на сетевые коммуникации, обычно устанавливают профиль брандмауэра, который можно использовать для разрешения подключения с внешних адресов. Это часто то же самое, что запустить ufw allow from, с тем преимуществом, что это ярлык, который абстрагирует конкретные номера портов, используемые службой, и обеспечивает удобную номенклатуру для ссылающихся служб.

bash
sudo ufw app list

Если вы установили службу, например, веб-сервер или другое сетезависимое программное обеспечение, и профиль не был доступен в брандмауэре, сначала убедитесь, что служба включена.

Например для удаленных серверов обычно доступен OpenSSH:

Включить профиль для определенного приложения

Чтобы включить профиль приложения брандмауэра, выполните команду ufw allow, за которой следует имя профиля приложения, который вы хотите включить и который можно получить с помощью команды:

bash
sudo ufw app list

В следующем примере мы включаем профиль OpenSSH, который разрешит все входящие SSH-соединения на стандартном порту SSH.

bash
sudo ufw allow OpenSSH

Отключить профиль для определенного приложения

Чтобы отключить профиль приложения, который вы ранее настроили в брандмауэре, вам нужно удалить соответствующее правило.

Например, рассмотрим следующий вывод:

bash
sudo ufw status

Этот вывод указывает на то, что профиль приложения (например nginx) Nginx Full в настоящее время включен, разрешая любые соединения с веб-сервером как через HTTP, так и через HTTPS.

Если вы хотите разрешить только HTTPS-запросы к вашему веб-серверу, вам нужно сначала включить наиболее ограничивающее правило, которым в данном случае будет «Nginx HTTPS», а затем отключить активное правило Nginx Full:

bash
sudo ufw allow "Nginx HTTPS"
sudo ufw delete allow "Nginx Full"

Помните, что вы можете перечислить все доступные профили приложений с помощью:

bash
sudo ufw app list

Разрешить SSH

При работе с удаленными серверами вам необходимо убедиться, что порт SSH открыт для подключений, чтобы вы могли удаленно войти на свой сервер.

Следующая команда включит профиль приложения OpenSSH для брандмауэра и разрешит все соединения с портом SSH по умолчанию на сервере:

bash
sudo ufw allow OpenSSH

Хотя это менее удобно для пользователя, альтернативным синтаксисом является указание точного номера порта службы SSH, который по умолчанию обычно установлен на 22:

bash
sudo ufw allow 22

Разрешить входящий SSH с определенного IP-адреса или подсети

Чтобы разрешить входящие соединения с определенного IP-адреса или подсети, добавьте адрес или подсеть после from. Необходимо, чтобы вы также указали адрес назначения после параметра to.

Чтобы заблокировать это правило только для SSH, ограничьте proto (протокол) значением tcp, а затем используйте параметр port и установите его на 22, порт по умолчанию SSH.

Следующая команда разрешит только соединения SSH, исходящие с IP-адреса 91.198.174.33:

bash
sudo ufw allow from 91.198.174.33 proto tcp to any port 22

Вы также можете использовать адрес подсети в качестве параметра from, чтобы разрешить входящие соединения SSH из всей сети:

bash
sudo ufw allow from 91.198.174.0/24 proto tcp to any port 22

Разрешить входящий Rsync с определенного IP-адреса или подсети

Программа Rsync, которая работает на порту 873, может использоваться для передачи файлов с одного компьютера на другой.

Чтобы разрешить входящие соединения rsync с определенного IP-адреса или подсети, используйте параметр from для указания IP-адреса источника и параметр port для установки порта назначения 873. Следующая команда разрешит только соединения Rsync, поступающие с IP-адреса 91.198.174.33:

bash
sudo ufw allow from 91.198.174.33 to any port 873

Чтобы разрешить всей подсети 91.198.174.0/24 возможность использовать «Rsync» на ваш сервер, выполните команду:

bash
sudo ufw allow from 91.198.174.0/24 to any port 873

Разрешить Nginx HTTP / HTTPS

При установке веб-сервер Nginx устанавливает несколько различных профилей брандмауэра внутри сервера. После установки и включения Nginx в качестве службы выполните следующую команду, чтобы определить, какие профили доступны:

bash
sudo ufw app list | grep Nginx

Чтобы разрешить трафик HTTP и HTTPS, выберите Nginx Full. В противном случае выберите либо Nginx HTTP, чтобы разрешить только HTTP, либо Nginx HTTPS, чтобы разрешить только HTTPS.

Следующая команда разрешит трафик HTTP и HTTPS на сервере (порты 80 и 443):

bash
sudo ufw allow "Nginx Full"

Разрешить Apache HTTP / HTTPS

При установке веб-сервер Apache устанавливает несколько различных профилей UFW внутри сервера. После установки и включения Apache в качестве службы выполните следующую команду, чтобы определить, какие профили доступны:

bash
sudo ufw app list | grep Apache

Чтобы включить трафик HTTP и HTTPS, выберите Apache Full. В противном случае выберите либо «Apache» для HTTP, либо Apache Secure для HTTPS.

Следующая команда разрешит HTTP и HTTPS трафик на сервере (порты 80 и 443):

bash
sudo ufw allow "Apache Full"

Разрешить все входящие HTTP (порт 80)

Веб-серверы, такие как Apache и Nginx, обычно прослушивают HTTP-запросы на порту 80. Если ваша политика по умолчанию для входящего трафика настроена на отклонение или запрет, вам необходимо создать правило UFW для разрешения внешнего доступа к порту 80. В качестве параметра этой команды можно использовать либо номер порта, либо имя службы (http).

Чтобы разрешить все входящие HTTP-соединения (порт 80), выполните команду:

bash
sudo ufw allow http

Альтернативным синтаксисом является указание номера порта службы HTTP:

bash
sudo ufw allow 80

Разрешить все входящие HTTPS (порт 443)

HTTPS обычно работает на порту 443. Если ваша политика по умолчанию для входящего трафика настроена на отклонение или запрет, вам нужно создать правило UFW для разрешения внешнего доступа по порту 443. В качестве параметра этой команды можно использовать либо номер порта, либо имя службы (https).

Чтобы разрешить все входящие соединения HTTPS (порт 443), выполните:

bash
sudo ufw allow https

Альтернативным синтаксисом является указание номера порта службы HTTPS:

bash
sudo ufw allow 443

Разрешить все входящие HTTP и HTTPS

Если вы хотите разрешить трафик HTTP и HTTPS, вы можете создать одно правило, которое разрешает оба порта. Это использование требует, чтобы вы также определили протокол с помощью параметра proto, который в данном случае должен быть установлен на tcp.

Чтобы разрешить все входящие соединения HTTP и HTTPS (порты 80 и 443), выполните команду:

bash
sudo ufw allow proto tcp from any to any port 80,443

Разрешить подключение к MySQL с определенного IP-адреса или подсети

MySQL прослушивает клиентские соединения на порту 3306. Если ваш сервер баз данных MySQL используется клиентом на удаленном сервере, вам необходимо создать правило UFW, чтобы разрешить такой доступ.

Чтобы разрешить входящие соединения MySQL с определенного IP-адреса или подсети, используйте параметр from для указания IP-адреса источника и параметр port для установки порта назначения 3306.

Следующая команда разрешит IP-адрес 91.198.174.33 для подключения к порту MySQL сервера:

bash
sudo ufw allow from 91.198.174.33 to any port 3306

Чтобы разрешить всей подсети 91.198.174.0/24 возможность подключения к вашему серверу MySQL, выполните команду:

bash
sudo ufw allow from 91.198.174.0/24 to any port 3306

Разрешить подключение к PostgreSQL с определенного IP-адреса или подсети

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

Чтобы разрешить входящие соединения PostgreSQL с определенного IP-адреса или подсети, укажите источник с помощью параметра «from» и установите порт на 5432:

bash
sudo ufw allow from 91.198.174.33 to any port 5432

Чтобы разрешить всей подсети 91.198.174.0/24 возможность подключения к вашему серверу PostgreSQL, выполните команду:

bash
sudo ufw allow from 91.198.174.0/24 to any port 5432

Разрешить подключение к PostgreSQL с определенного IP-адреса или подсети

Почтовые серверы, такие как Sendmail и Postfix, обычно используют порт 25 для SMTP-трафика. Если ваш сервер не должен отправлять исходящую почту, вы можете заблокировать этот вид трафика. Чтобы заблокировать исходящие SMTP-соединения, выполните команду:

bash
sudo ufw deny out 25

Это настроит ваш брандмауэр на блокирование всего исходящего трафика на порту 25. Если вам нужно отклонить исходящие соединения на другом номере порта, вы можете повторить эту команду и заменить 25 на номер порта, который вы хотите заблокировать.

Заключение

UFW — это мощный инструмент, который при правильной настройке может значительно повысить безопасность ваших серверов. В данном руководстве были рассмотрены некоторые общие правила UFW, которые часто используются для настройки брандмауэра в Ubuntu. Большинство команд в этом руководстве можно адаптировать для различных случаев и сценариев использования, изменяя такие параметры, как IP-адрес источника и/или порт назначения. Для получения более подробной информации о каждом параметре команды и доступных модификаторах вы можете воспользоваться утилитой man, чтобы проверить руководство UFW:

bash
man ufw