Заинтересованных в детский досуг.

Авторизация

Вы можете войти через одну из учетных записей:

ИЛИ



Напомнить пароль
Регистрация

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
  • add twitter 

Комментарии (0) Вконтакте (0) facebook (0)

Комментарии (0)

rss свернуть / развернуть

Только авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.