Підвищення безпеки поштового сервера від злому за допомогою VPN на CentOS/RHEL

Підвищення безпеки поштового сервера від злому за допомогою VPN на CentOS/RHEL

11.12.2023
Автор: HostZealot Team
2 мін.
134

Захист поштового сервера за допомогою VPN

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

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

Кращим варіантом буде запуск пошти і VPN на двох окремих серверах, що значно зменшить операційні складнощі. При роботі на одному сервері необхідно налаштувати зону політики відповідей (RPZ).

Блокування портів

Коли ви налаштували все, що стосується роботи поштових і VPN серверів, і перевірили, що система працює без збоїв, можна переходити до наступного кроку. Вкрай бажано додати IP-адресу VPN-сервера до білого списку брандмауера. Це можна легко зробити за допомогою однієї невеликої зміни в CentOS або RHEL, просто замініть12.34.56.78 на IP-адресу сервера. Перезавантажте Firewalld і процес буде завершено.

Тепер ви можете розпочати власне блокування портів. Вам потрібно закрити порти POP3, Submission і IMAP. Ніхто не хоче, щоб на сервері була якась дивна активність, тому краще закрити в брандмауері такі порти, як 995, 587, 110, 465, 993 і 143. Завдяки попередньому кроку створення білих списків IP-адрес, тільки ті, хто дійсно підключений до VPN-сервера, зможуть отримати доступ до цих портів.

Не забувайте що порт 25 слід залишити, щоб продовжувати отримувати електронні листи з SMPT-серверів.

Для видалення цих портів на RHEL і CentOS скористайтеся наступними командами:

sudo firewall-cmd --permanent --remove-service={smtp-submission,smtps,imap,imaps,pop3,pop3s}
sudo firewall-cmd --permanent --remove-port={587/tcp,465/tcp,143/tcp,993/tcp,110/tcp,995/tcp}  

Після цих команд може з'явитися попередження, але вам не потрібно турбуватися. Просто перезавантажте Firewalld за допомогою команди:

sudo systemctl reload firewalld

Захист панелі адміністратора та веб-пошти

Веб-пошту та панель адміністратора також можна захистити, просто заблокувавши порти 443 і 80. Тим не менш, це спровокує іншу проблему - не буде публічного доступу до віртуальних хостів. Багато клієнтів надають перевагу віртуальним хостам, наприклад в Nginx, і вони повинні бути відкритими. Виходом з цієї ситуації буде розгортання функції контролю доступу для Nginx або Apache.

Nginx

Для підвищення рівня безпеки потрібно виконати кілька важливих кроків. Почніть з наступного файлу:

sudo nano /etc/nginx/conf.d/mail.your-domain.com.conf

Тут вам потрібно буде відредагувати файл віртуального хоста для пошти. Наступний рядок буде забороняти всі IP-адреси, окрім вказаної вами:

allow 12.43.23.45;
deny all; 

Якщо ви використовуєте декілька VPN серверів, це не проблема. Ви можете додати стільки IP-адрес, скільки вам потрібно, потім зберегти зміни і закрити файл. Перевірте конфігурацію і якщо вона працює нормально, перезавантажте Nginx. Після того, як ви завершите всю процедуру, користувачі, яких немає в білому списку, будуть сповіщені про те, що щось не так з помилкою 403.

Apache

Як і у випадку з Nginx, процес тут також починається з веб-пошти в каталозі /etc/httpd/conf.d/. Вам потрібно буде знайти

sudo nano /etc/httpd/conf.d/mail.your-domain.com-le-ssl.conf

Вам потрібно буде заповнити потрібний IP між наступними тегами - <VirtualHost>...</VirtualHost>. Заповнивши потрібну IP-адресу, всі інші доступи будуть заборонені.

Require ip 12.45.54.11

У цьому файлі також можна додати кілька IP-адрес, і цей рядок буде виглядати так:

Require ip 45.34.11.78 15.45.23.69

Після цього залиште зміни, які ви внесли, і закрийте цей файл. Потім перевірте конфігурацію Apache і перезавантажте його. Ті користувачі, які не потрапили до білого списку, будуть сповіщені про це помилкою 403.

Вимкнення DNS через HTTPS у веб-браузері

Якщо поштовий і VPN-сервери знаходяться на одному хості, то бажано вимкнути DNS через HTTPS у браузері.

- Якщо комп'ютер підключено до VPN-сервера, то DNS-трафік шифрується, і немає потреби у функції DNS через HTTPS.

- Якщо DNS через HTTPS у браузері ввімкнено, то використовується сторонній DNS. При цьому ваш особистий DNS резолвер не використовується, і ви не матимете доступу до веб-пошти та адмін-панелі.

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

Поновлення сертифікатів TLS Certbot

Якщо ви увімкнули білий список в Nginx або Apache, в такій ситуації ви також заблокуєте Let's Encrypt підключення до сервера. Це необхідно для оновлення TLS-сертифікату за допомогою перевірки HTTP-01. Цю проблему можна вирішити, вимкнувши білий список перед оновленням сертифіката і ввімкнувши його одразу після оновлення.

Почніть зі створення скрипт оболонки в каталозі /root/.

sudo nano /root/certbot-renewal.sh

У випадку, якщо ви використовуєте Nginx, до файлу слід додати наступні рядки.

sed -i 's/deny all;/#deny all;/g' /etc/nginx/conf.d/mail.required-domain.com.conf
systemctl reload nginx
certbot renew --quiet
sed -i 's/#deny all;/deny all;/g' /etc/nginx/conf.d/mail.required-domain.com.conf
systemctl reload nginx

У випадку, якщо ви використовуєте Apache, слід додати наступні рядки.

sed -i 's/Require ip/#Require ip/g' /etc/httpd/conf.d/mail.required-domain.com-le-ssl.conf
systemctl reload apache2
certbot renew --quiet
sed -i 's/#Require ip/Require ip/g' /etc/httpd/conf.d/mail.required-domain.com-le-ssl.conf
systemctl reload apache2

Збережіть зміни і закрийте цей файл. Після цього додайте дозвіл на виконання і відредагуйте файл crontab користувача root. Налаштуйте все таким чином, щоб shell-скрипт запускався один раз на добу, і закрийте файл з внесеними змінами.

Безпека SSH-порту

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

Підводячи підсумок 

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

# Як зробити Поділитися:
Статті за темою