запрет авторизации из мира по клиентам

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

запрет авторизации из мира по клиентам

Непрочитанное сообщение mediamag » 2010-04-19 14:28:02

Возможно ли стандартными средствами экзима запретить попытку аутентификации с мира почтовым клиентам, кроме локалки??? А то переборы паролей с мира уже достали....Искал по поисковикам, но не могу сформулировать правельный запрос. Подскажите в какую сторону копать? или может есть какойто момент в конфиге?? Заранее спасибо

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2520 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: запрет авторизации из мира по клиентам

Непрочитанное сообщение dikens3 » 2010-04-19 20:22:30

Конечно. 1. Согласно последним RFC использовать порт 587 для своих клиентов (в том числе для аутентификации и т.п.)
При этом на 25 аутентификации быть не должно. С правилом думаю проблем не будет.

2. Вы определитесь что вы хотите, можно ТУПО не выдавать возможности AUTH для мира через auth_advertise_hosts вроде. Кому можно вообще аутентифицироваться.
http://www.lissyara.su/doc/exim/4.62/sm ... tion/#33.3
Это глобальная опция, можно и в секцию аутентификации засунуть.

3. Много ещё как можно.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.


mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: запрет авторизации из мира по клиентам

Непрочитанное сообщение mediamag » 2010-07-14 12:09:00

Каждое утро-ночь вижу вот такую дрянь в логах

Код: Выделить всё

Jul 14 06:38:08 mail dovecot: pop3-login: Aborted login (auth failed, 1 attempts): user=<aerial>, method=PLAIN, rip=66.212.1.254, lip=10.0.0.227
Jul 14 06:38:09 mail dovecot: pop3-login: Aborted login (auth failed, 1 attempts): user=<agent>, method=PLAIN, rip=66.212.1.254, lip=10.0.0.227
Jul 14 06:38:10 mail dovecot: pop3-login: Aborted login (auth failed, 1 attempts): user=<alec>, method=PLAIN, rip=66.212.1.254, lip=10.0.0.227
Jul 14 06:38:10 mail dovecot: pop3-login: Aborted login (auth failed, 1 attempts): user=<alexa>, method=PLAIN, rip=66.212.1.254, lip=10.0.0.227
Jul 14 06:38:11 mail dovecot: pop3-login: Aborted login (auth failed, 1 attempts): user=<alexandria>, method=PLAIN, rip=66.212.1.254, lip=10.0.0.227
Какой то урод тупо брутит сервак...причём каждый день новый айпи. Можно ли сделать глобальную настройку, чтобы клиента блочило или отрывало после N попыток ввести неправельного юзера? Гуглил по инету, даже примерно не могу найти что то похожее. Я так подозреваю что это можно сделать двумя способами. Или где то написать запрет с определенным кондишином или дополнить \ видоизменить вот эту секцию

Код: Выделить всё

begin authenticators


# outlook or netscape

auth_plain:
  driver = plaintext
  public_name = PLAIN
  server_condition = ${lookup mysql{SELECT `username` FROM `mailbox` WHERE `username` = '${quote_mysql:$auth2}' AND `password` = '${quote_mysql:$auth3}'}{yes}{no}}
  server_prompts = :
  server_set_id = $auth2

# outlook or netscape

auth_login:
  driver = plaintext
  public_name = LOGIN
  server_condition = ${lookup mysql{SELECT `username` FROM `mailbox` WHERE `username` = '${quote_mysql:$auth1}' AND `password` = '${quote_mysql:$auth2}'}{yes}{no}}
  server_prompts = Username:: : Password::
  server_set_id = $auth1

# the bat

auth_cram_md5:
  driver = cram_md5
  public_name = CRAM-MD5
  server_secret = ${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username`  = '${quote_mysql:$auth1}'}{$value}fail}
  server_set_id = $auth2
В моем случае менять нужно секцию PLAIN.

_Сатана
проходил мимо

Re: запрет авторизации из мира по клиентам

Непрочитанное сообщение _Сатана » 2010-07-14 12:58:57

судя по логу твоему
exim здесь не причем
у тебя dovecot мучают

погуглил и я... Защищаем почту (dovecot) с самого начала гляди

че-та по смыслу может это:
-C rate
Определение по умолчанию максимального количества раз, которое служба может быть вызвана с одного
IP-адреса в минуту; по умолчанию не ограничено. Может быть переопределено для каждой службы
параметром max-connections-per-ip-per-minute.

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: запрет авторизации из мира по клиентам

Непрочитанное сообщение risk94 » 2010-07-14 12:59:04

дето видел приблуду, которая лочит правилами фаера отакой брутфорс на несколько минут. точнее не подскажу

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: запрет авторизации из мира по клиентам

Непрочитанное сообщение mediamag » 2010-07-14 13:10:45

блин не увидел ..точно довекот...а я искал по экзиму...недоглядел))).....инетд не совсем то....возможно ли штатными средствами довекота это реализовать?

_9 мая
проходил мимо

Re: запрет авторизации из мира по клиентам

Непрочитанное сообщение _9 мая » 2010-07-14 13:18:02

по конфигу оригинальному прошелся че та не нашел там ограничений таких, мож в нем нету, на сайте их глянь
может еще в сторону фильтров глянуть, я в этом пока не силен

а насчет inetd чем не подходит? поставил ограничения и хрен он тебя побрутфорсит, устанет брутфорсить

mitiok
рядовой
Сообщения: 17
Зарегистрирован: 2008-03-12 15:07:35

Re: запрет авторизации из мира по клиентам

Непрочитанное сообщение mitiok » 2010-07-15 9:49:46

данная проблема легко и непринуждённо решается с помощью pf

_Сатана
проходил мимо

Re: запрет авторизации из мира по клиентам

Непрочитанное сообщение _Сатана » 2010-07-15 11:38:51

mitiok писал(а):данная проблема легко и непринуждённо решается с помощью pf
свети легкий и непринужденный пример, голословный ты наш

mitiok
рядовой
Сообщения: 17
Зарегистрирован: 2008-03-12 15:07:35

Re: запрет авторизации из мира по клиентам

Непрочитанное сообщение mitiok » 2010-07-15 12:36:17

постарайтесь не хамить сходу. это может помешать конструктивному разговору.

стандартная конструкция резки брутфорса на пф для поп3 выглядит как-то так:

Код: Выделить всё

# block the pop3 bruteforce
block drop in quick on $ext_if proto tcp from <pop3-bruteforce> to port pop3
pass in on $ext_if proto tcp from any to ($ext_if) port pop3 flags S/SA keep state (max-src-conn-rate 15/60, overload <pop3-bruteforce> flush)
в кронтаб полезно запихнуть чтонить такое:

Код: Выделить всё

# clear firewall table with pop3-bruteforce
*/2     *       *       *       *       /usr/local/sbin/expiretable -t 600 pop3-bruteforce
предварительно доустановив expiretable из портов. тайминги по вкусу.
Последний раз редактировалось Alex Keda 2010-07-18 20:32:20, всего редактировалось 1 раз.
Причина: Товарищщи, цените чужое время, юзайте кнопочку [code]...

_Менделеев
проходил мимо

Re: запрет авторизации из мира по клиентам

Непрочитанное сообщение _Менделеев » 2010-07-15 13:02:49

mitiok писал(а):постарайтесь не хамить сходу. это может помешать конструктивному разговору...
Прости пожалуйста, постараюсь не хамить, но было бы неплохо, если бы ты научился пользоваться кнопочкой Code, а то это мешает вести конструктивный разговор.

более подробно о предложенном, уважаемым mitiok, способе блокировки брутфорсеров, здесь: STATEFUL TRACKING OPTIONS

для очистки таблицы можно воспользоваться стандартным средством - pfctl:

Код: Выделить всё

pfctl -t pop3-bruteforce -T flush

mitiok
рядовой
Сообщения: 17
Зарегистрирован: 2008-03-12 15:07:35

Re: запрет авторизации из мира по клиентам

Непрочитанное сообщение mitiok » 2010-07-15 13:16:16

_Менделеев писал(а):для очистки таблицы можно воспользоваться стандартным средством - pfctl:

Код: Выделить всё

pfctl -t pop3-bruteforce -T flush
expiretable имеет определённые преимущества, она умеет удалять записи старше определённого возраста. просто очищать таблицу, как мне кажется, менее интересно

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: запрет авторизации из мира по клиентам

Непрочитанное сообщение mediamag » 2010-07-15 13:53:41

Всё это конечно хорошо, НО...у меня не pf а ipfw. Пока что прикрутил fail2ban. Сижу жду атаки брутфорса. Как порезать средствами ipfw пока не нашел

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: запрет авторизации из мира по клиентам

Непрочитанное сообщение mediamag » 2010-07-15 15:40:54

fail2ban удачно работает...после 2 неудачных авторизаций Айпи (пока только внутренний из локалки) закидывается в таблицу На 20 минут, а потом удаляется. Вот конфиги

ipfw.conf

Код: Выделить всё

[Definition]
actionstart =
actionstop =
actioncheck =
actionban = ipfw table 1 add <ip>
actionunban = ipfw table 1 delete <ip>
[Init]
port = pop3
localhost = 127.0.0.1
dovecot-pop3imap.conf (создаётся отдельно в папке /usr/local/etc/fail2ban/filter.d)

Код: Выделить всё

[Definition]
failregex = (?: pop3-login|imap-login): (?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P<host>\S*),.*
ignoreregex =
fail2ban.conf

Код: Выделить всё

# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 629 $
#

[Definition]

# Option:  loglevel
# Notes.:  Set the log level output.
#          1 = ERROR
#          2 = WARN
#          3 = INFO
#          4 = DEBUG
# Values:  NUM  Default:  3
#
loglevel = 3

# Option:  logtarget
# Notes.:  Set the log target. This could be a file, SYSLOG, STDERR or STDOUT.
#          Only one log target can be specified.
# Values:  STDOUT STDERR SYSLOG file  Default:  /var/log/fail2ban.log
#
logtarget = /var/log/fail2ban.log

# Option: socket
# Notes.: Set the socket file. This is used to communicate with the daemon. Do
#         not remove this file when Fail2ban runs. It will not be possible to
#         communicate with the server afterwards.
# Values: FILE  Default:  /var/run/fail2ban/fail2ban.sock
#
socket = /var/run/fail2ban/fail2ban.sock
jail.conf

Код: Выделить всё

[DEFAULT]
ignoreip = 127.0.0.1
backend = auto
findtime = 1200
bantime = 1200
maxretry = 2

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = ipfw[localhost=10.0.0.227]
logpath = /var/log/maillog
ignoreip = 10.0.0.227
10.0.0.227 - локальный айпи маил сервера
Ну и сделать соответствующие правила в фаере, которые блочат таблицу 1

Логи, в момент срабатывания блокировки

Код: Выделить всё

2010-07-15 13:44:47,320 fail2ban.actions: WARNING [dovecot-pop3imap] Ban 10.0.0.12
2010-07-15 14:04:47,461 fail2ban.actions: WARNING [dovecot-pop3imap] Unban 10.0.0.12
2010-07-15 14:09:33,209 fail2ban.actions: WARNING [dovecot-pop3imap] Ban 10.0.0.12
2010-07-15 14:29:33,350 fail2ban.actions: WARNING [dovecot-pop3imap] Unban 10.0.0.12
2010-07-15 14:34:22,107 fail2ban.actions: WARNING [dovecot-pop3imap] Ban 10.0.0.12
2010-07-15 14:54:22,248 fail2ban.actions: WARNING [dovecot-pop3imap] Unban 10.0.0.12
2010-07-15 15:00:24,195 fail2ban.actions: WARNING [dovecot-pop3imap] Ban 10.0.0.12
2010-07-15 15:20:24,336 fail2ban.actions: WARNING [dovecot-pop3imap] Unban 10.0.0.12

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: запрет авторизации из мира по клиентам

Непрочитанное сообщение mediamag » 2010-07-22 14:38:35

И еще один способ, самый простой и радикальный. Если у вас клиенты сидят только в локалке, запретите в фаерволе ходить из мира на почтовик по 110 порту.