Вопрос или проблема
Сценарий: я нахожусь на удаленном сервере, и если я неправильно настрою UFW, то окажусь без доступа и возможности легкого восстановления. Поэтому я хочу запустить ufw
и проверить, работает ли он. Если нет, то я хочу перезагрузить сервер и отключить ufw
. Обратите внимание, что сервер монтирует свою файловую систему через NFS, и если это будет заблокировано, система выйдет из строя.
Я попробовал:
systemctl start ufw
Хотя systemctl status ufw
сообщает, что он активен, ufw status
говорит:
Status: inactive
Когда я запускаю ufw enable
, то UFW будет также включен при следующей загрузке, чего я точно не хочу.
Один из способов сделать это — использовать, например, screen.
- Запустите
screen
- Переключитесь на пользователя root
sudo -i
- Выполните
sleep 300; ufw disable
- Нажмите Ctrl+a c, чтобы создать новое окно.
- Запустите любые команды ufw, которые вам нужны.
- Если потеряете доступ, просто подождите пять минут, чтобы ufw отключился.
- Если все работает, вернитесь в предыдущее окно с помощью Ctrl+a Space и нажмите Ctrl+c, чтобы прервать команду до ее выполнения.
Ответ или решение
Теория
Сценарий, с которым вы сталкиваетесь, требует особого внимания, учитывая удаленную природу сервера и потенциальные риски блокировки из-за неправильной конфигурации UFW (Uncomplicated Firewall). Благодаря возможности временно активировать UFW, вы можете протестировать свои настройки и убедиться в их корректности без риска заблокировать доступ к серверу на постоянной основе.
Система управления файлами через NFS (Network File System) также добавляет слой сложности, поскольку неправильная фильтрация сетевого трафика может блокировать доступ к файловой системе, что сделает сервер нестабильным.
Пример
На вашем сервере, когда вы запускаете команду systemctl start ufw
, вы обнаруживаете, что статус UFW остаётся неактивным. systemctl
активирует службу, но не изменяет состояние UFW. Это связано с тем, что UFW требует явного включения командой ufw enable
, чтобы начать фильтрацию. Проблема, с которой вы столкнулись, заключается в том, что использование команды ufw enable
включает UFW навсегда и восстанавливает его при каждом перезапуске системы. Вы хотите избежать этого постоянного изменения и, следовательно, ищете способ временно активировать брандмауэр.
Решение с использованием screen
Один из способов временно активировать UFW, что позволит вам проверить его работу с возможностью возврата к изначальным настройкам, — использовать утилиту screen
. screen
— это инструмент для мультиплексирования терминалов, который позволяет вам выполнять несколько команд в одной сессии, предотвращая разрыв связи при потере соединения.
Применение
-
Установка и первоначальная настройка:
- Убедитесь, что
screen
установлен на вашем сервере. Если нет, используйте командуsudo apt-get install screen
для его установки.
- Убедитесь, что
-
Запуск screen и создание сессии:
- Запустите
screen
, введя командуscreen
в терминале, чтобы создать новую сессию. Это позволит вам снова подключиться к ней в случае потери связи.
- Запустите
-
Запуск временной задачи по отключению UFW:
- Переключитесь на пользователя
root
, если у вас есть такие привилегии:sudo -i
. - Введите команду
sleep 300; ufw disable
для запуска фонового процесса, отключающего UFW через 5 минут (300 секунд). Это создаёт временный тайм-аут, который автоматически отключит брандмауэр, если вы потеряете доступ.
- Переключитесь на пользователя
-
Создание нового окна в screen:
- Нажмите Ctrl+a, затем c, чтобы создать новое окно в
screen
. Теперь вы можете вводить новые команды независимо от процесса, работающего в предыдущем окне.
- Нажмите Ctrl+a, затем c, чтобы создать новое окно в
-
Проверка и тестирование UFW:
- Введите команды настройки UFW. Например,
ufw allow 22
для обеспечения доступа через SSH или любые другие необходимые настройки для вашей сети. - Убедитесь, что команды вводятся корректно и вы можете сохранять доступ к системе.
- Введите команды настройки UFW. Например,
-
Мониторинг и управление:
- Если вы потеряете доступ, подождите, пока таймер истечёт. Через 5 минут
ufw
будет отключён автоматически. - Если всё работает правильно, вернитесь в предыдущее окно, нажав Ctrl+a, затем Space, и прекратите выполнение таймера, нажав Ctrl+c.
- Если вы потеряете доступ, подождите, пока таймер истечёт. Через 5 минут
-
Закрытие сессии screen:
- Если вы закончили и не хотите сохранять сессию, закройте все окна в
screen
командой exit.
- Если вы закончили и не хотите сохранять сессию, закройте все окна в
Заключение
Понимание точного управления UFW и его взаимодействия с системой настраиваемых файлов, таких как NFS, имеет решающее значение для безопасного управления удаленным сервером. Использование screen
позволяет безопасно тестировать сетевые настройки, минимизируя риск блокировки доступа. Этот подход обеспечивает безопасное введение изменений с возможностью автоматического восстановления при любой ошибке в настройках.
Это важно в среде, где доступ к серверу через удаленные подключения является критическим аспектом управления системами.