PHP 스크립트가 메일을 보내지 못하도록 비활성화

PHP 스크립트가 메일을 보내지 못하도록 비활성화

내 질문은 PHP 스크립트가 메일을 보내는 것을 방지하는 것입니다. 서버 보안에 관한 또 다른 일반적인 질문과 중복된 것으로 표시되었지만 이 질문의 내용은 아닙니다.

어떻게든 내 Debian/Apache/PHP 서버의 다양한 웹 디렉토리에 악성 base64로 인코딩된 PHP 파일을 주입하는 해커 스팸 발송자들과 길고도 치열한 싸움을 벌인 후(먼저 기존 스크립트를 패치하고 ftp 비밀번호, 웹 서비스 비밀번호 및 mysql을 변경하는 것과 관련된 치열한 싸움) 비밀번호, 사이트를 처음부터 재구축, 문제를 억제했지만 완전히 제거하지는 않은 Maldet 설치, 마지막으로 서비스를 중지(제거하지는 않음)하여 postfix를 완전히 끈 다음 방화벽에서 서버의 포트 25 트래픽을 차단합니다. 여전히 문제가 있습니다.

내 문제는 여러 달 동안 사라졌으며 mxtoolbox에 따라 서버가 블랙리스트에서 자동으로 제거되었습니다. 그런데 오늘 내 서버가 여러 서비스에 의해 다시 블랙리스트에 올랐다는 mxtoolbox 이메일을 받았습니다. 나가는 포트 25 트래픽을 비활성화한 경우 이것이 어떻게 가능한지 완전히 이해하지 못합니다.

문제가 있을 때 내 postfix mailq는 내 서버의 특정 웹 사용자가 보낸 수십만 개의 이메일로 채워집니다.

내 질문은 다음과 같습니다.

  1. 다음을 사용하여 포트 25 트래픽을 비활성화했다고 가정합니다. iptables -A OUTPUT -p tcp --dport 25 -j REJECT,mxtoolbox에서 내 서버가 여전히 스팸을 보내고 있다고 보고하는 것이 어떻게 가능합니까?? mailq를 확인해 보니 메일이 백업되어 있네요. postfix를 시작하면 mailq의 항목이 실제로 예상한 대로 전송되지 않으며 (delivery temporarily suspended: connect to 127.0.0.1[127.0.0.1]:10024: Connection refused)각 항목 옆에 이 표시됩니다.

  2. mailq에 있는 스팸 메일의 줄 을 보고 RAT의 위치를 ​​확인한 후 X-PHP-Originating-Script문제의 파일을 찾아 삭제할 수 있으며, 이를 통해 5일에서 수개월에 걸쳐 문제가 해결됩니다.PHP 스크립트가 메일을 보내는 것을 완전히 방지하려면 어떻게 해야 합니까?php.ini 파일에 들어가면 disable_functions = mail내부 기능은 사용할 수 없지만 스패머가 이용할 수 있는 사용자 정의 기능은 사용할 수 없다는 것을 이해합니다.

  3. 내가 또 뭘 잘못하고 있는 걸까?

주의 사항: #2가 내 문제를 근본적으로 해결하지 못한다는 것을 알고 있지만, 몇 년 동안 내가 이해하는 한 많은 방법으로 조언을 받아들이고 내 서버의 보안을 강화한 후 "문제 해결"을 위해 노력하고 있습니다. "모든 보안 문제를 해결하는 기간"이 아닌 "메일 평판 문제"를 참조하십시오.

이건 내 후속작이야마지막 관련 질문여기 ServerFault에 있습니다.

답변1

당신은 선택권이 있습니다

  1. 접미사 제거
  2. php-mail 제거(Ubuntu/Debian 패키지 이름)

그러나 스패머는 여전히 자신의 SMTP 코드를 작성할 수 있습니다.

실제로 SMTP가 이렇게 차단되었는지 확인하세요.

telnet alt4.gmail-smtp-in.l.google.com 25

답변2

포트 25에 대한 방화벽 제어는 여전히 최선의 옵션입니다. 그런 다음 유효한 사용자에게 mandrill과 같은 인증된 서버 또는 smtps(tcp/587)의 다른 서버를 통해 이메일을 보내거나 타사 ESP의 이메일 API를 사용하도록 지시할 수 있습니다.

방화벽 접근 방식을 사용하지 않는 한 소켓을 통해 MX 서버에 직접 연결되는 PHP 코드를 계속 작성할 수 있습니다.

또한 TCP/25를 모든 시스템으로 리디렉션하여 누가 손상되었거나 악의적인지 모니터링할 수 있습니다.

관련 정보