취약점 점검

주요정보통신기반시설 취약점 진단 상세가이드_Unix 서버진단 실습(2)

sengseng759 2023. 8. 10. 22:17

점검대상 : centos 7(가상머신)

 

2.1 root 계정 홈, 패스 디렉터리 권한 및 패스 설정

  • 점검내용 : root 계정의 PATH 환경변수에 “.”이(마침표) 포함되어 있는지 점검
  • 점검목적 : 비인가자가 불법적으로 생성한 디렉터리 및 명령어를 우선으로 실행되지 않도록 설정하기 위해 환경변수 점검이 필요함
  • 보안위협 : root 계정의 PATH(환경변수)에 정상적인 관리자 명령어(예: ls, mv, cp 등)의 디렉터리 경로 보다 현재 디렉터리를 지칭하는 “.” 표시가 우선하면 현재 디렉터리에 변조된 명령어를 삽입하여 관리자 명령어 입력 시 악의적인 기 능이 실행 될 수 있음 

 

  • 점검방법

/etc/profile 설정의 PATH부분이 .:$PATH와 같이 변경되지 않았나 확인(위에서는 임의로 변경)

PATH는 명령어들의 경로를 지정해 놓은 것이기 때문에 이 PATH파일 안의 경로가 임의로 변경될 시에는 공격자에 의해 다른 명령이나 파일이 실행될 수 있다. 

 

2.2 파일 및 디렉터리 소유자 설정

  • 점검내용 : 소유자 불분명한 파일이나 디렉터리가 존재하는지 여부를 점검
  • 점검목적 : 소유자가 존재하지 않는 파일 및 디렉터리를 삭제 및 관리하여 임의의 사용 자가 해당파일을 열람, 수정하는 행위를 사전에 차단하기 위함
  • 보안위협 : 소유자가 존재하지 않는 파일의 UID와 동일한 값으로 특정계정의 UID값을 변경하면 해당 파일의 소유자가 되어 모든 작업이 가능함
  • 점검방법

find 명령어를 이용해 소유자가 없는 파일을 찾는다.(현재는 소유자가 없는 파일이 존재하지않는다.)

 

2.3 /etc/passwd 파일 소유자 및 권한 설정

  • 점검내용 : /etc/passwd 파일 권한 적절성 점검
  • 점검목적 : /etc/passwd 파일의 임의적인 변경을 차단하기 위함을 통해 비인가자가 권 한 상승하는 것을 막기 위함
  • 보안위협 : 관리자(root) 외 사용자가 "/etc/passwd” 파일의 사용자 정보를 변조하여 shell 변경, 사용자 추가/삭제 등 root를 포함한 사용자 권한 획득 가능
  • 점검방법

passwd파일의 소유자가 root인지, 파일의 퍼미션이 644인지 확인 아닐 시 chown으로 소유자를, chmod로 퍼미션을 변경 할 수 있다.

 

2.4 /etc/shadow 파일 소유자 및 권한 설정

  • 점검내용 : /etc/shadow 파일 권한 적절성 점검
  • 점검목적 : /etc/shadow 파일을 관리자만 제어할 수 있게 하여 비인가자들의 접근을 차 단하도록 shadow 파일 소유자 및 권한을 관리해야 함
  • 보안위협 : shadow파일은 패스워드를 암호화하여 저장하는 파일이며 해당 파일의 암호 화된 해쉬값을 복호화하여(크래킹) 비밀번호를 탈취할 수 있음
  • 점검방법

/etc/shdow 파일의 소유자가 root인지, 퍼미션이 400인지 확인. 퍼미션이 000으로 되어있어 수정을 해야한다.

 

chmod 명령어로 퍼미션을 수정하여 400으로 변경하였다.

 

2.5 /etc/hosts 파일 소유자 및 권한 설정

  • 점검내용 : /etc/hosts 파일의 권한 적절성 점검
  • 점검목적 : /etc/hosts 파일을 관리자만 제어할 수 있게 하여 비인가자들의 임의적인 파 일 변조를 방지하기 위함 
  • 보안위협

(1) hosts 파일에 비인가자 쓰기 권한이 부여된 경우, 공격자는 hosts파일에 악 의적인 시스템을 등록하여, 이를 통해 정상적인 DNS를 우회하여 악성사이 트로의 접속을 유도하는 파밍(Pharming) 공격 등에 악용될 수 있음

(2) hosts파일에 소유자 외 쓰기 권한이 부여된 경우, 일반사용자 권한으로 hosts 파일에 변조된 IP주소를 등록하여 정상적인 DNS를 방해하고 악성사이트로 의 접속을 유도하는 파밍(Pharming) 공격 등에 악용될 수 있음

  • 점검방법

/etc/hosts파일의 소유자가 root인지, 퍼미션이 600으로 되어있는지 확인

 

2.6 /etc/(x)inetd.conf 파일 소유자 및 권한 설정

  • 점검내용 : /etc/(x)inetd.conf 파일 권한 적절성 점검
  • 점검목적 : /etc/(x)inetd.conf 파일을 관리자만 제어할 수 있게 하여 비인가자들의 임의 적인 파일 변조를 방지하기 위함
  • 보안위협 : (x)inetd.conf 파일에 소유자 외 쓰기 권한이 부여된 경우, 일반사용자 권한으 로 (x) inetd.conf 파일에 등록된 서비스를 변조하거나 악의적인 프로그램(서 비스)을 등록할 수 있음

※(x) inetd (슈퍼데몬) : 자주 사용하지 않는 서비스가 상시 실행되어 메모리를 점유하는 것을 방지하기 위해 (x) inetd(슈퍼대몬)에 자주 사용하지 않는 서비스를 등록하여 요청 이 있을 시에만 해당 서비스를 실행하고 요청이 끝나면 서비스를 종료하는 역할 수행

  • 점검방법

/etc/xined.conf 혹은 /etc/inetd.conf 파일, /etc/xinetd.d/ 하위 디렉터리에 있는 파일이 root소유인지, 퍼미션이 600인지 확인(현재 xinetd.d 디렉터리밖에 존재하지 않으며 디렉터리 내의 파일은 존재하지않는다)

 

2.7 /etc/syslog.conf 파일 소유자 및 권한 설정

  • 점검내용 : /etc/syslog.conf 파일 권한 적절성 점검
  • 점검목적 : /etc/syslog.conf 파일의 권한 적절성을 점검하여, 관리자 외 비인가자의 임 의적인 syslog.conf 파일 변조를 방지하기 위함 
  • 보안위협 : syslog.conf 파일의 설정내용을 참조하여 로그의 저장위치가 노출되며 로그를 기록하지 않도록 설정하거나 대량의 로그를 기록하게 하여 시스템 과부 하를 유도할 수 있음
  • 점검방법

CentOS 6 이상인 경우는 /etc/rsyslog.conf파일의 소유자가 root인지, 퍼미션이 644인지 확인. 그 이하는 syslog.conf를 확인한다. (보안기사 공부할때는 무조건 syslog라고 외웠는데 역시 직접 해봐야 아는법)

 

2.8 /etc/services 파일 소유자 및 권한 설정

  • 점검내용 : /etc/services 파일 권한 적절성 점검
  • 점검목적 : /etc/services 파일을 관리자만 제어할 수 있게 하여 비인가자들의 임의적인 파일 변조를 방지하기 위함 
  • 보안위협 : services 파일의 접근권한이 적절하지 않을 경우 비인가 사용자가 운영 포트 번호를 변경하여 정상적인 서비스를 제한하거나, 허용되지 않은 포트를 오픈하여 악성 서비스를 의도적으로 실행할 수 있음
  • 점검방법

/etc/services 파일의 소유자가 root인지, 퍼미션이 644로 되어있는지 확인한다.

 

2.9 SUID, SGID, 설정 파일점검

  • 점검내용 : 불필요하거나 악의적인 파일에 SUID, SGID 설정 여부 점검
  • 점검목적 : 불필요한 SUID, SGID 설정 제거로 악의적인 사용자의 권한상승을 방지하기 위함
  • 보안위협 : SUID, SGID 파일의 접근권한이 적절하지 않을 경우 SUID, SGID 설정된 파 일로 특정 명령어를 실행하여 root 권한 획득 가능함 
  • 점검방법

위의 파일들은 Setuid가 설정되어 있어 취약하다고 판단된다.

 

chmod 명령어를 사용해 해당 파일들에 대해 Setuid 권한을 제거한다.

 

※ Setuid,Setgid 설정을 제거해야하는 파일들(Linux)
/sbin/dump /usr/bin/lpq-lpd  /usr/bin/newgrp 
/sbin/restore /usr/bin/lpr  /usr/sbin/lpc 
/sbin/unix_chkpwd /usr/bin/lpr-lpd  /usr/sbin/lpc-lpd 
/usr/bin/at /usr/bin/lprm /usr/sbin/traceroute
/usr/bin/lpq /usr/bin/lprm-lpd  

 

2.10 사용자, 시스템 시작파일 및 환경파일 소유자 및 권한 설정

  • 점검내용 : 홈 디렉터리 내의 환경변수 파일에 대한 소유자 및 접근권한이 관리자 또는 해당 계정으로 설정되어 있는지 점검
  • 점검목적 : 비인가자의 환경변수 조작으로 인한 보안 위험을 방지하기 위함
  • 보안위협 : 홈 디렉터리 내의 사용자 파일 및 사용자별 시스템 시작파일 등과 같은 환 경변수 파일의 접근권한 설정이 적절하지 않을 경우 비인가자가 환경변수 파일을 변조하여 정상 사용 중인 사용자의 서비스가 제한될 수 있음
  • 점검방법

홈 디렉터리 환경변수 파일의 소유권이 root 인지, 퍼미션이 쓰기 권한이 없는 644인지 확인

 

2.11 world writable 파일 점검

  • 점검내용 : 불필요한 world writable 파일 존재 여부 점검
  • 점검목적 : world writable 파일을 이용한 시스템 접근 및 악의적인 코드 실행을 방지하 기 위함
  • 보안위협 : 시스템 파일과 같은 중요 파일에 world writable 설정이 될 경우, 일반사용 자 및 비인가된 사용자가 해당 파일을 임의로 수정, 삭제가 가능함
  • 점검방법

find / -type f -perm -2 exec ls -l {} \; 명령어를 통해 모든 경로에서 불필요하게 쓰기 권한이 있는지 확인한다. 현재 굉장히 많은 파일들이 쓰기 설정이 되어있어 당황했지만 알아보니 /home /tmp /etc /var 등 주요 폴더 체크 위주로 하고있는 것 같았다.

 

주요 경로들의 wolrd writable 파일 점검 완료 (뒤의 2> /dev/null은 표준에러는 버리라는 뜻, 혹시나 에러값이 많이 나올까봐 추가함)

 

2.12 /dev에 존재하지 않는 device 파일 점검

  • 점검내용 : 존재하지 않는 device 파일 존재 여부 점검
  • 점검목적 : 실제 존재하지 않는 디바이스를 찾아 제거함으로써 root 파일 시스템 손상 및 다운 등의 문제를 방지하기 위함
  • 보안위협 : 공격자는 rootkit 설정파일들을 서버 관리자가 쉽게 발견하지 못하도록 /dev 에 device 파일인 것처럼 위장하는 수법을 많이 사용함
  • 점검방법

find 명령어를 이용해 dev에 존재하지 않는 device 파일이 있는지 점검하고 major number, minor number가 없는 파일이 있는지 여부 판단 후 제거한다.

※ major number : 디바이스 드라이버 중 하나를 구분하기 위해 쓰는 번호

    minor number : 디바이스 드라이버 중 특정한 디바이스를 가리키는 번호

5번째, 6번째 필드에 있는 번호가 각각 major number, minor number이다. 해당 번호가 없으면 비정상적 파일로 간주한다.

 

2.13 $HOME/.rhosts, hosts.equiv 사용 금지

  • 점검내용 : /etc/hosts.equiv 파일 및. rhosts 파일 사용자를 root 또는, 해당 계정으로 설정한 뒤 권한을 600으로 설정하고 해당파일 설정에 ‘+’ 설정(모든 호스트 허용)이 포함되지 않도록 설정되어 있는지 점검
  • 점검목적 : ‘r’ command 사용을 통한 원격 접속은 인증 없이 관리자 원격접속이 가능하므로 서비스 포트를 차단해야 함
  • 보안위협

(1) rlogin, rsh 등과 같은 ‘r’ command의 보안 설정이 적용되지 않은 경우, 원 격지의 공격자가 관리자 권한으로 목표 시스템상의 임의의 명령을 수행시킬 수 있으며, 명령어 원격 실행을 통해 중요 정보 유출 및 시스템 장애를 유발시킬 수 있음. 또한 공격자 백도어 등으로도 활용될 수 있음

(2) r-command(rlogin, rsh등) 서비스의 접근통제에 관련된 파일로 권한설정을 미 적용한 경우 r-command 서비스 사용 권한을 임의로 등록하여 무단 사 용이 가능함

  • 점검방법

ls -al /etc/hosts.equiv 파일의 소유자가 root인지, 퍼미션이 600인지 확인해야 하지만 나는 r계열 서비스를 이용하지않아서인지 파일이 없는것을 확인

 

이참에 최신버전으로 업데이트 해서 여러가지 서비스를 이용해봐야겠다. ※매번 리눅스만 쓰다가 습관적으로 apt update 명령어를 썼는데 명령어가 안된다. 찾아보니 CentOS는 yum 명령어로 업데이트 등을 수행한다고 한다.

 

업데이트 성공!

 

소유자 root인지 확인, 퍼미션 600인지 확인

 

2.14 접속 IP 및 포트 제한

  • 점검내용 : 허용할 호스트에 대한 접속 IP 주소 제한 및 포트 제한 설정 여부 점검
  • 점검목적 : 허용한 호스트만 서비스를 사용하게 하여 서비스 취약점을 이용한 외부자 공격을 방지하기 위함 
  • 보안위협 : 허용할 호스트에 대한 IP 및 포트제한이 적용되지 않은 경우, Telnet, FTP같 은 보안에 취약한 네트워크 서비스를 통하여 불법적인 접근 및 시스템 침해 사고가 발생할 수 있음
  • 점검방법

방법1. TCP wrapper를 사용하는 방법. 차단할 목록파일인 hosts.deny파일설정을 ALL:ALL로 적용시킨다.

 

방법2. iptables를 이용하는 방법. 외부에서 들어오는 192.168.0.1/24 이외의 주소에 대해서는 SSH서비스를 제한한다.
방법3. ipfilter 사용하는경우(출처:주통기 가이드)