Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  немного о безопасности
  VPN (PoPToP)
  PortSentry
  sysctl
  vtund
  ipfwcount
  FreeBSD & DSA
  mpd – легко и просто!
  mpd + freeradius + mysql
  Бронированный FreeBSD
  sshit
  DSL-G804V и FreeBSD 6.2
  portaudit
  OpenVPN
  Bluetooth proximity monitor
  ESET NOD32
  GEOM-ELI
  stunnel для pop3,smtp
  NOD32 mirror
  mpd5 + ipfw-nat
  Openvpn 2 офиса
  Hotspot
  OpenVPN+авторизация
  termlog
  mpd5 + сжатие и шифрование
  ipsec_vpnc
  TOR Сервер
  Snort на FreeBSD
  Arpwatch
  Установка и настройка OpenVPN
  NOD32_mirror_v2
  Fail2ban
  IPSec
  Перенос OpenVPN сервера
  Wpa/WPA2-Radius+EAP-TLS/EAP-PEAP
  nod32 mirror script
  MAC + apache
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> Security —> sshit

sshit - защита от подбора паролей ssh/ftp

Автор: lissyara.


    Решил порыться в портах на тему связанную с подбором паролей по ssh. Тема это частенько возникает на форуме, посему решил посмотреть, что есть кроме моих самописных скриптов. Поиск в портах принёс кучу всего, посему ставить начал с конца - чтоб проще :) Поехали:
/usr/home/lissyara/>cd /usr/ports/security/sshit
/usr/ports/security/sshit/>make install clean

........... skipped .....

===>  CONFIGURATION NOTE:

  Configuration of sshit is done via main configuration file
  located at /usr/local/etc/sshit.conf

  To run the script, add a line in /etc/syslog.conf:

auth.info;authpriv.info                         |exec /usr/local/sbin/sshit

  and restart syslogd.

  If you want to use pf as the firewall, you should add a table and the
  corresponding deny rule. For example,
  (In /etc/pf.conf)

table <badhosts> persist
block on $extdev from <badhosts> to any

  and reload the pf rules.

  If you want to use ipfw2 (with table) as the firewall, you should add a
  table and the corresponding deny rule. For example,

# ipfw add deny ip from table(0) to any

   В конце инсталляции лезет краткая инструкция - чё надо сделать чтоб оно заработало (люблю грамотно составленные порты). Ей и следуем - добавляем строку в /etc/syslog.conf (показан вместе с предыдущей)
auth.info;authpriv.info               /var/log/auth.log
auth.info;authpriv.info                |exec /usr/local/sbin/sshit

   После чего перезапускаем syslogd:
/root/>/etc/rc.d/syslogd restart
Stopping syslogd.
Waiting for PIDS: 814.
Starting syslogd.
/root/>

   И пробуем залогинится левым пользователем:
Jul 1 11:19:44 lissyara sshd[31058]: error: PAM: authentication error for root from 192.168.254.193
Jul 1 11:19:45 lissyara last message repeated 2 times
Jul 1 11:19:53 lissyara sshd[31066]: error: PAM: authentication error for root from 192.168.254.193
Jul 1 11:19:54 lissyara last message repeated 2 times
Jul 1 11:20:10 lissyara sshd[32186]: Invalid user ddd from 192.168.254.193
Jul 1 11:20:11 lissyara sshd[32186]: error: PAM: authentication error for illegal user ddd from 192.168.254.193
Jul 1 11:20:11 lissyara sshd[32186]: Failed keyboard-interactive/pam for invalid user ddd from 192.168.254.193 port 61558 ssh2
Jul 1 11:20:11 lissyara sshd[32186]: error: PAM: authentication error for illegal user ddd from 192.168.254.193
Jul 1 11:20:11 lissyara sshd[32186]: Failed keyboard-interactive/pam for invalid user ddd from 192.168.254.193 port 61558 ssh2
Jul 1 11:20:11 lissyara sshit: BLOCKING 192.168.254.193 with pf
Jul 1 11:20:11 lissyara sshd[32186]: error: PAM: authentication error for illegal user ddd from 192.168.254.193
Jul 1 11:20:11 lissyara sshd[32186]: Failed keyboard-interactive/pam for invalid user ddd from 192.168.254.193 port 61558 ssh2
Jul 1 11:20:11 lissyara sshit: block for 192.168.254.193 not working!

   Ага. По дефолту стоит pf, но - я использую ipfw. Лезем править конфиг. От дефолтового, я изменил тока две строчки, их и привожу:
MAX_COUNT       = 5
FIREWALL_TYPE   = ipfw2

   Собственно, конфиг не комментирую - там всё понятно по названию опций. Пока ковырялся, в логах нарисовалась ещё одна интересная запись:
Jul 1 11:25:17 lissyara sshit: janitor removed block rule for 192.168.254.193 (reset time of 300 seconds reached)

   Оно ещё и само удаляет записи, по прошествии определённого времени. Хорошо, а то вдруг сам с попойки ошибёшься сервером :)) Далее, необходимо добавить правило для таблицы в файрволл - на этой машине они у меня не используются, поэтому я оставил дефолтовый номер самой таблицы - ноль.
${FwCMD} -f table 0 flush

# rulezz for sshit table 
${FwCMD} add deny not icmp from "table(0)" to me

   Для тех, кто не догадался сам, правило добавляется вторым, сразу после разрешения всего по петлевому интерфейсу. Почему такое? Ну - пусть попингуют - ничё страшного :)
   Также, было обнаружено что если пользователь существует, то на ошибки при вводе его пароля скрипт никак не реагирует. Причина нашлась быстро - регулярное выражение было составлено для старых версий sshd - если я правильно помню как оно ругалось раньше. Соостветственно было подправлено - патч для порта можно найти по тут (в порты отправил - будем надеятся закоммитят и не надо будет накладывать его руками).

2007-07-02: Патч закоммичен в порты - так что можно их обновлять и ставить ничё не патчив.



Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=16293.

размещено: 2007-07-01,
последнее обновление: 2008-01-03,
автор: lissyara

оценить статью:

andreza, 2007-07-02 в 13:58:29

Зачем городить все эти супер-блокираторы, когда проще просто повесить sshd на левый порт и нормально его настроить?

lissyara, 2007-07-02 в 14:15:09

а если наружу доступен ограниченный набор портов?
ходить через другой сервер?
А если он ляжет?

andreza, 2007-07-02 в 14:40:31

Согласен, просто в моей практике такого не было. А кому-то наверное может пригодиться. Но опять же никто не отменял авторизацию по ключам.

GR, 2007-07-02 в 17:21:25

"перевесить на другой порт" сильно уменьшит количество атак, но те кто знает о nmap на это не купятся ...

To Lissyara - ты бы знал какой знатный БОЯН ты растянул. За поледние 2-3 месяца ВСЕ (от /. до LOR'a) по этой теме отметились :) Пока с небольшим отрывом лидирует fall2ban :)

lissyara, 2007-07-02 в 17:41:44

Нифига не понял про боян...
То, что тема избитая - знаю, тока надоело отвечать на один и тот же вопрос - проще сюда будет послать.
А про последние 2-3 месяца вообще не понял...
тупею, чтоли... :)

p, 2007-07-02 в 19:40:46

а в pf можно поигратся c параметром max-src-conn-rate и стряпать нечто подобное, не используя ничего лишнего

p, 2007-07-02 в 19:50:31

а еще можно использовать port-knocking

Samm, 2007-07-03 в 10:17:52

security/bruteblock намного лучше. SSHIT отваливается через пару дней работы и перестаёт удалять плохие хосты из таблицы. Кроме того - bruteblock можно использовать не только для ssh, у меня он "пасёт" и pop3, и smtp (auth) и ftp.

Samm, 2007-07-03 в 10:19:39

И ещё 1 нюанс - как для sshit так и для bruteblock надо добавить в rc.conf syslogd_flags="-c", отрубив компрессию для piped clients. Иначе сообщение вида "last message was repeated 3 times", которое может появлятся при многократном подборе пароля будет сбивать блокиратор с толку.

Samm, 2007-07-03 в 10:23:09

По поводу "левого порта и нормальной настройки" - левый порт это вообще не защита, совсем. Даже автосканеры уже её обходят, у меня есть логи. Нормально настроить - это key auth, но это не всегда удобно. Кроме того, у меня стоит bruteblock даже на машине с key auth, так спокойнее, да и левой нагрузки и трафика чуток меньше. А вот на pop3 подобное, имхо, ещё более нужно чем на ssh, так как контроль над емейлом админа порой позволяет сделать гадостей не меньше чем взломанный юзер шелл )

RockerMan, 2007-07-04 в 17:31:56

---
Кроме того - bruteblock можно использовать не только для ssh, у меня он "пасёт" и pop3, и smtp (auth) и ftp.
---
А можно подробнее об этом?

Qaz, 2007-07-05 в 13:54:12

Имхо лутше добавить одно правило в pf которым заблокировать переборы да и всё, никаких приблуд ставить не нада

Klin, 2007-07-18 в 0:58:36

Не знаю как с ipfw, а с iptables очень просто:
Задал 2 раза неправильный password - гуляй 200 секунд:

IPT=/sbin/iptables
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
$IPT -A INPUT -p tcp --dport 22 -m recent --update --seconds 200 --hitcount 2 --rttl --name SSH -j LOG --log-prefix "SSH BRUTE FORCE"
$IPT -A INPUT -p tcp --dport 22 -m recent --update --seconds 200 --hitcount 2 --rttl --name SSH -j DROP

tigerby, 2007-07-20 в 10:22:03

Klin. выше 2(два) раза писали про pf. это тоже самое ;-) кстати в -STABLE/-CURRENT я так понимаю уже от 4.0 или 4.1 портирован pf. там же можно задать и ttl, хотя я предпочитаю вообще не чистить эти блеклисты:-)

NarkomanLove, 2007-07-28 в 1:34:59

Что-то если ставиш другой номер таблицы в ipfw, он не хочет её наполнять гадами.

f0b0s, 2007-10-12 в 5:55:45

sshguard у меня нивкакую не зарабил, исчитался и факи и сетап гайд. хз почему.

поставил sshit — через 30 секунд после установки в заветной табличке появилась айпишка.

2Samm — ну не хорошо так свою прогу рекламировать, гнать на ссхит. (он автор брутблока)
хотя, проверим, как рабит, отвалится или нет.

Samm, 2007-10-12 в 8:52:49

2f0b0s
Я не "гоню" как вы изволили выразиться. Перед тем как перейти к написанию bruteblock я примерно месяц пытался заставить нормально работать sshit. Чему свидетелсьвто - принятый PR от меня в дереве портов и обсуждение возможных причин лика в группе по перлу.

Кроме того - bruteblock действительно лучше и универсальнее чем sshit, это не авторское мнение, а обьективный факт. Например тем, что маска не hardcoded а задаётся в конфиге, что позволяет использовать его для любого сервиса, который использует текстовые логи и пишет в них ip злоумышленника. Опять же - не использует никаких внешних бинарников, вся работа происходит внутри. Ну и как уже говорил - не требуется IPC между процессами из-за того, что время хранится в таблице ipfw.

Sergej Kandyla, 2007-10-15 в 1:28:41

4_Samm

Отличная прога! Спасибо еще раз! Я уже писал Вам в юафуге, но заюзать созрел только недавно ;)

Хотел добавить, что программы подобного рода больше предназначены для блокировки брутов по фтп, мылу и т.д.
Фаервол это, конечно, круто, но он не слишком умен по отношению к бруту сервисов.

johnd, 2007-11-08 в 17:29:35

После прочтения статьи использовал sshit как блокиратор к подбору паролей pureftpd (пришлось подправить код программы). Каким то образом прога периодически прога переставала срабатывать. Поставил bruteblock, доволен - спасибо Samm.

touch, 2008-01-27 в 23:25:44

2Samm:
Не очень-то я в регулярных выражениях, возможно поэтому ваш bruteblock с openssh-portable-4.7.p1 не заработал как нужно, а sshit с полпинка. Отвал через пару дней работы понаблюдаем :)

dmon_s, 2008-05-13 в 19:31:39

Пользуюсь denyhosts. Умеет анализировать не только ssh. Поддерживает самописные плюгины для блокировки. Есть возможность синхронизации БД с миром.

Nikky, 2008-08-23 в 12:15:31

Сделать бы поддержку pf в bruteblock... перешёл бы на него.

Samm, 2008-08-23 в 12:23:32

>Сделать бы поддержку pf в bruteblock... перешёл бы на него.
Запросто. Проблем вижу ровно 2 - недостаток времени и отсутствие у меня pf в production. А так в задаче ничего сложного нет, хотя и так красиво как с IPFW не получится, в PF негде хранить lifetime правила. Ну да shared memory вроде никто не отменял....

Sergej Kandyla, 2008-08-26 в 11:13:46

+1 pf было бы хорошо. Держать пару фаеров часто не хочется.

Также возникла идея, при грамотном составлении правил для bruteblock + кастомные логи веб сервера, по факту интересная штука от ддосов может получиться ;)

karat, 2008-10-20 в 13:52:02

Спасибо за статью!
я бы дабавил ключевое слово quick в запрещающее правило для pf.
block quick from <badhosts> to any
Иначе в случае добавления строки в начало правил (как у меня) в auth.log присутствовали записи: Oct 20 11:22:02 lll sshd[2735]: Failed password for invalid user user11 from <cracker`s ip> port 3209 ssh2
Oct 20 11:22:02 lll sshit: block for <cracker`s ip> not working!

VladVons, 2009-01-08 в 19:53:13

Замедление bruteforce атак на SSH с помощью PF:
http://www.opennet.ru/base/sec/bruteforce_pf.txt.html

andy03, 2009-02-08 в 13:16:04

поставил bruteblock заработал сразу - супер

Archer, 2009-04-27 в 5:20:47

Как альтернативу использовал denyhosts. Настройка за 5 минут, есть в портах, есть возможность создавать доверенные сети...
http://adw0rd.ru/2009/denyhosts
создаёт записи типа:
####
sshd: 221.238.193.71 : deny
sshd: 83.17.13.98 : deny
sshd: 77.92.142.210 : deny
sshd: 72.48.116.251 : deny
sshd: 121.52.210.198 : deny

####
И если вдруг из дома сам несколько раз ошибся, то можно удалить себя из списка, а вот в sshit чёт задолбался я таблицу с банлистом искать.

Банзай, 2009-06-28 в 2:11:19

sshit игнорирует строчку:

... pure-ftpd: (?@ppp91-76-56-185.pppoe.mtu-net.ru) [WARNING] Authentication failed for user [anonymous]

у кого есть REGEX?

Classified, 2009-07-13 в 16:59:27

По-моему разумнее SSH организовать через ключи, что исключит вероятность подбора пароля перебором.

Банзай, 2009-07-13 в 21:23:15

"По-моему разумнее SSH организовать через ключи, что исключит вероятность подбора пароля перебором" - это исключит вероятность входа на аварийную машину через ПУТТЮ с произвольной мобилы. Если запретить вход без ключа. А если не запретить, то, не получив ключа, SSH сервер предложит ввести пароль.

Для исключения вероятностей есть knockd, прикрутить который маловероятно, из-за лени вип-юзверей. Им эта каденция непосильна.

Classified, 2009-07-14 в 10:28:58

Значит нужно запретить. Значит нужно ключ + пасс.

"Это исключит вероятность входа на аварийную машину через ПУТТЮ с произвольной мобилы" - не исключит. Можно с мобилы. Putty по-умолчанию не понимает частный ключ ssh-keygen'а, но для этого есть PuTTYgen, и всё прекрасно входит :)

Банзай, 2009-07-14 в 10:48:57

Каким образом вы войдете с произвольной мобилы?
Условия: рыбалка, до очага цивилизации 200 км, но батарейки живы.
Ваши действия, по пунктам.

Classified, 2009-07-14 в 11:14:26

:) Условия интересные, но я могу придумать и еще более интересные. В данном случае, сопровождение сервера должно осуществлятся 2-я лицами, на случай рыбалки одного из 2-х. Мы говорим вприципе о том что возможно, а что нет и как это лучше организовать с точки зрения безопасности, которая начинается с грамотного планирования всей инфраструктуры включая человеческий фактор.

Classified, 2009-07-14 в 11:17:24

Но все же по поводу рыбалки. Если сеть в радусе действия телефона то я проблемы не вижу. У меня всегда с собой ноут, практический всегда когда я дежурю независимо рыбалка это или нет. Ноут + GPRS или CDMA проблема решена.

Банзай, 2009-07-14 в 11:42:30

Иди нахер, дурачок.

Classified, 2009-07-14 в 11:44:35

Банзай, ты бы лучше научился себя вести сначала.

Mikola, 2010-07-21 в 12:15:13

Спасибо поставил - работает.
Глюк: при изменении MAX_COUNT начинает тупить, я пробовал 5 ставить не знаю как с другими.
в логах говорит что забанить не могу, но банит а потом не разбанивает. Если MAX_COUNT = 3, то все ок!

Time, 2010-09-07 в 10:56:33

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

Pandora, 2011-04-03 в 4:38:54

Посмотреть таблицу 0, в которой хранятся адреса атакующих, можно с помощью команды

# ipfw table 0 list

lykich, 2012-01-28 в 13:53:11

/usr/ports/security/sshguard-ipfw/
/usr/ports/security/sshguard-pf/
Неплохие решения для ssh.


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 16 чел.
За последние 30 мин было: 64 человек
За сегодня было
10965 показов,
453 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0365 секунд
Из них PHP: 31%; SQL: 69%; Число SQL-запросов: 77 шт.
У Вас отключено GZIP-сжатие в браузере. Размер страницы 127527