...

Как отключить 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. Нажимая «Принимаю», вы соглашаетесь с текущими правилами и условиями использования сайта и даете разрешение на использование этих данных. В противном случае, пожалуйста, покиньте сайт.

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

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

Seraphinite AcceleratorOptimized by Seraphinite Accelerator
Turns on site high speed to be attractive for people and search engines.