5.1.4 Як виявити джерело спаму на сервері VPS/Dedicated. Як заблокувати пошту для окремого сайту

Банер Спам (небажана пошта) — це зазвичай масова розсилка електронних повідомлень, які часто містять рекламні пропозиції, небажані запрошення або шахрайський матеріал. Спам може створюватися різними способами, включаючи автоматизовані скрипти на веб-сайтах, компрометовані облікові записи ssh/ftp, електронної пошти або спеціалізовані програмні інструменти, спрямовані на масову розсилку. Одним з важливих аспектів управління сервером електронної пошти є виявлення джерела спаму для запобігання негативних наслідків, таких як блокування IP-адрес або доменів, потрапляння до чорних списків та погіршення репутації сервера. Виявити джерело спаму можна перевіривши поштову чергу сервера.

Поштова черга на сервері - це механізм управління відправкою та доставкою електронної пошти. Коли сервер отримує лист для відправки, він зберігає його в черзі, а потім відправляє адресатам через відповідні протоколи, такі як SMTP. Якщо відправка не вдалася через тимчасові проблеми чи перевантаження, лист залишається в черзі для повторної відправки.

Кожного листа має свій унікальний ідентифікатор, наприклад, 1TrXS1-0003SL-3h, який використовується для управління та логування в Exim.

Додатково: під час боротьби з небажаною поштою або спамом важливо для кожної контактної форми на вашому сайті встановлювати захист від ботів у вигляді капчі. Часто виникають проблеми, коли спам розсилається через вразливості або незахищену контактну форму.

Приклад капчі для захисту ваших сайтів від небажаних розсилок.

капча

Команди для управління поштовою чергою Exim

Важливо: команди для управління поштовою чергою слід виконувати від імені суперкористувача root. Вони доступні тільки для віртуальних та виділених серверів.

Для роботи з поштовою чергою, Вам потрібно підключитися до сервера за допомогою протоколу SSH. Далі у статті будуть перелічені команди.

1. Перегляд поштової черги:

  • exim -bpc: Перегляд кількості листів, що знаходяться в поштовій черзі.
  1. exim -bpc
Приклад виконання команди exim -bpc:
root@hostname:~# exim -bpc
90
  • exim -bp: Команда покаже список усіх листів, які перебувають у черзі, включаючи їх статус (наприклад, “для надсилання” або “відкладено”).
  • mailq: Повний аналог попередньої команди exim -bp, яка відобразить зміст поштової черги. Важливо, що дана команда буде коректною не тільки для Exim4, але й для інших поштових SMTP сервісів: SendMail, Postfix.
  1. mailq
Приклад виконання команди mailq:
root@hostname:~# mailq
1h 8.0K 1rojOt-00049d-Mj mailbox1@domain.com
2h 3.8K 1rojlX-0002mO-Gq mailbox2@domain2.com
3h 1.8K 1roiSp-0002Ua-Qb mailbox2@domain3.com
4h 2.4K 1rog3c-0001cJ-5f mailbox2@domain2.com
  • exipick -i: Перегляд списку ідентифікаторів id листів, які знаходяться у поштовій очереди.
Приклад виконання команди exipick -i:
root@hostname~# exipick -i
1rnfUl-0001g4-6o
1ro6q2-0008Ag-0c
1ro8XY-0001OE-MG
1rog3c-0001cJ-5f
  • exiqgrep -i -r “поштова скринька або поштовий домен одержувача”: Перегляд списку ідентифікаторів листів, які перебувають у поштовій черзі та адресовані шуканому поштової скриньки або домену.

Додатково: для отримання додаткової інформації збережіть ідентифікатор листа, наприклад, 1roiSp-0002Ua-Qb, який позначатиметься як id. Цей ідентифікатор буде використовуватися для формування команди для отримання детальної інформації.

2. Перегляд інформації про одиничні листи, використовуючи ідентифікатор листа id:

  • exim -Mvl id: Перегляд лога відправки листа із зазначеним ідентифікатором id, де id - це ідентифікатор листа зі списку черги (може бути знайдений при використання команди exim-bp). Приклад ідентифікатора: 1rog3c-0001cJ-5f.
  1. exim -Mvl id
  • exim -Mvh id: Перегляд заголовків листа в поштовій черзі. Корисно при виявленні джерел поштового розсилання.
  1. exim -Mvh id
  • exim -Mvb id: Перегляд тіла/змісту листа в поштовій черзі. Корисно при виявлення джерел поштової розсилки.
  1. exim -Mvb id

Докладніше: при аналізі списку поштових повідомлень легко визначити відправника пошти, ґрунтуючись на загальному обсязі надісланих листів із конкретної поштової скриньки або домену. Ця властивість допомагає швидко виявити потенційні джерела спаму. Додатково для визначення джерела спаму можна проаналізувати зміст, заголовки та логи кількох підозрілих листів, використовуючи відповідні команди. Якщо спам надходить зі зламаної поштової скриньки, рекомендується вимкнути або змінити пароль у налаштуваннях скриньки.

3. Очищення поштової черги:

  • exim -Mrm id: Ця команда видалити з поштової очереди лист із вказаним вами ідентифікатором id.
  1. exim-Mrm id
  • exiqgrep -i -r “поштова скринька або поштовий домен одержувача” | xargs exim -Mrm: Ця команда видалить із поштової черги всі листи, у яких одержувачем встановлена вказана поштова скринька або домен.
  1. exiqgrep -i -r admin@domain.com | xargs exim -Mrm
  • exiqgrep -i -f “поштова скринька або поштовий домен відправника” | xargs exim -Mrm: Ця команда видалить із поштової черги всі листи, у яких відправником встановлена вказана поштова скринька або домен
  1. exiqgrep -i -f admin@domain.com | xargs exim -Mrm
  • exipick -i | xargs exim -Mrm: Ця команда видалитиме без розбору всі листи з поштової черги.
  1. exipick -i | xargs exim -Mrm

Спрощений метод перевірки поштової черги

Існує простіший спосіб перегляду поштової черги за допомогою веб-інтерфейсу панелі керування ISPManager4. Щоб скористатися цим методом, спочатку необхідно встановити плагін Поштова черга. Виконайте наступні дії:

  1. Перейдіть в панель управління віртуального або виділеного сервера, у розділі Налаштування сервера -> Плагіни та натисніть кнопку Встановити у верхньому правому кутку.

  2. У списку виберіть плагін з назвою ispmqueue, потім натисніть Встановити. Підтвердіть вибір, натиснувши на відповідну галочку і потім далі.

Встановлення функціоналу поштової черги

  1. Через кілька хвилин, оновіть сторінку браузера і у вас з’явиться розділ для керування поштовою чергою, у категорії Інструменти -> Поштова черга. Управління поштовою чергою

Важливо: для встановлення плагіна на сервері має бути версія Python >=2.5. За замовчуванням на шаблонах встановлено сумісну версію. Однак, якщо Ви вручну виконали оновлення або плануєте його виконати, функціонал Поштової черги не працюватиме.

Блокування роботи пошти

Важливо: для ефективного блокування розсилки спаму важливо враховувати, яким саме методом надсилаються листи. Під час аналізу поштових повідомлень за допомогою команди exim -Mvh id можна визначити різні ключові моменти, які можуть використовуватись у методі надсилання даних. Зокрема, варто звернути увагу на адресу відправника та домен, а також на інформацію в заголовках повідомлень, яка може зберігати дані про протокол, що використовується (наприклад, SMTP, PHPMail) та вугілля відправника. Крім того, пошук ключових фраз або характеристик у тексті букв може допомогти виявити типові способи розсилки. Однак для більш точного визначення методу визначення можуть знадобитися додаткові кроки аналізу, такі як перевірка журналів веб-сервера або журналів додатків.

  • Якщо йде розсилка через CRON-завдання, необхідно видалити відповідне завдання у розділі Інструменти -> Планувальник (Cron).
  • Коли спам відправляється з використанням поштової скриньки, рекомендується вимкнути його та змінити пароль.
  • Якщо листи розсилається через скрипти сайтів, можна тимчасово відключити WWW-домен або повністю заблокувати надсилання пошти скриптами. Для того, щоб це зробити - потрібно визначити в якому режимі інтерпретатора PHP працює Ваш сайт:
  1. Для режиму PHP як модуль Apache у загальному конфігі apache2 (/etc/apache2/apache2.conf) сервера під root потрібно знайти блок VirtualHost потрібного домену та у рядку
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f"

Видалити весь вміст, який розміщується у лапках (" ... ") . Самі лапки при цьому не видаляйте, потрібно тільки видалити вміст, який розміщується у них. Також, можна зробити те саме в розділі WWW-домени у властивостях конфіга apache2. Після цього потрібно перезавантажити сервіс apache2, щоб зміни набули чинності.

  1. Для режиму PHP як CGI, потрібно перейти на рівень доступу користувача, у Менеджері файлів знайдіть файл php-bin/php.ini, у рядку
sendmail_path = "/usr/sbin/sendmail -t -i -f"

Видалити весь вміст, який розміщується у лапках (" ... ") . Самі лапки при цьому не видаляйте, потрібно тільки видалити вміст, який розміщується у них. При цьому перезавантажувати нічого не потрібно, і вказане блокування поширюватиметься на всі WWW-домени користувача, які працюють в режимі PHP CGI.

Важливо відмітити: зазначене вище блокування застосовується лише до скриптів та завдань Cron, які використовуються для надсилання пошти. При цьому поштові скриньки, створені на тому ж домені, продовжуватимуть функціонувати.

Просунуті методи визначення відправників спам-розсилки

  • Ця команда виводить список POST-запитів усіх сайтів із лога доступу Nginx за останні 1000 рядків. Вона дозволяє визначити шкідливі файли або скрипти, які можуть бути використані для небажаної розсилки чи інших шкідливих дій.
  1. tail -n 1000 /var/log/nginx/access.log | grep POST

Інформуємо: команда буде корисна, якщо Ви під час перевірки черги mailq знайшли небажані листи, далі проаналізувавши вміст командою exim -Mvl id, виявили, що відправка йде скриптами. За допомогою перевірки лога /var/log/nginx/access.log легко зіставити за часом відправлення листа та виконання POST-запиту скриптом.

  • Розсилання іноді можуть здійснюватися зламаними користувачами, які здійснили підключення за допомогою протоколу SSH. Для визначення такого користувача скористайтесь командою:
  1. ps axu | grep ssh

Вона виведе усі SSH-підключення до сервера. Потім наберіть команду:

  1. w

Яка відобразить усі активні з’єднання. Зазвичай користувач, якого немає у виведенні цієї команди, але є у виведенні попередньої, зламаний - у такому випадку просто змініть пароль користувача або його облікового запису FTP.

  • Команда killall -u user закриє всі відкриті SSH-з’єднання користувача user.
  1. killall -u user

Якщо замість логіна користувача вказані цифри або FTP-акаунт, якого в Користувачах не видно, його можна знайти у файлі /etc/shadow або /etc/passwd.