Почему RSYNC_RSH не работает, а --rsh работает?

Хотя TCP и UDP являются частью TCP / IP, оба принадлежат к одним и тем же уровням TCP / IP или OSI, и оба являются уровнем выше IP, это разные протоколы.

http://www.cyberciti.biz/faq/key-differences-between-tcp-and-udp-protocols/

Протокол управления передачей (TCP) и протокол пользовательских дейтаграмм (UDP): {{1} } два основных протокола пакета Интернет-протоколов . И TCP, и UDP работают на транспортном уровне модели TCP / IP, и оба используются по-разному. TCP - это протокол, ориентированный на установление соединения. UDP - это протокол без установления соединения.

tcp ip model
(источник: ml-ip.com )

Некоторые службы действительно отвечают на порты TCP и UDP одновременно, как в случае служб DNS и NTP, однако это не так. конечно, случай с веб-серверами, которые обычно по умолчанию отвечают только на порт 80 / TCP (и не работают / не слушают вообще в UDP)

Вы можете указать свои порты прослушивания UDP в системе Linux с помощью:

$sudo netstat -anlpu
Active Internet connections (servers and established)  
Proto Recv-Q Send-Q Local Address           Foreign Address             State       PID/Program name  
udp        0      0 0.0.0.0:1900            0.0.0.0:*                           15760/minidlnad   
udp        0      0 0.0.0.0:5000            0.0.0.0:*                           32138/asterisk  
udp        0      0 0.0.0.0:4500            0.0.0.0:*                           1592/charon     
udp        0      0 0.0.0.0:4520            0.0.0.0:*                           32138/asterisk  
udp        0      0 0.0.0.0:5060            0.0.0.0:*                           32138/asterisk  
udp        0      0 0.0.0.0:4569            0.0.0.0:*                           32138/asterisk  
udp        0      0 0.0.0.0:500             0.0.0.0:*                           1592/charon     
udp        0      0 192.168.201.1:53        0.0.0.0:*                           30868/named     
udp        0      0 127.0.0.1:53            0.0.0.0:*                           30868/named     
udp        0      0 0.0.0.0:67              0.0.0.0:*                           2055/dhcpd      
udp        0      0 0.0.0.0:14403           0.0.0.0:*                           1041/dhclient   
udp    17920      0 0.0.0.0:68              0.0.0.0:*                           1592/charon     
udp        0      0 0.0.0.0:68              0.0.0.0:*                           1041/dhclient   
udp        0      0 0.0.0.0:56417           0.0.0.0:*                           2055/dhcpd      
udp        0      0 192.168.201.1:123       0.0.0.0:*                           1859/ntpd       
udp        0      0 127.0.0.1:123           0.0.0.0:*                           1859/ntpd       
udp        0      0 192.168.201.255:137     0.0.0.0:*                           1777/nmbd       
udp        0      0 192.168.201.1:137       0.0.0.0:*                           1777/nmbd       
udp        0      0 0.0.0.0:137             0.0.0.0:*                           1777/nmbd       
udp        0      0 192.168.201.255:138     0.0.0.0:*                           1777/nmbd       
udp        0      0 192.168.201.1:138       0.0.0.0:*                           1777/nmbd       
udp        0      0 0.0.0.0:138             0.0.0.0:*                           1777/nmbd       
udp        0      0 192.168.201.1:17566     0.0.0.0:*                           15760/minidlnad 

ваши прослушивающие TCP-порты с помощью команды:

$sudo netstat -anlpt
Active Internet connections (servers and established)  
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name  
tcp        0      0 0.0.0.0:5060            0.0.0.0:*               LISTEN      32138/asterisk  
tcp        0      0 192.168.201.1:8200      0.0.0.0:*               LISTEN      15760/minidlnad   
tcp        0      0 192.168.201.1:139       0.0.0.0:*               LISTEN      2092/smbd       
tcp        0      0 0.0.0.0:2000            0.0.0.0:*               LISTEN      32138/asterisk  
tcp        0      0 192.168.201.1:80        0.0.0.0:*               LISTEN      7781/nginx      
tcp        0      0 192.168.201.1:53        0.0.0.0:*               LISTEN      30868/named     
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      30868/named     
tcp        0      0 192.168.201.1:22        0.0.0.0:*               LISTEN      2023/sshd       
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      1919/perl       
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      30868/named     
tcp        0      0 192.168.201.1:445       0.0.0.0:*               LISTEN      2092/smbd       
tcp        0    224 192.168.201.1:22        192.168.201.12:56820    ESTABLISHED 16523/sshd: rui [pr

Теперь обычно NMAP отправляет SYN на сканируемый порт, и по протоколу TCP, если демон / служба привязана к порту, он ответит SYN + ACK, и Nmap покажет его как открытый.

Согласование соединения TCP / IP: трехстороннее рукопожатие

Чтобы установить соединение, TCP использует трехстороннее рукопожатие. Прежде чем клиент попытается соединиться с сервером, сервер должен сначала привязать и прослушать порт, чтобы открыть его для соединений: это называется пассивным открытием. Как только пассивное открытие установлено, клиент может инициировать активное открытие.Чтобы установить соединение, происходит трехстороннее (или трехэтапное) рукопожатие:

SYN: активное открытие выполняется клиентом, отправляющим SYN на сервер . Клиент устанавливает порядковый номер сегмента на случайное значение A. SYN-ACK: В ответ сервер отвечает SYN-ACK.

3 way handshake

Однако, если служба там не запущена, TCP / IP определяет, что ядро ​​будет отправлять сообщение ICMP обратно с сообщением «Порт недоступен» для служб UDP и сообщениями TCP RST для служб TCP.

Пункт назначения ICMP недоступен

Пункт назначения недоступен генерируется хостом или его входящим шлюзом [3], чтобы сообщить клиенту, что пункт назначения по какой-то причине недоступен . Сообщение "Назначение недоступно" может быть создано как результат передачи TCP, UDP или другой передачи ICMP. Недостижимые порты TCP в основном отвечают TCP RST, а не адресатом Недостижимый тип 3, как можно было бы ожидать.

Итак, действительно, ваше UDP-сканирование на порт 80 / UDP просто получает обратно сообщение о недоступности ICMP, потому что нет службы, прослушивающей эту комбинацию или протокол / порт.

Что касается соображений безопасности, сообщения о недоступности пункта назначения ICMP могут быть заблокированы, если вы определите правила брандмауэра / iptables, которые по умолчанию удаляют все сообщения и разрешают только порты, которые ваша машина обслуживает извне. Таким образом, сканирование Nmap на все открытые порты, особенно в сети, будет медленнее, а серверы будут использовать меньше ресурсов.

В качестве дополнительного преимущества, если демон / служба открывает дополнительные порты или по ошибке добавляется новая служба, он не будет обслуживать запросы до тех пор, пока это не будет явно разрешено новыми правилами брандмауэра.

Обратите внимание, что если вместо использования DROP в iptables вы используете правила REJECT, ядро ​​не будет игнорировать попытки сканирования / согласования TCP / IP и ответит сообщениями ICMP о том, что пункт назначения недоступен, код 13: " Связь запрещена административно (административная фильтрация предотвращает пересылку пакетов) ».

Блокировать все порты, кроме SSH / HTTP, в ipchains и iptables

0
05.03.2019, 14:36
1 ответ

Это работает как задумано.

Вы используете синтаксис «демона» rsync:hostname::module. Когда вы используете это с --rsh, он подключается к серверу с помощью удаленной оболочки (, например. ssh), но затем использует rsyncd.conf. Когда вы используете этот без --rsh, он пытается установить незашифрованное сетевое соединение с сервером rsync через TCP-порт 873.

Параметр RSYNC_RSHне приводит к тому, что синтаксис «демона» rsync использует удаленную оболочку.

RSYNC_RSHявляется «переменной среды». Он предназначен для установки для всей вашей среды. Он изменяет, какую удаленную оболочку использует rsync, когда вы не используете синтаксис «демона» rsync. Это было полезно в древние времена, когда было несколько различных удаленных оболочек, поэтому rsync мог не знать, какой из них вы используете чаще всего.

1
28.01.2020, 02:40

Теги

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