61
IT CookBook, 정정 정정 정정정 정정 : 정정정 정정정 정정 ( 정정정 ) 정정정 정정정 정정 정정 ( 정정정정 9, 10)

유닉스 시스템 보안 설정 ( 솔라리스 9, 10)

Embed Size (px)

DESCRIPTION

11. 유닉스 시스템 보안 설정 ( 솔라리스 9, 10). 학습목표 계정 관리를 적절하게 수행할 수 있다 . 유닉스의 개별 서비스에 따른 취약점을 이해할 수 있다 . 유닉스의 각 취약점에 대해 적절한 보안 설정을 할 수 있다 . 유닉스 시스템에 대한 접근 제어를 적용할 수 있다 . 유닉스 시스템의 파일과 디렉터리에 대한 적절한 접근 권한을 설정할 수 있다 내용 계정 관리 서비스 관리 접근 제어 파일과 디렉터리 관리 패치. 계정 관리. - PowerPoint PPT Presentation

Citation preview

Page 1: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

IT CookBook, 정보 보안 개론과 실습 : 시스템 해킹과 보안 (개정판 )

유닉스 시스템 보안 설정 ( 솔라리스 9, 10)

Page 2: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

2/61

Contents

학습목표 계정 관리를 적절하게 수행할 수 있다 . 유닉스의 개별 서비스에 따른 취약점을 이해할 수 있다 . 유닉스의 각 취약점에 대해 적절한 보안 설정을 할 수 있다 . 유닉스 시스템에 대한 접근 제어를 적용할 수 있다 . 유닉스 시스템의 파일과 디렉터리에 대한 적절한 접근 권한을 설정할 수

있다

내용 계정 관리 서비스 관리 접근 제어 파일과 디렉터리 관리 패치

Page 3: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

3/61

계정 관리

유닉스에서 계정 관리의 주요 사항 첫 번째 : 중복된 root 계정의 존재 여부 root 이외의 관리자 계정 존재 여부 확인

[ 그림 11-1] /etc/passwd 파일에 있는 계정 ID 와 그룹 ID 가 0 인 계정

grep ':0:' /etc/passwd

Page 4: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

4/61

root 계정 이외의 다른 관리자 계정 생성 계정 생성

useradd 로 wish 계정 생성

/etc/passwd 파일 수정

/etc/passwd 파일 내용에서 사용자 ID 를 0 으로 바꾼다

[ 그림 11-2] root 이외에 계정 ID 가 0 인 계정 생성

실습 11-1 유닉스에서 관리자 계정 생성하기

1

useradd wish

vi /etc/passwd

2

Page 5: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

5/61

패스워드 설정

생성한 계정의 패스워드 설정

[ 그림 11-3] 계정 ID 가 0 인 계정의 패스워드 설정

실습 10-1 윈도우 FTP 서비스 보안 설정하기3

passwd wish

Page 6: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

6/61

로그 파일 디렉터리 (C:\Windows\system32\LogFiles)

su 명령으로 wish 계정으로 바뀐 뒤 , id 명령으로 root 확인

[ 그림 11-4] 계정 ID 가 0 인 계정의 동작 확인

실습 10-1 윈도우 FTP 서비스 보안 설정하기4

su wishidsu rootid

Page 7: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

7/61

로그 파일 디렉터리 (C:\Windows\system32\LogFiles)

su 명령으로 wish 계정으로 바뀐 뒤 , id 명령으로 root 확인

[ 그림 11-4] 계정 ID 가 0 인 계정의 동작 확인

실습 10-1 윈도우 FTP 서비스 보안 설정하기4

su wishidsu rootid

Page 8: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

8/61

유닉스에서 계정 관리의 두 번째 주요 사항 : 셸 계정에서 셸 제거 : /etc/passwd 파일에서 /bin/sh 와 같이 사용자의 셸이 정의된

부분을 /bin/false 로 바꿈

[ 그림 11-5] 계정의 로그인 셸 설정

실습 10-1 윈도우 FTP 서비스 보안 설정하기

Page 9: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

9/61

유닉스의 계정에 대한 패스워드 정책 : shadow 파일 이용 패스워드 바꾼 날 , 패스워드를 바꾸기 전 최소 사용 기간 , 패스워드를 바꾸지 않고

최대한 사용할 수 있는 기간 , 패스워드를 변경하기 며칠 전에 경고를 보낼 것인지 ,

계정이 정지되고 불가능해지기까지의 기간 등 설정

[ 그림 11-6] wishfree 계정으로의 원격 접속 확인

실습 10-1 윈도우 FTP 서비스 보안 설정하기

Page 10: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

10/61

서비스 관리

Inetd 데몬 수퍼 데몬 텔넷과 FTP 클라이언트가 서버 접속 요구시 확인 텔넷 연결 시도일 경우 : inetd 데몬의 설정 파일 /etc/inetd.conf 에서 데몬에 대한

설정 /etc/services 파일에서 설정된 포트 번호에 대해 클라이언트의 요청 시 텔넷 데몬

실행 FTP 연결 시도일 경우 : inetd 데몬이 이 연결을 FTP 서버에 인계 /etc/services 에 해당 데몬에 대한 포트가 정의되어 있지 않거나 , /etc/inetd.conf

파일에서 특정 서비스에 대한 연결 차단하면 해당 서비스에 대한 접속 불가능

Page 11: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

11/61

서비스 관리

/etc/services 의 실제 내용

[ 그림 11-8] /etc/services 파일의 내용

[ 데몬 이름 ] [ 포트 번호 ]/[ 프로토콜 ]

Page 12: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

12/61

서비스 관리

솔라리스 9 의 inetd 데몬• inetd.conf 파일 확인

[ 그림 11-9] /etc/inetd.conf 파일의 텔넷 데몬 설정telnet stream tcp6 nowait root /usr/sbin/in.telnetd

in.telnetd➊ ➋ ➌ ➍ ➎ ➏ ➐

Page 13: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

13/61

서비스 관리

➊ 서비스 : 서비스 이름 정의 , /etc/services 에 정의

➋ 소켓 타입 (Socket Type) : TCP 일때 stream, UDP 일때 dgram 로 표기

➌ 프로토콜 : /etc/protocols 에 정의된 프로토콜 종류와 번호

TCP 는 /etc/protocols 파일에서 확인할

[ 그림 11-10] /etc/protocols 파일의 내용

telnet stream tcp6 nowait root /usr/sbin/in.telnetd in.telnetd

➊ ➋ ➌ ➍ ➎ ➏ ➐

Page 14: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

14/61

서비스 관리

➍ 대기 설정 : inetd 가 클라이언트에 서비스를 요청 받은 때 , 이후에 즉시 또 다른 요청을

처리할 것인지 여부에 따라 nowait, wait 로 구분 . TCP 는 반드시 nowait

➎ 로그인 이름 : 데몬을 어떤 사용자의 권한으로 수행할 것인지 명시

➏ 서버 : 해당 서비스를 수행하기 위해 어떤 프로그램을 실행할지를 절대 경로 입력

➐ 인자 (Argumnet) : 데몬을 실행하는 데 필요한 인자 값 입력

솔라리스의 /etc/rc3.d 디렉터리에서 snmp 데몬과 웹 서버인 아파치가

standalone 으로 실행되는 것 확인

[ 그림 11-11] /etc/rc3.d 디렉터리 밑의 파일들

Page 15: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

15/61

서비스 관리

솔라리스 10 의 inetd 데몬• 솔라리스 10 버전에서도 inetd 데몬의 기본적인 동작 동일• inetd 데몬 관리 : svcadm 또는 inetadm 툴 사용

[ 그림 11-12] inetadm 실행 결과

inetadm

Page 16: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

16/61

서비스 관리

• inetadm 실행 : 관련된 서비스 리스트의 목록이 출력• 옵션 ‘ -?’ 실행 : 사용방법 출력

[ 그림 11-13] inetadm -? 실행 결과

Page 17: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

17/61

서비스 관리

• 옵션 확인 • -?: 도움말 출력 • -p : 기본 inetd 등록 정보 값 출력 • -l : inet 서비스에 대한 inetd 등록 정보 값 출력 • -e : inet 서비스 활성화 • -d : inet 서비스 비활성화 • -m: inet 서비스 inetd 등록 정보 값 수정 • -M : 기본 inetd 등록 정보 값 수정•-p 옵션으로 inetd 등록 정보 값 확인

[ 그림 11-14] inetadm -p 실행 결과

inetadm -p

Page 18: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

18/61

서비스 관리

동작중인 서비스 확인 솔라리스 10 최초 설치 후 : NMAP( 포트 스캐너 ) 이용 동작 중인 포트 점검

[ 그림 11-15] 솔라리스 10 의 포트 스캔 결과

Page 19: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

19/61

서비스 관리

주요 서비스 보안 설정 FTP(File Transfer Protocol, 21)

• FTP 에 대한 보안 이슈 - 원격 버퍼 오버플로우 공격 - 포맷 스트링 공격 - Anonymous 로그인 - root 계정의 로그인 허용

Page 20: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

20/61

FTP 계정 생성

생성한 계정의 패스워드 설정

FTP 계정 디렉터리 생성

Anonymous 계정이 사용할 디렉터리 생성 , 실행에 필요한 ls 명령 등을 복사 Anonymous 계정의 역할에 따라 필요한 파일 복사

실습 11-2 FTP Anonymous 접속 설정하기

1

useradd ftp

useradd ftp

2

Page 21: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

21/61

/etc/passwd 파일 수정

생성된 FTP 계정의 /etc/passwd 파일 내용 바꿈

[ 그림 11-16] /etc/passwd 파일에서 anonymous 계정에 이용할 FTP 계정의 설정 변경

실습 11-2 FTP Anonymous 접속 설정하기

3

ftp:x:1002:1::/home/ftp:/bin/sh->

ftp:x:30000:30000:AnonymousFTP:/export/home/ftp:/nosuchshell

Page 22: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

22/61

/etc/shadown 파일 수정

생성된 FTP 계정의 /etc/shadow 파일 내용 바꿈

[ 그림 11-17] /etc/shadow 파일에서 anonymous 계정에 이용할 FTP 계정의 설정 변경

실습 11-2 FTP Anonymous 접속 설정하기

4

ftp:*LK*:::::::-> ftp:NP:6445::::::

Page 23: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

23/61

ftpg 그룹 생성

/etc/group 에 ftpg 그룹 생성

Anonymous 계정으로 로그인 확인

Anonymous 계정으로 로그인

[ 그림 11-18] 생성한 FTP 계정을 이용한 Anonymous 계정 로그인 성공

실습 11-2 FTP Anonymous 접속 설정하기

5

ftpg::30000:

6

ftp 192.168.68.5

Page 24: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

24/61

Anonymous 계정은 FTP 를 운영할 때 유용하지만 남용하면 보안에 치명적 Anonymous 계정으로 로그인되는 디렉터리에 시스템에서 운영 중인 웹 서비스의

코드나 관리 매뉴얼 등이 저장되어 있다면 , 다른 보안 사고 발생 가능 부득이한 경우 제외하고 Anonymous FTP 를 만들면 안 되며 , 철저히 관리 FTP 의 또 다른 보안 사항은 로그인 사용자의 제한 FTP 는 해당 시스템에 계정이 있는 사용자라면 누구나 로그인 가능

[ 그림 11-19] 일반 계정을 이용한 FTP 로그인

실습 11-2 FTP Anonymous 접속 설정하기

Page 25: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

25/61

FTP 로그인 사용자 제한 : /etc/ftpusers 파일 이용

FTP 접속 차단하려는 사용자 계정 목록 /etc/ftpuser 에 등록

[ 그림 11-20] /etc/ftpusers 설정

리눅스의 경우 설치 초기부터 시스템 계정 대부분 ftpusers 에 등록

[ 그림 11-21] /etc/ftpusers 에 등록한 계정을 이용한 FTP 로그인 시도

실습 11-2 FTP Anonymous 접속 설정하기

vi /etc/ftpusers

Page 26: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

26/61

SSH(Secure Socket Shell, 22)• 암호화된 통신• SSH1 은 접속과 인증을 위해서 RSA(Rivest-Shamir-Adleman) 를 이용• 통신의 암호화 위해 Blowfish, DES, 3DES, RC4 및 IDEA 등 사용

실습 11-2 FTP Anonymous 접속 설정하기

Page 27: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

27/61

새로운 연결 설정 위해 SSH1 과 SSH2 등의 프로토콜 중 하나 선택 SSH2 의 키 교환 방식 : RSA 와 DSA(Digital Signature Algorithm) 두가지

SSH 클라이언트 설치

Secure CRT 내려받아 설치

프로토콜 및 인증 방법 선택

프로토콜은 SSH2 로 , 인증 방법은 패스워드로 선택

[ 그림 11-22] Secure CRT 를 이용한 SSH2 접속 시도

실습 11-3 SSH 접속하기

1

2

Page 28: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

28/61

SSH2 로 선택하고 연결 시도하면 서버 측의 키에 대한 MD5 해시 값 확인

[ 그림 11-23] 서버 측 시스템의 MD5 해시 값 사용자 계정과 패스워드 입력 : 사용자 계정과 패스워드 입력하고 로그인 시도

[ 그림 11-24] SSH 계정과 패스워드 입력

실습 11-3 SSH 접속하기

3

Page 29: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

29/61

연결 확인 : 접속에 성공하고 셸 확인

[ 그림 11-25] SSH 로그인

실습 11-3 SSH 접속하기

4

Page 30: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

30/61

서비스 관리

텔넷 (Telecommunication network, 23)• 텔넷 서비스 이용 접속 : 사용 자체가 위험 , 사용 자제• 관리자가 원격 시스템에 접속 시도할 경우 root 계정의 접속 차단

[ 그림 11-26] root 계정으로 로그인 시 연결 끊김

• /etc/default/login 파일의 console=/dev/console 설정

[ 그림 11-27] root 계정에 대한 원격 로그인 제한

vi /etc/default/login

Page 31: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

31/61

서비스 관리

• console=/dev/console 에 주석처리 (#) 를 하면 원격에서 root 계정으로 접속 가능

[ 그림 11-28] ‘console=/dev/console’ 주석 처리 후 root 계정으로 로그인• root 계정의 원격 접속 차단 - HP-UX 의 경우 : /etc/securetty 파일의 맨위에 console 추가 . • 셸이 필요 없는 계정 : 계정 관리에서 확인했듯이 /etc/passwd 파일의 /bin/sh 과 같이 설

정한 부분을 /bin/false 로 바꿔줌• 원격지에서 root 계정에 대한 로그인이 불가능하도록 설정했다면 , 텔넷 로그인 시도할 때

출력되는 경고문 설정• 경고문 : 해킹에 직접 영향을 주지는 않지만 해킹의도 약할 때 해킹 저지• 명백한 경고는 법적 책임 물을 때 효과적

Page 32: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

32/61

서비스 관리

• 경고문은 /etc/issue 파일에 입력 , issue 파일은 솔라리스의 경우 새로 생성 , 레드햇의 경 우 이미

• 있으므로 수정 사용 . • issue 파일에 다음 내용 입력

[ 그림 11-29] /etc/issue 파일의 편집• 텔넷으로 로그인 시도 시 경고문이 출력되는 것 확인

[ 그림 11-30] 텔넷 로그인 시 /etc/issue 에 저장된 경고문 출력

vi /etc/issue

Page 33: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

33/61

서비스 관리

finger (79)• 서버에 현재 로그인 중인 사용자 계정 정보 확인하여 해커가 사용자의 이용 시간 및 계정의

존재 유무 확인

[ 그림 11-31] finger 명령을 이용한 시스템 계정 정보 확인

finger -l @192.168.1.129

Page 34: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

34/61

서비스 관리

SUNRPC(SUN Remote Procedure Call protocol, 111)• RPC : 자신에게 연결 요청한 클라이언트에 등록된 포트 중 적당한 포트 할당• 클라이언트 : RPC 에 서버에 대한 연결 정보를 얻어 자신에 필요한 서비스 제공 포트로 재접속• rpcinfo 명령 : 현재 구동 중인 RPC 정보 확인

[ 그림 11-33] rpcinfo 명령 수행 결과

rpcinfo

Page 35: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

35/61

서비스 관리

• 서비스의 취약점 : 원격 버퍼 오버플로우• RPC 와 관련한 주요 취약 서비스 :rpc.statd, rpc.ttdbserver 등• RPC 중지 : inetadm 명령에 -d 옵션 사용 서비스별로 중지

[ 그림 11-34] RPC 서비스 중 rstat 중지

inetadm -d svc:/network/rpc/rstat

Page 36: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

36/61

서비스 관리

Exec(512), Login(513), Shell(514)• Exec(512), Login (513), Shell(514) 의 3 가지 포트 : r-command 명령 계열 위한

포트

[ 그림 11-35] rexec 를 이용한 원격 시스템 /etc/shadow 파일 읽기

rexec 192.168.68.5 -l root cat /tmp/a.txtrexec 192.168.68.5 -l root cat /etc/shadow

Page 37: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

37/61

서비스 관리

• 솔라리스 10 에서 허용되어 있는 rsh 와 rlogin 도 클러스터링과 같이 시스템 간 신뢰 관계를설정해놓아야 하는 경우가 아니라면 모두 제거하는 것이 좋음

• inetadm 명령 이용 정지

[ 그림 11-36] inetadm 명령을 이용한 rlogin 데몬 실행 중지 설정

inetadm -d svc:/network/login:rlogin

Page 38: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

38/61

서비스 관리

X11 : XDMCP(X Display Manager Control Protocol, 6000)• GUI 환경에서 원격으로 시스템을 관리하기 위한 프로토콜• Xbrowser 실행

[ 그림 11-37] Xmanager 를 이용한 원격 시스템 접속• 6000 번 포트가 열린 시스템의 IP 입력 < 이동 > 버튼 클릭• Xbrowser 로 해당 시스템 접속하여 GUI 인터페이스 사용

[ 그림 11-38] Xmanager 를 이용한 원격 시스템 로그인

Page 39: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

39/61

접근 제어 파일 확인

XDMCP 에 대한 접근 제어 : Xaccess 파일에서 수행

[ 그림 11-39] 시스템 내부의 Xaccess 검색

실습 11-4 XDMCP 접근 제어하기

1

man xdm

find / -name Xaccess

Page 40: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

40/61

접근 제어 설정

접근 제어 설정

[ 그림 11-40] Xaccess 파일에 대한 접근 제어 설정

실습 11-4 XDMCP 접근 제어하기

2

vi /usr/openwin/lib/xdm/Xaccess

Page 41: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

41/61

접근 제어•접근하는 시스템 제어•XDMCP 서버가 자신의 포트가 열려 있음을 어느 서버에 알릴 것인지에 대한 설정 통해 제어•기본은 모두‘ *’ 로 같으며 , 어떤 시스템에든 접근 가능•모든 접근 막으려면 이 두‘ *’ 삭제•특정 시스템 접근 : ‘*’ 대신 해당 시스템의 IP 입력

실습 11-4 XDMCP 접근 제어하기

Page 42: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

42/61

서비스 관리

DTSPC(DeskTop SubProcess Control service, 6112)• 원격에서 서버 관리할 때 프로세스 제어

FONT-Service(7100)• 폰트에 대한 정보 제공

Page 43: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

43/61

서비스 관리

기타 서비스 보안 설정 echo(7)

• 어떤 시스템이 echo 포트로 데이터 보내면 , echo 포트에 데이터를 받은 시스템은 보낸 시스템에 똑같은 데이터 전송

• ping 과 비슷한 역할

discard(9)• echo 와 달리 어떤 데이터를 받더라도 그 데이터를 소거하는 역할 , 응답 보내지 않음

Daytime(13)• 현재 날짜와 시간 알려줌

Charen(Character generator, 19)• 제공한다기보다 입력 값에• 관계없이 임의의 문자열을 보내는 역할

Page 44: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

44/61

서비스 관리

SMTP(Simple Message Transfer Protocol, 25)• 메일 전송 위한 프로토콜로 , 대부분 Sendmail 이용• 가장 일반적인 보안 이슈 : EXPN(Expansion) 과 VRFY(Verify) 명령의 실행 여부• ‘expn root’ 라고 입력하고 를 누른 후‘ vrfy wishfree’ 를 입력

[ 그림 11-43] expn, vrfy 명령으로 시스템 계정 확인

• root 와 wishfree 계정이 존재하는 것을 확인할

telnet 192.168.68.5 25expn rootvrfy wishfree

Page 45: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

45/61

서비스 관리

• expn 과 vrfy 명령 실행 방지 : sendmail 의 설정 파일 변경 • 솔라리스에는 /etc/mail/sendmail.cf, 다른 시스템에는 /etc/sendmail.cf 가 있음• 시스템에 따라 위의 두 경로 중 하나에 포함

[ 그림 11-44] expn, vrfy 명령에 대한 /etc/mail/sendmail.cf 파일 설정• O PrivacyOptions 에서 noexpn 과 novrfy 를 추가하고 sendmail 서비스를

재시작하거나시스템을 재시작해야만 설정 변경 적용

vi /etc/mail/sendmail.cf

Page 46: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

46/61

서비스 관리

TIME(37)• Daytime 프로토콜처럼 시간 알려줌• 일반 사용자가 아닌 시스템을 위한 것으로 , 일반 ASCII 기반의 문자열이 아닌 특수 형태 문자

주고받음

TFTP(Trivial File Transfer Protocol, 69)• FTP 의 간략화 버전 , FTP 처럼 파일 전송 위한 프로토콜이지만• FTP 를 이용해서 접속할 경우 , Anonymous 계정이 존재 할때를 제외하면 계정과 패스워드• 입력해야 접속 할 수 있지만 TFTP 는 이런 인증 과정 불필요• TFTP 이용 . get 명령 이용 /etc/passwd 파일 내려받기

[ 그림 11-45] tftp 데몬을 이용한 /etc/passwd 파일 전송 시도

tftp 192.168.68.5get /etc/passwd

Page 47: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

47/61

서비스 관리

SNMP(Simple Network Management Protocol, 161)• 윈도우처럼 많은 정보 유출 할 수 있다• standalone 데몬 , 솔라리스 9 에서 SNMP 중지하려면 기본 부팅 설정 /etc/rc3.d 에서

제거

Printer (515) : 프린터 연결 위한 포트

UUCP(Unix to Unix Copy Protocol, 540)• 유닉스의 시스템 간 통신 위해 만들어졌지만 지금은 거의 사용되지 않음

Submission(587)• SNMP 서비스 제공하는 또 다른 포트 , 보조적으로 동작 , 25 번 포트처럼 sendmail 에 의해

운영• /etc/mail/sendmail.cf 에 587 포트로 지정

Sun Management Console(898)• 시스템에 있는 사용자 계정에 대한 프로파일 생성 /삭제

Page 48: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

48/61

접근 제어

TCP Wrapper 이해 위해 inetd 수퍼 데몬 먼저 이해 필요

TCP Wrapper 설치되면 , inetd 데몬은 TCP Wrapper 데몬인 tcpd 에 연결을 넘김

tcpd 데몬은 접속 요구한 클라이언트가 적절한 접근 권한이 있는지 확인 후 연결 넘김 연결에 대한 로깅 실시

Page 49: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

49/61

TCP Wrapper 설치

유닉스 시스템에는 대부분 TCP Wrapper 이 기본 탑재

[ 그림 11-53] /usr/sfw/sbin 디렉터리에서 설치된 TCP Wrapper 확인

실습 11-5 TCP Wrapper 를 이용한 접근 제어 적용하기

1

/usr/sfw/sbin/

Page 50: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

50/61

TCP Wrapper 데몬의 적용

inetadm -p 명령 : inetd 데몬에 대한 속성 확인 tcpd 의 적용 여부 : ‘tcp_wrappers=’ 항목에서 확인 ‘초기 값은 FALSE’ 로 tcpd 적용 않음

[ 그림 11-54] inetadm -p 명령으로 inetd 속성 확인

실습 11-5 TCP Wrapper 를 이용한 접근 제어 적용하기

2

inetadm -p

Page 51: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

51/61

TCP Wrapper 의 -M(odify) 옵션 사용 ‘inetd -M tcp_wrappers=TRUE’ 명령으로 ‘ tcp_wrappers=’ 항목의 설정 값을

TRUE 로 바꿔 TCP Wrapper 적용

[ 그림 11-55] tcpd 적용 후 확인

실습 11-5 TCP Wrapper 를 이용한 접근 제어 적용하기

inetadm -M tcp_wrappers=TRUEinetadm -p

Page 52: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

52/61

inetd.conf 에 텔넷 연결 in.telnetd 에 넘김

[ 그림 11-56] /etc/inetd.conf 파일에서 텔넷 데몬 설정 확인

실습 11-5 TCP Wrapper 를 이용한 접근 제어 적용하기

vi /etc/inetd.conftelnet stream tcp6 nowait root /usr/sbin/in.telnetd

in.telnetd-> telnet stream tcp6 nowait root /usr/sfw/sbin/tcpd

in.telnetd

Page 53: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

53/61

접근 제어 설정

TCP Wrapper 에서 접근 제어 적용 : /etc/hosts.allow 와 /etc/hosts.deny 사용

접근 통제 규칙

데몬 목록에는 : 특정 서비스를 수행하는 데몬 이름 , 클라이언트 목록에는 호스트 이름 ,

IP, 네트워크 정의

[ 그림 11-57] /etc/hosts.deny 파일 설정

실습 11-5 TCP Wrapper 를 이용한 접근 제어 적용하기

3

데몬 목록 : 클라이언트 목록 [ : 셸 명령 ]

ALL:ALL

Page 54: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

54/61

접근 제어 설정 사항 확인

/usr/sfw/sbin/tcpdchk 실행 /etc/hosts.deny 파일에 ‘ ALL:ALL’ 대신 ‘ dfALL:ALL’ 로 입력 inetd.conf 파일에 dfALL 서비스가 존재하지 않음 나타냄

[ 그림 11-58] tcpdchk 로 TCP Wrapper 적용 규칙의 유효성 검사 결과 오류

오류를 수정한 뒤 , tcpdchk를 실행하면 어떤 오류 메시지도 확인

[ 그림 11-59] /usr/sfw/sbin/tcpdchk 을 이용한 TCP Wrapper 규칙 확인

실습 11-5 TCP Wrapper 를 이용한 접근 제어 적용하기

4

/usr/local/bin/tcpdchk

Page 55: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

55/61

원격지 시스템에서 실제로 로그인을 해보지 않고도 접근 제어가 이루어지고 있는지/usr/sfw/sbin/tcpdmatch 이용 시험

원격지에서 접근 시도

[ 그림 11-60] /usr/sfw/sbin/tcpdmatch 을 이용한 TCP Wrapper 규칙 확인

[ 그림 11-61] TCP Wrapper 에 의한 로그인 시도 차단

실습 11-5 TCP Wrapper 를 이용한 접근 제어 적용하기

/usr/sfw/sbin/tcpdmatch in.telnetd 200.200.200.200

Page 56: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

56/61

192.168.75.1 만 시스템에 접근 허용 /etc/hosts.allow 파일을 이용 텔넷에만 접근이 가능하도록 파일 생성 입력

[ 그림 11-62] /etc/hosts.allow 파일 설정

실습 11-5 TCP Wrapper 를 이용한 접근 제어 적용하기

in.telnetd:192.168.75.1

Page 57: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

57/61

tcpdmatch 이용 접속 가능 시험

[ 그림 11-63] /usr/sfw/sbin/tcpdmatch 을 이용한 TCP Wrapper 규칙 확인 2

실습 11-5 TCP Wrapper 를 이용한 접근 제어 적용하기

/usr/sfw/sbin/tcpdmatch in.telnetd 192.168.75.1

Page 58: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

58/61

TCP Wrapper 의 접근 제어에 이용하는 hosts.allow 파일에 대한 규칙 이러한 규칙들은 hosts.deny 파일에도 같은 형식으로 적용

• ALL : 192.168.68.3, 192.168.68.4 EXCEPT 192.168.68.5

모든 데몬에 192.168.68.3 과 192.168.68.4 에 대한 접근 허락

192.168.68.5 금지

• in.ftpd : 192.168.68.0/255.255.255.0

192.168.68.*** 네트워크에 해당하는 시스템이 FTP 에 접속하는 것 허락

• in.telentd : .co.kr

도메인 이름이 co.kr 로 끝나는 시스템에 텔넷 접근 허락 HP-UX : 자체적으로 /var/adm/inetd.sec 파일 통해 TCP-Wrapper 기능

제공 inetd.sec 파일 설정

실습 11-5 TCP Wrapper 를 이용한 접근 제어 적용하기

[ 서비스 이름 ] [allow/deny] [ 시스템 /네트워크 주소 또는 이름 ]

Page 59: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

59/61

파일과 디렉터리 관리

권한 설정 • /etc 접근 권한 751(d rwx r-x -x)

• /bin 접근 권한 771(d rwx rwx --x)

• /usr/bin 접근 권한 751(d rwx r-x --x)

• /sbin 접근 권한 751(d rwx rwx --x)

• /var/log 접근 권한 751(d rwx r-x --x)

• /var/log/messages 접근 권한 640(- rw- r-- ---)

• /etc/crontab 접근 권한 600(- rw- --- ---)

• /etc/syslog.conf 접근 권한 640(- rw- r-- ---)

• /etc/ftpusers 접근 권한 600(- rw- --- ---)

• /etc/passwd 접근 권한 440(- r-- r-- ---)

• /etc/shadow 접근 권한 600(- rw- --- ---)

• /etc/hosts.equiv 접근 권한 600(- rw- --- ---)

• /etc/hosts.allow 접근 권한 600(- rw- --- ---)

• /etc/hosts.deny 접근 권한 600(- rw- --- ---)

• /etc/securetty 접근 권한 600(- rw- --- ---)

• /etc/inetd.conf 접근 권한 600(- rw- --- ---)

• /etc/hosts 접근 권한 644(- rw- r-- r--)

Page 60: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

60/61

패치

솔라리스 10 에서 패치 방법

➊ 현재 설치된 패치 목록을 확인하고 패치의 설치 필요성 여부 확인

➋ 설치된 패치 현황을 확인하고 , 설치되지 않은 패치가 있을 경우 설치

➌ 접속하는 patch 서버 정보 확인

# smpatch get

# smpatch update

# smpatch analyze

Page 61: 유닉스 시스템 보안 설정 ( 솔라리스  9, 10)

IT CookBook, 정보 보안 개론과 실습 : 시스템 해킹과 보안 (개정판 )