согласен с вами, но человеческий фактор всегда был и будет, именно для этого нужны ssh-логгеры. Да и взлом сервера через уязвимости и брутфорс никто не отменял, хорошая память не спасет вас от malware :-)
Откровенно говоря, если бы это был мой сервер, то переустановка/восстановление из бекапа произошли бы и в описанном автором поста случае, потому что сервер так или иначе скомпрометирован. На заборе в termlog'е одно написано, а на деле там, может быть, была эксплуатация какой-нибудь пока неопубликованной локальной уязвимости. Мне проще один раз перезалить сервер и успокоиться, чем потом годами проверять систему после каждого CVE, декларирующего локальную уязвимость одной из библиотек, установленных на момент компрометации у меня в системе.
Так что пользу в termlog'е я вижу только одну: когда ко мне придут из БСТМ МВД РФ и спросят, какого [SKIPPED] мой сервер принимал участие в DDoS-атаке на сайт duma.gov.ru и во взломе сервера zakupki.gov.ru, мне будет что показать им в ответ. Есть (небольшая) вероятность, что на этом общение с МВД по инциденту ограничится. Но применять его для целей вида «если ваш сервер взломали, то вы можете узнать, как это сделали и закрыть дыру»… да упаси Господи. Сами применяйте.
ну я в комментарии ниже об этом, в общем-то и сказал.
компрометация — нафиг нафиг, отключить от внешней сети, развернуть из бекапа (диффы файловые тоже могут помочь), обновить всё что можно, проверить все конфиги те, что можно и потанцевали дальше.
но чаще и проще — слить конфигурацию сервисов/дампы баз — и в переустановку, и потом проверить еще конфиги
DmZ писал про «полное логирование bash в syslog», еще возможно вам стоит посмотреть в сторону watch, но там придется придумывать костыли с записью. В следующей статье я буду делать обзор ssh-логгеров, я постараюсь осветить это вопрос.
ловил что-то похоже, но пользователь был создан не мной, а пакетом oracle-validated. конечно же сам лошара, надо внимательнее читать документацию :)
после этого, как бы не были сложны пароли на вход по ssh, заход на сервера только через openvnp, ssh во внешку закрыт.
Долго же у меня эта статья лежала в списке для чтения…
Есть прекрасная статья о защите ssh, где перечислены все хорошие методы защиты, вот она. Эту, хабровскую, статью не читал, ибо разрешать вход по логину и паролю — сам себе злобный буратино.
Уже давно перевел аутентификацию на серверах только по ключам, поставил fail2ban, две неправильные авторизации и бот отправляется отдыхать на 30 минут (ошибиться в ключе благонадёжному пользователю невозможно, поэтому такой суровый лимит). За сутки fail2ban отсекает несколько сотен таких ботов с логинами test, php, apache и им подобными.
У такой схемы есть явный недостаток, а именно возможность устроить DDoS на iptables, но я пока не сталкивался.
Видимо все же DoS. Путем дикого увеличения кол-ва правил(??). Но, сдается мне, что скорее боты канал засрут мусорными запросами, нежели файрволл запорят. Тогда уже вполне ddos выдет :)
Тут у меня в ирке товарищи интересуются: вы после бота пароль пользователя test сменили? Вообще, IP-адрес вашего сервера не подскажете на поиграться? :-)
То есть, тестировали новый метод защиты, для которого это потребовалось. Через этот же метод защиты вас, получается, ломанули. И через него же вы отловили взлом. Есть в этом что-то по-буддистски самодостаточное.
Простите, но каким же идиотом надо быть.
первое — тестовые сервера в песочнице.
второе — доступ по ssh с ограниченного списка IP для «тестовых/временных» аккаунтов + авторизация по ключу.
третье — переопределить ssh-listen порт дело одной строки и рестарта сервиса, и не забыть на gateway nat поправить.
А даже обычного аудита, помнится, хватало для того чтобы в почту всем админам свалилось письмо «сервер такой-то, создана учетка такая-то.»
PS в некоторых компаниях это повод получить трудовую на руки с увольнением по статье.
а логирование куда-то на удалёный сервер вообще хорошая штука.
/me почесал свой работающий голой попой в инете windows 7/2008r2 десктоп и подумал, почем его до сих пор никто не поломал..???
Вы все правильно говорите, но это уже «задний ум». Вообще в теории — любая система — абсолютно(!) неприступная крепость, даже без специальных мер безопасности, только лишь если все причастные к ее созданию нигде ничего не забыли. Админ не забыл удалить пользователя test/test, программист сетевого демона не забыл проверить длину считанных от пользователя значений итд. Все просто. Но такое, как показывает жизнь, даже пентагону не под силу. Все рано или поздно что-то забывают.
Не говоря уже о том, что редко какая система — конечный продукт. Обычно все они динамически строятся. Только все сделали как надо — как уже, оказывается, новые требования к тем же серверам выдвинуты, и надо что-то еще доделать. Причем уже делать пора, а не думать, совместимы ли новые запросы с тщательно продуманной ранее схемой защиты. Пора — потому что бизнес не ждет.
Поэтому разумные и верные идеи по реально качественной защите — очень интересны, но часто им место в фантастике и разговорах секурщиков на досуге, и редко когда в реальной жизни :-(
Видимо, мы с Вами где-то не там работаем.
Вспоминая про статьи и коды п/о NASA, где вон каждый битик выверяется, и хистори ведется десятилетиями :)
Ну не знаю, я на продакшен домен групповые политики выкатывать не буду. максимум на OU.
Про лезть в тот же exchange — до полного бекапа виртуалки — нини.
про писать свои скрипты/софт — точно также, проверю всё, что можно.
Вспомнилось:
Давно-давно мне как-то стало интересно посмотреть на разные скрипты и код разных эксплоитов и сканеров на тот момент. Искать их было неохота (тем более, что фейка достаточно много). Вместо этого я просто сделал jail на FreeBSD/Alpha и создал что-то типа test/test пользователя.
За один вечер в моем наличии была достаточна большая коллекция разного рода эксплоитов. Почти все были под Linux/x86, конечно, и на Alpha процессоре эти бинарники не запускались, а gcc не было установлено (да и многие script-kiddies на тот момент пользоваться gcc не умели все равно).
А когда народ начал pr0n и варез закачивать, то я тогда остановил это безобразие.
:):) я еще иногда подумываю про как же эту систему зовут, в общем есть пачка фейковых серверов в сети и мониторинг их на тему кто что пытается просканировать и все это сыпется в консоль. Известная софта…
Ставьте! :-)
Я как-то по молодости заломал какой-то сервер от DEC с их нативным юниксом — очень необычно было, что некоторые команды там немного не такие. Первый (и единственный) опыт работы на такой системе.
Можете даже пароль в баннере указать, чтоб все заходили — все равно ж машина бездействует. А так хоть польза будет.
Кстати, я правильно понимаю, что бот/злоумышленник даже `export HISTFILE=""` не сделал перед выполнением своих действий, и вся его активность имеется в ~test/.bash_history? Какие-то совсем неинтересные хацкеры пошли.
Скопировал в порт в папку work/termlog2.5 и убрал пометку broken из Makefile. Все собралось и даже заработало, но только сессии начинают записываться только после перезапуска termlog. То есть если пользователь поднял ssh-сессию и termlog рестартовал, то сессия пишется. Если пользователь просто подключился, поработал и отключился и termlog в это время не перезапускался то сессия не пишется.
Хм. так глубоко не копал… было просто интересно заставить работать с UTMPX, который сменил UTMP 8-й версии FreeBSD… т.е. собирается и логи пишутся. В `rc.conf` не добавлял даже…
На днях посмотрю, но уже подозреваю где проблема…
Вылетело из головы… #warning «only FreeBSD 9.0+!»
в 9-й FreeBSD поменяли UTMP на UTMPX и порт сломался. Без правки кода не работает. Если кому нужно — могу сделать код поддерживающий FreeBSD 8.0 и FreeBSD 9.0 одновременно…
3.Соблюдайте элементарные правила безопасности — используйте устойчивые к перебору пароли и меняйте их периодически.
прошу добавить в список авторизацию _ТОЛЬКО_ по ключам.
а доступ по паролю необходимости на специальный гейт.
Серверное malware или зачем нужны ssh-логгеры