Я немного запутался и надеюсь, что кто-нибудь сможет направить меня в нужное русло, чтобы решить мою проблему. У меня есть сервер с дистрибутивом Debian, и я использую UFW в качестве брандмауэра. Конфигурация и установка были довольно простыми, и я запустил брандмауэр, как указано в документации:
manly@server:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Если я проверю, запущен ли ufw, я получу (правильно):
manly@server:~$ sudo ufw status
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
80/tcp ALLOW Anywhere
22 ALLOW Anywhere (v6)
80/tcp ALLOW Anywhere (v6)
Через некоторое время (я проверяю ежедневно) брандмауэр становится неактивным - даже без перезагрузки между ними, т.е. статус возвращается в неактивное состояние:
manly@server:~$ sudo ufw status
Status: inactive
Я понятия не имею, почему. Что я могу проверить, чтобы выяснить причины такого странного поведения. Буду благодарен за любой совет!
Обновление:
Я заметил кое-что, что может помочь найти решение. Я запускаю ufw с помощью команды sudo ufw enable в сеансе ssh. Похоже, что если я держу сеанс ssh открытым, брандмауэр включен. Если я закрою сеанс ssh (выйду), статус ufw будет установлен на неактивный через некоторое время. Должен ли я запускать ufw каким-то особым образом?
Итак, после некоторого поиска и разговора со службой поддержки, мы наконец разобрался, что останавливает UFW. В системе также был настроен APF
(Advanced Policy Firewall - R-fx Networks), который добавляет в систему задание cron. В полночь задание удаляет все правила и сбрасывает правила, определенные для APF
.
Отредактируйте файл конфигурации /etc/ufw/ufw.conf
от имени root и установите ENABLED=yes
:
# /etc/ufw/ufw.conf
#
# Set to yes to start on boot. If setting this remotely, be sure to add a rule
# to allow your remote connection before starting ufw. Eg: 'ufw allow 22/tcp'
ENABLED=yes
# Please use the 'ufw' command to set the loglevel. Eg: 'ufw logging medium'.
# See 'man ufw' for details.
LOGLEVEL=low