Pull to refresh

Comments 29

Интересный скрипт =))) Добавлю, что сам метод стар как мир и имеет название не ICMP открывашка, а "Port Knocking" =))) По крайней мере, у микротофилов довольно распространенная штука)) Можно, кстати, делать списки и организовывать многоуровневый порт кнокинг, чтобы первый удачный пакет лишь помещал IP адрес в белый список, который позволяет пробить пинг с новым размером пакета, и так далее. Плюс списки можно разделять, чтобы открывать доступ к определенным сервисам. А тех, кто не угадал (и вообще, перебирать начинает) - в бан на несколько месяцев. Но стандартный пинг со стандартным размером пакета надо разрешить, ибо без него может быть проблема с маршрутизацией - некоторые маршрутизаторы в интернете пингуют клиентский внешний адрес, который к нему уже обращался - что-то вроде keepalive для соединения.

Спасибо за идею, следующий этап: от простого к сложному)))

Но стандартный пинг со стандартным размером пакета надо разрешить

А пинг вообще трогать не надо. Он должен фунциклировать так, словно кнокера вообще нет. То есть контроль размера входящего пакета и добавление разрешающего правила идут не вместо стандартной реакции на ICMP, а в дополнение/параллель к нему.

Заодно хрен определить, что пинг с пакетом в сколько-то байтов выполнил какую-то специфическую функцию. Особенно если между его приходом и открытием доступа положить полуслучайный тайм-аут.

A ещё можно надставить скрипт так, чтобы между пингом и открытием доступа был тайм-аут секунд в 5-10, а при поступлении в течение этого времени неправильного пинга запланированное открытие доступа для адреса-источника отменялось. Тогда брутфорс-скрипты совсем бессмысленны.

К слову, я ICMP вообще не трогаю, только нюхаю ICMP пакет с определенным размером
tcpdump -n -c1 -i any icmp[icmptype] == icmp-echo and ip[2:2] == $PACKAGE_SIZE

Не проблема написать скрипт который откроет ваши порты меньше чем за минуту. Учитывая что стандартный mtu 1500, то надо всего 1500 пакетов отправить с размером от 0 до 1500 это меньше минуты. Такая себе защита. Вы на сервер вешаете публичный адрес или все icmp пакеты приходящие на маршрутизатор/firewall натите в сторону сервера?

Вы знаете IP-адреса моих серверов, чтобы открыть их? Скрыть порты, а не защитить! Не вижу принципиальной разницы: натить трафик или вешать публичный IP на хост, например: мой домашний провайдер натит (1:1) трафик со своего внешнего адрес на мой серый IP.

По идее, защита от этого — открывать порты не по одному пингу, а после прихода 256 пакетов, каждый из которых имеет заданный размер из 0...1500.

Каждый входящий ICMP пакет запускает несколько экземпляров bash, внутри которых крутятся sed и awk. Для хорошей, качественной DOS атаки не нужен ботнет, достаточно обычного ping. Так себе защита.

А не лучше спрятать 443/tcp за Nginx, который будет перенаправлять все запросы с определенным URL на ваш секретный сервис, а с другими URL - показывать сайт про кошечек/собачек?

Конечно лучше, 443 порт как пример указал

Никогда не понимал нокинг, костыли какие-то ИМХО. Повешайте сервис на неродной порт и не будут боты его там искать. Все равно, если будут целенаправленно долбить ваш хост, нокинг вас не спасет (а может даже и хуже сделает).

А если хочется прям безопасную безопасность, то делайте полноценный VPN во внутреннюю сеть.

Я ж не утверждаю, что это прям продакшн решение, просто поделился идеей.
Вот есть у меня VDSка за 300 руб/мес и цепляюсь я к ней раз в неделю, предлагаете нестандартный порт юзать - не люблю я эти извращения, потом попробуй разберись на какой тачке какой порт SSH и вешать на каждый узел по VPN-серверу

согласен с вами обоими. ни нестандартный порт, ни порт нокинг для ssh не нужны )))

Вроде как Shodan утверждает обратное: на каком бы порту вы ни висели, вас найдут :)

возникла необходимость скрывать порты (22, 443 и т.п.) от посторонних глаз

необходимость? не верю.

Именно. Всё в дроп, кроме идущего из wg. Как сломал, так в консоль в админке.

Если у вас на той же машине работает веб сервер, то можно использовать sslh или решение на базе websockets: habr.com/ru/post/531590

как вариант, можно поставить OTP генератор и раз в минуту менять требуемый размер пакета

Длина otp великовата. Придётся как-то обрезать. Можно брать остаток от деления на небольшое секретное число. И зачем вообще изобретатели пароли, ключи и fail2ban :)

Security through obscurity во всей красе (это, впрочем, ко всему порт-нокингу относится)

Надеюсь, у вас есть какой-нибудь бэкдор, чтобы внезапно не остаться без доступа к нужному серверу, случись вам оказаться в странном сетевом окружении с забавным MTU

Всегда интересовало, почему в подобных мануалах не пытаются использовать ICMP Payload. Там ведь можно практически полноценный (хоть и не защищённый от перехвата) пароль передать: ping -p 4869204869

Кстати, и эти штуки боты научились обходить.

Как это упростить для простого обывателя с Андроид-телефоном до уровня "нажать туда, нажать сюда"?

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

Sign up to leave a comment.

Articles