В проекте shimmer (http://shimmer.sourceforge.net/) реализован интересный способ повышения безопасности служебных сетевых сервисов, таких как SSH или telnet. Суть метода в том, что система начинает принимать соединения для заданного сервиса не по одному порту, а по группе сетевых портов, причём номер рабочего порта меняется каждую минуту и определяется в соответствии с определённым колючем, известным только уполномоченным на использование сервиса лицам. Остальные порты выступают в в роли "honeypot" пустышек, постоянно выдающих ошибку аутентификации.
URL: http://it.slashdot.org/article.pl?sid=08/01/08/1417214
Новость: http://www.opennet.me/opennews/art.shtml?num=13576
> Остальные порты выступают в в роли "honeypot" пустышек,
> постоянно выдающих ошибку аутентификации.Ыыыыыыы дибилы.............. DoS через connect на эти пустышки,
все ресурсы уйдут на выдачу ошибки аутентификации.:)
Ну почему сразу "дебилы", эти порты можно перебросить на одиноко стоящий под столом хонипот, которому будет по барабану досят его или нет, а нужный порт перекидывать на нужную телегу.
Ето Павлинух. Он высказывается по любому поводу.
Нате демоны, жрите...
--------------------------
nmap -sSRV host -p 1025-65535 все порты светятся как tcpwrapped
PORT STATE SERVICE VERSION
50354/tcp open tcpwrapped
50744/tcp open tcpwrapped
50882/tcp open tcpwrapped
51102/tcp open tcpwrapped
51344/tcp open tcpwrapped
51445/tcp open tcpwrapped
А это уже первый признак, рандом расспределения какой-то х..нёй...
------------------
В даун при SYN атаке.toshka:/test/shimmer # ./shimmerd --config=shimmer.conf
Use of uninitialized value in substitution (s///) at ./shimmerd line 626.
Use of uninitialized value in substitution (s///) at ./shimmerd line 626.
Use of uninitialized value in substitution (s///) at ./shimmerd line 626.
Use of uninitialized value in substitution (s///) at ./shimmerd line 626.
------------------В даун при TCP connect() атаке. c фэйк адресом 0.0.0.0
toshka:/test/shimmer # ./shimmerd --config=shimmer.conf
Use of uninitialized value in subroutine entry at
/usr/lib/perl5/5.8.8/x86_64-linux-thread-multi/Socket.pm line 370.
Bad arg length for Socket::unpack_sockaddr_in, length is 0, should be 16 at
/usr/lib/perl5/5.8.8/x86_64-linux-thread-multi/Socket.pm line 370.-----------------
При запуске из скрипта, который поднимает демон при падении...
не закрытые порты орут:...
Thu Jan 10 04:41:59 2008: Failed to get handle for port 53374
Thu Jan 10 04:41:59 2008: Failed to get handle for port 58630
Thu Jan 10 04:41:59 2008: Failed to get handle for port 56368
Thu Jan 10 04:41:59 2008: Failed to get handle for port 53253
....Кстати в конфиге указано ports = 50000-51000
--------------------------После этой хрени, вся подсеть была BLACKLISTED :)
#!/bin/bash
for ((; ;))
do
RAND_1=`echo "$RANDOM % 255" | bc`
RAND_2=`echo "$RANDOM % 255" | bc`
SRC="192.168.$RAND_1.$RAND_2"PORTS=$(nmap -n -sSRV 192.168.1.2 -p 1025-65354 | grep tcpwrapped | tr "/" " " | awk '{printf $1" "}')
for i in $PORTS
do
echo "SRC = $SRC, PORT = $i"
nmap -n -sT 192.168.1.2 -p $i -g 80 -S $SRC -e eth0 -P0 --data-length 0 --badsum
done
done
-----------
Сhao, я спать...
Ну да, назови 10 отличий от DoS через коннект на один порт с реальным сервисом. Кроме того, что на пустышках висит гораздо более легковесный сервис, который только отдает отлупы?
Откуда, блин, повылезало столько детей?
не отзалупы надо давать, а на фаырволе tcp-reset
TLS всех спасет!
Таки не хочет народ использовать сертификаты для аутентификации.
Они не знают о их существовании, вот и придумывают всякую фигню
заместо того чтобы начинать хаять проект сами чтото подобное сделайте в своём продукте а то чтото умных через чур много развелось
Лучше всё-таки быть умным и грамотным, чем "как все".
и делаем. не в своих, но в чужие код контрибутим.
бредовая затея. SYN, SYN+ACK и та сторона считает что tcp-соединение установлено.
Потом уведомляем удалённую сторону что у нас окно приём уменьшилось до 0 и "забываем" об этом "соединении".Если ставить ограничения - велик риск что легитимный юзер пролетит, а если не ставить - эти заглушки довольно быстро поднимут la.
a est' idea kak etu shtuku cherez firewall pustit' esli port random?
>a est' idea kak etu shtuku cherez firewall pustit' esli port random?
>Если подключение будет происходить с известных заранее адресов,
то разрешить с них подключения на любой порт.
А если соединения приходят с заранее известных ip - то безопасность чего мы улучшаем ?И вообще основной вопрос security - это от какой угрозы мы защищаемся этим алгоритмом ?
>А если соединения приходят с заранее известных ip - то безопасность чего
>мы улучшаем ?
>
>И вообще основной вопрос security - это от какой угрозы мы защищаемся
>этим алгоритмом ?Первое. Ответ был на конкретный вопрос о способе пропуска через firewall.
Второе. Конкретный IP может быть просто шлюзом с NAT-ом, за которым сидит администратор
и другие пользователи, которые захотят попробовать себя в роли скрипт-киддеров.
tochno... :)esli IP izvesten to na xren nuzhen random port esli firewall puskaet soedenenie tol'ko is etogo IP ili iz etix IP adresov? + k etomu est' "port-knock" v iptables dovnim downo (pravda dlia linux)
no vse taki, esli liudi sdelali - mozhet i bil povod, uspexi
А если легитимный IP - это NAT?
За NAT-ом сидит подсетка, где всегда найдутся дол....ы, которые захотят
испытать на твоём сервере эксплоиты и просто поподбирать пароли.
Элементарное сканирование хоста nmap-ом или xspider-ом покажет,
что у тебя на нестандартном порту (например 222) висит sshd
и будет его "доставать" перебором. А в данном случае показать покажет,
но когда он попытается соединиться с обнаруженным портом, то тот просто
будет слушать уже на другом порту.
ИМХО тоже польза невелика от данной возможности, но люди старались.. :)
По поводу возможностей iptables - у него есть и другая, на мой взгляд более
разумная возможность. Это действие TARPIT из extra_repository patch-o-matic-ng.
Если легитимный IP это нат - то все равно диапазон портов открыт - легитимный же... Пусть лучше подбирают на 22 порту (раз уж мы про ssh) - меньше правил в firewall проще жизнь :)
[все-равно найдут все порты где висит эта заглушка, и будут туда коннестить...]
А уж отладку таких сервисов представить боюсь...Вообщем вопрос остался прежним - не вижу пока модели угроз под этот алгоритм, потенциальных проблем вижу несколько.
Так что действительно просто хочется увидеть зачем реально это делается. Вдруг польза таки есть ?
> Если легитимный IP это нат - то все равно диапазон портов открыт - легитимный же...Таки да, но тогда получится, что кроме login-password будет ещё одна переменная:
вычислить номер порта :)Хотя эта схема мне и напоминает некогда идею поиграть, пока идёт загрузка ))
Смысла нет, но весело.
кстати, да.
сочетание connlimit+recent+TARPIT решит массу проблем.
при превышении числа сессий включается TARPIT на n минут.
Интересно, что они там курят.
Додуматься до такого - это ........ :(
т.е. мало знать свой логин+пароль надо знать еще и конкретный алгоритм для расчета номера порта...Предлагаю менять еще и IP адрес.
А для еще большей секьюрности менять все это дело по генератору случайных чисел.Типа: кому надо - догадается :)
Бред.
эт точно, можно еще и маки генерить... чушь
это всё бред. самая крутая защита это чтобы фаервол открывал соединения на 22порт тока для тех кто стукнется предварительно на какой-то свой секретный порт. Вот это я понимаю защита. На iptables делается легко state-правилами.PS метод придумал не я.
>это всё бред. самая крутая защита это чтобы фаервол открывал соединения на 22порт тока для тех кто стукнется предварительно на какой-то свой секретный порт. Вот это я понимаю защита. На iptables делается легко state-правилами.метод называется portknocking.
>>это всё бред. самая крутая защита это чтобы фаервол открывал соединения на 22порт
>>тока для тех кто стукнется предварительно на какой-то свой секретный порт.
>метод называется portknocking.И по "крутости" его уже тоже апгрейдили, см. SPA (Single Packet Authorization).
Лично я не понял, как клиент сможет узнать, на какой порт ему коннектиться в данный момент. IMHO, гораздо проще сделать VPN-вход, и только после установленного VPN-соединения пускать по SSh и др.протоколам.А ещё хотелось бы иметь имитацию SSh, которая при попытке подбора как бы пускала юзера, но в "песочницу", когда на каждую введённую команду в ответ рандомно выдаётся одно из заранее заготовленных сообщений (можно анекдот).
а vpn реализовать через ssh-туннель %)
а вообще - забавный ход но бесполезный
Не дочитали друзья мои, есть shimmerd который вешается на сервер, а есть shimmer клиент который запускается с клиентской машины:
ssh user@remote.host -p `./shimmer --open ssh:10000:10999 --secret password`
Так что никаких алгоритмов в голове держать не надо и угадывать порт, достаточно знать диапазон портов и пароль... так что вполне хороiая система безопасности с использованием AES.
Остальные могут держать алгоритм в голове :)
эта система - потенциальный DoS.
Я уже долгое время пытаюсь настроить FlyLinkDC++, но у меня ничего не выходит...
Я не знаю свой номер порта. Пожалуйста скажите мне как я могу его узнать.