■ sendmail 의 제한 셀 'smrsh'/etc/smrsh : smrsh는 sendmail이 실행할 수 있는 프로그램의 범위를 smrsh의 디렉토리에 정의된 프로그램만 사용할 수 있도록 효과적으로 제한한다.참고) /bin/sh를 대체하기 위한 프로그램으로 나쁜 목적을 가진 사용자가 aliases나 forward파일을 이용하지 않고도 sendmail을 이용할 수 있다해도 smrsh가 그 사용자가 실행할 수 있는 일련의 프로그램을 제한한다. # cd /etc/smrsh # ln -s /bin/mail mail # ln -s /usr/bin/procmail procmail : 위 설정은 mail or procmail 프로그램 사용자의 .forward 파일이나 'program'문법을 사용하는 'aliases'를 이용해서 실행할 수 있도록 허용(procmail은 허브서버에만 필요하고 로컬의 클라이언트 메일서버에는 필요없다.)그런다음 /etc/mail/sendmail.cf에서 Mprog 부분에 P=/bin/sh를 이줄을 P=/usr/sbin/smrsh A=sh A=/smrsh로 변경해주고 /etc/rc.d/init.d/sendmail restart■ 디렉토리 접근허가 변경:# chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue# chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue# chmod -R go-w /etc/mail그리고 /etc/mail/* 디렉토리의 설정파일은 관리자만 읽고 쓰기 가능하도록 하는 것이 좋다# chmod 600 /etc/mail/* # chmod 600 /etc/aliases# chmod 700 /etc/rc.d/init.d/sendmail■ 중요한 sendmail 파일에 불변설정/etc/mail/* 파일을 chattr로 변경불가능한 상태로 만든다.chattr +i /etc/mail/*chattr +i /etc/aliases■ vi /etc/aliases 파일에서 decode 앨리어스를 삭제하고 그 외에 자신이 직접 설치하지 않은 프로그램을 실행하는 모든 앨리어스를 주석처리나 삭제한다. ※ decode 앨리어스는 uudecode프로그램을 root 권한으로 실행하여 공격자가 원하는 파일을 생성한다.aliases 변경후 newaliases를 해주어야면 변경된 것이 적용된다.■ SMTP 환영 메시지vi /etc/mail/sendmail.cf변경전) SmtpGreetingMessage=$j Sendmail $v/$z; $b변경전) SmtpGreetingMessage=$j $j도 없애면 이것이 센드메일인지도 알수 없다...이것은 접속자에게 보여주는 배너로 sendmail 버전정보를 보여주지 않는다. 혹은 다른 경고 메시지를 보여줄수도 있다.■ 메일참조 수신자수의 제한메일 참조로 보낼수 있는 수신자를 100으로 제한하고 있는데 30명으로 변경하는 것이 스팸메일을 낮은 수준이나마 막을 수 있다.#O MaxRecipientsPerMessage=100O MaxRecipientsPerMessage=30■ MIME 버퍼 오버플로우 메일 클라이언트들( 아웃룩이나 mutt같은 )이 MIME버퍼 오버플로우에 취약점을 가지고 있어서 송신자가 메일을 통해 임의의 명령을 수신자의 머신에서 수행시킬 수가 있다는 것이 보고되었음. 이런 공격을 막는 가장 좋은 방법은 취약점을 가지는 메일 클라이언트 프로그램들을 모두 패치 하는 것. 센드메일과 같은 MTA수준에서 버퍼 오버 플로우를 일으킬 가능성이 있는 MIME헤더를 잘라내어 사전에 방지하는 방법이 제안되었음. 이러한 부가적인 기능을 sendmail 버전 8.9.1에서는 패치 형식으로 지원하고 있으며, 그 이후부터는 센드메일 배포본에 기본적으로 포함되어 제공되고 있음. ※ imap pop3가 text 그대로 패킷을 전송하기 때문에 안전하지 않다는 것을 알아야 한다. 그러므로 pop보다 최신의 프로토콜인 imap을 쓰기를 권장한다. 이것도 pop와 설정하는 방법은 같다. /etc/xinetd.d/imap # default: on # description: it's for imap protocol # normal, unencrypted usernames and passwords for authentication. service imap2 { disable = no socket_type = stream wait = no user = root server = /usr/sbin/imapd } /etc/services에서 imap설정 부분에 주석이 있다면 주석을 없앤다. 다음의 명령어로 xinetd를 재실행한다. #/etc/rc.d/init.d/xinetd restart pop가 설치되어 있다면 imap도 설치되어 있을 것이다. ■ 보안을 위한 기타 설정 보안을 위해 가장 좋은 것은 외부로부터의 접근을 차단하는 것이다. /etc/hosts.deny의 설정을 바꾼다. 다음과 같이 적어준다. # # hosts.deny This file describes the names of the hosts which are # *not* allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. # # The portmap line is redundant, but it is left to remind you that # the new secure portmap uses hosts.deny and hosts.allow. In particular # you should know that NFS uses portmap! in.telnetd, in.ftpd: ALL EXCEPT IP주소 ->이 부분에 자신의 클라이언트 컴퓨터 텔넷을 접속해 사용하는 컴퓨터의 아이피를 적는다. 리눅스 컴퓨터에서만 작업한다면 그냥 ALL로 한다. 그리고 기타 사용하지 않는 서비스들은 /etc/xinetd.d/ 디렉토리에서 지워주거나 퍼미션을 000으로 해주고 /etc/services 에서 주석처리 한다. ■ 사용자의 메일용량 제한/var 에 quata를 줌으로써 제한을 할 수도 있고설치할 때 /var/spool/mail을 하나의 파티션으로 잡고 난후 여기에 quota를 줄 수 있다.quata의 소유권은 root이고 이외의 다른사람은 읽고 쓰기가 불가능하게 해야한다.#touch /partition/quota.user #chmod 600 /partition/quota.user #chmod a+x /partition/quota.user 라고 합니다. 이줄이 실행안하면 부팅할때 quota가 안켜진다. edquota -p stduser `awk -F: '$3 > 499 {print $1}' /etc/passwd` ※ 메일크기제한 #maxinum message size MaxMessagesize=30000000 MaxQueueRunSize=30000000■ access 파일센드메일의 버전이 8.9로 올라가면서 스팸 메일 차단과 관련하여 여러가지 설정들이 새롭게 추가되었음. 스팸 DB의 일종인 access database라는 것을 이용함으로써 메일서버로 하여금 특정 도메인으로부터 오는 메일들을 받지 않도록 할 수가 있게 됨. 따라서 access 파일을 편집함으로써 외부에서 오는 메일을 자신의 메일서버로 접근제한과 다른 메일서버로의 전송 제한, relay허용을 설정할 수 있음.#####모든 간격은 Tab key을 사용한다는 것을 잊지 말기 바란다.###### spammer@aol.com REJECT cyberspammer.com REJECT sendmail.org OK 141.223 RELAY 첫번째 필드는 이메일 주소, 도메인 이름, IP번호 등이 올 수 있음. 두번째 필드는 해당 주소로부터 오는 메일을 어떻게 처리할 것인가를 결정하는데 사용하는 필드. 위의 예는 spammer@aol.com으로부터 오는 메일과 cybersapmmer.com도메인으로부터 오는 모든 메일을 거절하고 sendmail.org도메인으로부터 오는 모든 메일은 받아 들임. 마지막의 것은 IP주소가 141.223.xx.xx인 호스트에서 요청하는 릴레이는 허가한다는 뜻. OK 값은 다른 어떤 값에도 우선함. 위의 예에서 joe@cyberspammer.com이란 주소를 가진 메일에 OK값이 붙어 있는 라인이 더 추가 되었을 경우, 센드메일은 joe@cyberspammer.com으로부터 오는 메일은 받아들이지만 cyberspammer.com에 속한 joe가 아닌 다른 유저에게서 오는 메일은 받아 들이지 않음. make cleanmake sendmail restart