Совет на все времена. Спасибо.
Дополню.
Если необходимо добавить адресную книгу с русскими символами, перед выполнением скрипта необходимо переключить локаль zimbra:
export LC_ALL='ru_RU.UTF-8'
Практика показала, что неэффективно использовать механику последовательного добавления в src-address-list`ы по типу «Bruteforce login prevention». Часто случаются ложные срабатывания, часто случается что брутфорсер остается незамеченным.
Поэтому вычисление негодяя я реализовал по предложенной в статье схеме, через собранные логгером метаданные.
Есть два правила, оба они размещены выше, того, которое разрешает прохождение уже установленных соединений, так как AUTH LOGIN прилетает именно в ESTABLISHED пакетах. Ну и дропать надо опять же установленное соединение. Не знаю как на других почтовых серверах, но на лотусе я наблюдал как в рамках одного TCP соединения происходит подбор паролей до 1000 попыток(возможно бывало и больше), абсолютно безнаказанно.
На микротике работают такие правила: add action=drop chain=forward comment="drop smtp brute force" connection-state=invalid,established,related,new,untracked dst-address=192.168.y.x dst-port=25,110 in-interface="VLAN55 - RT_INET" log=yes log-prefix=DROP_SMTP_BRUTE protocol=tcp src-address-list=smtp_banlist
add action=log chain=forward connection-state=established,related,untracked content="AUTH LOGIN" dst-address=192.168.y.x dst-port=25 in-interface="VLAN55 - RT_INET" log=yes log-prefix=SMTP_AUTH_LOGIN protocol=tcp src-address-list=!white_list_brute
Считаю если можно перенаправить логи smtp на связку rsyslog->БД, не сложно будет изловить негодяя подбирающего пароль и отправить в бан.
В моем случае я пока не научился перенаправлять логи Лотус Домино куда либо, да и логи там надо сказать скудные, по сравнению с IceWarp. В Лотусе все логи складываются в свою БД, надо научится к ней подключаться внешними тогда можно будет и анализировать.
Логи почтовика лучше чтения содержимого пакетов, так как шифрованый smtp уже не особо почитаешь. А так на микротике есть возможность читать на лету не шифрованный smtp, я например использую такую связку: если в пакете smtp присутствует фраза AUTH LOGIN то запускается цепочка аналогичная «Bruteforce login prevention».
Мы ведь говорим именно про брут smtp?
Вот, вот. Была у меня мысль написать в публикации именно про бан при работе с smtp, но побоялся быть банальным. Хотя изначально реализовал именно защиту smtp, аналогичным в способом, только с другими интервалами и счетчиками.
Навевает анекдот про группу школьников в зоопарке «А слона то я и не заметил.»
Нет, это был не перевод строки, ftp на микроте отключен и заблокирован правилами, катнуть, копипастнуть, перетащить быстрее чем включать ftp.
Затык, мне кажется, был в процедуре создании пользователя и привязки pub_rsa, когда я его делал через winbox — не получилось, когда создал его через консоль — получилось.
Почему же сразу «зло»? если включить фантазию, то возможности реализации аналитики с помощью SQL и bash сильно выше чем возможности которые дает сам Микротик. Или вы считаете что вам удалось модифицировать «зло» предложенное вендором в менее злое «зло» чем возможно сделать с помощью накопленных данных SQL и всего что можно только запустить на linux?
Вопрос блокировки офиса с 5 сотрудниками решается быстро. Три варианта:
1 Если они имеют статический ip то просто вносятся в белый лист
2 Если нет статики им ставится железка поднимающая туннель
3 Если нет денег на новую железку, они звонят мне, говорят что у них не работает и я за пару кликов удаляю их из банлиста.
К тому же, редко случается когда у провайдера падает канал пять раз в день, на моей памяти ни разу. Плюс ко всему, представление которым мы выбираем данные из БД можно переписать под свои реалии.
По поводу «сократить эти эффекты» согласен. Нет антибиотиков которые бы не убивали микрофлору кишечника. Но слышал, врачи говорят, при внутримышечном введении кишечник страдает меньше.
И кстати хоть в публикации идет речь про RDP, но это все лишь частный случай, просто пример предоставленный для демонстрации плюшек получаемых при сборе и анализе логов маршрутизатора.
Широкий простор для мечты и для жизни,
Логи в БД открывают для нас…
Хе-хе, прикольная аналогия.
Я рассматривал этот вариант первым делом, как только приступил к своим обязанностям.
Но понял, что мои секьюрные рвения никто не оценил. Так как прикручивание клиентов через ipsec/l2tp несет за собой много неудобств для самих пользователей и как следствие головную боль админу. Это в первую очередь, но положим мы справились. А теперь представьте что вы приехали в гости, и вам нужно срочно подключиться по RDP к вашему рабочему серверу и выполнит некоторые действия в 1С, делать на смартфоне это мука, а что бы подключится с компа, вам нужно сначала настроить ipsec/l2tp ) но вы не админ, или админ но у вас нет ключа-сертификата или PSK. И снова головная боль админу, а он катается на лыжах где-нибудь в лесу :)
Про маршрутизацию в туннель и совместимость адресного пространства дома и работы я даже и говорить не буду, это жопа жопная для простого человека(не админа).
Для RDP у меня есть другая идея.
Все тот же Rsyslog должен собирать логи windows, отправляемые, например, с помощью evtsys(связка мне уже знакома, я использовал её ранее). Но для хранения тут уже понадобится mongodb, логи windows по своему формату не очень читаемы. До прикручивания монги я еще не добрался, но руки чешутся. При таком решении, анализ можно будет проводить уже на уровне аудита системы и открываются широкие перспективы.
Это будет уже искусственный интеллект )
Как предлагаете отслеживать длительность сессии? Есть вариант вычислять время между приходом SYN и FIN, с соответствующими src:sport dst:dport, но FIN может и не прилететь.
Автоматически корректировать таймаут, да, идея хорошая, пожалуй нарушителей можно вычислить и по другим признакам, обычно атаки проходят в промежутках времени и повторяются в скором времени. Надо понаблюдать.
Возможно. Есть идеи как отследить торможение маршрутизации и процесс добавления в список?
Пока банлист держит запись сутки, буду наблюдать за динамикой появления новых записей.
В какой-то степени да, это скорее работа ради опыта, но это не умоляет ценности.
Я не прав в том, что опустил эту деталь в самый низ и не сказал об этом сразу.
Я использую механику защиты от брутфорса предлагаемую Микротиком, но мне не нравится как она работает.
Во первых: брутфорсер бывает хитрый, он высчитывает таймаут stage1, и делает так что его ip не попадают в блэклист.
Во вторых: что бы эта механика работала лучше я бы сделал более трех этапов проверки перед баном(штук 6 или даже 9, чем больше тем лучше), но это нагромождение.
Поясню, интересный факт, при отправке почты через мобильные сети, по какой-то причине последовательно прилетает 3 SYNа, то есть фактически устанавливается 3 соединения и ip src сразу попадает аж на третий этап(заключительный этап), который держит его там, допустим, 2 минуты. При попытке отправить еще что-нибудь, он попадает в банлист. Это неприятно, особенно для директора с его iphone.
println(feed) вещь интересная(хоть и вымышленная), но на десятилетия не сохранит записи, у термобумаги век не долгий.
Я недавно откопал матричный принтер, вот это вещь… и звук такой приятный. На таком девайсе можно и имперский марш сыграть пожалуй )
Большое число это сколько?
На одном vps обнаружил уязвимую версию. Ubuntu 22.04.2 LTS.
Посмотрел логи, в общем уже месяц как минимум "Timeout before authentication" присутствует. Всего 4 недели хранятся логи, раньше не посмотреть.
В четырех недельных логах фиксируется от 98 до 300 событий "Timeout before authentication".
Дополню.
Если необходимо добавить адресную книгу с русскими символами, перед выполнением скрипта необходимо переключить локаль zimbra:
export LC_ALL='ru_RU.UTF-8'
Поэтому вычисление негодяя я реализовал по предложенной в статье схеме, через собранные логгером метаданные.
Есть два правила, оба они размещены выше, того, которое разрешает прохождение уже установленных соединений, так как AUTH LOGIN прилетает именно в ESTABLISHED пакетах. Ну и дропать надо опять же установленное соединение. Не знаю как на других почтовых серверах, но на лотусе я наблюдал как в рамках одного TCP соединения происходит подбор паролей до 1000 попыток(возможно бывало и больше), абсолютно безнаказанно.
На микротике работают такие правила:
add action=drop chain=forward comment="drop smtp brute force" connection-state=invalid,established,related,new,untracked dst-address=192.168.y.x dst-port=25,110 in-interface="VLAN55 - RT_INET" log=yes log-prefix=DROP_SMTP_BRUTE protocol=tcp src-address-list=smtp_banlist
add action=log chain=forward connection-state=established,related,untracked content="AUTH LOGIN" dst-address=192.168.y.x dst-port=25 in-interface="VLAN55 - RT_INET" log=yes log-prefix=SMTP_AUTH_LOGIN protocol=tcp src-address-list=!white_list_brute
В моем случае я пока не научился перенаправлять логи Лотус Домино куда либо, да и логи там надо сказать скудные, по сравнению с IceWarp. В Лотусе все логи складываются в свою БД, надо научится к ней подключаться внешними тогда можно будет и анализировать.
Логи почтовика лучше чтения содержимого пакетов, так как шифрованый smtp уже не особо почитаешь. А так на микротике есть возможность читать на лету не шифрованный smtp, я например использую такую связку: если в пакете smtp присутствует фраза AUTH LOGIN то запускается цепочка аналогичная «Bruteforce login prevention».
Мы ведь говорим именно про брут smtp?
Нет, это был не перевод строки, ftp на микроте отключен и заблокирован правилами, катнуть, копипастнуть, перетащить быстрее чем включать ftp.
Затык, мне кажется, был в процедуре создании пользователя и привязки pub_rsa, когда я его делал через winbox — не получилось, когда создал его через консоль — получилось.
Как удалить комментарий?
Наглядный пример широкого пула адресов. Возможно и шире, надо подумать как за этим следить.
Серые адреса да, проблема, но я пока не видел, что бы с них прилетали подобные атаки.
Вопрос блокировки офиса с 5 сотрудниками решается быстро. Три варианта:
1 Если они имеют статический ip то просто вносятся в белый лист
2 Если нет статики им ставится железка поднимающая туннель
3 Если нет денег на новую железку, они звонят мне, говорят что у них не работает и я за пару кликов удаляю их из банлиста.
К тому же, редко случается когда у провайдера падает канал пять раз в день, на моей памяти ни разу. Плюс ко всему, представление которым мы выбираем данные из БД можно переписать под свои реалии.
По поводу «сократить эти эффекты» согласен. Нет антибиотиков которые бы не убивали микрофлору кишечника. Но слышал, врачи говорят, при внутримышечном введении кишечник страдает меньше.
Широкий простор для мечты и для жизни,
Логи в БД открывают для нас…
Я рассматривал этот вариант первым делом, как только приступил к своим обязанностям.
Но понял, что мои секьюрные рвения никто не оценил. Так как прикручивание клиентов через ipsec/l2tp несет за собой много неудобств для самих пользователей и как следствие головную боль админу. Это в первую очередь, но положим мы справились. А теперь представьте что вы приехали в гости, и вам нужно срочно подключиться по RDP к вашему рабочему серверу и выполнит некоторые действия в 1С, делать на смартфоне это мука, а что бы подключится с компа, вам нужно сначала настроить ipsec/l2tp ) но вы не админ, или админ но у вас нет ключа-сертификата или PSK. И снова головная боль админу, а он катается на лыжах где-нибудь в лесу :)
Про маршрутизацию в туннель и совместимость адресного пространства дома и работы я даже и говорить не буду, это жопа жопная для простого человека(не админа).
Все тот же Rsyslog должен собирать логи windows, отправляемые, например, с помощью evtsys(связка мне уже знакома, я использовал её ранее). Но для хранения тут уже понадобится mongodb, логи windows по своему формату не очень читаемы. До прикручивания монги я еще не добрался, но руки чешутся. При таком решении, анализ можно будет проводить уже на уровне аудита системы и открываются широкие перспективы.
Как предлагаете отслеживать длительность сессии? Есть вариант вычислять время между приходом SYN и FIN, с соответствующими src:sport dst:dport, но FIN может и не прилететь.
Автоматически корректировать таймаут, да, идея хорошая, пожалуй нарушителей можно вычислить и по другим признакам, обычно атаки проходят в промежутках времени и повторяются в скором времени. Надо понаблюдать.
Пока банлист держит запись сутки, буду наблюдать за динамикой появления новых записей.
Цифры полученные в первом SQL запросе (с которого начиналась статья) были при уже включенном «Bruteforce login prevention».
Я не прав в том, что опустил эту деталь в самый низ и не сказал об этом сразу.
Я использую механику защиты от брутфорса предлагаемую Микротиком, но мне не нравится как она работает.
Во первых: брутфорсер бывает хитрый, он высчитывает таймаут stage1, и делает так что его ip не попадают в блэклист.
Во вторых: что бы эта механика работала лучше я бы сделал более трех этапов проверки перед баном(штук 6 или даже 9, чем больше тем лучше), но это нагромождение.
Поясню, интересный факт, при отправке почты через мобильные сети, по какой-то причине последовательно прилетает 3 SYNа, то есть фактически устанавливается 3 соединения и ip src сразу попадает аж на третий этап(заключительный этап), который держит его там, допустим, 2 минуты. При попытке отправить еще что-нибудь, он попадает в банлист. Это неприятно, особенно для директора с его iphone.
Я недавно откопал матричный принтер, вот это вещь… и звук такой приятный. На таком девайсе можно и имперский марш сыграть пожалуй )