UFW защитна стена Debian/Ubuntu
UFW (Uncomplicated Firewall) е защитна стена, по-често срещана в Debian/Ubuntu базирани дистрибуции. UFW е интерфейс, който управлява iptables, с идея да опрости конфигурирането. Въпреки че iptables е солиден и гъвкав инструмент, конфигурирането му ред по ред отнема доста време дори ако знаете как работи. Затова ако не сте мрежов експерт или не използвате готов скрипт с iptables, UFW е правилният избор. UFW е инсталиран по подразбиране в Ubuntu. Ако е деинсталиран, инсталирайте го с:
sudo apt install ufw
Политика по подразбиране
Преди активиране задайте политиките по подразбиране — блокиране на всички входящи и разрешаване на всички изходящи:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Разрешаване на SSH преди активиране
Ако управлявате сървъра по SSH, задължително разрешете SSH преди да активирате UFW — иначе ще изгубите достъп:
sudo ufw allow ssh
# или еквивалентно:
sudo ufw allow 22/tcp
За SSH на нестандартен порт (например 2222):
sudo ufw allow 2222/tcp
Активиране, деактивиране и статус
# Активиране
sudo ufw enable
# Деактивиране
sudo ufw disable
# Детайлен статус на правилата
sudo ufw status verbose
# Статус с номера на правилата
sudo ufw status numbered
Разрешаване на портове и услуги
Разрешаване по порт и протокол:
# Уеб сървър
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
# DNS
sudo ufw allow 53/tcp
sudo ufw allow 53/udp
# NTP (синхронизация на часовника)
sudo ufw allow 123/udp
# Пощенски услуги
sudo ufw allow 25/tcp # SMTP
sudo ufw allow 465/tcp # SMTPS
sudo ufw allow 587/tcp # SMTP submission
sudo ufw allow 110/tcp # POP3
sudo ufw allow 995/tcp # POP3S
sudo ufw allow 143/tcp # IMAP
sudo ufw allow 993/tcp # IMAPS
# FTP (активен режим)
sudo ufw allow 21/tcp
sudo ufw allow 40110:40210/tcp # Пасивен диапазон портове
Разрешаване от конкретен IP адрес или мрежа
SSH само от определени мрежи — най-добрата практика за сигурност:
# SSH само от конкретна мрежа
sudo ufw allow from 93.155.130.0/24 to any port 22 proto tcp
# SSH от IPv6 мрежа
sudo ufw allow from 2001:678:904::/48 to any port 22 proto tcp
# Samba споделяне само от локалната мрежа
sudo ufw allow from 93.155.130.0/24 to any app Samba
# Достъп до всички портове от конкретен IP
sudo ufw allow from 192.168.1.100
Блокиране на IP адреси
# Блокиране на конкретен IP
sudo ufw deny from 203.0.113.100
# Блокиране на цяла мрежа
sudo ufw deny from 10.0.0.0/8
# Блокиране на конкретен порт от IP
sudo ufw deny from 203.0.113.100 to any port 80
Rate limiting (защита от brute force)
UFW може автоматично да блокира IP адреси, правещи твърде много опити за връзка (по-вече от 6 опита за 30 секунди). Идеален за SSH:
sudo ufw limit ssh
# или
sudo ufw limit 22/tcp
Изтриване на правила
Изтриване по номер — първо вижте номерата:
sudo ufw status numbered
След което изтрийте правилото по неговия номер:
sudo ufw delete 1
Изтриване по команда (без да е нужно да знаете номера):
sudo ufw delete allow 80/tcp
sudo ufw delete allow from 203.0.113.100
Логиране
# Включване на логиране
sudo ufw logging on
# Нива: low, medium, high, full
sudo ufw logging medium
# Изключване
sudo ufw logging off
Логовете се записват в /var/log/ufw.log.
Показване на добавените правила (show added)
show added извежда всички правила в командна форма — удобно за копиране на конфигурацията на друг сървър:
sudo ufw show added
Reset на всички правила
Пълно изчистване на всички правила и връщане към началното състояние:
sudo ufw reset
Пример от реален production сървър
Пълна конфигурация на хостинг сървър с ограничен SSH достъп само от определени мрежи:
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Уеб и поща
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 25/tcp
sudo ufw allow 465/tcp
sudo ufw allow 587/tcp
sudo ufw allow 110/tcp
sudo ufw allow 143/tcp
sudo ufw allow 993/tcp
sudo ufw allow 995/tcp
# DNS
sudo ufw allow 53/tcp
sudo ufw allow 53/udp
# NTP
sudo ufw allow 123
# FTP
sudo ufw allow 21/tcp
sudo ufw allow 40110:40210/tcp
# ISPConfig панел
sudo ufw allow 8080/tcp
# Samba само от офис мрежата
sudo ufw allow from 93.155.130.0/24 to any app Samba
# SSH само от доверени мрежи
sudo ufw allow from 88.203.248.0/22 to any port 22 proto tcp
sudo ufw allow from 85.118.94.0/23 to any port 22 proto tcp
sudo ufw allow from 93.155.130.0/23 to any port 22 proto tcp
sudo ufw allow from 93.155.162.0/24 to any port 22 proto tcp
sudo ufw allow from 93.155.169.0/24 to any port 22 proto tcp
sudo ufw allow from 2001:678:904::/48 to any port 22 proto tcp
sudo ufw enable

Заключение
UFW превръща конфигурирането на защитна стена в прост и четим процес. Основните правила за добра практика: задайте default deny incoming, разрешете само необходимите портове, ограничете SSH достъпа само до известни мрежи, използвайте ufw limit за brute-force защита и включете логиране. На production сървъри UFW е надеждна и лесна за поддръжка алтернатива на директната работа с iptables.