nftables

Безопасное применение /etc/nftables.conf

  1. Проверка синтаксиса

    Перед применением всегда проверяйте файл на наличие ошибок и опечаток:

    nft -c -f /etc/nftables.conf

    Флаг -c (check) валидирует конфиг без его загрузки в ядро. Если команда ничего не вывела — синтаксис верный.

  2. Запуск авто-отката (Страховка)

    Запустите единый блок команд, который сохранит текущие рабочие правила и включит таймер автоматического отката через 60 секунд:

    # 1. Сохраняем текущий рабочий ruleset
    nft list ruleset > /tmp/rules_working.nft
    
    # 2. Запускаем фоновый таймер отката на 60 секунд
    (sleep 60 && nft -f /tmp/rules_working.nft && echo "[SAFETY] Rules rolled back!") &
    ROLLBACK_PID=$!
    
    # 3. Применяем новый конфиг
    nft -f /etc/nftables.conf
    
    echo "Страховка запущенна! PID: $ROLLBACK_PID"
    
  3. Проверка доступности

    Не закрывая текущую сессию SSH, откройте новое окно терминала на рабочем ПК и проверьте доступность сервисов:

    SSH: ssh root@IP_СЕРВЕРА

    Веб-панели: https://IP_СЕРВЕРА:8006 / 8007

  4. Фиксация результата

    Если всё работает отлично: Отмените таймер отката в первом окне SSH:

    kill $ROLLBACK_PID

    Новые правила зафиксированы.

  5. Если доступ потерян / новое окно не подключается:

    Ничего не делайте. Подождите 60 секунд — скрипт автоматически применит /tmp/rules_working.nft и восстановит предыдущий рабочий фаервол.


    Правила nftables можно настроить через файл конфигурации /etc/nftables.conf или напрямую с помощью команд.

    Вариант 1. Применить правила, после редактирваония /etc/nftables.conf

    После редактирования /etc/nftables.conf перезагрузите nftables

    systemctl restart nftables

    Вариант 2. Сохранить правила в /etc/nftables.conf, созданные командами

    echo '#!/usr/sbin/nft -f' > /etc/nftables.conf

    echo "flush ruleset" >> /etc/nftables.conf

    nft -s list ruleset >> /etc/nftables.conf


    systemctl enable nftables.service

    Перечитать правила из файла

    Если работаем по SSH

    nft -f /etc/nftables.conf && sleep 60 && nft flush ruleset

    Если связь не оборвалась и вы всё еще в консоли, просто нажмите Ctrl + C и зафиксируйте правила в системе:

    systemctl restart nftables

    Из консоли

    nft -f /etc/nftables.conf

    Перечитать правила из файла после загузки сетевого интерфейса

    в файл /etc/network/interfaces:

    после поисания сетевого интерфейса

    iface enp5s0 inet manual

    добваить

    post-up nft -f /etc/nftables.conf


    Показать порядковые номера правил

    nft -a list ruleset

    Показать правила в таблице PREROUTING

    nft list chain ip nat PREROUTING

    Показать правила в таблице PREROUTING с номером 14

    nft -a list chain ip nat PREROUTING | grep '# handle 14'

    Удаление правила по номеру

    nft delete rule inet filter input handle 9

    Добавление правила в конкретное место с номером в списке

    nft add rule inet filter input position 8 tcp dport 22 counter accept

    После установки

    root@clear:~# cat /etc/nftables.conf
    #!/usr/sbin/nft -f
    
    flush ruleset
    
    table inet filter {
            chain input {
                    type filter hook input priority filter;
            }
            chain forward {
                    type filter hook forward priority filter;
            }
            chain output {
                    type filter hook output priority filter;
            }
    }
    

    Очистка правил

    nft flush ruleset