Как сбросить ufw, не отключая его?

Вопрос или проблема

Я хотел бы сбросить настройки ufw обратно к значениям по умолчанию, применить новые настройки, и только потом перезагрузить брандмауэр. Пока я вношу изменения, я хотел бы, чтобы брандмауэр продолжал работать со старыми настройками.

man ufw утверждает:

   reset  Отключает и сбрасывает брандмауэр на значения  по умолчанию при установке.  Также  можно  использовать  опцию  --force
          для выполнения сброса без подтверждения.

Таким образом, кажется, что ufw reset не является решением, потому что он отключает брандмауэр, помимо сброса на значения по умолчанию при установке.

Я знаю, что я могу напрямую поработать с конфигурационными файлами ufw, а затем выполнить ufw reload. Это решение или есть более идиоматичный способ использования ufw в этом случае?

Вот логика, которую я использовал для этого. Я сделал это, чтобы мог редактировать файл ufw.conf напрямую в течение всего дня удаленно по ssh, не мешая активному ufw.conf, просто так. Это процесс, при котором вы вручную настраиваете конфигурационный файл напрямую, вместо того чтобы использовать различные команды для его редактирования.

  1. Создайте временный каталог

    sudo mkdir /home/<ИМЯ_ПОЛЬЗОВАТЕЛЯ>/temp_dir
    
  2. Скопируйте каталог /etc/ufw/ в ваш временный каталог cp /etc/ufw/* /home/<ИМЯ_ПОЛЬЗОВАТЕЛЯ>/temp_dir/

  3. Отредактируйте ufw.conf и другие конфигурационные файлы в вашем временном каталоге в соответствии с вашим заранее заданным дизайном, редактируя файл конфигурации напрямую vi /home/<ИМЯ_ПОЛЬЗОВАТЕЛЯ>/temp_dir/ufw.conf

    Примечание: Значения по умолчанию в ufw.conf состоят из комментариев и этих 2 строк:

    ENABLED=no
    LOGLEVEL=low
    
  4. Создайте свои правила, добавляя их напрямую в временный ufw.conf файл. Сохраните ваши изменения :wq

  5. Скопируйте временный каталог, заменяя оригинальные файлы UFW файлами из временного каталога, используя флаг обновления

    cp -u /home/<ИМЯ_ПОЛЬЗОВАТЕЛЯ>/temp_dir/* /etc/ufw/
    
  6. Перезагрузите UFW

    ufw disable && ufw enable && ufw status
    

Это немного обходной путь, но он протестирован и работает с 14.04. Это сработало для меня, обновляя конфигурационные файлы, не нарушая работу брандмауэра. Это потому, что вы редактируете файл, который не используется брандмауэром, пока не будет сказано иное. Также вам, возможно, придется изменить некоторые разрешения, чтобы команды работали.

Другой аналогичный подход состоит в том, чтобы иметь 2 сервера, сбрасывая и редактируя UFW на первом сервере, а затем cp -u на втором сервере.

Удачи!!

#!/bin/bash

# Резервное копирование текущих правил UFW
sudo cp /etc/ufw/user.rules /etc/ufw/user.rules.backup

# Очистить существующие правила в файле user.rules
sudo truncate -s 0 /etc/ufw/user.rules

# Применить новую конфигурацию
# Замените следующую строку вашей пользовательской конфигурацией
# Пример: sudo ufw allow ssh
#          sudo ufw allow 80/tcp
#          sudo ufw deny from 192.168.1.100
#          и т.д.
sudo ufw allow ssh

# Перезагрузить UFW для применения новой конфигурации
sudo ufw reload

Ответ или решение

Для сброса настроек UFW (Uncomplicated Firewall) до значений по умолчанию без отключения самого брандмауэра можно использовать несколько подходов. Данная инструкция ориентирована на пользователей, желающих сохранить работу брандмауэра во время изменений.

Использование временной директории для редактирования конфигураций

Данный метод позволяет производить изменения конфигурации в изолированной среде, что устраняет риск прерывания работы брандмауэра.

Шаги по реализации метода:

  1. Создание временной директории:

    sudo mkdir /home/<USERNAME>/temp_dir
  2. Копирование конфигураций UFW в временную директорию:

    sudo cp /etc/ufw/* /home/<USERNAME>/temp_dir/
  3. Редактирование конфигурационных файлов:
    Откройте файл ufw.conf и другие конфигурации в вашем временном каталоге:

    vi /home/<USERNAME>/temp_dir/ufw.conf

    Важно заметить, что значения по умолчанию в ufw.conf содержат следующие строки:

    ENABLED=no
    LOGLEVEL=low
  4. Добавление необходимых правил:
    После редактирования добавьте необходимые правила непосредственно в ufw.conf. Сохраните изменения с помощью команды :wq.

  5. Замена оригинальных файлов конфигурации на обновлённые:
    Копируйте файлы из временной директории обратно в /etc/ufw, используя флаг обновления:

    sudo cp -u /home/<USERNAME>/temp_dir/* /etc/ufw/
  6. Перезагрузка UFW:
    Теперь можно перезагрузить UFW для применения новых настроек. Убедитесь, что брандмауэр работает:

    sudo ufw disable && sudo ufw enable && sudo ufw status

Резервное копирование и очистка правил

Также рекомендуется сделать резервную копию текущих правил перед внесением изменений:

# Резервное копирование текущих правил UFW
sudo cp /etc/ufw/user.rules /etc/ufw/user.rules.backup

Для очистки существующих правил можно обнулить файл правил:

sudo truncate -s 0 /etc/ufw/user.rules

Применение новых настроек

После этого следует добавить новые правила, которые необходимы на вашем сервере:

sudo ufw allow ssh
# Дополнительные правила
sudo ufw allow 80/tcp
sudo ufw deny from 192.168.1.100

Перезагрузка UFW

И в завершение, чтобы эти изменения вступили в силу, выполните команду:

sudo ufw reload

Заключение

Этот метод позволяет вам редактировать конфигурации UFW и добавлять новые правила без отключения брандмауэра. Использование временной директории для редактирования конфигураций снижает риск изменения работающего брандмауэра, что особенно важно для удалённых серверов. Таким образом, вы можете обеспечить безопасность своей системы, соблюдая при этом удобство работы с настройками брандмауэра.

Оцените материал
Добавить комментарий

Капча загружается...