How-to → Как же достали сканеры ssh
sshd: Authentication Failures: unknown (114.70.60.245): 2770 Time(s) root (114.70.60.245): 464 Time(s) root (61-220-32-22.hinet-ip.hinet.net): 28 Time(s) unknown (61-220-32-22.hinet-ip.hinet.net): 16 Time(s) apache (114.70.60.245): 8 Time(s)
Вот ну что им делать не фиг лезть ко мне с тупым брутфорсом?.. Думаю каждый это дело хоть раз но видел в своих логах. Так что же делать? сменить порт ssh? бесполезно, все равно отнюхают. Банить файрволом адреса тоже бесполезно ибо это наверняка тупой ботнет и адреса каждый раз разные. Здесь нужно кардинальное решение, убивающее проблему на корню. И я его нашел… Имя решению — ZeBeDee. Это программа для создания шифрованного туннеля между двумя машинами. Существует в версии для *nix и win32. Взять программу можно отсюда. С одной стороны программа уже не развивается, с другой стороны явных глюков и багов не замечено.
Замечу сразу програмку надо качать вместе с сопутствующими элеиентами, не важно установлены они уже в вашей системе или нет, она хочет собираться с ними и ниипёт… итак качаем:
1. blowfish-0.9.5a
2. bzip2-1.0.3
3. zebedee-2.4.1A (можно и версию 2.5.2, я просто поленился скачать)
4. zlib-1.2.3
Сборка этого дела не вызывает проблем: поочередно заходим в каталоги компонент и отдаем команду make.
в каталог собсно зебеди заходим в последнюю очередь и отдаем команду make OS=linux(ну или FreeBSD или что у вас там, при попытки сборки без этого параметра вам вывалится ошибка и варианты значений параметра «OS»). Ах да, каталоги всех компонент и каталог с самой зебедёй должны лежать рядышком в одном общем каталоге.
Ну вот теперь мы готовы противостоять мерзкой ботнет заразе.
первым делом копируем исполняемый файл, получившийся в результате сборки в /bin (пишу для никсов, в виндах все тривиально), потом создаем каталог для конфигурационников /etc/zebedee (можете понадеятся на make install но я им не пользуюсь и что он сделает не знаю, уж лучше ручками). Там мы разместим конфигурационный файл сервера, и файл открытых ключей клиентов. Да-да, зебедя использует ассиметричное шифрование. В /etc/zebedee создаем файл zebedee.conf со следующим содержимым
timestamplog true # добавлять таймштам в лог verbosity 2 # более подробные логи logfile /var/log/zbd # собснно саб логфайл #logfile SYSLOG # можно и в syslog писать server true # режим работы zebedee ipmode both # используем как tcp так и udp serverport 1115 # Может быть любым keygenlevel 2 # уровень сложности сессионного ключа, вроде максимум keylength 256 # длина ключа keylifetime 36000 # время жизни ключа 10 часов redirect 22:65535 # какие порты разрешено редиректить.. мне не жалко )) target localhost:22 # собственно второй конец тунеля, или куда скидывать распакованные пакеты compression zlib:9 # Максимальное сжатие покетов zlib`ом maxbufsize 16383 # максимальный размер пакетов checkidfile '/etc/zebedee/clients.id' # самый главный файл, содержащий открытые ключи клиентов, если вашего ключа в этом файле нет, то и не подключитесь никогда.
Ну полдела сделано, осталось вторые полдела. Пишем инит скрипт для запуска /etc/init.d/zebedee
#!/bin/bash # # Script generated by LordBayonet # chkconfig: - 16 84 # description: Zebedee 2.41 # processname: zebedee # config: /etc/zebedee/zebedee.conf # source function library . /etc/rc.d/init.d/functions # Check that networking is up. [ "${NETWORKING}" = "no" ] && exit 0 # The process must be configured first. [ -f /etc/zebedee/zebedee.conf ] || exit 0 RETVAL=0 prog="zebedee" case "$1" in start) echo -n $"Starting $prog: " /bin/zebedee -f /etc/zebedee/zebedee.conf & success || failure RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/zebedee echo ;; stop) echo -n $"Shutting down $prog: " killproc zebedee RETVAL=$? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/zebedee echo ;; restart|reload) $0 stop $0 start RETVAL=$? ;; condrestart) if [ -f /var/lock/subsys/zebedee ]; then $0 stop $0 start fi RETVAL=$? ;; status) status zebedee RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" exit 1 esac exit $RETVAL
Ничего сложного обычный инит скрипт. После отдаем команду:
chkconfig --add zebedee; chkconfig --level 345 zebedee on
теперь настала пора подумать о клиентской части. Принципиальной разницы в использовании клиентской части под линукс или виндоус нет, разве что под линуксом обычно 22й порт занят и на него нельзя повесить клиентский процесс зебеди…
Итак клиент: Устанавливаем зебедю. Создаем клиентский файлик настроек обзовем его my.zbd с таки содержимым:
verbosity 2 #Уровень лога server false # Клиент все-таки, или проще говоря мы начало трубы )) detached false #Уйти в бэкграунд или нет. True или False выбирать вам, я предпочитаю чтобы окно зебеди у меня висело #udpmode true # можно оставить для UDP в моем случае не нужно. multiuse true # Можно или нет тунелировать несколько программ serverhost <ip adress> # адрес нашего сервера где висит серверная часть serverport 1115 # порт серверной части (определяется в конфе верверной части) tunnel 22: <ip adress> :22 # Описание тунеля, т.е. при заходе на локальный порт 22 нас откидывают на <ip adress>:22, порты не обязательно должны быть одинаковыми. #tunnel 27: <ip adress> :22 # так тоже можно, при заходе на 27 локальный порт отбрасывает на <ip adress> :22. кстати если раскоментарить эту строку то будет второй тунель. т.е. можно описывать много тунелей для одной клиентской зебеди(сразу на несколько серверов), локальные порты ессно должны быть разными keygenlevel 2 # Максимальная сложность ключа keylength 256 # Длина сессионного ключа keylifetime 36000 # время жизни ключа 10 часов compression zlib:9 # Максимальное сжатие покетов zlib`ом maxbufsize 16383 # максимальный размер пакетов include "private.key" # файл с вашим закрытым ключом... если лежит в другой папке пишем полный путь.
ну вот, теперь наша клиентская зебедя знает куда и как передавать наши пакеты. Теперь мы должны сделать себ
е пару ключей открытый и закрытый… открытый положим на сервер «clients.id» а закрытый к себе на флешку или еще куда «private.key»
делается это просто:
zebedee -p > private.key
Так создается закрытый ключ. в файле будет примерно следующее:
privatekey «641cee723b6f6edb31fd71017d2b60167f8da0c3»
теперь наша задача на основе этого приватного ключа получить открытый, не сильно сложнее:
zebedee -P -f private.key >> clients.id
Так создается открытый ключ и помещается в файл clients.id который кладется на сервер. В файле будет примерно следующее:
92a59bcadfd508a697f5c34842686adf65953c11 your_nick_for_example
теперь размещаем эти файлики на серверной части в /etc/zebedee/clients.id, на клиентской части туда куда хотим.
запускаем сервер:
service zebedee start
запускаем клиент:
zebedee -f /home/my.zbd
теперь лезем по ssh на localhost:22 и попадаем на наш сервер. Все, теперь можно навечно закрыть порт ssh на сервере и оставлять открытым только порт ZeBeDee (в нашем случае 1115). Ботнеты побеждены, и спама в логах больше нет…
Профит.
З.Ы. поправил заголовок, сниферами надо меньше заниматься )) в данном случае они ни при чем.
источник
- +2
- shell
- 27 декабря 2010, 01:07
Комментарии (0)
rss свернуть / развернутьТолько авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.