Я использую персональный ssh-сервер на нестандартном порту. Если кто-то пытается войти в мой ssh-сервер через стандартный порт 22, кажется, что сервер отправляет сообщение «Соединение отклонено».
$ ssh localhost
ssh: connect to host localhost port 22: Connection refused
Как я могу сделать так, чтобы он не отправлял такое сообщение и вел себя так, как будто он не работает?
Вы уже сделали это - ответ об отказе в соединении отправляется операционной системой при попытке подключиться к порту, на котором ничего не слушает.
Сервер ничего не отправляет, это клиент сообщая вам, что сервер отказал в соединении. Это ожидаемое поведение, если порт TCP закрыто при попытке подключиться.
Если вы хотите, чтобы ваша система автоматически отбрасывала пакеты, не отправляя TCP-ответ «этот порт закрыт» (так называемый скрытность порт), вам необходимо использовать брандмауэр в системе и / или между ним и клиентом.
Сетевой стек сервера отправляет пакеты в ответ на попытку TCP-соединения клиента.
Когда клиентская программа отправляет TCP SYN пакет для запроса соединения, ответный пакет с Установлены флаги ACK и RST, согласно проверке перехваченных пакетов, классифицируется как ошибка отказа в соединении. Никакая служба не прослушивает порт, и порт закрыт.
кроме того, DROP не является "вежливый target ", так как он делает сеть недоступной для клиентов. DROP следует использовать с осторожностью.
если вы действительно хотите, чтобы порт был хорошим нападающим противником, вас может заинтересовать модуль tarpit iptables
если вы хотите дезориентировать атакующего, вы можете присоединиться к цели REJECT и поиграть с экзотической комбинацией Коды ошибок ICMP и --reject-type:
ОТКАЗАТЬ
--reject-with type
Данный тип может быть
icmp-net-недоступен
icmp-host-unreachable
icmp-порт-недоступен
icmp-proto-unreachable
icmp-net-запрещено
icmp-host -hibited или
icmp-admin-запрещено
То, что вы видите, скорее всего, является реакцией вашего клиента на ICMP порт недоступен отправляется сервером при получении первого SYN-пакета TCP для порта, который не принимает соединения. Это правильное поведение, позволяющее клиенту быстро сообщить вам об этом.
Если вы действительно имеете в виду скрытность, например, «этот хост не существует, мертв или отключен и вообще ничего не отправляет», настройте свой брандмауэр так, чтобы он отбрасывал (а не отклонял) любые пакеты на этот порт. Предполагая, что netfilter / iptables:
iptables -I INPUT -p tcp --dport 22 -j DROP
Это приводит к тому, что клиент зависает на некоторое время, поскольку он не может решить, находится ли ответ в передаче или его нет.
Примечание: это фактически мгновенно уничтожит все подключения, включая работающие. Молли, выключи тревогу!
Вы можете полностью скрыть свой ssh
порт с fwknop
в сочетании с установкой политики запрета по умолчанию в iptables
незаметно отбрасывать пакеты. Все nmap
Увидим государственные услуги.
С участием fwknop развернутый, любой, кто использует nmap для поиска SSHD, не может даже сказать, что он прослушивает - не имеет значения, хотят ли они запустить взломщик паролей на SSHD или даже если у них есть эксплойт нулевого дня.
Смотри мой руководство для fwknop и сопутствующие страницы для безопасного ssh
шифры.