by Toff
개요 |
주의 깊게 봐야할 항목들 |
그림 1-1 주요정보통신기발시설 가이드 > Unix 서버 취약점 항목
각 항목을 진단하기에 앞서, 유닉스에서는 1.1과 같이 서비스를 확인해야 되는 항목들이 많다. 이럴때는 반드시 다음 세가지 명령어를 모두 사용해 점검해야 한다.
1. cat /etc/services | grep 서비스 명
2. ps -ef | grep 포트 번호 or 서비스 명
3. netstat -ant | grep 포트 번호
서비스는 존재하지 않는데 해당 포트가 열려있다거나, 포트는 닫혀 있는데 서비스가 존재하는 경우 모두 취약이라고 판단한다.
1.1 root 계정 원격 접속 제한
1.2 패스워드 복잡성 설정
낮은 버전의 리눅스 버전에서는 패스워드 복잡성 설정 정책이 없다. 이런 경우에는 먼저 /etc/shadow 파일을 확인해 패스워드 암호화 방식을 확인한다. 만약 md5 로 암호화 되있을 경우에는 패스워드를 크랙 후 담당자에게 보고해야하며 취약이라고 판단한다. 그림 1-2 와 같이 안전한 $6$ (sha512) 으로 설정되어 있다면 인터뷰를 통해 패스워드 정책을 물어봐야 한다.
그림 1-2 /etc/shadow sha512 암호화 방식 설정
1.3 계정 잠금 임계값 설정
정보통신망법 대상이라면 정보통신망법 고시에 제시되어 있는 기준을 만족해야 한다. 정보통신망법 고시는 다음과 같다. 정보통신망법 대상이 아니라면 회사의 패스워드 정책에 만족해야 한다.
- 개인정보의 기술적관리적 보호조치 기준(제4조 접근통제)에 의해서 안전하게 2종류 10자리 이상 혹은 3종류 8자리 이상을 사용하며, 반기별로 1회 이상 변경할 것
계정 잠금 설정이 되어 있지 않아도 회사 자체에서 접근 제어 솔루션을 사용하고 있다면 양호이다. 이 부분은 반드시 인터뷰를 진행해 확인해야 한다.
2.1 root 홈, 패스 디렉터리 권한 및 패스 설정
해당 취약점은 환경 변수에 '.' 이 있을 경우 사용자가 명령어 이름으로 된 백도어 파일을 심어두었다면 관리자가 아무것도 모른 채 명령어를 실행하면 백도어 파일이 실행될 수 있다.
2.5 /etc/hosts 파일 소유자 및 권한 설정
명시되어 있는 권한 기준은 600(rw-------)이지만 취약점으로 발견되어도 바로 조치를 못할 가능성이 크다. 서버에서 많이 참조하는 파일이기에 600으로 설정하게 되면 장애가 생길 확률이 높다. 그렇기에 고객사마다 상대적으로 위험 수용 혹은 양호로 판단할 수 도 있다.
2.6 /etc/(x)inetd.conf 파일 소유자 및 권한 설정
버전에 따라 xinetd / inetd로 나뉜다. 기존이 inetd 이며 버전 업그레이드가 되면서 xinetd 로 변경되었다.
2.7 /etc/syslog.conf 파일 소유자 및 권한 설정
- 위와 동일하게 버전에 따라 syslog.conf / rsyslog.conf로 나뉜다. 버전 업그레이드가 되면서 대부분 rsyslog.conf로 변경되었다.
2.9 SUID, SGID, Sticky bit 설정파일 점검
해당 설정을 가지고 있는 목록들을 검사하고 반드시 담당자와 인터뷰를 실시해 양호/취약을 판단해야 한다. 해당 파일들의 용도를 알고 있으며 주기적으로 관리하고 있다면 양호라고 판단한다.
2.11 world writable 파일 점검
other에 w 권한이 있어도 인터뷰를 통해 반드시 확인해야 한다. 실제로는 수 많은 파일들이 나오기에 지속적으로 관리하고 있는지에 대해서 인터뷰해야 한다.
수동 점검 시에는 아래의 명령어를 사용하면 보기 편하다.
find / -perm -2 -ls | awk '{print $3 ":" $5 ":" $6 ":" $11}' | egrep -v "^l|^s|^c"
> find 명령어를 사용해 other에 w권한이 있는 파일을 모두 검색한다.
> awk 명령어를 사용해 3,5,6,11 열만을 출력한다.
> egerp -v 명령어를 사용해 l, s, c로 시작하는 파일을 제외시키고 검색한다.
그림 1-3 world writable 파일 점검
awk
> ls -al 명령어만 사용하면 그림 1-4 와 같이 출력된다. world writable 과 같이 많은 파일이 출력되었을 때 보기에 다소 불편하다.
그림 1-4 ls -al
> 그림 1-5와 같이 awk 명령어를 사용해 1번, 8번 열만을 출력한다면 그림 1-5와 같이 권한과 파일/디렉터리명만 보기 쉽게 출력해준다.
그림 1-5 awk 명령어 사용
2.12 /dev에 존재하지 않는 device 파일 점검
2.11 world writable 과 비슷한 항목이다. 그림 1-6과 같이 굉장히 많은 항목들이 나온다. 인터뷰를 통해 모두 사용중인지, 지속적으로 관리하고 있는지에 대해 물어봐야 한다.
그림 1-6 /dev 파일 검색
3.2 Anonymous FTP 비활성화
이전 윈도우에서는 FTP를 사용중이라면 하위 항목에 상관없이 모두 취약이라고 판단했다. 하지만 컨설턴트와 고객사의 입장에 따라 [FTP 사용 여부] 에 대해서는 무조건 취약이지만 그 하위 항목에 대해서는 상대적일 수 있다. 여기서 중요한건 컨설턴트의 일관성이다.
예를 들어 FTP 사용 여부는 취약으로 판단하고 고객사의 입장에 따라 하위 항목(Anonymous FTP 비활성화, FTP 접근 제어 등)은 설정이 제대로 되어 있어 양호로 판단하였다. 하지만 다음 항목에서 TELNET 사용 여부는 취약으로 판단하고 하위 항목이 제대로 되어 있음에도 TELNET 사용이 취약이니 모두 취약으로 판단하면 일관성이 없는 것이 된다. 이처럼 상대적으로 판단하되 일관성은 반드시 유지해야 한다.
3.17 Apache 디렉터리 리스팅 제거
Options Indexes FollowSymLinks 와 같이 설정되어 있으면 취약이다.
와 같이 - 를 추가해주거나 아예 해당 라인을 삭제하면 된다.
Apache 항목들에서는 웹 서버로 지정되있는 디렉터리가 많을 수 있기에 모두 검사해야 한다.
Q) /var/www/html/ 설정 = Options -Indexes FollowSymLinks
/var/www/html/test 설정 = Options Indexes FollowSymLinks 으로 설정 되어 있을 때 디렉터리 리스팅 제거 항목은 취약인가?
A) 취약하다. 디렉터리의 경우 /var/www/html/test 와 같이 세부 디렉터리에 권한 우선권이 있다. test 디렉터리는 상위 디렉터리가 아닌 test 디렉터리의 권한으로 실행된다.
3.18 Apache 웹 프로세스 권한 제한
권한은 그림 1-7 과 같이 출력된다. 첫 줄과 마지막 줄을 제외하고 모두 Apache 권한으로 구동되고 있다면 양호로 판단한다.
그림 1-7 Apache 실행 권한 확인
그림 1-8 과 같이 httpd.conf 파일에서도 권한 확인이 가능하다.
그림 1-8 Apache 실행 권한 확인 2
cat /etc/*release 명령어를 사용해 버전을 확인한다.
- 인터뷰 해야 되는 항목들
- 패치를 주기적으로 하고 있는지?
- 패치 필요 시 영향도 파악을 하고 진행하는지?
- 패치 작업 시 작업 계획서 등 증적을 남기는지?
- 하나라도 안되있으면 취약이라고 판단한다. 이는 ISMS 인증 기준이다.
- 최신 버전이 아니더라도 안정화 버전이면 양호를 줄 수 있다.
해당 항목도 위 항목과 같이 고객사의 입장에 따라 상대적으로 판단할 줄 알아야 한다.
5.1 로그의 정기적 검토 및 보고
- 인터뷰 해야 되는 항목들
- 서버 접속기록( 로그인/로그아웃, 계정, IP 행위)를 남기고 있는지?
- 위 항목에서 남긴 로그들을 주기적으로 점검하는지?
ex) 비정상적인 로그는 없는지 ( 새벽시간에 다량 접속, 사용하지 않는 계정의 빈번한 접속 실패 등 )
해당 인터뷰 항목의 기준은 법제처에 있다. ( 정보통신망법, 개인정보보호법 )
이번 진단에서는 다소 유동적으로 판단해야 하는 항목들이 많았다. 이럴 경우에는 반드시 진단하기에 앞서 3.2 항목에서 설명했던 것과 같이 자신만의 기준을 정해야 한다. 일관성 있게 진단해야 하며 법제처에 나와 있는 법률과 ISMS 인증 기준을 토대로 하는 것도 좋은 방법이다. 고객사에서 다소 애매한 항목의 판단에 대한 근거를 물어봤을 때, 법률과 ISMS 인증 기준이라는 명확한 지침을 보여주면 간단하게 해결된다.