1 / 61

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

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

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. 계정 관리 • 유닉스에서 계정 관리의 주요 사항 첫 번째 : 중복된 root 계정의 존재 여부 • root 이외의 관리자 계정 존재 여부 확인 [그림 11-1] /etc/passwd 파일에 있는 계정 ID와 그룹 ID가 0인 계정 • grep ':0:' /etc/passwd

  4. root 계정 이외의 다른 관리자 계정 생성 계정 생성 useradd로wish 계정 생성 /etc/passwd 파일 수정 /etc/passwd 파일 내용에서 사용자ID를 0으로 바꾼다 [그림 11-2] root 이외에 계정 ID가 0인 계정 생성 실습 11-1 유닉스에서 관리자 계정 생성하기 • useradd wish 1 2 • vi /etc/passwd

  5. 패스워드 설정 생성한 계정의 패스워드 설정 [그림 11-3] 계정 ID가 0인 계정의 패스워드 설정 실습 10-1 윈도우 FTP 서비스 보안 설정하기 • passwd wish 3

  6. 로그 파일 디렉터리(C:\Windows\system32\LogFiles) su 명령으로 wish 계정으로 바뀐 뒤, id 명령으로 root 확인 [그림 11-4] 계정 ID가 0인 계정의 동작 확인 실습 10-1 윈도우 FTP 서비스 보안 설정하기 • su wish • id • su root • id 4

  7. 로그 파일 디렉터리(C:\Windows\system32\LogFiles) su 명령으로 wish 계정으로 바뀐 뒤, id 명령으로 root 확인 [그림 11-4] 계정 ID가 0인 계정의 동작 확인 실습 10-1 윈도우 FTP 서비스 보안 설정하기 • su wish • id • su root • id 4

  8. 유닉스에서 계정 관리의 두 번째 주요 사항 : 셸 계정에서 셸 제거 :/etc/passwd 파일에서/bin/sh와 같이 사용자의 셸이 정의된 부분을 /bin/false로 바꿈 [그림 11-5] 계정의 로그인 셸 설정 실습 10-1 윈도우 FTP 서비스 보안 설정하기

  9. 유닉스의 계정에 대한 패스워드 정책 :shadow 파일 이용 패스워드 바꾼 날, 패스워드를 바꾸기 전 최소 사용 기간, 패스워드를 바꾸지 않고 최대한 사용할 수 있는 기간, 패스워드를 변경하기 며칠 전에 경고를 보낼 것인지, 계정이 정지되고 불가능해지기까지의 기간 등 설정 [그림 11-6] wishfree 계정으로의 원격 접속 확인 실습 10-1 윈도우 FTP 서비스 보안 설정하기

  10. 서비스 관리 Inetd 데몬 수퍼 데몬 텔넷과 FTP 클라이언트가 서버 접속 요구시 확인 텔넷 연결 시도일 경우 : inetd 데몬의 설정 파일 /etc/inetd.conf에서 데몬에 대한 설정 /etc/services 파일에서 설정된 포트 번호에 대해 클라이언트의 요청 시 텔넷 데몬 실행 FTP 연결 시도일 경우 :inetd 데몬이 이 연결을 FTP 서버에 인계 /etc/services에 해당 데몬에 대한 포트가 정의되어 있지 않거나, /etc/inetd.conf 파일에서 특정 서비스에 대한 연결 차단하면 해당 서비스에 대한 접속 불가능

  11. 서비스 관리 /etc/services의 실제 내용 [그림 11-8] /etc/services 파일의 내용 • [데몬 이름] [포트 번호]/[프로토콜]

  12. 서비스 관리 솔라리스 9의 inetd 데몬 inetd.conf 파일 확인 [그림 11-9] /etc/inetd.conf 파일의 텔넷 데몬 설정 • telnet stream tcp6 nowait root /usr/sbin/in.telnetd in.telnetd • ➊ ➋ ➌ ➍ ➎ ➏ ➐

  13. 서비스 관리 ➊서비스 : 서비스 이름 정의, /etc/services에 정의 ➋소켓 타입(Socket Type) : TCP일때 stream, UDP일때 dgram로 표기 ➌프로토콜 : /etc/protocols에 정의된 프로토콜 종류와 번호 TCP는 /etc/protocols 파일에서 확인할 [그림 11-10] /etc/protocols 파일의 내용 • telnetstreamtcp6nowaitroot/usr/sbin/in.telnetdin.telnetd • ➊➋➌➍➎➏➐

  14. 서비스 관리 ➍대기 설정 : inetd가 클라이언트에 서비스를 요청 받은 때, 이후에 즉시 또 다른 요청을 처리할 것인지 여부에 따라 nowait, wait로 구분. TCP는 반드시 nowait ➎로그인 이름 : 데몬을 어떤 사용자의 권한으로 수행할 것인지 명시 ➏서버 : 해당 서비스를 수행하기 위해 어떤 프로그램을 실행할지를 절대 경로 입력 ➐인자(Argumnet) : 데몬을 실행하는 데 필요한 인자 값 입력 솔라리스의 /etc/rc3.d 디렉터리에서 snmp 데몬과 웹 서버인 아파치가 standalone으로 실행되는 것 확인 [그림 11-11] /etc/rc3.d 디렉터리 밑의 파일들

  15. 서비스 관리 솔라리스 10의 inetd 데몬 솔라리스 10 버전에서도 inetd 데몬의 기본적인 동작 동일 inetd 데몬 관리 : svcadm 또는 inetadm 툴 사용 [그림 11-12] inetadm 실행 결과 • inetadm

  16. 서비스 관리 inetadm 실행: 관련된 서비스 리스트의 목록이 출력 옵션‘-?’실행: 사용방법 출력 [그림 11-13] inetadm -?실행 결과

  17. 서비스 관리 옵션 확인 • -?: 도움말 출력 • -p : 기본 inetd 등록 정보 값 출력 • -l : inet 서비스에 대한 inetd 등록 정보 값 출력 • -e : inet 서비스 활성화 • -d : inet 서비스 비활성화 • -m: inet 서비스 inetd 등록 정보 값 수정 • -M : 기본 inetd 등록 정보 값 수정 -p 옵션으로 inetd 등록 정보 값 확인 [그림 11-14] inetadm -p 실행 결과 • inetadm -p

  18. 서비스 관리 동작중인 서비스 확인 솔라리스 10 최초 설치 후 :NMAP(포트 스캐너) 이용 동작 중인 포트 점검 [그림 11-15] 솔라리스 10의 포트 스캔 결과

  19. 서비스 관리 주요 서비스 보안 설정 FTP(File Transfer Protocol, 21) FTP에 대한 보안 이슈 - 원격 버퍼 오버플로우 공격 - 포맷 스트링 공격 - Anonymous 로그인 - root 계정의 로그인 허용

  20. FTP 계정 생성 생성한 계정의 패스워드 설정 FTP 계정 디렉터리 생성 Anonymous 계정이 사용할 디렉터리 생성, 실행에 필요한 ls 명령 등을 복사 Anonymous 계정의 역할에 따라 필요한 파일 복사 실습 11-2 FTP Anonymous 접속 설정하기 • useradd ftp 1 2 • useradd ftp

  21. /etc/passwd 파일 수정 생성된FTP 계정의 /etc/passwd 파일 내용 바꿈 [그림 11-16] /etc/passwd 파일에서 anonymous 계정에 이용할 FTP 계정의 설정 변경 실습 11-2 FTP Anonymous 접속 설정하기 • ftp:x:1002:1::/home/ftp:/bin/sh • -> ftp:x:30000:30000:AnonymousFTP:/export/home/ftp:/nosuchshell 3

  22. /etc/shadown 파일 수정 생성된FTP 계정의 /etc/shadow 파일 내용 바꿈 [그림 11-17] /etc/shadow 파일에서 anonymous 계정에 이용할 FTP 계정의 설정 변경 실습 11-2 FTP Anonymous 접속 설정하기 • ftp:*LK*::::::: • -> ftp:NP:6445:::::: 4

  23. ftpg 그룹 생성 /etc/group에 ftpg 그룹 생성 Anonymous 계정으로 로그인 확인 Anonymous 계정으로 로그인 [그림 11-18] 생성한 FTP 계정을 이용한 Anonymous 계정 로그인 성공 실습 11-2 FTP Anonymous 접속 설정하기 • ftpg::30000: • ftp 192.168.68.5 5 6

  24. Anonymous 계정은 FTP를 운영할 때 유용하지만 남용하면 보안에 치명적 Anonymous 계정으로 로그인되는 디렉터리에 시스템에서 운영 중인 웹 서비스의 코드나 관리 매뉴얼 등이 저장되어 있다면, 다른 보안 사고 발생 가능 부득이한 경우 제외하고 Anonymous FTP를 만들면 안 되며, 철저히 관리 FTP의 또 다른 보안 사항은 로그인 사용자의 제한 FTP는 해당 시스템에 계정이 있는 사용자라면 누구나 로그인 가능 [그림 11-19] 일반 계정을 이용한 FTP 로그인 실습 11-2 FTP Anonymous 접속 설정하기

  25. FTP 로그인 사용자 제한 : /etc/ftpusers파일 이용 FTP 접속 차단하려는 사용자 계정 목록 /etc/ftpuser에 등록 [그림 11-20] /etc/ftpusers 설정 리눅스의 경우 설치 초기부터 시스템 계정 대부분 ftpusers에 등록 [그림 11-21] /etc/ftpusers에 등록한 계정을 이용한 FTP 로그인 시도 실습 11-2 FTP Anonymous 접속 설정하기 • vi /etc/ftpusers

  26. SSH(Secure Socket Shell, 22) 암호화된 통신 SSH1은 접속과 인증을 위해서 RSA(Rivest-Shamir-Adleman)를 이용 통신의 암호화 위해 Blowfish, DES, 3DES, RC4 및IDEA 등 사용 실습 11-2 FTP Anonymous 접속 설정하기

  27. 새로운 연결 설정 위해 SSH1과 SSH2 등의 프로토콜 중 하나 선택 SSH2의 키 교환 방식 :RSA와 DSA(Digital Signature Algorithm) 두가지 SSH 클라이언트 설치 Secure CRT 내려받아 설치 프로토콜 및 인증 방법 선택 프로토콜은 SSH2로, 인증 방법은 패스워드로 선택 [그림 11-22] Secure CRT를 이용한 SSH2 접속 시도 실습 11-3 SSH 접속하기 1 2

  28. SSH2로 선택하고 연결 시도하면 서버 측의 키에 대한MD5 해시 값 확인 [그림 11-23] 서버 측 시스템의 MD5 해시 값 사용자 계정과 패스워드 입력 : 사용자 계정과 패스워드 입력하고 로그인 시도 [그림 11-24] SSH 계정과 패스워드 입력 실습 11-3 SSH 접속하기 3

  29. 연결 확인 : 접속에 성공하고 셸 확인 [그림 11-25] SSH 로그인 실습 11-3 SSH 접속하기 4

  30. 서비스 관리 텔넷(Telecommunication network, 23) 텔넷 서비스 이용 접속 : 사용 자체가 위험, 사용 자제 관리자가 원격 시스템에 접속 시도할 경우 root 계정의 접속 차단 [그림 11-26] root 계정으로 로그인 시 연결 끊김 /etc/default/login 파일의 console=/dev/console 설정 [그림 11-27] root 계정에 대한 원격 로그인 제한 • vi /etc/default/login

  31. 서비스 관리 console=/dev/console에주석처리(#)를 하면 원격에서 root 계정으로 접속 가능 [그림 11-28] ‘console=/dev/console’주석 처리 후 root 계정으로 로그인 root 계정의 원격 접속 차단 - HP-UX의 경우 : /etc/securetty 파일의 맨위에 console 추가. 셸이 필요 없는 계정 : 계정 관리에서 확인했듯이/etc/passwd 파일의 /bin/sh과 같이 설정한 부분을 /bin/false로 바꿔줌 원격지에서 root 계정에 대한 로그인이 불가능하도록 설정했다면, 텔넷 로그인 시도할 때 출력되는 경고문 설정 경고문 : 해킹에 직접 영향을 주지는 않지만 해킹의도 약할 때 해킹 저지 명백한 경고는 법적 책임 물을 때 효과적

  32. 서비스 관리 경고문은 /etc/issue 파일에 입력, issue 파일은 솔라리스의 경우 새로 생성, 레드햇의 경우 이미 있으므로 수정 사용. issue 파일에 다음 내용 입력 [그림 11-29] /etc/issue 파일의 편집 텔넷으로 로그인 시도 시 경고문이 출력되는 것 확인 [그림 11-30] 텔넷 로그인 시 /etc/issue에 저장된 경고문 출력 • vi /etc/issue

  33. 서비스 관리 finger (79) 서버에 현재 로그인 중인 사용자 계정 정보 확인하여 해커가 사용자의 이용 시간 및 계정의 존재 유무 확인 [그림 11-31] finger 명령을 이용한 시스템 계정 정보 확인 • finger -l @192.168.1.129

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

  35. 서비스 관리 서비스의 취약점 : 원격 버퍼 오버플로우 RPC와 관련한 주요 취약 서비스 :rpc.statd, rpc.ttdbserver등 RPC 중지 : inetadm 명령에 -d 옵션 사용 서비스별로 중지 [그림 11-34] RPC 서비스 중 rstat 중지 • inetadm -d svc:/network/rpc/rstat

  36. 서비스 관리 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.txt • rexec 192.168.68.5 -l root cat /etc/shadow

  37. 서비스 관리 솔라리스 10에서 허용되어 있는 rsh와 rlogin도 클러스터링과 같이 시스템 간 신뢰 관계를 설정해놓아야 하는 경우가 아니라면 모두 제거하는 것이 좋음 inetadm 명령 이용 정지 [그림 11-36] inetadm 명령을 이용한 rlogin 데몬 실행 중지 설정 • inetadm -d svc:/network/login:rlogin

  38. 서비스 관리 X11 : XDMCP(X Display Manager Control Protocol, 6000) GUI 환경에서 원격으로 시스템을 관리하기 위한 프로토콜 Xbrowser 실행 [그림 11-37] Xmanager를 이용한 원격 시스템 접속 6000번 포트가 열린 시스템의 IP 입력 <이동> 버튼 클릭 Xbrowser로 해당 시스템 접속하여 GUI 인터페이스 사용 [그림 11-38] Xmanager를 이용한 원격 시스템 로그인

  39. 접근 제어 파일 확인 XDMCP에 대한 접근 제어 :Xaccess 파일에서 수행 [그림 11-39] 시스템 내부의 Xaccess 검색 실습 11-4 XDMCP 접근 제어하기 • man xdm • find / -name Xaccess 1

  40. 접근 제어 설정 접근 제어 설정 [그림 11-40] Xaccess 파일에 대한 접근 제어 설정 실습 11-4 XDMCP 접근 제어하기 • vi /usr/openwin/lib/xdm/Xaccess 2

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

  42. 서비스 관리 DTSPC(DeskTop SubProcess Control service, 6112) 원격에서 서버 관리할 때 프로세스 제어 FONT-Service(7100) 폰트에 대한 정보 제공

  43. 서비스 관리 기타 서비스 보안 설정 echo(7) 어떤 시스템이 echo 포트로 데이터 보내면, echo 포트에 데이터를 받은 시스템은 보낸 시스템에 똑같은 데이터 전송 ping과 비슷한 역할 discard(9) echo와 달리 어떤 데이터를 받더라도 그 데이터를 소거하는 역할, 응답 보내지 않음 Daytime(13) 현재 날짜와 시간 알려줌 Charen(Character generator, 19) 제공한다기보다 입력 값에 관계없이 임의의 문자열을 보내는 역할

  44. 서비스 관리 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 25 • expn root • vrfy wishfree

  45. 서비스 관리 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

  46. 서비스 관리 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.5 • get /etc/passwd

  47. 서비스 관리 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) 시스템에 있는 사용자 계정에 대한 프로파일 생성/삭제

  48. 접근 제어 TCP Wrapper 이해 위해 inetd 수퍼 데몬 먼저 이해 필요 TCP Wrapper 설치되면, inetd 데몬은 TCP Wrapper 데몬인 tcpd에 연결을 넘김 tcpd 데몬은 접속 요구한 클라이언트가 적절한 접근 권한이 있는지 확인후 연결 넘김 연결에 대한 로깅 실시

  49. TCP Wrapper 설치 유닉스 시스템에는 대부분 TCP Wrapper이 기본 탑재 [그림 11-53] /usr/sfw/sbin 디렉터리에서 설치된 TCP Wrapper 확인 실습 11-5 TCP Wrapper를 이용한 접근 제어 적용하기 • /usr/sfw/sbin/ 1

  50. TCP Wrapper 데몬의 적용 inetadm -p 명령 : inetd 데몬에 대한 속성 확인 tcpd의 적용 여부 : ‘tcp_wrappers=’항목에서 확인 초기 값은 ‘FALSE’로 tcpd 적용 않음 [그림 11-54] inetadm -p 명령으로 inetd 속성 확인 실습 11-5 TCP Wrapper를 이용한 접근 제어 적용하기 • inetadm -p 2

More Related