Клиент NFS монтирует сбои позади брандмауэра

Я верю тому, что Вы видите, совершенно безопасно: родительский процесс внутренне раскрыл корневой перманент к www-данным для битов, которые делают обработку запросов. Сам процесс, конечно, все еще принадлежит корню, так как корень запустил его, и он все еще должен выполнить некоторые вещи как корень, если они вызываются (как обработчики сигналов для обработки перезагрузки файла (файлов) конфигурации и реконфигурирования сервера).

3
задан 23 March 2012 в 15:57
1 ответ

There are settings in sysctl that defines NFS port ranges available for connections.

sunrpc.max_resvport = 1023

sunrpc.min_resvport = 650

These settings define the highest and lowest ports to use for making RPC connections (NFS)

You can open these ports or define a different range depending on your system. You will get denies if it tries to use a port that is blocked either by a firewall or another service using that port.

Edit:

You can also increase / decrease this range. I have a server that had 460 NFS mounts defined in fstab and it would fail after 372 or so. And when I would manually mount one of the failed ones it would mount it but unmount one of the working mounts. I increased this range by 150 and they all mounted. This is not the best way to do it. automounter comes to mind but, it works.

To make the modification you will edit your /etc/sysctl.conf add a line like:

sunrpc.min_resvport = 900

To make the change permanent if you need to change them. Remember if you go above 1024 that those are "unprivileged" ports and normal system users will have access to them vs. - 1024.

Edit 2:

In your NFS mount command can you add the following.

proto=tcp - forces the mount to use TCP/IP

public - bypasses portmapper completely and contacts NFS server on port 2049 unless otherwise specified

So, mount nfs.test.com:/export /test

becomes

mount -o proto=tcp ,public nfs.test.com:/export /test

EDIT 3

OK - here we go!!! корень @ pressyrluck# ./nowhammies> / dev / please

Эта информация была поднята скопирована удалена заимствована из Sourceforge NFS

Некоторые демоны, участвующие в обмене данные через nfs уже привязаны к порту. portmap всегда находится на порте 111 tcp и udp. nfsd всегда использует порт 2049 TCP и UDP (однако, начиная с ядра 2.4.17, NFS поверх TCP считается экспериментальным и не предназначен для использования на производственных машинах).

Другие демоны, statd, mountd, lockd и rquotad , обычно перемещается к первому доступному порту, о котором им сообщает portmapper.

Чтобы заставить statd привязаться к определенному порту, используйте параметр -p portnum. Чтобы заставить statd отвечать на конкретном порту, дополнительно используйте параметр -o portnum при его запуске.

Чтобы заставить mountd привязаться к определенному порту, используйте параметр -p portnum.

Например, чтобы иметь статистическую трансляцию порта 32765 и прослушивать порт 32766, а mountd слушать порт 32767, вы должны ввести:

# statd -p 32765 -o 32766
# mountd -p 3276

lockd запускается ядром, когда это необходимо. Поэтому вам необходимо передать параметры модуля (если он построен как модуль) или параметры ядра, чтобы заставить lockd прослушивать и отвечать только на определенных портах.

Если вы используете загружаемые модули и хотите указать эти параметры в В вашем файле /etc/modules.conf добавьте в файл такую ​​строку:

options lockd nlm_udpport=32768 nlm_tcpport=32768

Для этого обсуждения давайте опишем сеть и настроим брандмауэр для защиты нашего nfs-сервера. Наш сервер nfs - 192.168.0.42, наш клиент - только 192.168.0.45. Как и в примере выше, statd был запущен так, что он привязывается только к порту 32765 для входящих запросов и должен отвечать на порту 32766. mountd принудительно привязан к порту 32767. lockd ' Параметры модуля s настроены на привязку к 32768. nfsd, конечно же, находится на порту 2049, а portmapper - на порту 111.

Мы не используем квоты.

iptables -A INPUT -f -j ACCEPT -s 192.168.0.45
iptables -A INPUT -s 192.168.0.45 -d 0/0 32765:32768 -p 6 -j ACCEPT
iptables -A INPUT -s 192.168.0.45 -d 0/0 32765:32768 -p 17 -j ACCEPT
iptables -A INPUT -s 192.168.0.45 -d 0/0 2049 -p 17 -j ACCEPT
iptables -A INPUT -s 192.168.0.45 -d 0/0 2049 -p 6 -j ACCEPT
iptables -A INPUT -s 192.168.0.45 -d 0/0 111 -p 6 -j ACCEPT
iptables -A INPUT -s 192.168.0.45 -d 0/0 111 -p 17 -j ACCEPT
iptables -A INPUT -s 0/0 -d 0/0 -p 6 -j DENY --syn --log-level 5
iptables -A INPUT -s 0/0 -d 0/0 -p 17 -j DENY --log-level 5

В первой строке говорится, что нужно принять все фрагменты пакета (кроме первого фрагмента пакета, который будет рассматриваться как обычный пакет). Теоретически ни один пакет не пройдет до тех пор, пока он не будет повторно собран, и он не будет повторно собран, если не будет передан первый фрагмент пакета. Конечно, есть атаки, которые могут быть сгенерированы путем перегрузки машины фрагментами пакетов. Но NFS не будет работать правильно, если вы не пропустите фрагменты. Подробности см. В Разделе 7, «Устранение неполадок»

. Остальные строки разрешают определенные подключения с любого порта на нашем клиентском хосте к определенным портам, которые мы сделали доступными на нашем сервере. Это означает, что если, скажем, 192.158.0. 46 пытается связаться с сервером NFS, он не сможет монтировать или увидеть, какие монтирования доступны.

С новыми возможностями закрепления портов, очевидно, намного проще контролировать, какие хосты могут монтировать ваши общие ресурсы NFS. Стоит упомянуть, что NFS не является зашифрованным протоколом, и любой человек в одной физической сети может прослушивать трафик и повторно собирать передаваемую информацию.

5
ответ дан 3 December 2019 в 05:47

Теги

Похожие вопросы