Вопрос или проблема
Я хотел бы сбросить настройки ufw
обратно к значениям по умолчанию, применить новые настройки, и только потом перезагрузить брандмауэр. Пока я вношу изменения, я хотел бы, чтобы брандмауэр продолжал работать со старыми настройками.
man ufw
утверждает:
reset Отключает и сбрасывает брандмауэр на значения по умолчанию при установке. Также можно использовать опцию --force
для выполнения сброса без подтверждения.
Таким образом, кажется, что ufw reset
не является решением, потому что он отключает брандмауэр, помимо сброса на значения по умолчанию при установке.
Я знаю, что я могу напрямую поработать с конфигурационными файлами ufw, а затем выполнить ufw reload
. Это решение или есть более идиоматичный способ использования ufw
в этом случае?
Вот логика, которую я использовал для этого. Я сделал это, чтобы мог редактировать файл ufw.conf напрямую в течение всего дня удаленно по ssh, не мешая активному ufw.conf, просто так. Это процесс, при котором вы вручную настраиваете конфигурационный файл напрямую, вместо того чтобы использовать различные команды для его редактирования.
-
Создайте временный каталог
sudo mkdir /home/<ИМЯ_ПОЛЬЗОВАТЕЛЯ>/temp_dir
-
Скопируйте каталог /etc/ufw/ в ваш временный каталог
cp /etc/ufw/* /home/<ИМЯ_ПОЛЬЗОВАТЕЛЯ>/temp_dir/
-
Отредактируйте ufw.conf и другие конфигурационные файлы в вашем временном каталоге в соответствии с вашим заранее заданным дизайном, редактируя файл конфигурации напрямую
vi /home/<ИМЯ_ПОЛЬЗОВАТЕЛЯ>/temp_dir/ufw.conf
Примечание: Значения по умолчанию в ufw.conf состоят из комментариев и этих 2 строк:
ENABLED=no LOGLEVEL=low
-
Создайте свои правила, добавляя их напрямую в временный
ufw.conf
файл. Сохраните ваши изменения:wq
-
Скопируйте временный каталог, заменяя оригинальные файлы UFW файлами из временного каталога, используя флаг обновления
cp -u /home/<ИМЯ_ПОЛЬЗОВАТЕЛЯ>/temp_dir/* /etc/ufw/
-
Перезагрузите 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) до значений по умолчанию без отключения самого брандмауэра можно использовать несколько подходов. Данная инструкция ориентирована на пользователей, желающих сохранить работу брандмауэра во время изменений.
Использование временной директории для редактирования конфигураций
Данный метод позволяет производить изменения конфигурации в изолированной среде, что устраняет риск прерывания работы брандмауэра.
Шаги по реализации метода:
-
Создание временной директории:
sudo mkdir /home/<USERNAME>/temp_dir
-
Копирование конфигураций UFW в временную директорию:
sudo cp /etc/ufw/* /home/<USERNAME>/temp_dir/
-
Редактирование конфигурационных файлов:
Откройте файлufw.conf
и другие конфигурации в вашем временном каталоге:vi /home/<USERNAME>/temp_dir/ufw.conf
Важно заметить, что значения по умолчанию в
ufw.conf
содержат следующие строки:ENABLED=no LOGLEVEL=low
-
Добавление необходимых правил:
После редактирования добавьте необходимые правила непосредственно вufw.conf
. Сохраните изменения с помощью команды:wq
. -
Замена оригинальных файлов конфигурации на обновлённые:
Копируйте файлы из временной директории обратно в/etc/ufw
, используя флаг обновления:sudo cp -u /home/<USERNAME>/temp_dir/* /etc/ufw/
-
Перезагрузка 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 и добавлять новые правила без отключения брандмауэра. Использование временной директории для редактирования конфигураций снижает риск изменения работающего брандмауэра, что особенно важно для удалённых серверов. Таким образом, вы можете обеспечить безопасность своей системы, соблюдая при этом удобство работы с настройками брандмауэра.