nftables - это замена iptables, встроенная в ядро linux. Она объединяет фильтрацию, NAT и маршрутизацию в единую подсистему и считается более быстрой и удобной. Разберемся, как можно построить базовую защиту сервера.
▪️ Минимальная конфигурация. Создадаем новый ruleset с таблицей для фильтрации трафика:
sudo nft add table inet filter
sudo nft 'add chain inet filter input { type filter hook input priority 0; policy drop; }'
Мы сразу задали policy drop, то есть по умолчанию все запрещено. Теперь разрешим только нужное.
▪️ Разрешаем базовое
sudo nft add rule inet filter input ct state established,related accept
sudo nft add rule inet filter input iif lo accept
sudo nft add rule inet filter input ip protocol icmp accept
sudo nft add rule inet filter input tcp dport {22,80,443} accept
Что тут происходит:
принимаем все соединения в состоянии ESTABLISHED и RELATED
разрешаем локальный интерфейс (lo)
разрешаем ping (ICMP)
открываем SSH, HTTP и HTTPS
▪️ Защита SSH. Ограничим количество соединений по SSH, чтобы усложнить перебор паролей:
sudo nft add rule inet filter input tcp dport 22 ct state new limit rate 10/minute accept
sudo nft add rule inet filter input tcp dport 22 drop
Теперь на SSH можно будет открыть не более 10 новых подключений в минуту.
▪️ Блокируем сканеров и мусор. Пример простого анти-сканера:
# блокируем пакеты без флагов (NULL scan)
sudo nft add rule inet filter input tcp flags == 0 drop
# блокируем XMAS-скан
sudo nft add rule inet filter input tcp flags & (fin|psh|urg) == (fin|psh|urg) drop
▪️ Проверка и сохранение. Посмотреть активные правила:
sudo nft list ruleset
Сохранить конфиг:
sudo sh -c "nft list ruleset > /etc/nftables.conf"
sudo systemctl enable nftables
sudo systemctl restart nftables
#nftables #security
🧑💻 NetworkAdmin