Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SYN Stealth Scan

5 views
Skip to first unread message

Ruslan Suleimanov

unread,
Sep 14, 2020, 10:46:03 AM9/14/20
to
Привет, All!




Кто может поделиться стандартным набором правил для IPFW что закрыть всю эту
херню которая сыпеться на сервак от сканов "nmap" и прочих
сканеров.. ? Буду очень благодарен !







WBR, Ruslan Suleimanov.
JabberID: r...@captflint.com

Alex Korchmar

unread,
Sep 14, 2020, 3:14:34 PM9/14/20
to
Ruslan Suleimanov <Ruslan.S...@f888.n467.z2.fidonet.org> wrote:

RS> Кто может поделиться стандартным набором правил для IPFW
ipfw add 1 deny tcp from any to any

RS> что закрыть всю эту херню которая сыпеться на сервак от сканов "nmap"
извиняюсь, поторопился - чтоб всю, а не только stealth tcp - надо
deny ip from any to any

> Alex
P.S. ты бы, прежде чем херней маяться - книжек чтоль каких почитал...

Ruslan Suleimanov

unread,
Sep 14, 2020, 4:46:03 PM9/14/20
to
Привет, Alex!



Ответ на сообщение Alex Korchmar (2:5020/400) к Ruslan Suleimanov,
написанное 14 сен 20 в 22:13:



AK> From: Alex Korchmar <nor...@linux.e-moe.ru>

AK> Ruslan Suleimanov <Ruslan.S...@f888.n467.z2.fidonet.org> wrote:

RS>> Кто может поделиться стандартным набором правил для IPFW
AK> ipfw add 1 deny tcp from any to any

Это правило для декстопа без инета )

Лучшее решение:

# Запрет X-сканирования:
add 1001 reject log tcp from any to any tcpflags fin, syn, rst, psh,
ack, urg
# Запрет N-сканирования:
add 1002 reject log tcp from any to any tcpflags !fin, !syn, !rst,
!psh, !ack, !urg
# Запрет FIN-сканирования:
add 1003 reject log tcp from any to any not established tcpflags fin
# Защита от спуфинга
add 1004 deny log ip from any to any not verrevpath in
# Ограничение числа одновременных соединений:
add 1005 allow ip from any to any setup limit src-addr 10


взято с https://www.opennet.ru/base/sec/ipfw_antihack.txt.html


RS>> что закрыть всю эту херню которая сыпеться на сервак от сканов
RS>> "nmap"
AK> извиняюсь, поторопился - чтоб всю, а не только stealth tcp - надо
AK> deny ip from any to any

>> Alex
AK> P.S. ты бы, прежде чем херней маяться - книжек чтоль каких почитал...

Согласен)

Eugene Grosbein

unread,
Sep 14, 2020, 6:11:03 PM9/14/20
to
14 сент. 2020, понедельник, в 23:37 NOVT, Ruslan Suleimanov написал(а):
RS> # Запрет X-сканирования:
RS> add 1001 reject log tcp from any to any tcpflags fin, syn, rst,
RS> psh,
RS> ack, urg
RS> # Запрет N-сканирования:
RS> add 1002 reject log tcp from any to any tcpflags !fin, !syn, !rst,
RS> !psh, !ack, !urg
RS> # Запрет FIN-сканирования:
RS> add 1003 reject log tcp from any to any not established tcpflags
RS> fin

Чушь полная. Ты на своей стороне не можешь запретить сканировать себя
никаким образом. Самое большое, что ты можешь сделать, это дропнуть
входящие пакеты после того, как они *УЖЕ* пришли к тебе,
но это вовсе не правило reject log tcp - хуже "решения" и придумать
сложно, потому что оно мало того что шлет TCP RST в ответ,
потенциально заставляя твою систему флудить невинную жертву
по подставленному адресу источника, но ещё и нагружает твой CPU
бессмысленной генерацией логов.

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

Открой для себя sysctl net.inet.tcp.blackhole и
sysctl net.inet.udp.blackhole, а так же подумай,
почему они не включены по умолчанию.

Если очень зудит, можешь попробовать использовать что то типа такого
в /etc/sysctl.conf для маршрутизатора, который не предоставляет
никаких сервисов сам на четвертом уровне TCP/IP (ssh не в счёт):

net.inet.ip.random_id=1
net.inet.ip.redirect=0
net.inet.ip.ttl=80
net.inet.icmp.drop_redirect=1
net.inet.icmp.icmplim=80
net.inet.tcp.blackhole=1
net.inet.tcp.drop_synfin=1
net.inet.tcp.ecn.enable=1
net.inet.tcp.path_mtu_discovery=0

Hа современной FreeBSD 11 это обламывает nmap со сканированием
и tcp-stack fingerpringint (удалённым определением OS),
но это нельзя использовать на серверах с активным использованием
TCP типа веб-прокси, почтовых серверах и прочих.

Eugene

Alex Korchmar

unread,
Sep 15, 2020, 2:09:46 AM9/15/20
to
Ruslan Suleimanov <Ruslan.S...@f888.n467.z2.fidonet.org> wrote:

RS> Это правило для декстопа без инета )
можно и для сервера - без инета.
Hо суть ты уловил верно - нет интернета - тебя никто не просканирует.
А если интернет есть - надо учиться жить с интернетом.

По большей части, если это не граничный маршрутизатор, ipfw тут
вообще не нужен, гораздо больше толку от hosts.allow, но и он лишь
дополнительный уровень поверх просто грамотной настройки сервисов.

RS> Лучшее решение:
нет, это вредная и опасная чушь (как и 90% впопеннетовских рецептов, а
остальные 10 требуют понимания что ты делаешь и зачем)
Тебя она ни от чего ни защищает, засыпает тебе мусором логи, а вот остальным
так настроенный хост может понасоздавать проблем.


> Alex

Ruslan Suleimanov

unread,
Sep 15, 2020, 2:51:04 PM9/15/20
to
Привет, Eugene!

Ответ на сообщение Eugene Grosbein (2:5006/1) к Ruslan Suleimanov,
написанное 15 сен 20 в 04:58:

EG> 14 сент. 2020, понедельник, в 23:37 NOVT, Ruslan Suleimanov
EG> написал(а):
RS>> # Запрет X-сканирования:
RS>> add 1001 reject log tcp from any to any tcpflags fin,
RS>> syn, rst, psh, ack, urg
RS>> # Запрет N-сканирования:
RS>> add 1002 reject log tcp from any to any tcpflags !fin,
RS>> !syn, !rst, !psh, !ack, !urg
RS>> # Запрет FIN-сканирования:
RS>> add 1003 reject log tcp from any to any not established
RS>> tcpflags fin

EG> Чушь полная. Ты на своей стороне не можешь запретить сканировать себя
EG> никаким образом. Самое большое, что ты можешь сделать, это дропнуть
EG> входящие пакеты после того, как они *УЖЕ* пришли к тебе,
EG> но это вовсе не правило reject log tcp - хуже "решения" и придумать
EG> сложно, потому что оно мало того что шлет TCP RST в ответ,
EG> потенциально заставляя твою систему флудить невинную жертву
EG> по подставленному адресу источника, но ещё и нагружает твой CPU
EG> бессмысленной генерацией логов.

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

EG> Открой для себя sysctl net.inet.tcp.blackhole и
EG> sysctl net.inet.udp.blackhole, а так же подумай,
EG> почему они не включены по умолчанию.

с правилами выше что я скинул показывает чудесные результаты, tcp.blackhole в
значении 2 вообще крутая вещь ! :)
единственное както неправильно работает allow ip from any to any setup limit
src-addr 10 при том что у меня по умолчанию ipfw allow для всего.
Подскажи пжлст как правильно перестроить правило чтобы разрешать с одного IP
делать не больше 10 подключений ?

Eugene Grosbein

unread,
Sep 15, 2020, 6:31:04 PM9/15/20
to
15 сент. 2020, вторник, в 21:38 NOVT, Ruslan Suleimanov написал(а):

RS> с правилами выше что я скинул показывает чудесные результаты,
RS> tcp.blackhole в
RS> значении 2 вообще крутая вещь ! :)

Да, крутая, пока ты не столкнёшься с софтом, писанным людьми,
которые понятия не имеют о системном администрировании
(это почти все программисты), типа веб-фреймворка, который работает
в связке с базой данных и автор которого свято уверен,
что подключаться к MySQL надо обязательно по TCP на 127.0.0.1,
а уж если это не выходит, то так уж и быть, можно поглядеть
в собственные настройки.

Пока tcp.blackhole не выставлено в 2, это даже работает,
потому что отлуп (TCP RST) при подключении к несуществующему сокету
на 127.0.0.1:3306 приходит моментально и веб-юзер не ощущает
задержки перед второй попыткой подключения к правильному
адресу базы. Hо если ты выставил tcp.blackhole=2,
то фреймворк отвалится от первой попытки только по долгому
таймауту, достаточному, чтобы юзеровский браузер бросил ждать раньше.

RS> единственное както неправильно работает allow ip from any to any setup
RS> limit
RS> src-addr 10 при том что у меня по умолчанию ipfw allow для всего.
RS> Подскажи пжлст как правильно перестроить правило чтобы разрешать с одного
RS> IP
RS> делать не больше 10 подключений ?

Во-первых, не забывай добавлять направление (in или out) и имя интерфейса,
тобы самого себя не резать, во-вторых, слово "setup" осмыслено
не для любых IP-пакетов, а только для TCP. В UDP, GRE и прочих ESP
нету никакого setup.

В третьих, ставь такое правило с limit src-addr 10 в начало, типа такого:

ipfw add 2000 skipto 2100 tcp from any to any setup in recv $extif limit
src-addr 10
ipfw add 2010 reset tcp from any to any setup in recv $extif

остальные правила с номера 2100 и далее, включая "allow для всего".

Это позволяет в дополнение к лимиту на количество соединений
ещё какие-нибудь фильтры применять при необходимости.

Eugene
0 new messages