Download presentation
Presentation is loading. Please wait.
1
유닉스 시스템 보안 설정 여태현
2
차례 계정 관리 서비스 관리 접근 제어 패치 관리 파일 및 디렉터리 관리
3
계정 관리 취약한 패스워드 점검과 사용하지 않는 계정의 제거
유닉스에서 계정 관리의 주요 사항 첫 번째 : 중복된 Root 계정의 존재 여부 Root 이외의 관리자 계정 존재 여부 확인 /etc/passwd 파일에 있는 계정 ID와 그룹 ID가 0인 계정 Grep ‘:0:’ /etc/passwd
4
서비스 관리 Inetd 데몬 슈퍼 데몬이 라고도 불린다. 텔넷과 FTP클라이언트가 서버 접속 요구 시 확인
텔넷 연결 시도일 경우 : Inetd 데몬의 설정 파일 /etc/inetd.conf에서 데몬에 대한 설정을 읽는다. /etc/service 파일에서 설정된 포트 번호에 대해 클라이언트의 요청 시 텔넷 데몬 실행 FTP연결 시도일 경우 : Inetd 데몬이 이 연결을 FTP 서버에 인계 /etc/services에 해당 데몬에 대한 포트가 정의되어 있지 않거나, /etc/inetd.conf 파일에서 특정 서비스에 대한 연결을 차단하면 해당 서비스에 대한 접속 불가능
5
서비스 관리 /etc/services의 실제 내용 [데몬 이름] [포트 번호]/[프로토콜]
6
서비스 관리 솔라리스 9의 Inted 데몬 Inetd.conf 파일 확인 /etc/services의 실제 내용
7
Telnet stream tcp6 nowait root /usr/sbin/in.telnetd in.telnetd
서비스 관리 ➊ 서비스 : 서비스 이름 정의, etc/services에 정의 ➋ 소켓 타입(Socket Type) : TCP일 때 Stream, UDP일 때 dgram로 표기 ➌ 프로토콜 : /etc/protocols에 정의된 프로토콜 종류와 번호 TCP는 etc/protocols 파일에서 확인할 수 있다. /etc/protocols 파일의 내용 Telnet stream tcp6 nowait root /usr/sbin/in.telnetd in.telnetd ➊ ➋ ➌ ➍ ➎ ➏ ➐
8
서비스 관리 ➍ 대기 설정 : inted가 클라이언트에 서비스를 요청 받은 때, 이후에 즉시 또 다른
요청을 처리할 것인지 여부에 따라 nowait, wait로 구분 TCP는 반드시 nowait. ➎ 로그인 이름 : 데몬을 어떤 사용자의 권한으로 수행할 것인지 명시 ➏ 서버 : 해당 서비스를 수행 하기 위해 어떤 프로그램을 실행할지를 절대 경로 입력 ➐ 인자(Argumnet) : 데몬을 실행하는데 필요한 인자 값 입력 솔라리스의 /etc/rc3.d 디렉터리에서 snmp 데몬과 웹서버인 아파치가 standalone으로 실행 되는 것 확인 /etc/rc3.d 디렉터리 밑의 파일들
9
서비스 관리 주요 서비스 보안 설정 FTP(File Transfer Protocol, 21) FTP에 대한 보안 이슈
원격 버퍼 오버플로우 공격 포맷 스트링 공격 Anonymous 로그인 Root 계정의 로그인 허용
10
서비스 관리 텔넷(Telecommunication network, 23)
텔넷 서비스 이용 접속 : 사용 자체가 위험, 사용 자제 관리자가 원격 시스템에 접속 시도할 경우 root 계정의 접속 차단 /etc/default/login 파일의 console=/dev/console 설정 root 계정에 대한 원격 로그인 제한 vi /etc/default/login
11
서비스 관리 ‘console=dev/console’주석 처리 후 root 계정으로 로그인/
HP-UX의 경우 : /etc/securetty 파일의 맨위에 console 추가. 셸이 필요 없는 계정 : 계정 관리에서 확인했듯이/etc/passwd 파일의 /bin/sh과 같이 설정한 부분을 /bin/false로 바꿔줌 원격지에서 root 계정에 대한 로그인이 불가능하도록 설정했다면, 텔넷 로그인 시도할 때 출력되는 경고문 설정 경고문 : 해킹에 직접 영향을 주지는 않지만 해킹의도 약할 때 해킹 저지 명백한 경고는 법적 책임 물을 때 효과적
12
서비스 관리 경고문은 /etc/issue 파일에 입력, issue 파일은 솔라리스의 경우 새로 생성, 레드햇의 경우 이미 있으므로 수정 사용. issue 파일에 다음 내용 입력 /etc/issue 파일의 편집 텔넷으로 로그인 시도 시 경고문이 출력되는 것 확인 텔넷 로그인 시 /etc/issue에 저장된 경고문 출력 vi /etc/issue
13
서비스 관리 finger (79) finger -l @192.168.1.129
서버에 현재 로그인 중인 사용자 계정 정보 확인하여 해커가 사용자의 이용 시간 및 계정의 존재 유무 확인 finger 명령을 이용한 시스템 계정 정보 확인 finger
14
서비스 관리 sunrpc(SUN Remote Procedure Call protocol, 111)
rpcinfo 명령 : 현재 구동 중인 RPC 정보 확인 rpcinfo 명령 수행 결과 rpcinfo
15
서비스 관리 서비스의 취약점 : 원격 버퍼 오버플로우
서비스의 취약점 : 원격 버퍼 오버플로우 RPC와 관련한 주요 취약 서비스 :rpc.statd, rpc.ttdbserver등 RPC 중지 : inetadm 명령에 -d 옵션 사용 서비스별로 중지 RPC 서비스 중 rstat 중지 inetadm -d svc:/network/rpc/rstat
16
서비스 관리 Exec(512), Login(513), Shell(514)
Exec(512), Login (513), Shell(514)의 3가지 포트 : r-command 명령 계열 위한 포트 rexec를 이용한 원격 시스템 /etc/shadow 파일 읽기 rexec l root cat /tmp/a.txt rexec l root cat /etc/shadow
17
서비스 관리 기타 서비스 보안 설정 echo(7) discard(9) Daytime(13)
어떤 시스템이 echo 포트로 데이터 보내면, echo 포트에 데이터를 받은 시스템은 보낸 시스템에 똑같은 데이터 전송 ping과 비슷한 역할 discard(9) echo와 달리 어떤 데이터를 받더라도 그 데이터를 소거하는 역할, 응답 보내지 않음 Daytime(13) 현재 날짜와 시간 알려줌 Charen(Character generator, 19) 제공한다기보다 입력 값에 관계없이 임의의 문자열을 보내는 역할
18
서비스 관리 SMTP(Simple Message Transfer Protocol, 25)
메일 전송 위한 프로토콜로, 대부분 Sendmail 이용 가장 일반적인 보안 이슈 : EXPN(Expansion)과 VRFY(Verify) 명령의 실행 여부 ‘expn root’라고 입력하고 를 누른 후‘vrfy wishfree’를 입력 expn, vrfy 명령으로 시스템 계정 확인 telnet expn root vrfy wishfree
19
서비스 관리 expn과 vrfy 명령 실행 방지 : sendmail의 설정 파일 변경
솔라리스에는 /etc/mail/sendmail.cf, 다른 시스템에는 /etc/sendmail.cf가 있음 시스템에 따라 위의 두 경로 중 하나에 포함 expn, vrfy 명령에 대한 /etc/mail/sendmail.cf 파일 설정 O PrivacyOptions에서 noexpn과 novrfy를 추가하고 sendmail 서비스를 재시작 하거나 시스템을 재시작 해야만 설정 변경 적용 vi /etc/mail/sendmail.cf
20
서비스 관리 TIME(37) TFTP(Trivial File Transfer Protocol, 69)
Daytime 프로토콜처럼 시간 알려줌 일반 사용자가 아닌 시스템을 위한 것으로, 일반 ASCII 기반의 문자열이 아닌 특수 형태의 문자를 주고받음. TFTP(Trivial File Transfer Protocol, 69) FTP의 간략화 버전, FTP처럼 파일 전송 위한 프로토콜이지만 FTP를 이용해서 접속할 경우, Anonymous 계정이 존재할 때를 제외하면 계정과 패스워드 입력해야 접속 할 수 있지만 TFTP는 이런 인증 과정 불필요 TFTP 이용. get 명령 이용 /etc/passwd 파일 내려 받기 tftp 데몬을 이용한 /etc/passwd 파일 전송 시도 tftp get /etc/passwd
21
서비스 관리 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) 시스템에 있는 사용자 계정에 대한 프로파일 생성/삭제
22
접근 제어 솔라리스에서 접근 제어를 하기 위해 TCPWrapper를 사용함. TCPWrapper를 통한 데몬 동작 개념도 텔넷과 FTP 클라이언트가 서버에 접속을 요구하면 Inetd 데몬이 이를 확인 tcpd 데몬은 접속 요구한 클라이언트가 적절한 접근 권한이 있는지 확인 후 연결 넘김 연결에 대한 로깅 실시 TCPWrapper는 모든 프로토콜에 대한 접근 제어를 할 수 있는 것은 아니다. Inetd 데몬이 관리하지 않는 standalone 데몬과 같은 경우는 Inetd 데몬이 통제 할 수 없으며, TCP 프로토콜 외에 일부 프로토콜에 대해서만 통제가 가능하다.
23
패치 관리 솔라리스 9 ➋ jar파일의 압축을 풀기 위해 jar명령을 하는데, 옵션은 tar 명령과 거의 같다.
해당 패치 내려 받기 ➊ 현재 설치된 패치 목록을 확인하고 패치의 설치 필요성 여부 확인 -p옵션을 주면 설치된 패치의 목록을 보여준다 ➋ jar파일의 압축을 풀기 위해 jar명령을 하는데, 옵션은 tar 명령과 거의 같다. xvf옵션으로 내려 받은 패치를 푼다. ➌ patchadd 명령을 이용해서 패치를 해줄 때는 압축을 푼 디렉토리를 지정해주면 된다. Showrev Showrev -p Jar xvf jar Patchadd / wishfree / patch /
24
파일 및 디렉터리 관리 권한 설정 /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--)
25
파일 및 디렉터리 관리 권한 설정 /etc 접근 권한 751(d rwx r-x -x)
/bin 접근 권한 771(d rwx rwx --x) 솔라리스에서는 기본 권한이 777이다. 이 디렉터리는 ls, cd 등의 명령에 대한 실행 파일이 존재 한다. 권한을 777로 주면 임의의 사용자가 해당 디렉터리의 파일을 바꿔치기하는 것도 가능하므로, 기본권한을 777로 주는 것은 매우 위험할 수 있으므로 771로 설정한다. /usr/bin 접근 권한 751(d rwx r-x --x) /bin 디렉터리와 비슷한 경우다. 솔라리스에서는 기본 권한이 755이므로 751로 바꿔준다. /sbin 접근 권한 751(d rwx rwx --x) /bin 디렉터리와 비슷한 경우다. 솔라리스에서는 기본 권한이 755이므로 771로 바꿔준다. /var/log 접근 권한 751(d rwx r-x --x) /var/log 디렉터리에는 여러 가지 로그 정보를 담고 있는 파일이 있다. 이러한 로그 정보는 임의의 사용자에게 읽혀지거나 변조되어서는 안되므로 권한을 751로 설정한다 솔라리스의 기본 권한은 755이다.
26
파일 및 디렉터리 관리 권한 설정 /var/log/messages 접근 권한 640(- rw- r-- ---)
레드햇에서 xinetd 데몬의 로그를 저장하는 파일로 최소한의 권한을 준다. /etc/crontab 접근 권한 600(- rw ) Cron 데몬에 의한 자동 실행을 설정할 수 있는 파일로 매우 위험할 수도 있는 파일이므로 관리자만이 접근할 수 있도록 설정한다. /etc/syslog.conf 접근 권한 640(- rw- r-- ---) 시스템 로그에 대한 설정을 담고 있는 파일로 공격자가 어떤 행위가 로깅되고 있는지 또 이를 회피하기 위해서 어떻게 해야 하는지 등에 대해 많은 정보를 줄 수 있으므로 640 이상의 권한을 주지 않는다. /etc/ftpusers 접근 권한 600(- rw ) 관리자나 특정 계정에 대해 ftp에 로그인이 불가능하도록 설정하는 접근 제어에 관한 파일로 관리자 이외에 사용할 필요가 없다. 600 이상의 권한을 주지 않고 솔라리스에서는 기본적으로 644 권한을 주고 있으므로 수정한다. /etc/passwd 접근 권한 440(- r-- r-- ---) 계정에 대한 기본적인 정보를 제공하는 파일이다. 솔라리스 기본 설정은 444다 이상의 권한을 주지 않는다.
27
파일 및 디렉터리 관리 권한 설정 /etc/shadow 접근 권한 600(- rw- --- ---)
암호화된 패스워드가 있는 파일이다. 솔라리스에서는 기본으로 400의 권한을 주고 있다. /etc/hosts.equiv 접근 권한 600(- rw ) 시스템에 대한 신뢰를 설정할 수 있는 파일로 반드시 600 이상의 권한을 주어서는 안되며, 사용하지 않는 파일이라면 아예 삭제하는 것이 좋다. 이 파일은 기본으로 존재하는 파일이 아니므로, 생성할 때 umask값에 따라 권한이 설정된다. 따라서 생성 후 반드시 권한의 변경이 필요하다. /etc/hosts.allow 접근 권한 600(- rw ) TCPWrapper에서 접근 권한을 설정하는 파일로 600 이상의 권한을 주지 않는다. 이 파일 역시 기본적으로 존재하는 파일이 아니므로, 생성 후 반드시 권한을 변경해준다. /etc/hosts.deny 접근 권한 600(- rw ) Hosts.allow 파일과 마찬가지로 TCPWrapper에서 접근 제어를 설정할 때 사용하는 파일이므로 600 이상의 권한을 주지 않는다. 이 파일 역시 기본적으로 존재하는 파일이 아니므로, 생성한 후 반드시 권한을 변경해준다. /etc/securetty 접근 권한 600(- rw ) 텔넷 등에 대한 접근 제어를 설정하는 파일이다. 600 이상의 권한을 주지 않는다.
28
파일 및 디렉터리 관리 권한 설정 /etc/inetd.conf 접근 권한 600(- rw- --- ---)
시스템이 제공하는 서비스에 대한 정보를 담고 있다. 관리자 이외에는 접근 권한이 없도록 설정한다. 솔라리스에서 기본 권한은 777이므로 반다시 변경한다. /etc/hosts 접근 권한 644(- rw- r-- r--) 시스템이 접근하는 호스트들에 대한 IP와 호스트 이름을 확인할 수 있는 정보를 제공한다. 이에 대한 임의의 변경은 시스템을 마비시킬 수도 있다. 644 이상의 권한을 주지 않는다.
29
감사 합니다. 이상 입니다.
Similar presentations