340 likes | 730 Views
LINUX SECURITY - 메일 보안 -. 네트워크 실험실 김 윤 수. 목 차. SMTP 서버와 클라이언트 Sendmail 보안 기초 Qmail 설치 요약. SMTP 서버와 클라이언트. SMTP 의 메일 처리 과정 - 들어오는 메시지 수신 - 메시지 주소 확인 - 로컬 주소이면 메시지 저장 - 원격 주소이면 메시지 전달. 전자메일의 구조 . 전자메일 헤더. From hskim@daelimrnd.co.kr Thu Jun 29 08:42:27 2000
E N D
LINUX SECURITY- 메일 보안 - 네트워크 실험실 김 윤 수 #
목 차 • SMTP 서버와 클라이언트 • Sendmail보안 기초 • Qmail설치 • 요약 #
SMTP 서버와 클라이언트 • SMTP의 메일 처리 과정 - 들어오는 메시지 수신 - 메시지 주소 확인 - 로컬 주소이면 메시지 저장 - 원격 주소이면 메시지 전달 #
전자메일의 구조 #
전자메일 헤더 From hskim@daelimrnd.co.kr Thu Jun 29 08:42:27 2000 Received: from magpie.daelimrnd.co.kr (magpie.daelimrnd.co.kr [202.30.60.10]) by bomun.kaist.ac.kr (8.10.2/8.10.2) with ESMTP id e5SNgQL21721 for <yskim@bomun.kaist.ac.kr>; Thu, 29 Jun 2000 08:42:26 +0900 (KST) Received: from hskim.daelimrnd.co.kr (dt002.daelimrnd.co.kr [202.30.60.16]) by magpie.daelimrnd.co.kr (8.9.3/8.9.3) with SMTP id JAA27737; Thu, 29 Jun 2000 09:04:11 +0900 (KST) Message-ID: <000801bfe15a$56e94e60$103c1eca@daelimrnd.co.kr> #
SMTP의 보안 • 외부 침입으로부터 서버를 보호하는 일. 외부 공격자가 승인되지 않은 접근을 할 수 없도록 서버를 강화 • 외부 사용자가 메일 서버를 통해 스팸(spam)메일을 보내거나 위조된 메일을 보내는 것 같은 잘못된 사용으로 부터 SMTP 보호 #
sendmail 보안기초 (1) • sendmail의 version #
sendmail보안 기초 (2) • sendmail을 목표로 공격하는 원인 • sendmail은 공개적으로 이용 가능한 서비스이므로 누구나 연결해서 사용 할 수 있다. • Sendmail은 루트권한으로 수행되기때문에 루트 권한을 획득하기 쉽다. • 환경설정이 어려워 설정오류를 기대하고 공격 #
MIME 버퍼 오버플로 버그 (1) • 98년 3사분기 보고 • sendmail 자체에 영향을 미치는 것이 아니라 sendmail이 메일을 전달하는 클라이언트에게 영향을 미친다. 즉 sendmail은 공격대상이 아니라 공격에 이용되는 도구. • MIME은 그림이나 소리, 특정 형식의 텍스트 등 다양한 종류의 데이터를 지원하기 위한 방법으로, MIME헤더에는 어떤 종류의 데이터가 인코딩 되어있는지에대한 정보저장 #
MIME 버퍼 오버플로 버그 (2) • CERT권고안(CERT 권고안 CA 98.10, 1998년 8월11일) – sendmail 8.9.1 - “공격자는 정교하게 제작된 메일을 보냄으로써 공격자가 선택한 코드가 실행될 수 있도록 하고, 경우에 따라서는 메일 클라이언트를 망가뜨릴 수 도 있다. 또한, 운영체제에 따라서 사용자의 권한을 가지고 수행되기 때문에 루트 같은 관리자 계정으로 악의적으로 제작된 메일을 읽게 된다면 시스템에 대한 권한을 얻을 수도 있다.” #
패스워드 파일 / 루트 접근 • sendmail 8.8.4에서는 sendmail이 배달되지 않은 메시지를 /var/tmp/dead.letter 파일끝에 저장한다는 사실과 링크를 이용하여 내부 사용자는 루트 권한을 얻을 수가 있었다. • /var/tmp/dead.letter /etc/passwd • 메시지내용은 사용자계정을 기록하고 도착할 수 없는 메시지를 보내면 새로운 계정기록 #
sendmail 헤더 파싱 DoS공격 • sendmail 헤더 파싱 코드의 버그에 초점 • 많은수의 “To:”헤더를 가진 메시지를 생성함으로써 크래커들은 서버를 정지시킬 수 있는데 sendmail 8.9.2와 그 이전 버전에 영향을 미쳤다. • P.379 잘레브스키의 테스트 코드 • 서버와 연결후에 사용자에게 전자메일을 보내는 일을 반복한다. 특히 전송되는 메시지안에 15,000개의 To:가 있어 sendmail을 정지시키에 되고 서버는 메일 송수신을 거부한다. #
sendmail 서비스 보호 (1) • /etc/mail/access #
실시간 블랙 리스트 관리 (1) • RealTime Blackhole List 스팸을 전송하는 사람들의 목록, sendmail은 동적으로 특정 도메인으로부터 메일을 받을 것인가를 결정. #
실시간 블랙 리스트 관리 (5) • RBL 서비스의 활용 • /etc/sendmail.mc파일에 다음을 추가한다. • - Sendmail Version 8.9 Use • FEATURE(rbl) • - sendmail 8.10 and above • FEATURE(dnsbl) • Then, reconfigure and restart the daemon. #
EXPN과 VRFY기능억제 (1) • SMTP명령어중 EXPN(expand)와 VRFY(verify)는 사용자의 정보를 외부로 유출할수 있다. #
EXPN과 VRFY기능억제 (2) • EXPN(expand)와 VRFY(verify)의 억제 • sendmail.cf 의 다음 부분을 추가하여 기능억제 # privacy flags O PrivacyOption=authwarnings, noexpn, novrfy And Then sendmail Restart!! #
TCP wrapper와 SMTP (1) • Daemon프로세서로 수행하지 않고 inetd의 일부로 사용(단, traffic이 많지 않을 경우) 1. Sendmail 초기화 스크립트 삭제 /etc/rc.d/rc3.d/S80sendmail or /etc/rc.d/rc5.d/S80sendmail 2. /etc/inetd.conf에 sendmail메일에 대한 항목 추가 smtp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/sendmail –bD 3. inetd설정파일 다시 읽도록 한다. 4. Tcp wrapper제어 파일인 /etc/hosts.allow, /etc/hosts.deny 파일설정 #
TCP wrapper와 SMTP (2) • TCP wrapper설정예 (1) games.com, toys.com, weapons.com의 요구만 수용 - /etc/hosts.deny deny:deny - /etc/hosts.allow ALL:LOCAL, games.com, toys.com, weapons.com • TCP wrapper설정예 (2) badpeople.com과 evilspam.com에서 오는 요구를 제외하고는 누구나 연결 가능 - /etc/hosts.deny ALL:badpeople.com, evilspam.com - /etc/hosts.allow ALL:ALL #
Qmail의 설치 (1) • http://www.qmail.org • qmail-1.03.tar.gz • Qmail의 특징 - 안전성 - 속도 - 신뢰성 - 쉬운 가상도메인 - ezmlm을 이용한 이용자가 제어하는 메일링 리스트. #
Qmail의 설치 (2) • source DownLoad qmail-1.03.tar.gz • tar zxvf qmail-1.03.tar.gz • 몇 개의 사용자 계정과 그룹 생성 • cd qmail-1.03 • Make setup check # groupadd nofiles # useradd -g nofiles -d /var/qmail/alias -s /bin/false alias # useradd -g nofiles -d /var/qmail -s /bin/false qmaild # useradd -g nofiles -d /var/qmail -s /bin/false qmaill # useradd -g nofiles -d /var/qmail -s /bin/false qmailp # groupadd qmail # useradd -g qmail -d /var/qmail -s /bin/false qmailq # useradd -g qmail -d /var/qmail -s /bin/false qmailr # useradd -g qmail -d /var/qmail -s /bin/false qmails #
Qmail의 설치 (3) • [root@yskim qmail-1.03]# ./config • [root@yskim qmail-1.03]# (cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root) • [root@yskim qmail-1.03]# chmod 644 ~alias/.qmail* • Sendmail 삭제 # mv /usr/lib/sendmail /usr/lib/sendmail.old # mv /usr/sbin/sendmail /usr/sbin/sendmail.old # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail # killall –9 sendmail #
Qmail의 설치 (4) • /etc/inetd.conf 추가 stmp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd • [root@yskim qmail-1.03]# cp /var/qmail/boot/proc /var/qmail/rc • [root@yskim qmail-1.03]# csh –cf ‘/var/qmail/rc &’ • 자동스크립트에 추가 #
Qmail 관련문서들 • http://www.qmail.org/ • http://kldp.org/qmail/ • Michael Samuel의Qmail문서화 프로젝트 http://qmail-docs.surfdirect.com.au • David Sill의 LWQ(Life with Qmail) http://Web.InfoAve.Net/~dsill/lwq.html • Qmail에서 RBL을 지원하도록 하기 위한 페이지 http://www.qmail.org/rbl/ #
요 약 • 중계기능을 막고 계정 해킹을 방지하기 우해 MTA를 설정함으로써 네트워크와 서버 그리고 사용자들을 보호 할 수 있다. Sendmail은 높은 성능의SMTP서비스를 제공하고, 현존하는 리눅스/유닉스 유틸리티와 호환성이 잘 이루어지는 반면에, Qmail은 작지만 빠르고 안전하다. #