Привет всем!
Считаю необходимым поделиться своим наблюдением. А именно:
1. Есть связка postfix+dovecot.
2. Для отправки сообщений необходимо на постфиксе авторизоваться в рамках smtp-сессии. Авторизация в postfix'е идет через dovecot.
3. Сам по себе 25-й порт открыт всему миру. Почту то принимать надо...
Итак - брутфорсят 25-й порт:
dovecot: auth-worker(default): sql(admin@,222.52.118.221): unknown user: 2 Time(s)
dovecot: auth-worker(default): sql(administrator@,222.52.118.225): unknown user: 2 Time(s)
dovecot: auth-worker(default): sql(contact@,222.52.118.212): unknown user: 2 Time(s)
dovecot: auth-worker(default): sql(guest@,222.52.118.222): unknown user: 2 Time(s)
dovecot: auth-worker(default): sql(help@,222.52.118.214): unknown user: 2 Time(s)
dovecot: auth-worker(default): sql(helpdesk@,222.52.118.211): unknown user: 2 Time(s)
dovecot: auth-worker(default): sql(info@,222.52.118.210): unknown user: 2 Time(s)
dovecot: auth-worker(default): sql(mail@,222.52.118.220): unknown user: 2 Time(s)
dovecot: auth-worker(default): sql(noauth@,64.27.11.58): unknown user: 1 Time(s)
dovecot: auth-worker(default): sql(sales@,222.52.118.215): unknown user: 2 Time(s)
dovecot: auth-worker(default): sql(smtp@,222.52.118.224): unknown user: 2 Time(s)
dovecot: auth-worker(default): sql(spam@,64.27.11.58): unknown user: 1 Time(s)
dovecot: auth-worker(default): sql(support@,222.52.118.213): unknown user: 2 Time(s)
dovecot: auth-worker(default): sql(webmaster@,222.52.118.223): unknown user: 2 Time(s)
Думаю не я один такой к качестве цели используюсь гадинами.
Метод борьбы как всегда прост - ставить fail2ban на почтовый сервер и настраивать его jails на sasl-аутентификацию (там настройка уже подготовлена, нужно только её активизировать). Я поставил 2 неудачные попытки за 10 минут, и потом бан часов на 6. Ну а особо настойчивые "хосты" (которые выявит и придавит временно fail2ban) перманентно давить в iptables примерно таким образом:
# Заблокируем подключение к серверу хостам, замеченным в подборе паролей
if [ -f $dirname/host_deny ]
then
while read i; do
set `echo $i | awk '{ print $1 }'`; addr=$1;
iptables -A INPUT -s $addr -j REJECT --reject-with icmp-host-unreachable
done < $dirname/host_deny
fiКак то так.
