Download presentation
Presentation is loading. Please wait.
1
LINUX SECURITY - 메일 보안 - 네트워크 실험실 김 윤 수 #
2
목 차 SMTP 서버와 클라이언트 Sendmail보안 기초 Qmail설치 요약 #
3
SMTP 서버와 클라이언트 SMTP의 메일 처리 과정 - 들어오는 메시지 수신 - 메시지 주소 확인
- 로컬 주소이면 메시지 저장 - 원격 주소이면 메시지 전달 #
4
전자메일의 구조 단순, 객체지향적, 분산환경의 응용에 적합, 인터프리터, 안전, 구조중립, 이식성, 높은 성능, 다중 쓰레드, 동적 견고(포인터X, garbage Collection, 엄격한 형검사, 실시간 에러 처리) 컴파일에 의해 바이트 코드로 변환되고 실행시에 인터프리터에 의해 해석되어 처리. #
5
전자메일 헤더 From hskim@daelimrnd.co.kr Thu Jun 29 08:42:27 2000
Received: from magpie.daelimrnd.co.kr (magpie.daelimrnd.co.kr [ ]) by bomun.kaist.ac.kr (8.10.2/8.10.2) with ESMTP id e5SNgQL21721 for Thu, 29 Jun :42: (KST) Received: from hskim.daelimrnd.co.kr (dt002.daelimrnd.co.kr [ ]) by magpie.daelimrnd.co.kr (8.9.3/8.9.3) with SMTP id JAA27737; Thu, 29 Jun :04: (KST) Message-ID: 단순, 객체지향적, 분산환경의 응용에 적합, 인터프리터, 안전, 구조중립, 이식성, 높은 성능, 다중 쓰레드, 동적 견고(포인터X, garbage Collection, 엄격한 형검사, 실시간 에러 처리) 컴파일에 의해 바이트 코드로 변환되고 실행시에 인터프리터에 의해 해석되어 처리. #
6
SMTP 명령어 (1) 명 령 어 목 적 DATA 메시지 본문을 입력하도록 한다. DATA 명령 다음줄부터 입력하고 마지막 줄에 점(.)을 입력하면 메시지 입력이 끝난다. EXPAND 사용자의 메일 계정을 출력하고 그룹 계정일때는 그룹 멤버의 모든 메일 계정을 출력한다. HELO(HELLO) SMTP 세션을 초기화 하고 식별할 수 있는 데이터를 교환한다. HELP 도움말을 출력한다. MAIL 메일 작업의 초기화 QUIT 현재세션을 종료하고 연결을 끊는다. RCPT (수신자) 수신자를 명시한다. RESET 현재 작업을 중지한다. VRFY 사용자명을 확인 단순, 객체지향적, 분산환경의 응용에 적합, 인터프리터, 안전, 구조중립, 이식성, 높은 성능, 다중 쓰레드, 동적 견고(포인터X, garbage Collection, 엄격한 형검사, 실시간 에러 처리) 컴파일에 의해 바이트 코드로 변환되고 실행시에 인터프리터에 의해 해석되어 처리. #
7
SMTP 명령어 (2) 바이트 코드는 클래스 로더에 의해 로드되며, 바이트 코드 검증기는 프로그램이 수행되기 전에 부적절한 클래스 접근이나 스택의 오버 플로우, 부적절한 형변환을 검사한다. #
8
SMTP의 보안 외부 침입으로부터 서버를 보호하는 일. 외부 공격자가 승인되지 않은 접근을 할 수 없도록 서버를 강화
외부 사용자가 메일 서버를 통해 스팸(spam)메일을 보내거나 위조된 메일을 보내는 것 같은 잘못된 사용으로 부터 SMTP 보호 #
9
sendmail 보안기초 (1) sendmail의 version #
10
sendmail보안 기초 (2) sendmail을 목표로 공격하는 원인
환경설정이 어려워 설정오류를 기대하고 공격 컨텐트(Content) 핸들러: 새로운 형식의 파일들을 전송 받을때 사용 내용에 관한 정보(MIME형식) plain/text, text/html.. 프로토콜 핸들러:기존의 프로토콜 이외의 프로토콜을 처리 가능 #
11
MIME 버퍼 오버플로 버그 (1) 98년 3사분기 보고
sendmail 자체에 영향을 미치는 것이 아니라 sendmail이 메일을 전달하는 클라이언트에게 영향을 미친다. 즉 sendmail은 공격대상이 아니라 공격에 이용되는 도구. MIME은 그림이나 소리, 특정 형식의 텍스트 등 다양한 종류의 데이터를 지원하기 위한 방법으로, MIME헤더에는 어떤 종류의 데이터가 인코딩 되어있는지에대한 정보저장 #
12
MIME 버퍼 오버플로 버그 (2) CERT권고안(CERT 권고안 CA 98.10, 1998년 8월11일) – sendmail “공격자는 정교하게 제작된 메일을 보냄으로써 공격자가 선택한 코드가 실행될 수 있도록 하고, 경우에 따라서는 메일 클라이언트를 망가뜨릴 수 도 있다. 또한, 운영체제에 따라서 사용자의 권한을 가지고 수행되기 때문에 루트 같은 관리자 계정으로 악의적으로 제작된 메일을 읽게 된다면 시스템에 대한 권한을 얻을 수도 있다.” #
13
패스워드 파일 / 루트 접근 sendmail 8.8.4에서는 sendmail이 배달되지 않은 메시지를 /var/tmp/dead.letter 파일끝에 저장한다는 사실과 링크를 이용하여 내부 사용자는 루트 권한을 얻을 수가 있었다. /var/tmp/dead.letter /etc/passwd 메시지내용은 사용자계정을 기록하고 도착할 수 없는 메시지를 보내면 새로운 계정기록 #
14
sendmail 헤더 파싱 DoS공격 sendmail 헤더 파싱 코드의 버그에 초점
많은수의 “To:”헤더를 가진 메시지를 생성함으로써 크래커들은 서버를 정지시킬 수 있는데 sendmail 8.9.2와 그 이전 버전에 영향을 미쳤다. P.379 잘레브스키의 테스트 코드 서버와 연결후에 사용자에게 전자메일을 보내는 일을 반복한다. 특히 전송되는 메시지안에 15,000개의 To:가 있어 sendmail을 정지시키에 되고 서버는 메일 송수신을 거부한다. #
15
sendmail 서비스 보호 (1) /etc/mail/access #
16
sendmail 서비스 보호 (2) #
17
sendmail 서비스 보호 (3) #
18
실시간 블랙 리스트 관리 (1) RealTime Blackhole List
스팸을 전송하는 사람들의 목록, sendmail은 동적으로 특정 도메인으로부터 메일을 받을 것인가를 결정. #
19
실시간 블랙 리스트 관리 (2) #
20
실시간 블랙 리스트 관리 (3) #
21
실시간 블랙 리스트 관리 (4) #
22
실시간 블랙 리스트 관리 (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. #
23
EXPN과 VRFY기능억제 (1) SMTP명령어중 EXPN(expand)와 VRFY(verify)는 사용자의 정보를 외부로 유출할수 있다. #
24
EXPN과 VRFY기능억제 (2) EXPN(expand)와 VRFY(verify)의 억제
sendmail.cf 의 다음 부분을 추가하여 기능억제 # privacy flags O PrivacyOption=authwarnings, noexpn, novrfy And Then sendmail Restart!! #
25
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 파일설정 #
26
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에서 오는 요구를 제외하고는 누구나 연결 가능 ALL:badpeople.com, evilspam.com ALL:ALL #
27
Qmail의 설치 (1) http://www.qmail.org qmail-1.03.tar.gz Qmail의 특징 - 안전성
- 속도 - 신뢰성 - 쉬운 가상도메인 - ezmlm을 이용한 이용자가 제어하는 메일링 리스트. #
28
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 #
29
Qmail의 설치 (3) [root@yskim qmail-1.03]# ./config
qmail-1.03]# (cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root) 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 #
30
Qmail의 설치 (4) /etc/inetd.conf 추가
stmp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd qmail-1.03]# cp /var/qmail/boot/proc /var/qmail/rc qmail-1.03]# csh –cf ‘/var/qmail/rc &’ 자동스크립트에 추가 #
31
Qmail의 설치 (5) #
32
Qmail의 설치 (6) #
33
Qmail 관련문서들 http://www.qmail.org/ http://kldp.org/qmail/
Michael Samuel의Qmail문서화 프로젝트 David Sill의 LWQ(Life with Qmail) Qmail에서 RBL을 지원하도록 하기 위한 페이지 #
34
요 약 중계기능을 막고 계정 해킹을 방지하기 우해 MTA를 설정함으로써 네트워크와 서버 그리고 사용자들을 보호 할 수 있다. Sendmail은 높은 성능의SMTP서비스를 제공하고, 현존하는 리눅스/유닉스 유틸리티와 호환성이 잘 이루어지는 반면에, Qmail은 작지만 빠르고 안전하다. #
Similar presentations