Связаться по:
vkarabedyants Telegram Viber
+7 (499) 350-10-69

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

Как настроить брандмауэр UFW на Ubuntu 16.04 LTS

Как насторить брандмауэром UFW на сервере Ubuntu Linux 16.04 LTS , чтобы ограничить трафик на мой личный веб-сервер, на котором размещены мои фотографии и блоги для членов моей семьи?

UFW является аббревиатурой простой брандмауэр. Он используется для управления брандмауэром Linux и призван обеспечить простой в использовании интерфейс для пользователя. В этом уроке вы узнаете, как использовать UFW с IPTables для управления брандмауэром на Ubuntu Linux 16.04 LTS сервере.

Установка UFW

UFW входит в состав Ubuntu, но не в Debian Linux. Введите следующую команду APT-GET установите UFW на сервере Debian Linux:

$ sudo apt-get update 
$ sudo apt-get install ufw

Примеры результата:

installing-ufw-on-debian

Как просмотреть статус UFW?

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

$ sudo ufw status

Примеры результата:

  Статус: неактивный

Настройка политики по умолчанию

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

$ grep 'DEFAULT_' /etc/default/ufw

Пример результата:

DEFAULT_INPUT_POLICY="DROP"
DEFAULT_OUTPUT_POLICY="ACCEPT"
DEFAULT_FORWARD_POLICY="DROP"
DEFAULT_APPLICATION_POLICY="SKIP"

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

$ sudo ufw default allow outgoing 
$ sudo ufw default deny incoming

Создание первого правила брандмауэра, чтобы разрешить подключение к SSH (TCP-порт 22)

Введите следующую команду, чтобы разрешить SSH-соединения с сервером:

$ sudo ufw allow ssh

ИЛИ

sudo ufw allow 22/tcp

Скажем, если вы работаете в SSH на порту 2020, введите следующую команду:

$ sudo ufw allow 2020/tcp

Следующие правила открывают доступ к TCP SSH порт 22 только на 10.8.0.1 (т.е. ваш сервер SSH слущает на IP 10.8.0.1 порт 22) из любого места:

$ ufw allow proto tcp from any to 10.86.115.66 port 22

Как добавить комментарий к правилу?

Используйте следующий синтаксис

$ sudo ufw rule comment 'my cool comment here'

Откройте порт 53 и напишите комментарий о правиле:

ufw allow 53 comment 'open tcp and udp port 53 for dns'

Другой пример:

ufw allow proto tcp from any to any port 80,443 comment 'my cool web app ports'

Включить брандмауэр на основе UFW

Теперь у вас есть политика по умолчанию и SSH порт разрешен. Это безопасно для того, чтобы  включить брандмауэр, введите следующую команду:

$ sudo ufw enable

Примеры выходов:

  Команда может нарушить существующие соединения SSH.  Продолжайте операции (Y | N)? У 
  Брандмауэр активен и включен при запуске системы

После включения, брандмауэр запускается и после перезагрузки.

Отключить брандмауэр на основе UFW

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

$ sudo ufw disable

Примеры вывода:

  Брандмауэр остановлен и отключен при запуске системы

Как я могу проверить статус моих правил?

Используйте команду статус:

$ sudo ufw status 
$ sudo ufw status verbose

Примеры вывода:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
 
 
To                         Action      From
--                         ------      ----
192.168.1.10 443/tcp       ALLOW       Anywhere
192.168.1.10 22/tcp        ALLOW       Anywhere

Добавление большего количества правил (открытие портов и разрешение IP-адреса)

Синтаксис выглядит следующим образом, чтобы открыть порт TCP 22 и 443:

$ sudo ufw allow 80/tcp 
$ sudo ufw allow 443/tcp

Откройте сервер UDP / 1194 (OpenVPN):

$ sudo ufw allow 1194/udp

Откройте порт 25 (smtpd / сервер электронной почты):

$ sudo ufw allow 25

Вы можете разрешить диапазоны портов, TCP и UDP 3000 до 5000:

$ sudo ufw allow 3000:5000/tcp 
$ sudo ufw allow 3000:5000/udp

Разрешить соединения с определенного IP-адреса 1.2.3.4, введите следующую команду:

$ sudo ufw allow from 1.2.3.4

Разрешить соединения с определенного IP-адреса 1.2.3.4, к нашему порту 22, введите следующую команду:

$ sudo ufw allow from 1.2.3.4 to any port 22 proto tcp

ИЛИ (Dest 222.222.222.222 порт 22)

$ sudo ufw allow from 1.2.3.4 to 222.222.222.222 port 22 proto tcp

Запрет доступа к порту  (с IP и блока IP-адресов)

Синтаксис выглядит следующим образом, чтобы запретить доступ (т.е. просто игнорируя доступ к порту 443) к порту TCP — порт 443:

$ sudo ufw deny 443/tcp

Запретить все соединения с IP-адреса  1.2.3.4, введите следующую команду:

$ sudo ufw deny from 1.2.3.4

Запретить все соединения подсети  123.45.67.89/24, введите следующую команду:

$ sudo ufw deny from 123.45.67.89/24

Запретить доступ с 1.2.3.4 на порт 22:

$ sudo ufw deny from 1.2.3.4 to any port 22 proto tcp

Отклонять доступ к порту (сообщать пользователю, что он блокируются брандмауэром)

Синтаксис reject просто игнорирует трафик. Если вы хотите позволить пользователя узнать о том, когда трафик отклонен, а не просто игнорировать его, используйте  синтаксис:

$ sudo ufw reject in smtp 
$ sudo ufw reject out smtp 
$ sudo sudo ufw reject 1194 comment 'No more vpn traffic' 
$ sudo ufw reject 23 comment 'Unencrypted port not allowed'

Если кто-то попытается подключиться к порту 23 они получат сообщение reject следующего содержания:

  Telnet: Невозможно подключиться к удаленному узлу: Соединение отклонено

Удаление правил брандмауэра UFW

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

$ sudo ufw delete {rule-here}

В этом примере, удалить HTTPS (TCP-порт 443) трафика правило,

$ sudo ufw delete allow 443

Если вы больше не желаете, разрешать трафик  smptd / электронной почты (порт 25), выполните:

$ sudo ufw delete allow 25

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

$ sudo ufw status numbered

Примеры выходов:

Status: active
 
     To                         Action      From
     --                         ------      ----
[ 1] 10.8.0.1 22/tcp            ALLOW IN    Anywhere
[ 2] Anywhere                   DENY IN     123.45.67.0/24
[ 3] 22/tcp                     DENY IN     1.2.3.4

Чтобы удалить 2-е правило ( «UFW игнорировать от 123.45.67.89/24»), наберите команду:

Deleting:
 deny from 123.45.67.0/24
Proceed with operation (y|n)? y
Rule deleted

Как сбросить брандмауэр?

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

$ sudo ufw reset

Примеры вывода:

  Сброс всех правил, установленных по умолчанию.  Это может нарушить существующие SSH
 соединения.  Продолжайте операции (Y | N)? У
 Резервное копирование 'user6.rules' до '' /etc/ufw/user6.rules.20160801_121710
 Резервное копирование 'after.rules' до '' /etc/ufw/after.rules.20160801_121710
 Резервное копирование 'before.rules' до '' /etc/ufw/before.rules.20160801_121710
 Резервное копирование 'after6.rules' до '' /etc/ufw/after6.rules.20160801_121710
 Резервное копирование 'user.rules' до '' /etc/ufw/user.rules.20160801_121710
 Резервное копирование 'before6.rules' до '' /etc/ufw/before6.rules.20160801_121710

Как перезагрузить брандмауэр?

Синтаксис выглядит следующим образом, перезагрузить брандмауэр:

$ sudo ufw reload

При редактировании файла конфигурации UFW ‘, вам необходимо запустить команду перезагрузки. Например, вы можете редактировать /etc/ufw/before.rules, введите следующую команду:

$ sudo nano /etc/ufw/before.rules

ИЛИ

$ sudo vi /etc/ufw/before.rules

Для того, чтобы разрешить весь трафик  eth0  введите следующую команду:

 # Разрешить все на eth0
-A ufw-before-input -i eth0 -j ACCEPT
-A ufw-before-output -o eth0 -j ACCEPT

Сохраните и закройте файл. Обновить firwall:

$ sudo ufw reload

Как просмотреть журналы брандмауэра?

По умолчанию все записи UFW хранятся в /var/log/ufw.log :

$ sudo more /var/log/ufw.log 
$ sudo tail -f /var/log/ufw.log

Примеры вывода:

  1 августа 12:09:48 server2 ядро: [+15727,245115] [UFW BLOCK] IN = BR1 OUT = MAC = 00: 25: 90: 4f: b0: 6f: 44: d3: CA: 5F: 89: 40: 08: 00 SRC = 62.210.181.123 DST = 75.xxx.yyy.zzz LEN = 40 TOS = 0x00 = 0x00 PREC TTL = 245 ID = 20343 DF PROTO = TCP SPT = 2328 ПТР = 80 ОКНО = 512 RES = 0x00 SYN URGP = 0 
  1 августа 12:09:58 server2 ядро: [+15737,485726] [UFW BLOCK] IN = BR1 OUT = MAC = 00: 25: 90: 4f: b0: 6f: 44: d3: CA: 5F: 89: 40: 08: 00 SRC = 187.134.225.91 DST = 75.xxx.yyy.zzz LEN = 46 TOS = 0x00 = 0x00 PREC TTL = 54 ID = 0 DF PROTO = UDP SPT = 54704 DPT = 53413 LEN = 26 
  1 августа 12:09:58 server2 ядро: [+15737,486102] [UFW BLOCK] IN = BR1 OUT = MAC = 00: 25: 90: 4f: b0: 6f: 44: d3: CA: 5F: 89: 40: 08: 00 SRC = 187.134.225.91 DST = 75.xxx.yyy.zzz LEN = 151 TOS = 0x00 = 0x00 PREC TTL = 54 ID = 0 DF PROTO = UDP SPT = 54704 DPT = 53413 LEN = 131

Вы можете искать по файлу журнала с  помощью команды grep:

$ sudo grep something /var/log/ufw.log 
$ sudo grep '187.134.225.91' /var/log/ufw.log

Как получить UFW отчеты?

Отчет отображает список правил, так как они были добавлены в командной строке:

$ sudo ufw reports added

Примеры вывода:

  Добавлены пользовательские правила (см 'UFW статус "для запуска брандмауэра):
 UFW разрешить 22
 UFW отклонить 23

Необработанные отчет показывают полный межсетевой экран

$ sudo ufw reports raw 
$ sudo ufw reports raw | more

В отчете прослушивания будет отображать порты на  системе в состоянии прослушивания для протокола TCP и открытом состоянии для УДП, наряду с адресом интерфейса и кто прослушивает порт. ‘*’ Используется вместо адреса интерфейса, когда исполняемый файл связан со всеми интерфейсами на этом порту. После этой информации  список правил, которые могут повлиять на соединения на этом порту. Правила перечислены в порядке, которм оцениваются ядром, а первое соответствие приоритетнее. Обратите внимание, что  по умолчанию нет в списке и tcp6 и udp6 показываются только, если IPV6 включено:

$ sudo ufw show listening 
$ sudo ufw reports listening | more
tcp:
  22 10.86.115.66 (sshd)
   [ 1] allow 22
 
  22 10.8.0.1 (sshd)
   [ 1] allow 22
 
  443 75.xxx.yyy.zzz (openvpn)
udp:
  123 10.8.0.1 (ntpd)
  123 75.xxx.yyy.zzz (ntpd)
  123 10.86.115.66 (ntpd)
  123 * (ntpd)
udp6:
  123 * (ntpd)

Другие возможные отчеты:

$ sudo ufw show builtins 
$ sudo ufw show before-rules 
$ sudo ufw show user-rules 
$ sudo ufw show after-rules 
$ sudo ufw show logging-rules

Если не получилось настроить фаервол, обращайтесь к нам за помощью, раздел Контакты.

1 Response

  1. roman

    как посмотреть список правил при неактивном ufw, перед тем как делать его enable?

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.