내 서버에서 스패머 탐지


12

최근에 Undelivered Mail Returned to Sender뉴스 레터를 1500 명의 고객 중 한 명에게 보내는 동안 하나 를 받았습니다 . 내 웹 사이트는 이중 옵트 인 절차를 사용하여 사용자가 내 뉴스 레터를 명시 적으로 받고 싶어하는지 확인합니다.

오류 메시지 :

smtp; 554 ...
    Swisscom AG IP: 94.130.34.42, You are not allowed to send us mail. Please
    refer to xyz.com if you feel this is in error.

스팸 메일의 예를 받았습니다 (수신 메일 서버의 메일 공급자로부터).

Received: from mail.com ([94.130.34.42])
        by smtp-27.iol.local with SMTP
        id itOWeYZ6O42IFitOWe35TR; Tue, 13 Feb 2018 03:54:09 +0100
From: "Servizi online - Poste Italiane" <posteitaliane@test123.it>
Subject: Abbiamo ricevuto una segnalazione di accredito
Date: Mon, 12 Feb 2018 11:32:03 -0500

공급자는 또한 내 서버가 해킹 된 것 같습니다. 또한 "수신자 메일 서버는 연결 IP에 의해 제공되는 rDNS를 단순히 기록했습니다.이 경우 mail.com ([94.130.34.42])IP 주소에 대해 rDNS 항목 (mail.lotsearch.de)을 구성한 것은 아닙니다. 따라서 rDNS를 올바르게 이해하면 수신 메일 서버가 발신자 IP에 rDNS 항목을 쿼리합니다 (94.130.34.42 => => mail.lotsearch.de로 확인해야합니다. $ host 94.130.34.42).

rDNS를 스푸핑하는 방법은 무엇입니까? 이것이 기술적으로 어떻게 작동하는지 상상할 수 없습니다 (수신 메일 서버와 내 서버 사이의 인프라 어딘가에 중간자 공격이있는 경우에만).

공급자는 또한 "내 IP에서 연결하는 시스템이 손상되어 수신자 메일 서버 (직접 MX라고도 함)에 직접 연결을 통해 이러한 메시지를 전송했을 가능성이 높습니다"라고 언급했습니다. 무슨 direct MX뜻입니까? 누군가 내 메일 계정 중 하나에 유출 된 메일 자격 증명을 훔치거나 발견하여 메일 전송에 사용 했습니까?

내 서버가 해킹되지 않았는지 확인하기 위해 지금까지 수행 한 작업 :

  • 메일 로그를 검색했습니다 ( var/log/mail*) : 특별한 내용이 없습니다.
  • ssh 로그인 로그 ( last, lastb)를 확인했습니다.
  • postfix가 중계를 수행하는지 확인 : 아니오 (telnet을 통해 점검)
  • clamav를 통한 맬웨어 검사 : 결과 없음
  • ssh, postfix 및 dovecot에 대한 설치 및 구성 fail2ban
  • Ubuntu 16.04의 최신 패치 / 업데이트 설치 (매주 변경)
  • 내 IP 주소가 블랙리스트에 있는지 확인하십시오.
  • 호스팅 제공 업체의 관리 콘솔에서 rDNS 항목을 확인했습니다 :이 (가)로 올바르게 설정되었습니다 mail.lotsearch.de.
  • 모든 메일 계정의 비밀번호 변경
  • 쉘 액세스를 위해 변경된 공개 키

더 중요 : posteitaliane@test123.it로그 에 대한 정보가 없습니다 . 따라서 스패머가 내 서버를 잘못 사용했을 경우 (메일 계정 중 하나의 smtp 자격 증명이 유출되어 fe) 로그 파일에서 볼 수 있습니다.

내가 생각할 수있는 마지막 가능성은 침입자가 아직 찾지 못한 서버에 맬웨어를 설치 한 것입니다.

발신 메일 트래픽 (프로세스 및 포트 당)을 어떻게 모니터링 할 수 있습니까?

발신 포트 25 만 모니터링하면 postfix를 통해 전송되는 불규칙한 메일 만 트랩 할 수 있지만 잠재적 인 맬웨어 감염으로 인한 메일 트래픽은 발생하지 않습니다 (맬웨어가 메일을 직접 보내거나받는 사람 메일 서버와 통신하기 위해 25 이외의 다른 포트를 사용하는 경우) . 모든 포트에서 나가는 트래픽을 모니터링하면 의심스러운 활동을 효율적으로 검색 할 수없는 거대한 로그 파일을 얻을 수 있습니다.

편집-오픈 릴레이 테스트 추가 :

$ telnet mail.lotsearch.de 25
$ HELO test@test.de
250 mail.lotsearch.de
$ MAIL FROM: test@test.com
250 2.1.0 Ok
$ RCPT TO:<realEmail@gmail.com>
454 4.7.1 <realEmail@gmail.com>: Relay access denied

편집-웹앱 실행


"모든 포트에서 나가는 트래픽을 모니터링하면"왜 ... 이 메일 서버가 전송하는 다른 트래픽은 무엇입니까? 개방형 릴레이를 구성하지 않았습니까? 서버에서 메일을 보낼 수있는 액세스 권한을 가진 사람이 자격 증명을 유출하지 않았습니까?
다니엘 Widrick

@DanielWidrick 메일 서버는 웹 서버로도 사용되므로 443 및 80의 트래픽도 가능합니다. 기본 메일 서버 접미사가 아닌 외부 메일 서버와 직접 통신하는 서버에있는 일종의 맬웨어를 생각했습니다. 오픈 릴레이 정보 : 오픈 릴레이가 없는지 확인하기 위해 수행 한 점검으로 질문을 편집했습니다. 마지막 질문은 고객 컴퓨터 (서버의 메일 계정이 구성되어 있음)의 "건강"에 대해 알지 못하거나 자격 증명 등을 얻은 맬웨어 / 키로거에 감염된 경우
대답하기 어렵습니다

디스크가 싸다. 귀하의 상황에서 1 년 분량의 로그를 보관하는 유효한 사례가 있습니다. syslog 등을 사용하여 서버에서 직접 배송하십시오.
Criggie

답변:


13

제안을 받기 전에 귀하의 서비스 제공자가 귀하에게 말한 내용에 대해 약간의 의견을 남기고 싶습니다.

 Received: from mail.com ([94.130.34.42])
        by smtp-27.iol.local with SMTP
        id itOWeYZ6O42IFitOWe35TR; Tue, 13 Feb 2018 03:54:09 +0100

이것은 94.130.34.42의 역방향 DNS가 mail.com이라는 것을 나타내지 않습니다 . 오히려 SMTP 클라이언트 mail.comHELO(또는 EHLO) 행으로 전송되었음을 나타냅니다 . (잘 구성된 메일 서버는이 연결을 완전히 거부했을 것입니다.하지만 스위스 콤은 아닙니다.)이 줄은 역방향 DNS 항목을 나타내지 않습니다. 그렇다면 괄호 안에 표시되었을 것입니다. 예를 들면 다음과 같습니다.

Received: from mail-io0-f197.google.com (mail-io0-f197.google.com [209.85.223.197])

이 경우 첫 번째 호스트 이름은 메일 서버가 자신과 동일 함을 식별 한 것 EHLO입니다. 두 번째 호스트 이름은 연결 시점에 기록 된 역방향 DNS입니다.

RFC 5321 4.4 절 에는 공식 문법과 함께 Received : 행의 형식이 설명되어 있습니다.

귀하의 경우에는 역방향 DNS가 기록되지 않았습니다. IP 주소에 PTR 레코드가 있으므로 조회하지 않았거나 일시적인 DNS 오류가 있었기 때문일 수 있습니다.


이제 웹 호스팅 서비스를 실행하고 수많은 웹 앱이있는 것으로 보입니다. 이 중 하나가 손상되면 스팸 발송이 시작될 수 있습니다. 이들은 종종 메일을 로컬 메일 스풀이나 포트 587 또는 465의 인증 된 메일 서비스로 전달하지 않고 실제로 메일 서버 인 것처럼 MX 레코드를 조회하고 포트 25에 연결하여 원격 메일 서버에 직접 연결합니다. 합법적 인 웹 앱처럼.

이것을 막는 한 가지 방법은 사용자가 메일 서버 사용자가 아닌 한 포트 25에서 나가는 연결을 방지하는 방화벽 규칙을 구현하는 것입니다. 예를 들면 다음과 같습니다.

iptables -I OUTPUT -m owner ! --uid-owner postfix -m tcp -p tcp --dport 25 -j REJECT

웹 응용 프로그램은 더 이상 원격 SMTP 서버로 직접 메일을 배달 할 수 없지만 로컬 메일 스풀 또는 인증 된 메일 서비스를 사용해야합니다.


답변 주셔서 감사합니다. iptablespostfix와 plesk 사용자가 이메일을 보낼 수 있도록 규칙 을 지정하려면 어떻게해야합니까 (Plesk 패널이 postfix를 통하지 않고 직접 메일을 보낸다고 생각합니다). Postfix를 통해 smtp를 통해 이메일을 보내도록 crondaemon (내 cronjobs)을 구성 할 수도 있습니까? cron 사용자를 iptables에 추가하고 싶지 않습니다 (다른 예외로) 가능한 경우 postfix를 통과하는 메일 트래픽을 허용하는 것이 더 안전합니다. crontab에서 postfix를 사용하여 오류 로그를 보낼 수 있습니까? serverfault에 대한 새로운 질문에 이것을 넣어야합니까?
mfuesslin

Plesk를 사용 하여이 작업을 수행하는 방법을 모르겠습니다. 우리는 여기서 Plesk에 관한 질문을 처리하지 않습니다 .
Michael Hampton

좋아, 그러나 포트 25를 통해 데이터를 보낼 수있는 여러 사용자를 지정하려면 iptables 규칙을 복사하고 다른 사용자와 함께 두 번째 규칙을 추가하거나 한 규칙 내에서 지정해야합니까?
mfuesslin

아마 아닙니다; 사용자 체인을 만들어야한다고 생각합니다.
Michael Hampton

제공된 iptables 규칙에 대한 한 가지 : 사용자 규칙을 설정할 필요가 root없습니까? postfix의 마스터 프로세스는 root대부분의 경우에 의해 실행되기 때문 입니다. 또는 postfix 마스터 프로세스가 postfix-user를 사용하여 전자 메일을 보내거나 작업을 수행하는 하위 프로세스를 생성 합니까? 나는 당신의 iptables 규칙을 시도, 이메일을 전달할 수 없습니다 ... 만약 내가 -user에 ps -ef | grep "postfix"의해 실행되는 일부 하위 프로세스 postfix와 다음에 의해 실행되는 하나의 마스터 프로세스를 볼 수 있습니다 root...
mfuesslin

7

이 시대에 나만의 메일 서버를 만드는 것은 대부분의 경우 잃어버린 전투이며 저렴한 서비스를 찾는 것이 좋습니다. 라고 한..

  • 귀하를 차단 한 서비스 제공자에게가는 로그를보고 의심스러운 것을 찾을 수 있는지 확인하십시오. 누군가가 귀하의 뉴스 레터 구독을 잊고 스팸으로 표시하는 것이 가능하며 종종 발생합니다. 그런 다음 제공자에 따라 아무 잘못도하지 않았더라도 제공자의 블랙리스트에 올라갈 수 있습니다.

  • 대량 메일을 다른 모든 전자 메일에서 두 서버로 분리하십시오.

  • 최소 몇 개월 동안 로그를 몇 주 이상 유지하십시오. 그래서 언제든 어떤 일이 발생하면 연구하십시오.

  • 매일 공급자의 유사한 상황에 대해 로그를 확인하고 매일 또는 더 빨리 조사하십시오. 두 번째 차단 및 전송을 계속 시도하면 악화 될 수 있습니다. 임시 블록에서 영구 블록으로 갈 수 있습니다. 블랙리스트에보고됩니다.

  • 그들이 어떻게 그것을 구현하는지 확실하지 않지만, 많은 공급자가 아웃 바운드 메일 서비스를 위해하는 것은 공급자 / IP가 두 번째로 전자 메일을 차단하면 다른 전자 메일이 전송되지 않는다는 것입니다. 이상적으로는 그런 것을 원합니다. 두 번째 항목은 차단되므로 더 많이 보내면 문제가 악화됩니다.


4
@mfuesslin Mailchimp는 사용하기에 잘못된 플랫폼입니다. Mailchimp는 이메일 마케팅 서비스이며 필요한 것은 거래 이메일 서비스입니다. Mandrill (Mailchimp를 소유 한 사람이 소유)을 살펴보십시오. 25,000 개의 이메일 블록에 대해 월 20 달러입니다. 매우 비싸지 않습니다. 자신의 IP 주소에서 매일이 많은 이메일을 보내면 스팸 상자 비율이 높아져 전투에서 패배합니다. 하루 종일 배달 가능성을 높이기 위해 팀 전체를 고용 할 수는 있지만 거래 서비스를 사용하는 것만 큼 좋지는 않습니다.
SnakeDoc

1
serverfault.com을 사용하는 사람들은 메일 서버를 실행할 수 있어야합니다. 그렇게 어렵지 않습니다. 즉, 메일 서버에 결함이있는 것 같지 않고 스팸을 직접 보내는 일부 손상된 웹 페이지처럼 보입니다.
wurtel

1
@ wurtel은 무언가를하는 방법에 대한 지식을 가지고 있다고해서 그것이 그것을하는 것이 의미가 없다는 것을 의미하지는 않습니다. X / month가 필요한 것을 수행하기 위해 서비스를 찾을 수 있고 스스로 그것을하기 위해 4X / month 가치의 시간 / 노력이 필요한 경우, 실제로 스스로하는 것이 이치에 맞지 않습니다.
Francisco1844

1
@wurtel 가능? 예. 받은 편지함에 일관되게 전달하여 하루에 1500 개 이상의 이메일을 보내시겠습니까? 의문의 여지가 있지만 아마도 아니오.-아무도 당신이 할 수 없다고 말하지 않습니다 ... 단지 잘하고 일관되게 오랫동안 수행하기 위해서는 한 달에 20 달러 이상이들 것입니다 .
SnakeDoc

2
나는 15 년 동안 이러한 서버를 유지 관리하여 여러 도메인에서 매일 수백 개의 메시지와 함께 30 ~ 5,000 개의 메일 목록 메시지를 정기적으로 발송했으며 한 달에 한 시간 이상 (정상 적성 업그레이드 외에)을 거의 사용하지 않습니다. 어쨌든 서버는 여러 웹 사이트를 제공하므로 추가 투자가 필요하지 않습니다. 사람들이 자신이 쉽게 할 수있는 일을하기 위해 서비스 구매를 옹호하는 것이 조금 슬프다. 그 과정에서 약간의 학습으로 아무 문제가 없습니다.
wurtel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.