Найти в Дзене
Тюнинг Админа

Самый простой Firewall UFW

Оглавление

UFW - это интерфейс для IPTables, основная цель которого это простота и удобство в управлении файрволлом. Он популярен среди пользователей Linux и установлен на большинстве дистрибутивов по умолчанию.

UFW - это мощный инструмент, который при правильной настройке может значительно повысить безопасность ваших серверов.

В этом статье я покажу на первый взгляд простенькие правила, но очень многие пользователи и администраторы пренебрегают настройкой файрволла, считая Linux Firewall чем то сверх сложным или уже по умолчанию настроенным на примере Брандмауэра Windows, но это далеко не так. Поэтому не проходите мимо, лишние 10 минут потраченные на настройку помогут вам избежать лишних проблем.

Содержание статьи

  • Включение и отключение UFW
  • Правила разрешающие и запрещающие
  • Удаляем существующие правила
  • Разрешение и запрет по имени службы
  • Проверка состояния ufw
  • Включение и отключение журнала логирования
  • Разрешающие правила доступа
  • Разрешаем PING
  • Запрещающие правила доступа
  • Работа с нумерованными правилами

Включение и отключение UFW

Чтобы включить UFW с набором правил по умолчанию:

ufw enable

Чтобы проверить статус UFW:

ufw status verbose

Выходные данные должны выглядеть следующим образом:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip

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

ufw show raw

Вы также можете прочитать файлы правил в /etc/ufw (файлы, имена которых заканчиваются на .rules).

Отключить ufw можно с помощью команды:

ufw disable

Правила разрешающие и запрещающие

Правило разрешающее

Разрешение входящих пакетов TCP и UDP на порту 53:

ufw allow 53
Разрешение входящих TCP-пакетов на порту 53:

ufw allow 53/tcp
Разрешение входящих пакетов UDP на порту 53:

ufw allow 53/udp

Правило запрещающие

Запрет пакетов TCP и UDP на порту 53:

ufw deny 53
Запрет входящих TCP-пакетов на порту 53:

ufw deny 53/tcp
Запрет входящих пакетов UDP на порту 53:

ufw deny 53/udp

Удаляем существующие правила

Чтобы удалить правило, просто добавьте к исходному правилу префикс delete. Например, если исходное правило было следующим:

ufw deny 80/tcp

Используйте это, чтобы удалить его:

ufw delete deny 80/tcp

Разрешение и запрет по имени службы

Мы можем разрешить или запретить по имени службы, ufw читает информацию о службах из /etc/services:

less /etc/services

Разрешающее правило по имени службы

ufw allow <service name>

Разрешаем ssh по имени:

ufw allow ssh

Запрещающее правило по имени службы

ufw deny <service name>

Запрещаем SSH по имени:

ufw deny ssh

Проверка состояния ufw

Проверка состояния ufw сообщит вам:

  • Включена или отключена ufw
  • Перечислит текущие правила ufw

Проверим состояние ufw:

ufw status
Firewall loaded
To Action From
-- ------ ----
22:tcp DENY 192.168.1.1
22:udp DENY 192.168.1.1
22:tcp DENY 192.168.1.2
22:udp DENY 192.168.1.2
22:tcp ALLOW 192.168.1.0/24
22:udp ALLOW 192.168.1.0/24

Если ufw не включен, выходные данные будут следующими:
Status: inactive

Включение и отключение журнала логирования

Включаем ведение журнала:

ufw logging on

Отключаем ведение журнала:

ufw logging off

Разрешающие правила доступа

Разрешаем доступ определенному IP-адресу:

ufw allow from <ip address>

Разрешаем пакеты от 192.168.1.1:

ufw allow from 192.168.1.1

Разрешаем доступ определенной подсети:

ufw allow from 192.168.1.0/24

Разрешаем доступ по определенному порту и IP-адресу

ufw allow from <target> to <destination> port <port number>

Разрешаем устройству с IP-адресом 192.168.1.1 доступ к порту 22 для всех протоколов:

ufw allow from 192.168.1.1 to any port 22

Разрешаем доступ по определенному порту, IP-адресу и протоколу

ufw allow from <target> to <destination> port <port number> proto <protocol name>

Разрешаем устройству с IP-адресом 192.168.1.1 доступ к порту 22 по протоколу TCP:

ufw allow from 192.168.1.1 to any port 22 proto tcp

Разрешаем PING

По умолчанию UFW разрешает запросы проверки связи.

Чтобы отключить запросы ping (icmp), необходимо отредактировать /etc/ufw/before.rules и удалить следующие строки:

# ok icmp codes
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

или измените "ПРИНЯТЬ" на "DROP"

# ok icmp codes
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j DROP
-A ufw-before-input -p icmp --icmp-type source-quench -j DROP
-A ufw-before-input -p icmp --icmp-type time-exceeded -j DROP
-A ufw-before-input -p icmp --icmp-type parameter-problem -j DROP
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP

Запрещающие правила доступа

Запрещаем доступ по определенному IP-адресу

ufw deny from <ip address>

Блокируем пакеты от устройства с адресом 192.168.1.1:

ufw deny from 192.168.1.1

Запрещаем доступ по определенному порту и IP-адресу

ufw deny from <ip address> to <protocol> port <port number>

Запрещаем доступ устройству с IP-адресом 192.168.1.1 к порту 22 для всех протоколов:

ufw deny from 192.168.1.1 to any port 22

Работа с нумерованными правилами

Правила листинга с ссылочным номером

Выведем список пронумерованных правил:

ufw status numbered

Удаляем нумерованное правило:

ufw delete 1

Вставка нумерованного правила

Создание правила с вставкой нумерованного списка:

ufw insert 1 allow from <ip address>

Расширенный пример

Заблокируем доступ к порту 22 от 192.168.1.1 и 192.168.1.2, но разрешить всем остальным IP-адресам 192.168.1.x иметь доступ к порту 22 с помощью TCP:

ufw deny from 192.168.1.1 to any port 22
ufw deny from 192.168.1.2 to any port 22
ufw allow from 192.168.1.0/24 to any port 22 proto tcp

Заблокируем доступ к порту 22 для сети 192.168.1.0/24:

ufw delete allow from 192.168.1.0/24 to any port 22
Проверяем статус:

ufw status
Firewall loaded
To Action From
-- ------ ----
22:tcp DENY 192.168.1.1
22:udp DENY 192.168.1.1
22:tcp DENY 192.168.1.2
22:udp DENY 192.168.1.2
ufw deny 192.168.1.3 to any port 22
ufw allow 192.168.1.0/24 to any port 22 proto tcp
ufw status
Firewall loaded
To Action From
-- ------ ----
22:tcp DENY 192.168.1.1
22:udp DENY 192.168.1.1
22:tcp DENY 192.168.1.2
22:udp DENY 192.168.1.2
22:tcp DENY 192.168.1.3
22:udp DENY 192.168.1.3
22:tcp ALLOW 192.168.1.0/24