Document 7691622

Download Report

Transcript Document 7691622

LINUX SECURITY
- 메일 보안 -
네트워크 실험실 김 윤 수
2020-04-27
Computer Network Lab.
#
1
목




차
SMTP 서버와 클라이언트
Sendmail보안 기초
Qmail설치
요약
2020-04-27
Computer Network Lab.
#
2
 SMTP 서버와 클라이언트
 SMTP의 메일 처리 과정
- 들어오는 메시지 수신
- 메시지 주소 확인
- 로컬 주소이면 메시지 저장
- 원격 주소이면 메시지 전달
2020-04-27
Computer Network Lab.
#
3
 전자메일의 구조
2020-04-27
Computer Network Lab.
#
4
 전자메일 헤더
From [email protected] 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 <[email protected]>; 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: <[email protected]>
2020-04-27
Computer Network Lab.
#
5
 SMTP 명령어 (1)
명
령
어
목
적
DATA
메시지 본문을 입력하도록 한다. DATA 명령 다음줄
부터 입력하고 마지막 줄에 점(.)을 입력하면 메시지
입력이 끝난다.
EXPAND
사용자의 메일 계정을 출력하고 그룹 계정일때는 그
룹 멤버의 모든 메일 계정을 출력한다.
HELO(HELLO)
SMTP 세션을 초기화 하고 식별할 수 있는 데이터를
교환한다.
HELP
도움말을 출력한다.
MAIL
메일 작업의 초기화
QUIT
현재세션을 종료하고 연결을 끊는다.
RCPT (수신자)
수신자를 명시한다.
RESET
현재 작업을 중지한다.
VRFY
사용자명을 확인
2020-04-27
Computer Network Lab.
#
6
 SMTP 명령어 (2)
2020-04-27
Computer Network Lab.
#
7
 SMTP의 보안
 외부 침입으로부터 서버를 보호하는 일. 외부 공격자가
승인되지 않은 접근을 할 수 없도록 서버를 강화
 외부 사용자가 메일 서버를 통해 스팸(spam)메일
을 보내거나 위조된 메일을 보내는 것 같은 잘못된
사용으로 부터 SMTP 보호
2020-04-27
Computer Network Lab.
#
8
 sendmail 보안기초 (1)
 sendmail의 version
2020-04-27
Computer Network Lab.
#
9
 sendmail보안 기초 (2)
 sendmail을 목표로 공격하는 원인
- sendmail은 공개적으로 이용 가능한 서비스이므
로 누구나 연결해서 사용 할 수 있다.
- Sendmail은 루트권한으로 수행되기때문에 루트
권한을 획득하기 쉽다.
- 환경설정이 어려워 설정오류를 기대하고 공격
2020-04-27
Computer Network Lab.
#
10
 MIME 버퍼 오버플로 버그 (1)
 98년 3사분기 보고
 sendmail 자체에 영향을 미치는 것이 아니라
sendmail이 메일을 전달하는 클라이언트에게 영향
을 미친다. 즉 sendmail은 공격대상이 아니라 공
격에 이용되는 도구.
 MIME은 그림이나 소리, 특정 형식의 텍스트 등 다
양한 종류의 데이터를 지원하기 위한 방법으로,
MIME헤더에는 어떤 종류의 데이터가 인코딩 되어있
는지에대한 정보저장
2020-04-27
Computer Network Lab.
#
11
 MIME 버퍼 오버플로 버그 (2)
 CERT권고안(CERT 권고안 CA 98.10, 1998년 8
월11일) – sendmail 8.9.1 “공격자는 정교하게 제작된 메일을 보냄으로써 공격
자가 선택한 코드가 실행될 수 있도록 하고, 경우
에 따라서는 메일 클라이언트를 망가뜨릴 수 도 있
다. 또한, 운영체제에 따라서 사용자의 권한을 가
지고 수행되기 때문에 루트 같은 관리자 계정으로
악의적으로 제작된 메일을 읽게 된다면 시스템에 대
한 권한을 얻을 수도 있다.”
2020-04-27
Computer Network Lab.
#
12
 패스워드 파일 / 루트 접근
 sendmail 8.8.4에서는 sendmail이 배달되지 않은 메
시지를 /var/tmp/dead.letter 파일끝에 저장한다는 사
실과 링크를 이용하여 내부 사용자는 루트 권한을 얻
을 수가 있었다.
 /var/tmp/dead.letter
/etc/passwd
 메시지내용은 사용자계정을 기록하고 도착할 수 없
는 메시지를 보내면 새로운 계정기록
2020-04-27
Computer Network Lab.
#
13
 sendmail 헤더 파싱 DoS공격
 sendmail 헤더 파싱 코드의 버그에 초점
 많은수의 “To:”헤더를 가진 메시지를 생성함으로써
크래커들은 서버를 정지시킬 수 있는데 sendmail
8.9.2와 그 이전 버전에 영향을 미쳤다.
 P.379 잘레브스키의 테스트 코드
 서버와 연결후에 사용자에게 전자메일을 보내는 일을
반복한다. 특히 전송되는 메시지안에 15,000개의 To:
가 있어 sendmail을 정지시키에 되고 서버는 메일 송
수신을 거부한다.
2020-04-27
Computer Network Lab.
#
14
 sendmail 서비스 보호 (1)
 /etc/mail/access
2020-04-27
Computer Network Lab.
#
15
 sendmail 서비스 보호 (2)
2020-04-27
Computer Network Lab.
#
16
 sendmail 서비스 보호 (3)
2020-04-27
Computer Network Lab.
#
17
 실시간 블랙 리스트 관리 (1)
 RealTime Blackhole List
스팸을 전송하는 사람들의 목록, sendmail은 동적으로
특정 도메인으로부터 메일을 받을 것인가를 결정.
2020-04-27
Computer Network Lab.
#
18
 실시간 블랙 리스트 관리 (2)
2020-04-27
Computer Network Lab.
#
19
 실시간 블랙 리스트 관리 (3)
2020-04-27
Computer Network Lab.
#
20
 실시간 블랙 리스트 관리 (4)
2020-04-27
Computer Network Lab.
#
21
 실시간 블랙 리스트 관리 (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.
2020-04-27
Computer Network Lab.
#
22
 EXPN과 VRFY기능억제 (1)
 SMTP명령어중 EXPN(expand)와 VRFY(verify)는 사용자의 정보
를 외부로 유출할수 있다.
2020-04-27
Computer Network Lab.
#
23
 EXPN과 VRFY기능억제 (2)
 EXPN(expand)와 VRFY(verify)의 억제
 sendmail.cf 의 다음 부분을 추가하여 기능억제
# privacy flags
O PrivacyOption=authwarnings, noexpn, novrfy
And Then sendmail Restart!!
2020-04-27
Computer Network Lab.
#
24
 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 파
일설정
2020-04-27
Computer Network Lab.
#
25
 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
2020-04-27
Computer Network Lab.
#
26
 Qmail의 설치 (1)
 http://www.qmail.org
 qmail-1.03.tar.gz
 Qmail의 특징
- 안전성
- 속도
- 신뢰성
- 쉬운 가상도메인
- ezmlm을 이용한 이용자가 제어하는 메일링 리스트.
2020-04-27
Computer Network Lab.
#
27
 Qmail의 설치 (2)
1.
2.
3.
4.
source DownLoad qmail-1.03.tar.gz
tar zxvf qmail-1.03.tar.gz
몇 개의 사용자 계정과 그룹 생성
cd qmail-1.03
# 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
5.
Make setup check
2020-04-27
Computer Network Lab.
#
28
 Qmail의 설치 (3)
6.
7.
8.
9.
[root@yskim qmail-1.03]# ./config
[root@yskim qmail-1.03]# (cd ~alias; touch .qmailpostmaster .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
2020-04-27
Computer Network Lab.
#
29
 Qmail의 설치 (4)
10. /etc/inetd.conf 추가
stmp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmailsmtpd
11. [root@yskim qmail-1.03]# cp /var/qmail/boot/proc
/var/qmail/rc
12. [root@yskim qmail-1.03]# csh –cf ‘/var/qmail/rc &’
13. 자동스크립트에 추가
2020-04-27
Computer Network Lab.
#
30
 Qmail의 설치 (5)
2020-04-27
Computer Network Lab.
#
31
 Qmail의 설치 (6)
2020-04-27
Computer Network Lab.
#
32
 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/
2020-04-27
Computer Network Lab.
#
33
요약
 중계기능을 막고 계정 해킹을 방지하기 우해 MTA를
설정함으로써 네트워크와 서버 그리고 사용자들을 보
호 할 수 있다. Sendmail은 높은 성능의SMTP서비스
를 제공하고, 현존하는 리눅스/유닉스 유틸리티와 호
환성이 잘 이루어지는 반면에, Qmail은 작지만 빠르
고 안전하다.
2020-04-27
Computer Network Lab.
#
34