Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
||||||||||
www.lissyara.su
—> статьи
—> FreeBSD
|
|
Это был шлюз, на линухе, а сам чувак сидел за шлюзом. Причём шлюз не на обычном PC а d-link`овский роутер - железяка с операционкой. Вначале это меня веселило, как и обычно, но этот, оказался толи упрямым, толи тупым - к вечеру его сканер уже нарезал третий круг по одним и тем же пользователям. Мне это надоело, и я добавил в файрволл правило:
|
Всё. Мудазвон был свободен как ветер до первой перезагрузки, или до того как я вспомню про это правило, и уберу его. Вероятность второго была исчезающе мала, по причине моей короткой памяти, а первое произойдёт нескоро, самое частое я его перезагружаю раз в три месяца. Когда случайно провод питания ногой зацеплю :)))
В общем-то на этом моменте про происшествие можно было забыть, но, не давало покоя то, что методы вроде примитивные, но могут и сработать - мало ли, я пользователя заведу без пароля, или со слишком простым, да забуду у него поставить /sbin/nologin... Чего тока не бывает спьяну-то :) Короче, было принято решение о прмитивном, но усилении безопастности. Файрволл стоял давно, а вот ssh прикрыть снаружи я не мог - пару раз сталкивался, что что-то забыл из конфига, и чтобы посмотреть на рабочем серваке приходилось заходить на него с самых неожиданных IP. Если б не это то задача бы свелась к закрыванию ssh снаружи, или к разрешению ходить по нему определённому набору хостов.
Для начала решил поковырять конфиг sshd - может там что есть? Конфиг sshd живёт в /etc/ssh/sshd_config Удалось нарыть следующую опцию:
|
- что означает, что по ssh можно ходить тока мне. Внёс эту строку, сделал
|
и проверил - и вправду, других пользователей не пускал. Это было уже неплохо. Но - душа хотела большего. Тогда вспомнилось, что существуют скрипты, которые добавляют в файрволл запрещающие правила, в случае, если с какого-то IP сканят порты, или ещё как развлекаются. Скрипты эти я даже искать не стал, порты меня не волновали, это забота файрволла и приложений, что их слушают, зато это воспоминание подтолкнуло мысль в верном направлении - надо написать свой скрипт, который будет лопатить логи авторизации в /var/log/auth.log
Сказано - сделано. Написал.
|
Такой вот несложный скриптик, который заодно переносит логи в другое место. Можно сделать и лучше, но, лучшее - враг хорошего. Заносим его запуск в рутовый crontab, на запуск раз в 10 минут.
Заодно решил обновить sshd - больно уж у меня старая и версия стояла.
|
Из опций, что предлагались при установке я не выбрал ничего. Итак, всё инсталлировано, но согласно секьюрити репорту, установился он не вместо системного, а сам по себе. Ладно. Не страшно. Для начала копируем скрипт запуска:
|
Удаляем строку sshd_enable="YES" из файла /etc/rc.conf. Если есть локальный доступ к машине - убиваем sshd и запускаем скрипт /usr/local/etc/rc.d/sshd.sh Должно работать. У меня локального доступа ко всем машинам нет (вернее он есть, но до некоторых добираться по часу - некогда), потому я перезагружаюсь.
Всё работает. Конфиг у меня получился такой
|
Всё остальное соответственно - по умолчанию.
размещено: 2005-11-22,
последнее обновление: 2010-02-04,
автор: lissyara
trubb, 2005-12-09 в 13:13:36
усигда сщитал чё пишицца пральна - безопасность....
Spider, 2005-12-28 в 5:12:22
А не проще в демон системны лога вписать скрипт который будет при не правильно обращении в количестве 3-5 раз блокировать фаервол, при том можно вести (на мускуле) журнал тех кто заходил или незашел (по причине провала авторизации) а также журнал кого забанили.
При загрузке журнал бана можно подымать генерировать правила фаервола и следить дальше.
При таком подходе у можно сделать Веб морду и вести накопительный журнал бан адресов (который в свою очередь можно будет перекладывать на другие сервера)
и мониторить всё происходящее через веб - интерфейс
Spider, 2005-12-28 в 5:16:12
А по поводу скаирования, есть такая прога portsentry
которая слущает назначенные порты и в случае обращения (скажем 10 раз) к разным портам с одного ай пи меняет роутинг к хосту заводя его на локалхост
хуй, 2007-04-02 в 17:49:01
вместо того, чтобы городить какие-то кошмарные скрипты с правилами в фаерволе, достаточно поставить некоммерческую версию ssh: /usr/ports/security/ssh2-nox11 и добавить в конфиг 2 параметра:
LoginGraceTime 60
AuthInteractiveFailureTimeout 10
этого достаточно, чтобы весьма неплохо обламывать роботов: перебор пароля вырождается в одиночную попытку, что делает другие способы борьбы неактуальными ;)
Непонятно, почему в openssh такого не могут заимплементить :-(
res, 2007-06-13 в 10:58:52
По поводу SSH - рулит авторизация по ключам с отключенной авторизацией по паролю. В этом случае и ssh2-nox11 не понадобится.
Кроме AllowUsers есть еще параметр AllowGroups.
В случае авторизации по ключам имеет смысл завести юзера для захода по SSH и для захода через консоль по логину/паролю, но без права заходить по SSH.
E_K, 2007-07-02 в 10:17:23
Добавляю AllowUsers, но почему делаю рестарт демона, но почему-то продолжает пускать всех. фря 6-2.
E_K, 2007-07-02 в 10:18:31
Сорри, пальцы заблудились!Добавляю AllowUsers, делаю рестарт демона, но почему-то продолжает пускать всех. фря 6-2.
dan, 2007-08-18 в 16:57:16
Давно использую PF
sshd_config:
MaxAuthTries 2
VersionAddendum
будучи извращенцем пересобрал ssh системы чтоб не показывал версию (где-то в сырцах libssh)
в pf
table <sshbrute> persist
...
block drop in log quick from <sshbrute>
...
pass in proto tcp from any to { ($ext_if) , ($int_if) } port ssh flags S/SA keep state \
( max-src-conn 7, max-src-conn-rate 3/50, overload <sshbrute> flush global )
в кронтабе каждые 5 мин
/usr/local/sbin/expiretable -v -v -t 600 sshbrute > /dev/null 2>&1
expiretable лежит в портах удаляет записи в таблице старше заданного времени
ну у меня там скрипт другой немного он ещё мне отдельный лог "неверных" собирает
таким образом имеем что после двух неверных попыток ввода пароля чел теряет tcp сессию если этих сессий 3 или больше за 50 секунд он улетает в таблицу и курит в сторонке как повезёт от 10 до 15 минут, от брутфорса вполне спасает
Alex_, 2007-09-07 в 13:44:19
Кроме того можно SSH заставить слушать порт отличный от 22.
в sshda-config указать например такое
Port 333
Доступ потом получаем так:
ssh -l user my.server.ip.address -p 333
артур, 2007-11-19 в 20:30:32
сам недавно столкнулся, до этого 22 тока в локалке был. в основном похоже боты, один долбился с часу ночи чуть не до трех. (или кулхацкер терпеливый попался %). гугл как всегда посоветовал все варианты: allowusers, другой порт, конкретные хосты,
потом нашел denyhosts (http://denyhosts.sourceforge.net)
слушает логи (у меня /var/log/auth.log) и в соотв. с некоторыми правилами заносит подозрительные ip в /etc/hosts.deny, т.е. не трогает фаервол. только sshd должен поддерживать tcp wrappers.
собссно правила настраиваются в конфиге.
у меня поставлено, проверено и работает.
зы. странно, но еще никто не ломился в рута.
koffu, 2008-01-27 в 10:56:56
Есть хорошая утилитка в портах sshguard, слушает auth.log, и по заданным параметрам (кол-во неправильных логинов, время блокировки, время снятия подозрения) добавляет в файервол "deny ip from %IP% to me". Если запускать через tail -n0 -F /var/log/auth.log | /usr/local/sbin/sshguard & , то не нужно ничего изменять в конфигах.
Dmitry Stremkouski, 2008-02-18 в 21:17:40
res прав. Надо просто сгенерировать ключи. Включить аутентификацию по ключам.
jonia, 2009-05-06 в 20:53:43
Спасибо lissyara, а также артур-у!
У меня дом. сеть, а с PF/ipwf все еще не разобрался...
Поставил denyhosts, инструкция на сайте не очень понятная, но помогла статя Preventing SSH Dictionary Attacks With DenyHosts, спасобо еще раз...
прохожий, 2009-05-25 в 10:07:20
Правильно пишется: безопасность, дибил. Так позориться, это пиздец, конечно.
lissyara, 2009-05-25 в 11:37:34
та мне покласть как правильно =))
так же как и тебе на смысл текста =)
LEAD, 2009-09-03 в 5:07:51
дЕбил тоже по другому пишется.
Только это сайт по правописанию.
За статью огромное спасибо. И за комменты тоже. Мне пригодилось)
LEAD, 2009-09-03 в 5:08:59
хы.. очепятка..
НЕ по правописанию
Michael /780, 2009-11-02 в 8:30:10
ChallengeResponseAuthentication no
1. После добавления вот этого - openssh вообще отказывается работать с PAM.
2. Failed password
Это в auth.log не появляется совсем, даже после применения запрещенных приемов.
Может кто разъяснит?
z, 2010-07-01 в 22:13:04
ну если челенжреспонауфикешин - но то генери ключи.
вход только по ним а не по паблик ключу в known_hosts
Йа, 2010-08-18 в 11:40:30
Ёпаный насос! Жора, где ты был?!!
Зануда, 2011-05-23 в 17:32:50
Что моглобы это значить? Syntax error: "do" unexpected (expecting "}")
Жорег, 2012-02-07 в 14:25:03
Лисяра, а кака ты сделал, чтобы у тебя на твоем компе отображались логи серваков? Тоже хочу так сделать :)
Буратино, 2014-10-04 в 13:02:37
У меня тоже были траблы - лезли все кому не лень, судя по диапазаону в основном Китай. Перенес на нестандартный порт - пол-года ничего. Даже скучно.
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [23 шт.]