Мне нужна помощь. Я использую последнюю стабильную версию Ubuntu, на которой размещен Apache / PHP5, а также доставляется электронная почта. Я размещаю некоторые сайты WordPress для других пользователей и уже несколько месяцев веду войну, сражаясь с злоумышленниками, которые находят плохие разрешения для каталогов и используют их для загрузки скриптов php для рассылки спама через сервер.
Я, конечно, предпринимаю шаги по автоматизации безопасности WordPress, но также хотел бы лишить PHP5 / Apache возможности отправлять почту на любой адрес, который не может быть доставлен локально.
Я настраиваю для этого новый сервер. Я буду использовать последнюю версию MailScanner с выбором Sendmail или Postfix. В частности, это будет направлено на то, чтобы заблокировать пользователя wwwdata, чтобы он мог отправлять только локально.
Я уже настроил ведение журнала почты PHP5, но мне нужно сделать еще один шаг, потому что мой хостинг-провайдер становится драконовским, когда начинает распространяться спам. Пока мне не удалось найти ответы через Google. Единственное, что я обнаружил до сих пор, включает в себя либо отключение функции почты PHP, либо регистрацию, просмотр, брандмауэр IP-адресов и удаление вредоносных сценариев. Любая помощь приветствуется.
Этот ответ предполагает postfix mta.
В php.ini добавьте:
mail.add_x_header = 1
В /etc/main.cf добавьте:
header_checks = pcre:/etc/postfix/header_checks.pcre
Содержимое /etc/postfix/header_checks.pcre
if /X-PHP-Originating-Script.*/
!/To:[a-zA-Z0-9._%+-]+(@(localdomain1.com|localdomain2.com))?$/ REJECT PHP Mail is only allowed to submit mail for local delivery.
endif
Используемое здесь регулярное выражение охватывает обычно используемые символы в локальной части адресов электронной почты, но не охватывает все допустимые символы согласно RFC, YMMV.