Как отключить Portmapper на виртуальном или выделенном сервере

Portmapper (portmap, rpcbind) — сервис системы удаленного вызова процедур (Open Network Computing Remote Procedure Call), служит для преобразования номеров сервисов Remote Procedure Call, таких как NIS или NFS в номера портов TCP/UDP, использует механизм широковещательных сообщений RPC на порт 111.

Открытой службой portmapper могут воспользоваться для проведения DDoS-атаки. Протокол UDP позволяет осуществить подмену IP (спуфинг). Используя IP-адрес жертвы, злоумышленники могут отправлять запросы к portmapper. В результате, когда сервер получит запросы, он будет отправлять все ответы на адрес жертвы. Большой объем такого «отраженного» трафика может вывести из строя сервер или сеть жертвы.

Как проверить

Для проверки можно использовать утилиту rpcinfo, которая выполняет RPC-запрос и выводит зарегистрированные RPC-сервисы. Проверять можно как локальный, так и удалённые хосты.

Пример проверки локального хоста:

# rpcinfo program version netid address service owner 100000 4 tcp6 ::.0.111 portmapper superuser 100000 3 tcp6 ::.0.111 portmapper superuser 100000 4 udp6 ::.0.111 portmapper superuser 100000 3 udp6 ::.0.111 portmapper superuser 100000 4 tcp 0.0.0.0.0.111 portmapper superuser 100000 3 tcp 0.0.0.0.0.111 portmapper superuser 100000 2 tcp 0.0.0.0.0.111 portmapper superuser 100000 4 udp 0.0.0.0.0.111 portmapper superuser 100000 3 udp 0.0.0.0.0.111 portmapper superuser 100000 2 udp 0.0.0.0.0.111 portmapper superuser 100000 4 local /run/rpcbind.sock portmapper superuser 100000 3 local /run/rpcbind.sock portmapper superuser

Для проверки удалённого хоста необходимо указать его адрес, например после ключа -p или -s для вывода в сокращённом виде, если не указать то будет локальный вызов RPC. Пример вывода:

rpcinfo -p [IP] program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper rpcinfo -s [IP] program version(s) netid(s) service owner 100000 2,3,4 local,udp,tcp,udp6,tcp6 portmapper superuser

Подробнее про утилиту rpcinfo можно прочитать, вызвав справку с помощью команды man rpcinfo (также man rpcbind).

Дополнительно проверку локального хоста можно выполнить утилитами ss (netstat). Описание ключей проверяйте в man-справках. Пример ниже (заголовок команд добавлен отдельно для наглядности):

ss -lptun | grep 111 Netid State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess udp UNCONN 0 0 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=593,fd=5),("systemd",pid=1,fd=37)) udp UNCONN 0 0 [::]:111 [::]:* users:(("rpcbind",pid=593,fd=7),("systemd",pid=1,fd=39)) tcp LISTEN 0 4096 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=593,fd=4),("systemd",pid=1,fd=36)) tcp LISTEN 0 4096 [::]:111 [::]:* users:(("rpcbind",pid=593,fd=6),("systemd",pid=1,fd=38))

Как отключить

В дистрибутивах, в которых используется система systemd, отключить и удалить из загрузки portmapper (rpcbind) можно следующим образом:

systemctl stop rpcbind.service Warning: Stopping rpcbind.service, but it can still be activated by: rpcbind.socket

Далее остановить сокет:

systemctl stop rpcbind.socket

Удалить из автозагрузки:

systemctl disable rpcbind.service systemctl disable rpcbind.socket

Если используются сценарии загрузки на базе скриптов в /etc/init.d, то остановить службу можно следующим образом:

/etc/init.d/rpcbind stop

Удалить из автозагрузки в дистрибутивах на базе Debian можно так:

update-rc.d -f rpcbind remove

В дистрибутивах от RedHat:

chkconfig rpcbind off

После отключения сервиса вывод rpcinfo будет такой:

rpcinfo rpcinfo: can't contact rpcbind: RPC: Remote system error - Connection refused

Как ограничить подключение к portmapper

Если portmapper необходим, то можно ограничить доступ к нему, разрешив подключение только для определенных IP. Это можно сделать при помощи сетевого фильтра, ограничив доступ к порту 111.

Пример ограничения протокола UDP для IPv4:

iptables -A INPUT -p udp -s 192.168.1.0/24 --dport 111 -j ACCEPT iptables -A INPUT -p udp -s 127.0.0.1 --dport 111 -j ACCEPT iptables -A INPUT -p udp --dport 111 -j DROP

Для реализации основных услуг и функций нашего сайта, а также для сбора данных о том, как посетители взаимодействуют с нашими сайтом, продуктами и услугами, мы применяем различные инструменты, включая файлы cookie. Нажимая «Принимаю», вы соглашаетесь с текущими правилами и условиями использования сайта и даете разрешение на использование этих данных. В противном случае, пожалуйста, покиньте сайт.

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: