Вопрос или проблема
У меня есть сервер NUT на RPi 2, который я настроил. С другого клиента я могу подключаться через порт 3493 и отслеживать статус ИБП. Однако проблема в том, что я могу ввести любое имя пользователя/пароль или вообще оставить это поле пустым, и всё равно подключиться. Я не хочу этого. Я не понимаю, что вызывает такое поведение. У кого-нибудь есть идеи, в чем может быть причина?
Как предотвратить вход без пользователя/пароля с удалённых клиентов?
Сейчас я могу выполнить эту команду без аутентификации с удалённого клиента:
upsc [email protected]
Разве upsd.users не должен использоваться таким образом?
Мои конфигурационные файлы выглядят так:
nut.conf
MODE=netserver
upsd.conf
LISTEN 0.0.0.0 3493
upsd.users
[admin]
password = pass
actions = SET
actions = FSD
instcmds = ALL
[local]
password = pass
upsmon master
[remote]
password = pass
upsmon slave
[monuser]
password = pass
upsmon slave
upsmon.conf
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 30
DEADTIME 25
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 90
MONITOR apc-bx1600@localhost 1 local pass master
upssched.conf
CMDSCRIPT /bin/upssched-cmd
Разрешения файлов
-rw-r--r-- 1 root root 1113 Jan 22 23:40 hosts.conf
-rw-r----- 1 root nut 15 Jan 22 17:29 nut.conf
-rw-r----- 1 root nut 248 Jan 22 23:12 ups.conf
-rw-r----- 1 root nut 19 Jan 22 23:29 upsd.conf
-rw-r----- 1 root nut 253 Jan 23 16:53 upsd.users
-rw-r----- 1 root nut 232 Jan 23 17:27 upsmon.conf
-rw-r----- 1 root nut 4201 Jan 25 2023 upssched.conf
-rw-r--r-- 1 root root 1432 Jan 23 11:23 upsset.conf
-rw-r--r-- 1 root root 3699 Jan 25 2023 upsstats.html
-rw-r--r-- 1 root root 6408 Jan 25 2023 upsstats-single.html
upsd всегда предоставляет только для чтения доступ анонимным клиентам. Функция аутентификации пользователя предназначена только для предоставления доступа к действиям управления (например, upsrw для изменения параметров ИБП, или upscmd для запуска калибровки, или upsmon для установки ‘принудительного выключения’).
Если вы хотите, чтобы только одобренные клиенты могли видеть статус ИБП, используйте аутентификацию клиента на уровне TLS, используя CERTREQUEST REQUIRE
в upsd.conf, или ограничьте их с помощью iptables.
Ответ или решение
Для обеспечения безопасности вашего NUT (Network UPS Tools) сервера на Raspberry Pi 2 и предотвращения несанкционированного удаленного доступа, важно разобраться в том, как обрабатываются аутентификация и доступ к серверу. Проблема, с которой вы столкнулись, касается того, что удаленные клиенты могут подключаться и наблюдать статус UPS без предоставления корректного имени пользователя и пароля. Давайте разберемся, как решить эту задачу, учитывая текущую конфигурацию и доступные возможности для повышения уровня безопасности.
Теория
Система NUT предназначена для мониторинга и управления источниками бесперебойного питания (UPS). Один из компонентов NUT, upsd
, предоставляет удаленным клиентам возможность доступа к информации о недостатке питания. Здесь важно учитывать, что NUT по умолчанию предоставляет read-only (только чтение) доступ анонимным клиентам, что и объясняет способность подключаться без проверки учетных данных. Аутентификация, как таковая, требуется лишь для совершения контрольных действий, таких как изменения параметров UPS или принудительное отключение.
Для решения вашей задачи, чтобы ограничить доступ к информации о статусе UPS только сертифицированным пользователям, вам следует рассмотреть использование сертификатов TLS или настроить контроль доступа с помощью брандмауэра.
Пример
Ваш текущий конфигурационный файл upsd.conf
содержит строку LISTEN 0.0.0.0 3493
, что открывает доступ ко всем сетевым интерфейсам Raspberry Pi для подключения через порт 3493. Такой подход удобно использовать для легкого доступа, но он может открывать двери для несанкционированного доступа.
Файл upsd.users
определяет пользователей, которые могут взаимодействовать с UPS. Однако, как указано, без дополнительных мер все клиенты получают доступ к чтению состояния UPS без аутентификации.
Применение
Для повышения безопасности вашего NUT сервера, выполните следующие шаги:
-
Изменение конфигурации
upsd.conf
:- Добавьте в данный файл TLS аутентификацию или настройте ограничение по IP-адресам клиента.
- Используйте директиву
CERTREQUEST REQUIRE
, чтобы обеспечить обязательную проверку клиентских сертификатов. Это потребует создания и распределения соответствующих сертификатов для доверенных клиентов.
-
Настройка TLS:
- Генерируйте и установите SSL-сертификаты для
upsd
, чтобы включить безопасное соединение. Это предотвратит перехват трафика и несанкционированный доступ, поскольку только клиенты с действительными сертификатами смогут установить соединение. - Пример конфигурации может выглядеть следующим образом:
CERTFILE /path/to/upsd.crt CERTKEY /path/to/upsd.key CERTREQUEST REQUIRE
- Обновите клиентов NUT, чтобы они поддерживали TLS-соединения и могли соответствовать новым требованиям аутентификации.
- Генерируйте и установите SSL-сертификаты для
-
Контроль доступа на уровне сети (Firewall):
- Используйте
iptables
для ограничения диапазона IP-адресов, с которых разрешено подключение к вашему серверу. - Например, вы можете добавить следующие правила:
iptables -A INPUT -p tcp --dport 3493 -s <trusted-ip> -j ACCEPT iptables -A INPUT -p tcp --dport 3493 -j DROP
- Это позволит только указанным IP-адресам подключаться к серверу на порту 3493, отвергая все прочие подключения.
- Используйте
-
Настройка учетных записей пользователей NUT:
- Пересмотрите файл
upsd.users
, удалите или измените пароли, чтобы использовать более сложные и уникальные пароли для всех учетных записей. - Проверьте, чтобы у пользователей были назначены соответствующие права доступа.
- Пересмотрите файл
-
Мониторинг и логирование:
- Убедитесь, что сервер логирует все попытки подключения и действия для последующей проверки. Это поможет вам отслеживать любые подозрительные действия и вовремя реагировать на потенциальные угрозы.
-
Обновление программного обеспечения:
- Регулярно обновляйте ваш сервер NUT и Raspberry Pi для применения последних исправлений безопасности и улучшений. Следите за обновлениями и рекомендациями от разработчиков ПО.
Применение этих мер поможет защитить ваш NUT UPS сервер от несанкционированного доступа и повысит общую безопасность вашего сетевого окружения.