UFW на Ubuntu/Debian: как пользоваться 列印

  • firewall, ufw, ubuntu, debian
  • 0

UFW (Uncomplicated Firewall) — упрощенная надстройка над iptables/nftables. На сервере логика простая: сначала разрешаем нужные входящие соединения, затем включаем UFW, потом постепенно добавляем остальное.

Короткий план

- Проверить наличие UFW и статус.
- Разрешить SSH до включения.
- Включить UFW со строгими политикам по умолчанию.
- Открыть нужные сервисы и подсети.
- Включить логирование и проверить работу.
- Управлять правилами по номерам и комментариям.
- Дополнительно: IPv6, rate limit, порт-диапазоны, исходящий трафик, сброс.

Важно
- Всегда добавляйте правило для SSH до включения UFW, иначе можно потерять доступ.
- Любое изменение применяйте осознанно и держите вторую сессию открытой для отката.


Установка и базовая проверка

sudo apt update
sudo apt install -y ufw
sudo ufw status verbose

Если UFW выключен, увидите статус inactive.


Безопасный старт: не потерять SSH

Разрешаем SSH и включаем UFW. Если используете нестандартный порт, замените 22 на ваш реальный порт.

sudo ufw allow 22/tcp comment 'SSH'
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
sudo ufw status verbose

Пояснения
- default deny incoming блокирует весь входящий трафик, кроме явно разрешенного.
- default allow outgoing оставляет исходящие подключения открытыми, как на большинстве серверов.


Открываем типовые сервисы

HTTP и HTTPS

sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'

DNS для собственного резолвера

sudo ufw allow 53/udp comment 'DNS'
sudo ufw allow 53/tcp comment 'DNS zone xfer or TCP fallback'

NTP, если сервер синхронизирует время для внешних клиентов

sudo ufw allow 123/udp comment 'NTP'

SSH на нестандартном порту, пример 2222

sudo ufw allow 2222/tcp comment 'SSH alt'

 

Ограничение доступа по IP и подсетям

Разрешить доступ к SSH только с одного белого IP

sudo ufw deny 22/tcp
sudo ufw allow from 203.0.113.5 to any port 22 proto tcp comment 'SSH from office'

Разрешить доступ к PostgreSQL только из приватной сети

sudo ufw allow proto tcp from 10.0.0.0/8 to any port 5432 comment 'Postgres internal'

Разрешить доступ к панели админки, привязав к интерфейсу

sudo ufw allow in on eth0 to any port 8443 proto tcp comment 'Admin panel on eth0'

Диапазоны портов и протоколы

Открыть диапазон для пассивного FTP как пример

sudo ufw allow 30000:31000/tcp comment 'FTP passive range'

Разрешить только UDP на конкретном порту

sudo ufw allow 1194/udp comment 'OpenVPN'

 

Rate limit для SSH и других сервисов

Ограничение частоты новых соединений снижает перебор паролей

sudo ufw limit 22/tcp comment 'Limit SSH brute-force'

 

Управление правилами: список, номера, удаление

Посмотреть правила с номерами

sudo ufw status numbered

Удалить правило по номеру (пример удаляем правило №5 из текущего списка)

sudo ufw delete 5

Удалить правило по тексту

sudo ufw delete allow 80/tcp

Изменить правило удобнее через «удалить старое» и «добавить новое».


Включить и проверить логирование

Включить логирование на уровне medium

sudo ufw logging medium

Где смотреть

sudo tail -n 100 /var/log/ufw.log
sudo grep UFW /var/log/syslog | tail -n 100

 

IPv6

UFW умеет IPv6. Проверьте конфиг и статус.

Проверить, активен ли IPv6 в UFW

grep -i '^IPV6=' /etc/ufw/ufw.conf
sudo ufw status verbose

Если в ufw.conf стоит IPV6=no, переключите на yes и перезапустите UFW

sudo sed -i 's/^IPV6=.*/IPV6=yes/' /etc/ufw/ufw.conf
sudo ufw disable
sudo ufw enable

 

Исходящий трафик: ужесточаем при необходимости

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

Запретить все исходящие

sudo ufw default deny outgoing

Разрешить исходящие DNS, HTTP, HTTPS и NTP

sudo ufw allow out 53
sudo ufw allow out 80/tcp
sudo ufw allow out 443/tcp
sudo ufw allow out 123/udp
sudo ufw status verbose

Временное отключение и полный сброс

Временно выключить

sudo ufw disable

Включить снова

sudo ufw enable

Полный сброс к заводским настройкам

sudo ufw reset
sudo ufw status verbose

Типовые рецепты для продакшена

Сервер с Nginx и SSH

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw limit 22/tcp comment 'Limit SSH brute-force'
sudo ufw enable
sudo ufw status verbose

Сервер приложений с базой, доступной только из локальной сети

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 8080/tcp comment 'App HTTP'
sudo ufw allow proto tcp from 10.0.0.0/8 to any port 5432 comment 'Postgres from LAN'
sudo ufw enable
sudo ufw status numbered

Жесткий egress-контроль

sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow out 53
sudo ufw allow out 123/udp
sudo ufw enable
sudo ufw status verbose

Диагностика и частые проблемы

SSH пропал после включения UFW
- Проверьте локальную консоль или доступ через панель провайдера.
- Разрешите порт SSH и включите UFW заново:

sudo ufw allow 22/tcp
sudo ufw enable

Правило не работает
- Проверьте порядок и дубли

sudo ufw status numbered

- Удалите конфликтующие правила и добавьте нужное снова.

Docker и UFW
- Контейнеры управляют собственными правилами iptables. Для минимальных конфликтов держите UFW на хосте и ограничивайте доступ на уровне публикуемых портов. Если нужна строгая фильтрация, откройте только нужные порты на хосте, а остальное регулируйте в Docker Compose.

Нет логов UFW
- Включите логирование sudo ufw logging medium и проверьте /var/log/ufw.log. Если файла нет, убедитесь, что rsyslog активен.

В итоге мы получили:

- Разрешили SSH и включили UFW со строгими политиками.
- Открыли только необходимые сервисы, при необходимости ограничили по IP и интерфейсам.
- Включили логирование, освоили правила по номерам, IPv6 и rate limit.
- При необходимости ужесточили исходящий трафик и научились быстро откатываться.


這篇文章有幫助嗎?

相關文章

Как использовать свои подсети /24 на серверах Hetzner. Использование на Windows Server   Hetzner выдаёт только один белый IP. Хочется RDP на несколько ВМ, собственный почтовый пул или... Какие есть боты/сервисы, которые стоит добавить в исключения? Практический гайд для защиты сайта и бизнеса В современных условиях кибербезопасности настройка блокировок и фильтров — обязательная мера для... Какие есть боты/сервисы, которые стоит добавить в исключения? Практический гайд для защиты сайта и бизнеса В современных условиях кибербезопасности настройка блокировок и фильтров — обязательная мера для... Что делать, если сертификаты Let’s Encrypt не обновляются? Простое решение за 5 минут Сертификаты от Let’s Encrypt стали стандартом для бесплатной автоматической защиты сайтов по... Какие сервисы и решения реально помогают? Топ-10 инструментов Почему взламывают сайты и что самое опасное? Современный сайт на WordPress, Битрикс, Joomla,...
« 返回

Powered by WHMCompleteSolution


知識庫