SMTP 서비스(sendmail) 점검

SMTP(Simple Mail Transfer Protocol)는 전자 메일을 보내기 위한 프로토콜(25번 포트)로, 전세계적으로 표준으로 채택되어 있습니다. SMTP는 주로 메일 클라이언트에서 메일 서버로 메일을 전송하는 데 사용됩니다.

점검 내용
  • 취약한 버전의 Sendmail 서비스 이용 여부 점검
  • SMTP 서비스 사용 시, SMTP 서버의 릴레이 기능 제한 여부 점검
  • SMTP 서비스 사용 시, 일반 사용자의 q 옵션 제한 여부 점검
  • SMTP 서비스 사용 시, vrfy와 expn 명령어 사용 금지 설정 여부 점검
점검 목적
  • Sendmail 서비스 사용 목적 검토 및 취약점이 없는 버전의 사용 유무 점검으로 최적화된 Sendmail 서비스의 운영
  • 스팸 메일 서버로의 악용방지 및 서버 과부하의 방지를 위함
  • 일반사용자의 q 옵션을 제한하여 Sendmail 설정 및 메일큐를 강제적으로 drop 시킬 수 없게 하여 비인가자에 의한 SMTP 서비스 오류 방지
  • SMTP 서비스의 expn, vrfy 명령을 통한 정보 유출을 막기 위하여 두 명령어를 사용하지 못하게 옵션을 설정해야함
보안 위협
  • 취약점이 발견된 Sendmail 버전의 경우 버퍼 오버플로우(Buffer Overflow) 공격에 의한 시스템 권한 획득 및 주요 정보 요출 가능성이 있음
  • SMTP 서버의 릴레이 기능을 제한하지 않는 경우, 악의적인 사용목적을 가진 사용자들이 스팸메일 서버로 사용하거나 Dos공격의 대상이 될 수 있음
  • 일반 사용자가 q 옵션을 이용해서 메일큐, Sendmail 설정을 보거나 메일큐를 강제적으로 drop 시킬 수 있어 악의적으로 SMTP 서버의 오류를 발생시킬 수 있음
  • expn, vrfy 명령어를 통하여 특정 사용자 계정의 존재 유무를 알 수 있고, 사용자의 정보를 외부로 유출 할 수 있음
점검 대상
  • Linux : Rocky 9
판단 기준
  • 양호 :
    – SMTP 서비스를 사용하지 않거나 Sendmail 버전이 최신 버전인 경우
    – SMTP 서비스를 사용하지 않거나 릴레이 제한이 설정되어 있는 경우
    – SMTP 서비스 미사용 또는, 일반 사용자의 Sendmail 실행 방지가 설정된 경우
    – SMTP 서비스 미사용 또는, noexpn, novrfy 옵션이 설정되어 있는 경우
  • 취약 :
    – Sendmail 서비스가 필요하지 않으면서 활성화한 경우
    – SMTP 서비스 사용 시, Sendmail 버전이 최신 버전이 아닌 경우
    – SMTP 서비스 사용 시, 릴레이 제한이 설정되어 있지 않은 경우
    – SMTP 서비스 사용 시, 일반 사용자의 Sendmail 실행 방지가 설정되지 않은 경우
    – SMTP 서비스 사용 시, noexpn, novrfy 옵션이 설정되어 있지 않는 경우
조치 방법
  1. Sendmail 서비스를 사용하지 않을 경우 서비스 중지
    • senmail 패키지 설치 여부 점검
      dnf list installed sendmail
      
    • senmail 패키지가 설치되어 있다면 서비스 중지
      systemctl status sendmail.service
      systemctl disable --now sendmail.service
      
  2. Sendmail 서비스를 사용하는 경우, 패치 관리 정책을 수립하여 주기적으로 패치 적용
  3. Sendmail 서비스를 사용하는 경우, 릴레이 방지 설정 또는 릴레이 대상 접근 제어
    • 릴레이 방지 설정
      [root@rocky9u2 ~]# vi /etc/mail/sendmail.cf
      R$* $#error $@ 5.7.1 $: "550 Relaying denied"
    • 릴레이 대상 접근 제어 및 DB 파일 생성
      [root@rocky9u2 ~]# vi /etc/mail/access
      #Connect:domain.com (이메일을 송신하는 시스템의 IP 주소나 도메인을 지정) #From:user@domain.com (이메일의 송신자를 지정) #To:user@domain.com (이메일의 수신자를 지정) #RELAY (특정 호스트 혹은 도메인의 접근 허가) #REJECT (거부 메세지와 함께 메일 거부) #DISCARD (거부 메세지를 보내지 않고 메일 거부) #OK (DNS 조회가 안 되는 경우에도 메일을 허가) Connect:10.1 OK Connect:127.0.0.1 RELAY Connect:friend.domain OK Connect:from.domain RELAY From:spammer@spam.com REJECT To:user@domain.com RELAY
      [root@rocky9u2 ~]# makemap hash /etc/mail/access < /etc/mail/access
  4. Sendmail 서비스를 사용하는 경우, 일반 사용자의 q 옵션 제한
    • O PrivacyOptions= 설정 부분에 restrictqrun 옵션 추가
      [root@rocky9u2 ~]# vi /etc/mail/sendmail.cf
      O PrivacyOptions=authwarnings,novrfy,noexpn,restrictqrun
  5. Sendmail 서비스를 사용하는 경우, 사용자 정보의 외부 유출 방징
    • O PrivacyOptions= 설정 부분에 noexpn, novrfy 옵션 추가
      [root@rocky9u2 ~]# vi /etc/mail/sendmail.cf
      O PrivacyOptions=authwarnings,novrfy,noexpn,restrictqrun
◁ 웹 서비스(httpd) 점검 | automount 데몬 제거(자동 마운팅) ▷