1/08/2007

[HP-UX] HP-UX Security Checklist

가. 계정
1. 패스워드 없는 계정, 특별 계정들이 존재하지 않도록 적용하였는가?
- 위험사항 : 패스워드가 없는 계정은 /etc/shadow 파일에서의 두 번째 필드, 즉 암호화된 패스워드가 기록되어 있어야 필드가 비워져 있는 계정이다. 이런 계정은 패스워드 없이 바로 시스템에 접근이 되므로 매우 큰 허점이 된다.
- 권장사항 : 패스워드 없는 계정이 없어야 한다.

2. 서비스 되고 있지 않은ftp, uucp 계정 등을 유지하고 있는가?
- 위험사항 : 사용되지 않는 서비스에 대한 계정을 유지하는 것은 해커의 침입가능성을 높여준다.
- 권장사항 : ftp와 uucp 등의 서비스가 사용되고 있지 않다면, 설치 시 계정이 자동적으로 생성된다 하더라도 삭제해 주는 것을 권장한다.

3. /etc/passwd에서 일반 사용자 중 UID가 0인 사용자는 존재하지 않도록 하였는가?
- 위험사항 : uid가0인 계정은 root와 같은 적대적인 권한을 행사할 수 있으므로 위험 하다.
- 권장사항 : root 이외에 uid가 0인 계정이 존재하지 않아야 한다.

4. /etc/passwd에서 일반 사용자 중 GID가 0인 사용자는 존재하지 않도록 하였는가?
- 위험사항 : gid가 0인 계정은 root와 같은 적대적인 권한을 행사할 수 있으므로 위험하다.
- 권장사항 : root 이외에 gid가 0인 계정이 존재하지 않아야 한다.

5. /etc/passwd에서 보았을 때, default vender accounts인 sys, bin등에 shell을 모두 제거하였는가?
- 위험사항 : Default vender account는 이미 알려져 이는 사용자 계정이므로 를 이용하여 System에 접근할 수 있는 위험이 있다.
- 권장사항 : Default vender account에shell이 부여되지 않아야 한다.

나. 패스워드
6. /etc/passwd파일에서 사용자들의 패스워드항목이 암호화 된 후 /etc/shadow파일로 옮겨졌는가?
- 위험사항 : 패스워드 항목을 pwconv를 사용하여C2레벨로 변환합니다. /etc/shadow 파일에 ‘*’나 ‘!!’ 등과 같은 비정상적인 문자가 포함되어 있지는 않은지 확인하여 이상징후 발견 시 보안담당자의 검토를 거쳐야 한다.
- 권장사항 : 암호화된 패스워드 부분을 root외에는 접근할 수 없는 /etc/shadow 파일로 옮겨서 보안레벨을 올려야 한다. à permission 600 권장

7. 패스워드 Aging기능이 있는가? à /etc/default/passwd
- 위험사항 : 패스워드를 오랜 기간동안 변경하지 않을 경우, 스니핑이나 크랙 등을 통해 해커에게 패스워드가 노출될 가능성이 크다.
- 권장사항 : Password Aging기능을 설정해야 한다. Solaris에서는 admintool을 이용하거나 /etc/shadow 파일을 직접 수정함으로써 이 기능을 사용할 수 있다.

다. 접근 통제
8. /etc/hosts.allow파일내에 꼭 필요한 administrator 또는 manager에게만 접근 권한을 주도록 Listing되어있는가?
- 위험사항 : inetd를 사용하는 시스템에서는 tcp wrapper를 사용하여 네트워크 접근제어를 설정할 수 있다.
- 권장사항 : hosts.allow 파일의 구성은 접근을 허용하는 최소한의 호스트로 이루어져야 한다. 특히 ALL:ALL과 같은 설정은 매우 위험하다.

9. /etc/hosts.deny 파일 내용을 “ALL:ALL”로 구성, 불필요한 모든서버로부터의 접근거부를하는가?
- 위험사항 : inetd를 사용하는 시스템에서는 tcp wrapper를 사용하여 네트워크 접근제어를 설정할 수 있다. 네트워크 접근제어는 허락되지 않은 시스템에서의 접근을 차단해 준다. telnet이나 ftp등을 통한 기본적인 접근을 허용하게 된다.
- 권장사항 : hosts.deny 파일은 ALL:ALL로 구성되어 기본적으로 네트워크를 통한 접근을 제한하는 것이 좋다.

10. #CONSOLE=/dev/console에서 #이 제거되었는가? /etc/default/login
- 위험사항 : root는 solaris에서 막강한 권한을 수행할 수 있음과 동시에 반드시 존재하는 계정이기도 하다. root를console이 아닌 곳에서도 접근할 수 있게 된다면 해커는 패스워드 추측, 패킷 스니핑 등의 방법을 이용해서 시스템에 root권한으로 바로 침입할 수 있게 된다.
- 권장사항 : root의 경우 console에서만 로그인 할 수 있도록 설정해야 한다.

11. #UMASK=022에서 #가 제거되어 UMASK=022로 되었는가?
- 위험사항 : System User가 하나의 파일을 생성할 때 그 파일이 처음에 갖게 되는 허가권은 UMASK 값에 의해 정해진다. 새로 생성되는 파일에 다른 사용자에게 쓰기 권한을 허락하지 않기 위해 UMASK값을 022 혹은 027로 유지해야 한다.
- 권장사항 : UMASK 값이 022 혹은 027로 지정되어 있어야 한다.

라. RPC
12. shell, login, exec를 #으로 remark하였는가?
- 위험사항 : rlogin , rsh는trusted된 서버 사이의 사용자 인증 없이 접속가능 하게 하는 것으로, 운영자 입장에서는 매우 편리한 반면 보안측면으로는 악용가능성이 크다. 따라서, 꼭 필요한 경우는 철저히 접근제어를 하고, 되도록 이면 rlogin, rsh, rexec등의 명령어를 쓰지 않는 것이 바람직하다.
- 권장사항 : rlogin, rsh, rexec 등의 서비스를 사용하지 않는 것이 좋다.

13. sadmin, ttdb, cmsd 등의 보안에 취약한 rpc daemon들을 #으로 remark 하였는가?
- 위험사항 : sadmind, rpc.ttdbserverd, rpc.cmsd, rpc.ruserd, rpc.statd 등의 RPC daemon의 취약점을 이용할 경우, 대부분의 경우 관리자의 권한까지 획득 가능하다.
- 권장사항 : rpc daemon들은 보안상 취약한 부분이 자주 발견되므로 서비스 하지 않는 것이 좋다. /etc/inetd.d 에서 services를 확인…

마. 서비스 최적화
14. echo, discard, daytime, chargen가 #으로 remark되었는가?
- 위험사항 : echo, discard, daytime, chargen은 DoS(서비스 거부 공격)에 악용될 수 있다.
- 권장사항 : DoS공격에 취약한 echo, discard, daytime, chargen은 서비스 하지 않는 것이 좋다.

15. tftp (Trivial FTP)가 #으로 remark되었는가?
- 위험사항 : TFTP에는 user authentication 기능이 포함되어 있지 않아 서비스가 지원되는 경우, 원격에서 쉽게 /etc/passwd와 같은 중요파일을 전송 받는 것이 가능하다. 따라서 dummy Xterminal등의 사용으로 꼭 필요한 경우가 아니라면, #으로 반드시 remark해야 한다.
- 권장사항 : tftp는 서비스 하지 않는 것이 좋다.

16. 불필요한 서비스가 remark되었는가?
- 위험사항 : 사용하지 않는 서비스를 운영하는 것은 그만큼 해커에게 기회를 더 주는 것밖에 안된다.
- 권장사항 : 사용하지 않는 서비스 또는 검증되지 않은 서비스는 운영하지 않는 것이 바람직하다.

바. 시스템 트러스트 관계
17. 불필요한 시스템이 포함되어 있지 않은가?(/etc/hosts)
- 위험사항 : 접근 제어를 안함으로 인해 시스템에 쉽게 접근할 수 있다.
- 권장사항 : 불필요한 시스템들은 필드에서 제거되어야 한다.

18. /etc/hosts.equiv파일이 존재하지 않도록 운영 하는가?
- 위험사항 : /etc/hosts.equiv 파일은 rlogin, rsh, rexec와 같은 것을 사용해 인증 없이 로그인 하도록 해준다. 반드시 필요한 경우가 아니라면 존재하지 않는 것이 바람직하다.
- 권장사항 : /etc/hosts.equiv 파일이 존재하지 않거나,/dev/null로 심볼릭 링크 시켜 주어야 한다.

19. “+”, “+ +”가 포함되지 않도록 설정하였는가?(/etc/hosts.equiv)
- 위험사항 : /etc/hosts.equiv 파일에 ‘+’, ‘+ +’가 포함되어 있다면 어느 누구나 r-commnd를 이용하여 접근할 수 있는 상태가 되므로 어떤 경우에도 이렇게 설정해서는 안 된다. 실질적인 보안을 위해서는 이 파일을 사용하지 않는 것이 가장 좋다.

20. /dev/null로 심볼릭 링크를 하였는가?
- 위험사항 : /etc/hosts.equiv는 /dev/null로 심볼릭 링크를 만들거나, 디렉토리 형태로 만들어서 퍼미션을000으로 주어 불법 침입자에 의해 사용되지 않게 하는 것이 좋다.

21. $HOME/.rhosts 파일이 존재하지 않도록 운영 하는가?
- 위험사항 : 시스템이 인증절차 없이 노출될 수 있다.
- 권장사항 : .rhost파일이 불필요할 경우 사용하지 말아야 한다.

22. $HOME/.rhosts 파일내에“+”, “+ +”가 포함되지 않도록 설정하였는가?
- 위험사항 : 접근 제어 없이 사용될 경우, 시스템이 쉽게 노출될 수 있다.
- 권장사항 : 불필요할 경우, “+”, “+ +”필드를 삭제해야 한다.

23. $HOME/.rhosts 파일를 /dev/null로 심볼릭 링크를 하였는가?
- 위험사항 : 비인가자가 쉽게 .rhost파일에 추가작업을 함으로써 시스템이 노출될 위험이 있다.
- 권장사항 : 심볼릭 링크를 할 것을 권장한다.

사. 파일시스템 퍼미션
24. /etc/default/login에 대한 owner(root) 및 퍼미션( 644)이 취약하지는 않는가
- 위험사항 : 비인가자에게 정보가 누출될 수 있다
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(644이하)을 부여한다.

25. /etc/hosts.equiv에 대한 owner(root) 및 퍼미션( 700)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(700이하)을 부여한다.

26. /etc/utmp 퍼미션에 대한 owner(root) 및 퍼미션( 644)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(644이하)을 부여한다.

27. /etc/motd 퍼미션에 대한 owner(root) 및 퍼미션( 644)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(644이하)을 부여한다.

28. /etc/hosts에 대한 owner(root) 및 퍼미션( 600)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(600이하)을 부여한다.

29. /etc/hosts.allow에 대한 owner(root) 및 퍼미션( 600)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(600이하)을 부여한다.

30. /etc/syslog.pid 퍼미션에 대한 owner(root) 및 퍼미션(644)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(644이하)을 부여한다.

31. /etc/inetd.conf에 대한 owner(root) 및 퍼미션(600)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(600이하)을 부여한다.

32. /etc/cron.d/cron.allow에 대한 owner(root) 및 퍼미션(644)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(644이하)을 부여한다.

33. /etc/cron.d/cron.deny에 대한 owner(root) 및 퍼미션(644)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(644이하)을 부여한다.

34. /etc/cron.d/at.deny/ 에 대한 owner(root) 및 퍼미션(644)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(644이하)을 부여한다.

35. /etc/ 에 대한 owner(root) 및 퍼미션(771)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(771이하)을 부여한다.

36. /bin 퍼미션에 대한 owner(root) 및 퍼미션(771)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(771이하)을 부여한다.

37. /usr/bin에 대한 owner(root) 및 퍼미션(771)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(771이하)을 부여한다.

38. /sbin에 대한 owner(root) 및 퍼미션(771)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(771이하)을 부여한다.

39. /tmp에 대한 owner(root) 및 퍼미션(1777)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일권한(1777이하)을 부여한다.

40. /var/tmp에 대한 owner(root) 및퍼미션(1777)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일권한(1777이하)을 부여한다.

41. /etc/init.d에 대한 owner(root) 및 퍼미션(755)이 취약하지는 않는가?
- 위험사항 : 비인가자에게 정보가 누출될 수 있다.
- 권장사항 : root의 파일허가 권한과 일반 유저 및 그룹에 대해 엄격히 구분된 파일 권한(755이하)을 부여한다.

아. FTP & Sendmail
42. ftp 계정의 홈디렉터리 : root 소유, 허가권 : 555
- 위험사항 : ftp의 홈 디렉토리의 허가권은 555이하로 설정되어 있어야 하며 ~/ftp/bin/* 파일은 실행만 시킬 수 있는 권한을 주어야 하고 ~/ftp/etc/* 파일은 읽기 권한만이 주어져야 한다. 트로이목마 등을 통한 시스템 해킹의 위험이 존재하게 된다.
- 권장사항 : ftp 계정이 존재할 경우, ~ftp/ 디렉토리의 허가권은 555 이하 ~ftp/bin/* 파일의 허가권은 111 이하, ~ftp/etc/* 파일의 허가권은 444 이하로 설정되어 있어야 한다

43. Anonymous ftp서비스 여부
- 위험사항 : Anonymous ftp 서비스는 반드시 필요한 경우가 아니면, 제공하지 말아야 한다. 반드시 필요한 경우에는 시스템 자원에 대한 철저한 접근제어가 이루어져야 하고 쉘 서비스를 제공하지 않도록 해야 한다. 설정 실수로 인한 정보의 유출을 유발할 수 있고, 해커에게 쉘을 제공하게 될 수 있다.
- 권장사항 : Anonymous ftp 서비스는 제공하지 않는 것이 좋다.

44. ftp account의login shell이 /bin/false인가?
- 위험사항 : Anonymous ftp서비스를 제공하는 시스템이라면 해커는 ftp라는 계정이 존재한다는 것을 알게 된다. 따라서 이를 이용하여 시스템에 침입하려 시도하게 됨. 이를 방지하기 위해 권장사항과 같이 ftp 계정의 login shell을 차단하고 trust 관계에 의한 침입시도를 막아야 함.
- 권장사항 : ftp 계정의 login shell은 전혀 기능이 없는 /bin/false와 같은 것으로 지정을 해준다.

45. ~ftp/.rhosts와 ~ftp/.forward 파일이 존재하는가?
- 권장사항 : /etc/ftpusers 파일에 root외 시스템계정이 등록되어야 한다.

46. /etc/ftpusers 안에 root, bin, uucp, ingress, daemon, news, nobody, ftp, anonymous등의 vendor가 지원하는 기본 계정들의 등록여부
- 위험사항 : /etc/ftpusers 파일에 등록되어 있는 계정은 ftp 접속이 차단된다. root, sys, bin과 같은 계정은 반드시 /etc/ftpusers 파일에 등록해 주어야 해커의 ftp를 통한 크랙 시도를 막을 수 있다.
- 권장사항 : /etc/ftpusers 파일에 root외 시스템계정이 등록되어야 한다.

47. 보안에 취약한 버전은 아닌가?
- 위험사항 : 최근 나온 버전 및 보안 패치를 적용하지 않으면 버그로 인한 해킹사고의 위험을 가질 수 있다.
- 권장사항 : 최신의 버전 및 패치를 설치하여야 합니다.

48. expn, vrfy 명령어 사용하지 못하도록 설정되어 있는가?
- 위험사항 : expn, vrfy 명령어가 사용되어질 경우, 메일 서버에 대한 user명 및 환경이 노출될 수 있다.
- 권장사항 : expn, vrfy 명령어를 사용하지 못하도록 하여야 한다.

49. 보안에 취약한 버전은 아닌가?
- 위험사항 : 최근 나온 버전 및 보안 패치를 적용하지 않으면 버그로 인한 해킹사고의 위험을 가질 수 있다.
- 권장사항 : 최신의 버전 및 패치를 설치하여야 합니다.

자. 운영관리
50. 시스템 환경변수 $PATH 안에 “.”이 포함되지 않도록 설정하였는가?
- 위험사항 : PATH 환경변수에 ‘.’이 포함되어 있으면 불법 침입자에 의한 트로이 목마 실행 등의 악용이 가능하므로 PATH 환경변수에 현재 directory(.)를 포함시키지 않아야 한다.
- 권장사항 : User의 시스템 환경변수 $PATH의 값에 ‘.’이 포함되어 있지 않아야 한다.

51. 최신 보안 Patch는 되었는가?
- 위험사항 : 최근 나온 버전 및 보안 패치를 적용하지 않으면 버그로 인한 해킹사고의 위험을 가질 수 있다.
- 권장사항 : 최신의 버전 및 패치를 설치하여야 합니다.

[출처 : http://www.kisa.or.kr 2006 리눅스보안]