- Ссылка на ресурс
- https://nftables.org
- Поддерживаемые версии
- Отсутствует
Это конфиг для nftables является попыткой полностью реализовать базовый функционал ufw, но с дополнительными плюшками. Он заточен на защиту от типичных атак (DDoS, сканеров портов, мусорного трафика).
ВНИМАНИЕ:
Не используйте его вместе с ufw! Перед установкой моего конфига либо удалите ufw, либо выключите его командой – sudo systemctl disable --now ufw
Также nftables никак не может заменить реальную защиту от провайдера.
Преимущества:
1. Автобаны при подозрительной активности.
2. Небольшая попытка поддержки Docker и WireGuard — интерфейсы docker0 и wg0, трафик через них должен работать корректно.
3. Белый список для своих адресов — все ограничения на них не действуют.
4. Разделение TCP и UDP, IPv4 и IPv6
5. Приличная защита от многих видов атак малого и среднего уровня.
Он тестирован на Ubuntu nftables v1.0.9, но должен работать на любой OC с современным nftables.
Установка:
Сам nftables уже установлен в большинстве современных линукс системах. Проверьте – sudo nft -v
Если его нет, то установите:
Потом сделайте бэкап /etc/nftables.conf (переименуйте его допустим в nftables.conf.bak) и поместите мой конфиг (nftables.conf) в папку /etc, настройте его под себя (не забудьте разрешить ваш ssh порт!) и выполните – nft -c -f /etc/nftables.conf, если нет ошибок, то: sudo systemctl enable --now nftables и через несколько секунд можно ещё выполнить – sudo systemctl restart nftables (чтобы убедиться, что всё перезапущено и применено).
Если при вводе nft -c -f /etc/nftables.conf появилась ошибка, то удалите мой nftables.conf и замените на тот который вы сохранили в бэкапе и выполните sudo systemctl restart nftables, также можете сообщить мне об этом.
Настройка:
По умолчанию разрешены эти порты IPv4:
Уберите не нужные и добавьте свои. ВНИМАНИЕ! Не забудьте добавить туда свой порт ssh (если вы подключаетесь к своей машине по SSH / SFTP).
Также вы можете добавить свой IP в белый список (посмотреть можно здесь – You must be logged in to see this link.)
Думаю, остальное здесь перечислять нет смысла (оно уже описано в комментариях в самом конфиге).
Команды:
[конкретно для таблиц с IPv4]
Посмотреть список кого забанило за DDoS – sudo nft list set inet filter ddos4
Посмотреть кого забанило за сканирование портов – sudo nft list set inet filter portscanners4
Сбросить все баны – sudo nft flush set inet filter ddos4 && sudo nft flush set inet filter portscanners4
[для IPv6]
Посмотреть список кого забанило за DDoS – sudo nft list set inet filter ddos6
Посмотреть кого забанило за сканирование портов – sudo nft list set inet filter portscanners6
Сбросить все баны – sudo nft flush set inet filter ddos6 && sudo nft flush set inet filter portscanners6
Дополнительно
Bogon сети по умолчанию разрешены только интерфейсу wg0, если вам они нужны для других интерфейсов, тот поправьте здесь:
Не редактируйте конфиг без понимания синтаксиса nftables.
Конфиг не ограничивает исходящий от вашего сервера трафик.
Возможны ложные срабатывания – сообщайте о них мне.
Не используйте его вместе с ufw! Перед установкой моего конфига либо удалите ufw, либо выключите его командой – sudo systemctl disable --now ufw
Также nftables никак не может заменить реальную защиту от провайдера.
1. Автобаны при подозрительной активности.
2. Небольшая попытка поддержки Docker и WireGuard — интерфейсы docker0 и wg0, трафик через них должен работать корректно.
3. Белый список для своих адресов — все ограничения на них не действуют.
4. Разделение TCP и UDP, IPv4 и IPv6
5. Приличная защита от многих видов атак малого и среднего уровня.
Он тестирован на Ubuntu nftables v1.0.9, но должен работать на любой OC с современным nftables.
Сам nftables уже установлен в большинстве современных линукс системах. Проверьте – sudo nft -v
Если его нет, то установите:
Код:
sudo apt update
sudo apt install nftables
Потом сделайте бэкап /etc/nftables.conf (переименуйте его допустим в nftables.conf.bak) и поместите мой конфиг (nftables.conf) в папку /etc, настройте его под себя (не забудьте разрешить ваш ssh порт!) и выполните – nft -c -f /etc/nftables.conf, если нет ошибок, то: sudo systemctl enable --now nftables и через несколько секунд можно ещё выполнить – sudo systemctl restart nftables (чтобы убедиться, что всё перезапущено и применено).
Если при вводе nft -c -f /etc/nftables.conf появилась ошибка, то удалите мой nftables.conf и замените на тот который вы сохранили в бэкапе и выполните sudo systemctl restart nftables, также можете сообщить мне об этом.
По умолчанию разрешены эти порты IPv4:
Код:
# Разрешённые TCP порты
set allowed_tcp4 {
type inet_service
flags interval
elements = { 80, 443, 3306, 8000, 22, 25565 }
}
# Разрешённые UDP порты (добавьте блок elements = { ваши UDP порты } если нужно).
set allowed_udp4 {
type inet_service
flags interval
}
Уберите не нужные и добавьте свои. ВНИМАНИЕ! Не забудьте добавить туда свой порт ssh (если вы подключаетесь к своей машине по SSH / SFTP).
Также вы можете добавить свой IP в белый список (посмотреть можно здесь – You must be logged in to see this link.)
Код:
set whitelist4 {
type ipv4_addr
flags interval
elements = { ВАШ.IP }
}
Думаю, остальное здесь перечислять нет смысла (оно уже описано в комментариях в самом конфиге).
[конкретно для таблиц с IPv4]
Посмотреть список кого забанило за DDoS – sudo nft list set inet filter ddos4
Посмотреть кого забанило за сканирование портов – sudo nft list set inet filter portscanners4
Сбросить все баны – sudo nft flush set inet filter ddos4 && sudo nft flush set inet filter portscanners4
[для IPv6]
Посмотреть список кого забанило за DDoS – sudo nft list set inet filter ddos6
Посмотреть кого забанило за сканирование портов – sudo nft list set inet filter portscanners6
Сбросить все баны – sudo nft flush set inet filter ddos6 && sudo nft flush set inet filter portscanners6
Bogon сети по умолчанию разрешены только интерфейсу wg0, если вам они нужны для других интерфейсов, тот поправьте здесь:
Код:
ip saddr @bogon4 iifname != "wg0" drop
ip6 saddr @bogon6 iifname != "wg0" drop
Не редактируйте конфиг без понимания синтаксиса nftables.
Конфиг не ограничивает исходящий от вашего сервера трафик.
Возможны ложные срабатывания – сообщайте о них мне.