Rate this post

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

Установка UFW

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

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

Примеры результата:nninstalling-ufw-on-debiann

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

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

$ sudo ufw status

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

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

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

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

$ grep 'DEFAULT_' /etc/default/ufw

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

DEFAULT_INPUT_POLICY="DROP"nDEFAULT_OUTPUT_POLICY="ACCEPT"nDEFAULT_FORWARD_POLICY="DROP"nDEFAULT_APPLICATION_POLICY="SKIP"

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

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

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

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

$ sudo ufw allow ssh

ИЛИn

sudo ufw allow 22/tcp

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

$ sudo ufw allow 2020/tcp

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

$ ufw allow proto tcp from any to 10.86.115.66 port 22

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

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

$ sudo ufw rule comment 'my cool comment here'

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

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

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

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

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

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

$ sudo ufw enable

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

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

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

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

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

$ sudo ufw disable

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

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

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

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

$ sudo ufw status n$ sudo ufw status verbose

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

Status: activenLogging: on (low)nDefault: deny (incoming), allow (outgoing), deny (routed)nNew profiles: skipn n nTo                         Action      Fromn--                         ------      ----n192.168.1.10 443/tcp       ALLOW       Anywheren192.168.1.10 22/tcp        ALLOW       Anywhere

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

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

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

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

$ sudo ufw allow 1194/udp

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

$ sudo ufw allow 25

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

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

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

$ sudo ufw allow from 1.2.3.4

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

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

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

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

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

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

$ sudo ufw deny 443/tcp

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

$ sudo ufw deny from 1.2.3.4

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

$ sudo ufw deny from 123.45.67.89/24

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

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

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

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

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

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

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

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

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

$ sudo ufw delete {rule-here}

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

$ sudo ufw delete allow 443

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

$ sudo ufw delete allow 25

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

$ sudo ufw status numbered

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

n

n

n

n

n

n

n

Status: activen n     To                         Action      Fromn     --                         ------      ----n[ 1] 10.8.0.1 22/tcp            ALLOW IN    Anywheren[ 2] Anywhere                   DENY IN     123.45.67.0/24n[ 3] 22/tcp                     DENY IN     1.2.3.4

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

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

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

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

$ sudo ufw reset

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

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

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

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

$ sudo ufw reload

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

$ sudo nano /etc/ufw/before.rules

ИЛИn

$ sudo vi /etc/ufw/before.rules

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

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

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

$ sudo ufw reload

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

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

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

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

  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 n  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 n  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:n

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

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

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

$ sudo ufw reports added

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

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

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

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

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

$ sudo ufw show listening n$ sudo ufw reports listening | more
n

n

n

n

n

n

n

n

tcp:n  22 10.86.115.66 (sshd)n   [ 1] allow 22n n  22 10.8.0.1 (sshd)n   [ 1] allow 22n n  443 75.xxx.yyy.zzz (openvpn)nudp:n  123 10.8.0.1 (ntpd)n  123 75.xxx.yyy.zzz (ntpd)n  123 10.86.115.66 (ntpd)n  123 * (ntpd)nudp6:n  123 * (ntpd)

n

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

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

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