본문 바로가기
I T/Linux

sendmail 보안설정

by 루솨 2015. 8. 27.




메일서버 smtp인증

 

telnet localhost 25 


ehlo localhost

 

“AUTH LOGIN PLAIN”없을 경우 /etc/sendmail.mc에서 아래에서 맨앞에 dnl만 삭제. (52,53줄)

 

dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

 

dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

 

 

 

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 해 준 후 266줄에

 

O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA  이것을 0.0.0.0으로 바꿔주거나 주석하고 아래와 같이 처리

 

O DaemonPortOptions=Name=MTA로 변경. 


그리고 인증을 담당하는 saslauthd를 start해준다.

 

 

 

O MaxMessageSize=0 주석제거하고 5024000으로 해주면 5M로 변경된다. (보내는 용량)

 

 

 

Mlocal,         P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,

 

                T=DNS/RFC822/X-Unix,

 

부분에 T앞부분에 M=5024000, 추가 5M로 받는 양을 제한한다.

 

 

 

O MaxRecipientsPerMessage=0를 변경해주면 (주석제거) 한번에 보내는 메일 개수가 제한된다.

 

 

 

O SmtpGreetingMessage=$j Sendmail $v/$Z; $b 항목을 O SmtpGreetingMessage=$j 임의문자 로 변경해주면 telnet 으로 접속 시 센드메일 버전정보가 노출되지 않는다(주석제거)

 

 

 

/etc/mail/helpfile 안에 불필요한 정보를 삭제 한다.

 

 

 

큐잉서버

 

 

 

Mx 10 mail.도메인 20mail2.도메인 30mail3.도메인 순으로 차순 적용하여 다른메일서버를 지정한다(제일 낮은 수의 메일서버가 첫번째) mail2.도메인 과 mail.3도메인인 서버에는 /etc/mail/access 에 도메인 RELAY만 추가 해주면 된다. 절대로 /etc/local-host-name에 도메인이 들어가면 안된다(로컬로 인식됨) 그리고 /etc/local-host-name에는 mail2.도메인 및 mail3.도메인(각서버의 호스트와도메인)을 적어준다. 이리하면 10인 서버가 다운되어 다음 서버에게 메일이 전달되었다가 10인서버가 정상적으로 운영되면 다시 배달을 해준다.

 

makemap hash /etc/mail/access < /etc/mail/access를 실행해서 db로 만든다.

 

 

 

clamav설치 및 연동

 

yum install sendmail-devel* 및 sendmail-cf* 설치

 

 

 

MILTER기능을 사용할 수 있어야 함.

 

sendmail ?d0.10 < /dev/null | grep MILTER 확인 시 MILTER 만 나오면 됨.

 

 

 

tar zxvfp clamav-xx.tar.tg  adduser clamav  ./configure --eanble-milter --prefix=/usr/local/clamav

 

make; make install 


 

 

sendmail.cf 에서 


O InputMailFilters=clmilter

 

Xclmilter, S=local:/var/run/clamav/clmilter.sock,F=,T=S:4m:R:4m

 

mkdir /var/run/clamav  chown clamav.clamav /var/run/clamav

 

clamav업데이트는 /usr/local/clamav/etc/freshclam.conf를 열어서 Example 주석해지 하면 된다.

 

바이러스 정보 업데이트는 .DatabaseMirror db.kr.clamav.net으로 하는게 한국에서는 빠르다.

 

 

 

이후 freshclam실행하면 최신 정보로 업데이트 함.

 

(/etc/cron.hourly/ 디렉토리에 아래와 같이 스크립트 파일일로 만들어 실행하면 된다.

 

#!/bin/sh

 

/usr/local/clamab/bin/freshclam --quiet

 

업데이트에 대한 로그는

 

touch /var/log/clam-update.log

 

chmod 600 /var/log/clam-update.log

 

chown clamav /var/log/clam-update.log

 

 

 

/usr/local/clamav/bin/freshclam --log=/var/log/clam-update.log

 

 

 

Clamd.conf설정은 Example주석해제 하면된다.

 

LogSyslog yes(로그 기록)

 

StreamMaxLength 100M(데이터 사이즈가100M초과 시 커넥션 끊게 됨.)

 

User clamav (clamav작동할 유저 지정

 

PhishingSignatures no / PhishingScanURLs no(피싱 탐지?)no를 추천함

 

ArchiveMaxFileSize 1M (바이러스 검사를 체크할 파일 사이즈 1M추천)

 

Clamuko(실시간 감시 기능)

 

 

 

clamav는 바이러스가 잇으면 반송하는데 대부분 메일주소가 위조되어있으니 clamav-milter --noreject

 

또는 ?N 해주면 반송하지 않는다. (반송해봤자 서버 부하만 유발할 뿐이니..)

 

-C 해주면 정상메일에 대한 로그는 남지 않는다.

 

-Q 메일주소 해주면 바이러스 메일은 삭제 하지 않고 지정한 메일주소로 보내준다.

 

이후 netstat -lnp해서 clamav-milter가 소켓 형태로 떠잇으면 정상설치 된 것이다.

 

 

 

큐잉 서버와 clamav를 활용해서 바이러스웰 서버를 만들 수 있다.

 

(clamav설치 한 서버를 mx0등으로 제일 빠르게 해서 한번 걸러주기.)

 

 

 

스템어쎄신설치

 

[root@localhost Mail-SpamAssassin-3.1.2]#perl -MCPAN -e shell

 

 

 

 cpan> o conf prerequisites_policy follow

 

     prerequisites_policy follow

 

 

 

 cpan> install Digest::SHA1

 

 cpan> install  Net::DNS

 

 cpan> install  HTML::Parser

 

 cpan> install  LWP

 

 cpan> install  HTTP::Date

 

 cpan> install  IO::Zlib

 

 cpan> install  Archive:Tar 


 cpan> install  ExtUtils::MakeMaker 기본적으로 포함되어있음 빼고해도될 듯

 

 cpan> install  File::Spec 기본적으로 포함되어있음 빼고해도될 듯

 

 cpan> install  Pod::Usage 기본적으로 포함되어있음 빼고해도될 듯

 

 cpan> install  Sys::Syslog

 

 cpan> install  Mail::SPF::Query

 

 cpan> install  IP::Country::Fast

 

 cpan> install  Razor2

 

 cpan> install  Net::Ident

 

 cpan> install  IO::Socket::INET6

 

 cpan> install  IO::Socket::SSL

 

 cpan> install  Time::HiRes

 

 cpan> install  DBI

 

 cpan> install  Storable

 

 cpan> install  DB_File

 

 cpan> install  MIME::Base64

 

 cpan> install  Compress::Zlib

 

 cpan> install  Time::HiRes

 

 cpan> install  Mail::DKIM

 

 cpan> install  Mail::DomainKeys

 

 cpan> install  Encode::Detect

 

 cpan> install  Mail::SpamAssassin

 

 

 

만약 스펨어쎄신 설치가 잘안되면 홈페이지에서 소스 받아서 perl Makefile.PL   make; make install해줘도 된다.

 

sa-update --no-gpg를 해주면 /var/lib/spamassassin/디렉토리아 다운로드되므로 이룰을 /usr/share/spamassassin/으로 옮기고 해당 디렉토리는 삭제 해준다. --D옵션을 추가해주면 보다 상세한 정보를 확인 할 수 있다.

 

 

 

유저홈에 .spamassassin파일로 각 유저별로 설정을 다르게 할 수 있다.

 

설정방법은 검색 해 볼 것.. (바이러스웰서버에 스펨어쎄신까지 조합되면.. 금상첨화.)

 

스팸학습

 

sa-learn --spam --mbox /var/spool/mail/spam-mail

 

정상학습

 

sa-learn --ham --mbox /var/spool/mail/ham-mail

 

 

 

/etc/init.d/spamd start 


 

 

(메일허브)

 

sendmail.cf 안에 DS 라는 부분을 찾아서 IP를 적는다. DS192.168.1.1(메일허브 서버의 IP/도메인으로 해줘도 된다.)형식으로 해준 후 메일허브 서버는 /etc/access에 연결되는 서버들의 ip를 RELAY해준다.

 

 

 

spamass-milter 설치 (구글 찾아보고 설치 ? 보내는 메일 스펨체크)



< 퍼옴 > http://blog.topmania.com/?tag=sendmail-%EB%B3%B4%EC%95%88%EC%84%A4%EC%A0%95