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