
Правильно настроенный брандмауэр — один из важнейших аспектов общей безопасности системы. По умолчанию в Ubuntu предусмотрен инструмент настройки брандмауэра UFW (Uncomplicated Firewall). UFW — это удобный интерфейс для управления правилами брандмауэра iptables, и его главная цель — сделать управление iptables простым и, как следует из названия, простым.
Предпосылки
Прежде чем приступить к работе с этим руководством, убедитесь, что вы вошли на сервер под учётной записью с привилегиями sudo или как пользователь root. Рекомендуется выполнять административные команды от имени пользователя sudo, а не root. Если в вашей системе Ubuntu нет пользователя sudo, вы можете создать его, следуя этим инструкциям .
Установить UFW
Несложный брандмауэр должен быть установлен по умолчанию в Ubuntu 18.04, но если он не установлен в вашей системе, вы можете установить пакет, введя:
sudo apt install ufw
Проверить статуса UFW
После завершения установки вы можете проверить статус UFW с помощью следующей команды:
sudo ufw status verbose
UFW по умолчанию отключен. Если вы никогда ранее не активировали UFW, вывод будет выглядеть так:
Status: inactive
Если UFW активирован, вывод будет выглядеть примерно так:

Политики UFW по умолчанию
По умолчанию UFW блокирует все входящие соединения и разрешает все исходящие. Это означает, что любой, кто попытается получить доступ к вашему серверу, не сможет подключиться, если вы специально не откроете порт, в то время как все приложения и службы, работающие на вашем сервере, смогут получить доступ к внешнему миру.
Политики по умолчанию определены в файле /etc/default/ufw и могут быть изменены с помощью команды sudo ufw default .
Политики брандмауэра служат основой для создания более подробных пользовательских правил. В большинстве случаев начальные политики брандмауэра по умолчанию являются хорошей отправной точкой.
Профили приложений
При установке пакета с помощью команды apt в каталог /etc/ufw/applications.d будет добавлен профиль приложения. Профиль описывает службу и содержит настройки UFW.
Вы можете вывести список всех профилей приложений, доступных на вашем сервере, введя:
sudo ufw app list
В зависимости от установленных в вашей системе пакетов вывод будет выглядеть примерно следующим образом:
Available applications: Dovecot IMAP Dovecot POP3 Dovecot Secure IMAP Dovecot Secure POP3 Nginx Full Nginx HTTP Nginx HTTPS OpenSSH Postfix Postfix SMTPS Postfix Submission
Чтобы найти дополнительную информацию о конкретном профиле и включенных правилах, используйте следующую команду:
sudo ufw app info 'Nginx Full'
Profile: Nginx Full Title: Web Server (Nginx, HTTP + HTTPS) Description: Small, but very powerful and efficient web server Ports: 80,443/tcp
Как видно из приведенного выше вывода, профиль «Nginx Full» открывает порты 80 и 443 .
Разрешить SSH-подключения
Перед включением брандмауэра UFW необходимо добавить правило, разрешающее входящие SSH-подключения. Если вы подключаетесь к серверу удалённо (что случается почти всегда), и включаете брандмауэр UFW до того, как явно разрешите входящие SSH-подключения, вы больше не сможете подключиться к серверу Ubuntu.
Чтобы настроить брандмауэр UFW для разрешения входящих SSH-подключений, введите следующую команду:
sudo ufw allow ssh
Rules updated Rules updated (v6)
Если вы изменили порт SSH на другой порт вместо порта 22, вам потребуется открыть этот порт.
Например, если ваш демон ssh прослушивает порт 4422 , то вы можете использовать следующую команду, чтобы разрешить соединения через этот порт:
sudo ufw allow 4422/tcp
Включить UFW
Теперь, когда ваш брандмауэр UFW настроен на разрешение входящих SSH-подключений, мы можем включить его, введя:
sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Вас предупредят, что включение брандмауэра может нарушить существующие SSH-подключения, просто введите y и нажмите Enter .
Разрешить соединения на других портах
В зависимости от приложений, работающих на вашем сервере, и ваших конкретных потребностей вам также потребуется разрешить входящий доступ к некоторым другим портам.
Ниже мы покажем вам несколько примеров того, как разрешить входящие соединения для некоторых наиболее распространенных служб:
Открытый порт 80 — HTTP
HTTP-соединения можно разрешить с помощью следующей команды:
sudo ufw allow http
вместо http вы можете использовать номер порта 80:
sudo ufw allow 80/tcp
или вы можете использовать профиль приложения, в данном случае «Nginx HTTP»:
sudo ufw allow 'Nginx HTTP'
Открытый порт 443 — HTTPS
HTTP-соединения можно разрешить с помощью следующей команды:
sudo ufw allow https
Чтобы добиться того же самого, вместо профиля https вы можете использовать номер порта 443 :
sudo ufw allow 443/tcp
или вы можете использовать профиль приложения «Nginx HTTPS»:
sudo ufw allow 'Nginx HTTPS'
Откройте порт 8080
Если вы используете Tomcat или любое другое приложение, которое прослушивает порт 8080 для разрешения входящих подключений, введите:
sudo ufw allow 8080/tcp
Разрешить диапазоны портов
Вместо разрешения доступа к отдельным портам UFW позволяет разрешить доступ к диапазонам портов. При разрешении диапазонов портов с помощью UFW необходимо указать протокол: tcp или udp . Например, если вы хотите разрешить порты с 7100 по 7200 как для tcp , так и udp , выполните следующую команду:
sudo ufw allow 7100:7200/tcpsudo ufw allow 7100:7200/udp
Разрешить определенные IP-адреса
Чтобы разрешить доступ ко всем портам с вашего домашнего компьютера с IP-адресом 64.63.62.61, укажите from , а затем IP-адрес, который вы хотите добавить в белый список:
sudo ufw allow from 64.63.62.61
Разрешить определенные IP-адреса на определенном порту
Чтобы разрешить доступ к определенному порту, скажем, порту 22 с вашего рабочего компьютера с IP-адресом 64.63.62.61, используйте команду to any port , а затем номер порта:
sudo ufw allow from 64.63.62.61 to any port 22
Разрешить подсети
Команда для разрешения подключения к подсети IP-адресов такая же, как и при использовании одного IP-адреса, с той лишь разницей, что необходимо указать маску сети. Например, если вы хотите разрешить доступ к порту 3360 ( MySQL ) для IP-адресов в диапазоне от 192.168.1.1 до 192.168.1.254, вы можете использовать следующую команду:
sudo ufw allow from 192.168.1.0/24 to any port 3306
Разрешить подключения к определенному сетевому интерфейсу
Чтобы разрешить доступ на определенном порту, скажем, порту 3360, только к определенному сетевому интерфейсу eth2 , вам нужно указать allow in on и имя сетевого интерфейса:
sudo ufw allow in on eth2 to any port 3306
Запретить соединения
Политика по умолчанию для всех входящих подключений установлена на deny , и если вы ее не изменили, UFW будет блокировать все входящие подключения, пока вы специально не откроете соединение.
Предположим, вы открыли порты 80 и 443 , и ваш сервер подвергается атаке из сети 23.24.25.0/24 . Чтобы запретить все соединения из сети 23.24.25.0/24 используйте следующую команду:
sudo ufw deny from 23.24.25.0/24
Если вы хотите запретить доступ только к портам 80 и 443 из 23.24.25.0/24 вы можете использовать следующую команду:
sudo ufw deny from 23.24.25.0/24 to any port 80sudo ufw deny from 23.24.25.0/24 to any port 443
Написание запрещающих правил аналогично написанию разрешающих правил, вам только нужно заменить allow на deny .
Удалить правила UFW
Существует два способа удаления правил UFW: по номеру правила и путем указания самого правила.
Удалять правила UFW по номеру проще, особенно если вы новичок в UFW. Чтобы удалить правило по номеру, сначала нужно найти номер нужного правила. Это можно сделать с помощью следующей команды:
sudo ufw status numbered
Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] 80/tcp ALLOW IN Anywhere [ 3] 8080/tcp ALLOW IN Anywhere
Чтобы удалить правило номер 3, разрешающее подключения к порту 8080, используйте следующую команду:
sudo ufw delete 3
Второй метод — удалить правило, указав само правило. Например, если вы добавили правило для открытия порта 8069 вы можете удалить его с помощью:
sudo ufw delete allow 8069
Отключить UFW
Если по какой-либо причине вы хотите остановить UFW и деактивировать все правила, вы можете использовать:
sudo ufw disable
Если позже вы захотите снова включить UTF и активировать все правила, просто введите:
sudo ufw enable
Сброс номера
Сброс UFW отключит UFW и удалит все активные правила. Это полезно, если вы хотите отменить все изменения и начать всё заново.
Для сброса UFW просто введите следующую команду:
sudo ufw reset
Заключение
Вы узнали, как установить и настроить брандмауэр UFW на сервере Ubuntu 18.04. Разрешите все входящие соединения, необходимые для корректной работы системы, и ограничьте все ненужные соединения.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.
Брандмауэр ufw iptables безопасность Ubuntu Не используете Ubuntu 18.04?
Выберите другую ОС: дебиан 10 дебиан 9 убунту 20.04
Связанные руководства
- Как настроить брандмауэр с UFW в Ubuntu 20.04
- Как настроить брандмауэр с UFW в Debian 9
- Как настроить брандмауэр с UFW в Debian 10
- Как составить список и удалить правила брандмауэра UFW
- Как настроить брандмауэр с помощью FirewallD в CentOS 7
- Как настроить OpenVPN-сервер в Ubuntu 18.04
- Как настроить SSH-ключи в Ubuntu 18.04