Вопрос или проблема
Мне стыдно, но мне нужно попросить о помощи. Мой сервер используется для отправки спама, я выяснил, что могу просто подключиться через telnet (редактирование: с любого сервера в офисе, дома и даже напрямую из CMD/Putty Telnet), добавить mail from/rcpt to/data без какой-либо авторизации и отправить письма с моего домена на любой внешний почтовый ящик (например, на gmail). Я использую Exim/SMTP/CSF на Debian и имею базовые знания о них.
root@vps:~# telnet example.com 25
Trying 19x.10x.8x.1xx...
Connected to example.com.
Escape character is '^]'.
220 serwer.example.com.pl ESMTP Exim 4.91 Wed, 19 Sep 2018 10:48:05
+0200
mail from: [email protected]
250 OK
rcpt to: [email protected]
250 Accepted
data
354 Enter message, ending with "." on a line by itself
test data.
.
250 OK id=1g2Y9t-0003yu-Of
Я хочу предотвратить это и заставить любую форму аутентификации, чтобы предотвратить отправку спама с моего сервера на внешние почтовые ящики. Мой второй сервер, пытаясь сделать то же самое, после команды “rcpt to”: возвращает “550 authentication required”. Я думаю, что это правильное поведение, чтобы нельзя было отправлять спам.
В моем exim.conf у меня пустые параметры реле (я пытался указать IP моего сервера или адрес localhost, но безуспешно):
addresslist whitelist_senders = lsearch;/etc/virtual/whitelist_senders
addresslist blacklist_senders = lsearch;/etc/virtual/blacklist_senders
domainlist blacklist_domains = lsearch;/etc/virtual/blacklist_domains
domainlist whitelist_domains = lsearch;/etc/virtual/whitelist_domains
domainlist local_domains = lsearch;/etc/virtual/domains
domainlist relay_domains =
domainlist use_rbl_domains = lsearch;/etc/virtual/use_rbl_domains
hostlist auth_relay_hosts =
hostlist bad_sender_hosts = lsearch;/etc/virtual/bad_sender_hosts
hostlist bad_sender_hosts_ip = net-lsearch;/etc/virtual/bad_sender_hosts
hostlist relay_hosts =
hostlist whitelist_hosts = lsearch;/etc/virtual/whitelist_hosts
hostlist whitelist_hosts_ip = net-lsearch;/etc/virtual/whitelist_hosts
Секция аутентификации
begin authenticators
plain:
driver = plaintext
public_name = PLAIN
server_prompts = :
server_condition = "${perl{smtpauth}}"
server_set_id = $2
login:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_condition = "${perl{smtpauth}}"
server_set_id = $1
Как мне защитить свой SMTP сокет? Как я могу заставить процесс “требуется аутентификация”? Я пытался сравнить .conf файлы с моим вторым сервером, но, несмотря на 2 дня попыток, мне не повезло.
Удалите *
из dc_relay
. Это позволяет любому отправлять письма.
В файле /etc/exim4/exim4.conf.localmacros
добавьте следующее
MAIN_TLS_ENABLE = true
Пожалуйста, добавьте server_mail_auth_condition
проверьте здесь
Для получения дополнительной информации об SMTP аутентификации
Ответ или решение
Для решения проблемы с отправкой спама через сервер Exim SMTP без аутентификации, необходимо тщательно настроить конфигурацию Exim и применить меры безопасности. Давайте разберем основные шаги и рекомендации, которые помогут вам предотвратить несанкционированный доступ и отправку почты.
1. Анализ текущей конфигурации
Согласно вашей информации, текущая конфигурация Exim не ограничивает отправку почты от любых пользователей. Это приводит к тому, что любой может подключиться к вашему серверу через Telnet и отправить почту без аутентификации. Убедитесь, что следующие параметры правильно настроены в вашем конфигурационном файле Exim:
- Параметры relay_hosts: Убедитесь, что
relay_hosts
пуст, что предотвращает реле для любых неавторизованных пользователей. - Параметры dc_relay: Убедитесь, что в файле
/etc/exim4/exim4.conf.localmacros
удален*
изdc_relay
, иначе любой сможет отправлять почту без аутентификации.
2. Включение аутентификации
Для того чтобы заставить всех пользователей проходить аутентификацию перед отправкой почты, необходимо добавить следующие параметры в конфигурацию Exim:
Настройка секции аутентификации:
Убедитесь, что секция аутентификации в вашем конфигурационном файле настроена правильно:
begin authenticators
plain:
driver = plaintext
public_name = PLAIN
server_prompts = :
server_condition = "${perl{smtpauth}}"
server_set_id = $2
login:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_condition = "${perl{smtpauth}}"
server_set_id = $1
Эти параметры указывают на использование механизмов PLAIN и LOGIN для аутентификации, обеспечивая стандартный процесс авторизации.
3. Добавление условий аутентификации
Обязательно добавьте условие аутентификации в ваше рабочее окружение. Это можно сделать через параметр server_mail_auth_condition
в соответствующем разделе конфигурации Exim.
4. Настройка TLS
Для обеспечения безопасности соединения, рекомендуется включить TLS. Добавьте следующее в ваш конфигурационный файл:
MAIN_TLS_ENABLE = true
Это дополнительно защитит ваши попытки подключения и предотвратит перехват данных аутентификации.
5. Тестирование конфигурации
После выполнения всех изменений, важно протестировать конфигурацию Exim. Попробуйте подключиться через Telnet и проверить, потребует ли сервер аутентификацию перед отправкой почты. Должен появиться ответ с требованием ввести учетные данные для доступа.
6. Мониторинг и журналирование
Не забывайте про мониторинг и анализ лог файлов Exim (/var/log/exim4/mainlog
), чтобы отслеживать подозрительную активность и попытки несанкционированного доступа.
Заключение
Правильная настройка конфигурации Exim и внедрение аутентификации позволит вам защитить ваш сервер от злоумышленников и улучшить общую безопасность почтовой системы. Если вы следуете всем перечисленным рекомендациям, вы сможете минимизировать риск отправки спама и несанкционированного доступа к вашему серверу.