본문 바로가기

System Hacking

3일차] 보안가이드[파일 및 디렉터리 관리]

1. root 홈, 패스 디렉터리 권한 및 패스 설정

1). 취약점 개요

root 계정의 PATH 환경변수에 "."(현재 디렉터리 지칭)이 포함되어 있으면, root계정의 인가자로 인해 비의도적으로 현재 디렉터리에 위치하고 있는 명령어가 실행될 수 있다. 즉, "."맨처음(가장위험) 이나 중간에 들어가 있으면 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 보다 우선하여 현재 디렉터리에서 변수를 사용하기 때문에 악의적인 변수를 만들어 놓는다면 위험할 수 있다.

 

2). 점검 방법

#> echo $PATH 를 입력하여 환경변수에  "."이 포함되어 있는지 확인한다.

 

3). 조치 방안

만약 $PATH에 "."이 포함되어 있다면 수정해주자 .

# vi /etc/profile 확인.

 

 


 

 

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

1). 취약점 개요

소유자가 존재하지 않는 파일 및 디렉터리는 현재 권한이 없는 자의 소유였거나, 관리 소홀로 인해 생긴 파일일 가능성이 잇다. 만약 중요 파일 및 디렉터리일 경우 문제가 발생할 수 있으므로 관리가 필요하다.

 

2). 점검 방법

 

#> find / -nouser -o -nogroup 2> /dev/null

 

3). 조치 방안

 

위의 검색 결과로 나온 것이 있다면 삭제를 한다.

 


 

 

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

1). 취약점 개요

"/etc/passwd" 파일은 사용자의 ID, 패스워드(보안상 'X'로 표시), UID, GID, 홈 디렉터리, 쉘 정보를 담고 있는 중요 파일로 관리자 이외의 사용자가 "/etc/passwd" 파일에 파일에 접근 시 root 권한 획득이 가능하므로 해당 파일의 접근을 제한하여야 한다.

 

2). 점검 방법

#> ls -l /etc/passwd  명령을 통해 소유권 및 권한을 살펴본다.

# 양호의 기준은 /etc/passwd 파일의 소유자가 root이고, 권한이 644 이하인 경우이고, 취약해 있는 경우는 반대로 권한이 644 이하가 아닌 경우 이다.

지금 위의 상태는 644로 양호한 상태이다.

 

3). 조치 방안

#> chmod 644 /etc/passwd

#> chown root:root /etc/passwd

 

 


 

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

1). 취약점 개요

"/etc/shadow" 파일은 시스템에 등록된 모든 계정의 패스워드를 암호화된 형태로 저장 및 관리하고 있는 중요 파일로 root 계정을 제외한 모든 사용자의 접근을 제한하여야 한다. 해당 파일 권한 관리가 이루어지지 않을 경우 ID 및 패스워드 정보가 외부로 노출될 수 있는 위험이 존재한다.

 

2). 점검 방법

#> ls -l /etc/shadow 명령을 통해 소유권 및 권한을 살펴본다.

 

 

3). 조치 방안

#> chmod 400 /etc/shadow

#> chown root:root /etc/shadow

 

 


 

5. /etc/host 파일 소유자 및 권한 설정

1). 취약점 개요

"/etc/hosts" 파일은 IP 주소와 호스트네임을 매핑 하는데 사용되는 파일이며, 이 파일의 접근권한 설정이 잘못 설정되어 있을 경우 악의적인 시스템을 신뢰하게 되므로 "/etc/hosts" 파일에 대한 접근권한을 제한하고 있는지 점검한다. 즉 /etc/hosts를 root를 제외한 다른 사람이 만질 수 있다면 악의적인 목적으로 매핑을 시킨다면 악용될 가능성이 농후하다는 것이다. 따라서 이 파일 접근권한을 제한해 줘야한다.

 

2). 점검 방법

#> ls -l /etc/hosts를 통해 소유권 및 권한을 살펴본다. 다른 계정이 W권한이 없는지 확인한다.

 

3). 조치 방안

#> chmod 600 /etc/hosts  root 계정만 읽고 쓸 수 있는 권한을 부여한다.

 

 


 

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

1). 취약점 개요

2). 점검 방법

3). 조치 방안

비교적 취약한 프로그램들이 xinetd 기반으로 동작하기때문에, 일반 사용자가 이러한 데몬을 실행 시키거나, 설정을 변경하는 것을 막아야 한다.

#> chmod 700 /etc/xinetd.d

#> chmod 600 /etc/xinetd.conf

 

 


 

 

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

1). 취약점 개요

"/etc/syslog.conf" 파일은 시스템 운영 중 발생하는 주요 로그 기록을 설정하는 파일로 관리자 이외의 사용자는 해당 파일을 변경할 수 없도록 하여야 한다. 만약, 해당 파일의 접근권한이 적절하지 않을 경우 시스템 로그가 정상적으로 기록되지 않아 침입자의 흔적 또는, 시스템 오류 사항을 정확히 분석할 수 없다.

 

2). 점검 방법

#> ls -l /etc/syslog.conf 파일의 소유자 및 권한을 본다. 권한이 644인 경우 양호로 판단.

※ rsyslog.conf는 syslog.conf의 업그레이드 버전이라고 생각하면 된다.

 

3). 조치 방안

#> chmod 644 /etc/syslog.conf (다른 계정의 쓰기권한 X)

 

 


 

 

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

1). 취약점 개요

서비스 관리를 위해 사용되는 /etc/services 파일이 일반 사용자에 의해 접근 및 변경이 가능하면, 정상적인 서비스를 제한하거나 허용되지 않은 서비스를 악의적으로 실행시켜 침해사고를 발생시킬 수 있다. 따라서 소유자 권한 설정을 통해 접근을 제한하여야 한다.

 

2). 점검 방법

#> ls -l /etc/services 파일의 소유자 및 권한을 본다. 권한이 644인 경우 양호로 판단

 

3). 조치 방안

#> chmod 644 /etc/services

 


 

9. SUID,SGID,Stick bit 설정 파일 점검

1). 취약점 개요

SUID(Set User-ID)와 SGID(Set Group-ID)가 설정된 파일은(특히, root 소유의 파일인 경우) 특정 명령어를 실행하여 root권한 획득 및 정상서비스 장애를 발생시킬 수 있으며, 로컬 공격에 많이 이용되므로 보안상 철저한 관리가 필요하다. root 소유의 SUID 파일의 경우에는 꼭 필요한 파일을 제외하고는 SUID, SGID 속성을 제거해주고, 잘못 설정되어 보안 위협이 되고 있는지 주기적인 진단 및 관리가 요구된다.

 

*SetUID : 특정 파일에 SetUID 설정이되어있는 경우 해당 파일을 소유한 계정의 권한으로 프로그램이 시작된다.

 

2). 점검 방법

불필요한 SUID, SGID 파일을 제거한다.

 

3). 조치 방안

#> find / -user root -type f \( -perm -04000 -o -perm -02000 \) -xdev -exec ls -al {} \;를 통해 SUID, SGID 파일을 확인하고

꼭 필요한 것인지 확인하고 그렇지 않다면 소유권을 조절해 준다.

 


 

 

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

1). 취약점 개요

환경변수 파일의 접근권한 설정이 잘못되어 있을 경우 비인가자가 다양한 방법으로 사용자 환경을 변경하여 침해사고를 일으킬 수 있으므로 홈 디렉터리 내의 환경변수 파일에 대한 접근 권한의 적정성을 검사하는 것.

 

2). 점검 방법

로그인 시 실행되는 스크립트(환경변수 파일)파일의 소유권과 허가권 확인해야 한다. 기타사용자 허가권에 쓰기권한이 없어야하고 소유자와 소유그룹이 root이어야 한다.

 

3). 조치 방안

chmod명령어와 chown명령어를 통해 권한을 조정해 준다.

 


 

11. world wirtable 파일 점검

1). 취약점 개요

모든 사용자가 접근 및 수정할 수 있는 권한으로 설정된 파일이 존재할 경우 일반 사용자의 실수 또는, 악의적인 행위로 인해 주요 파일 정보가 노출되거나 시스템 장애를 유발할 수 있다. 만약 의도적으로 변경된 스크립트 파일을 root가 확인하지 않고 실행했을 경우 시스템 권한 노출을 비롯해 다양한 보안 위험이 초래될 수 있다.

 

2). 점검 방법

기타사용자 허가권 필드에 쓰기권한이 있는 파일을 찾는다. 누구나 수정이 가능한 (world Writable)파일에서 w 권한을 제거해야한다.

#find / -perm -002 2> /dev/null         // 하지만 /proc, /sys 등 해당 디렉토리 제외하고 검색해야한다.         

 

3). 조치 방안

chmod를 이용해서 기타사용자의 write기능을 제거하거나 파일을 삭제해야 한다.

#> find / -perm -002 -exec chmod o-w {} \; 2> /dev/null      //만약 검색 결과가 링크 파일이라면 원본 파일의 허가권이 변경이 된다.

 


 

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

1). 취약점 개요

디바이스가 존재하지 않거나 이름이 잘못 입력된 경우 시스템은 /dev 디렉터리에 계속해서 파일을 생성하여 에러를 발생시킨다. 따라서 실제 존재하지 않는 디바이스를 찾아 제거함으로써 root 파일 시스템 손상 및 다운 등의 문제를 방지하여야 한다.

 

※ /dev 디렉터리?? 논리적 장치 파일을 담고 있는 /dev 디렉터리는 /devices 디렉터리에 있는 물리적 장치 파일에 대한 심볼릭 링크이다.

예를 들어 rmt0를 rmto로 잘못 입력한 경우 새파일이 새로 생성되는 것과 같이 디바이스 이름 입력 오류 시 root 파일 시스템이 에러를 일으킬 때까지 /dev 디렉터리에 계속해서 파일을 생성한다.

 

2). 점검 방법

major, minor, number를 가지지 않는 device 파일 제거

 

3). 조치 방안

#find /dev -type f -exec ls -l {} \;

 


 

13. HOME/.rhosts, hosts.equiv 사용 금지

1). 취약점 개요

r'command 사용을 통한 원격 접속은 *NET Backup이나 다른 용도로 사용되기도 하나, 보안상 매우 취약하여 서비스 포트가 열려있는 경우 중요 정보 유출 및 시스템 장애 발생 등 침해사고의 원인이 된다. 만약 사용이 불가피한 경우 /etc/hosts.equiv 파일 및 .rhost 파일 사용자를 root 또는, 해당 계정으로 설정한 뒤 권한을 600으로 설정하고 해당 파일 설정에 '+' 설정(모든 호스트 허용)이 포함되지 않도록 한다.

 

*r'command : 인증 없이 관리자의 원격접속을 가능하게 하는 명령어들로 rsh, rlogin, rexec 등이 있다.

*Net Backup : 이기종 운영체제 간 백업을 지원하는 Symantec 사의 백업 및 복구 툴을 말한다.

 

2). 점검 방법

login, shell, exec 서비스를 사용하지 않거나, 해당 서비스들 파일 소유자가 root이고 파일 권한이 600이하인지 확인

 

3). 조치 방안

1. “/etc/hosts.equiv” 및 “$HOME/.rhosts” 파읷의 소유자를 root 또는, 해당 계정으로 변경
#chown root /etc/hosts.equiv
#chown <user_name> $HOME/.rhosts
2. “/etc/hosts.equiv” 및 “$HOME/.rhosts” 파읷의 권한을 600 이하로 변경
#chmod 600 /etc/hosts.equiv
#chmod 600 $HOME/.rhosts
3. “/etc/hosts.equiv” 및 “$HOME/.rhosts” 파읷에서 “+”를 제거하고 허용 호스트 및 계정 등록
#cat /etc/hosts.equiv (or $HOME/.rhosts)

 


 

14. 접속 IP 및 포트 제한

1). 취약점 개요

UNIX 시스템이 제공하는 Telnet, FTP 등 많은 네트워크 서비스를 통한 외부 비인가자의 불법적인 접근 및 시스템 침해사고를 방지하기 위하여 TCP Wrapper를 이용하여 제한된 IP 주소에서만 접속할 수 있도록 설정한다.

 

2). 점검 방법

#> /etc/hosts.deny 파일에 ALL Deny 설정 후 /etc/hosts.allow 파일에 접근을 허용할 특정 호스트를 등록하고 있는지 확인하자.

 

3). 조치 방안

#> /etc/hosts.allow가 ALL로 되어있는 경우 삭제해주고 #> /etc/hosts.deny 파일에 ALL:ALL을 기입하여 일단 모든 사용자를 거부하도록한다.

 


 

15. hosts.lpd 파일 소유자 및 권한 설정

1). 취약점 개요

/etc/host.lpd 파일에 일반 사용자가 접근할 수 있다면 이 파일을 가지고 host 파일에 접근하여 공격을 할 수 있으므로 /etc/hosts.lpd 파일의 소유자와 퍼미션 설정을 확인하여야 한다.

 

*host.lpd 파일 : 로컬 프린트 서비스를 사용할 수 있는 허가된 호스트(사용자) 정보를 담고 있는 파일을 말한다. (hostname IP 주소를 포함)

2). 점검 방법

/etc 디렉터리에 해당 파일이 있는지 확인한다.

 

3). 조치 방안

만약에 파일이 있다면, 파일의 소유자가 root이고 Other에 쓰기 권한이 부여되어 있지 않아야 한다.

 


 

16. NIS 서비스 비활성화

1). 취약점 개요

NIS(Network Information Service) 주 서버는 정보표를 소유하여 NIS 대응 파일들로 변환하고, 이 대응 파일들이 네트워크를 통해 제공됨으로써 모든 컴퓨터에 정보가 갱신되도록 할 수 있으며 사용자들은 패스워드를 한 번만 바꾸어 NIS 영역에 들어 있는 모든 컴퓨터의 정보를 갱신할 수 있다. 하지만 NIS 이용 시 서버 정보 유출 위험이 존재하는 등 보안에 취약하다.

 

2). 점검 방법

NIS 서비스가 활성화 되어있는지 확인한다.

 

3). 조치 방안

NIS 설정을 삭제

 


 

17. UMASK 설정 관리

1). 취약점 개요

시스템 내에서 사용자가 새로 생성하는 파일의 접근권한은 *UMASK 값에 따라 정해짐 현재 설정된 UMASK는  명령 프롬프트에서 "umask"를 수행하여 확인할 수 있으며 UMASK 값이 "027" 또는, "022"이기를 권장한다.

#> umask 명령어를 통해 현재 로그인한 사용자에게 적용된 UMASK 값 확인을 할 수 있다.

UMASK??? : 파일이나 디렉토리 생성 시 할당되는 허가권을 결정하는데 기준이 되는 값

 

파일 기본 허가권       : 666 (rw- rw- rw-)

디렉토리 기본 허가권 : 777 (rwx rwx rwx)

 

※ umask 허가권 구하는 방법

1). umask 022 값을 2진수로 변경 ( 000 010 010 )

2). 보수를 취한다. ( 111 101 101 )

3). 보수를 취한 값과 기본 허가권과 and 연산을 한다.  

쉽게 구한는 법 : 기본 허가권 - umask = 결정된 허가권

 

2). 점검 방법

#> umask 명령을 통해 umask 값이 "027" 또는 "022"인지 확인한다 .

 

3). 조치 방안

위의 설정과 다르다면, #> umask 022 명령어를 통해 umask를 변경해준다.

 


 

18. 홈 디렉터리 소유자 및 권한 설정

1). 취약점 개요

사용자 홈 디렉터리 내 설정파일이 비인가자에 의해 변조되면 정상적인 사용자 서비스가 제한된다. 해당 홈 디렉터리의 소유자 외 일반 사용자들이 해당 홈 디렉터리를 수정할 수 없도록 제한하고 있는지 점검하여 정상적인 사용자 환경 구성 및 서비스 제공 유무를 확인해야 한다.

 

2). 점검 방법

#> cat /etc/passwd 파일에는 해당 계정의 홈디렉터리가 나와있다. 보통 일반 사용자는 /home/[일반 사용자 계정명]식으로 홈디렉터리를 사용한다. root와 소유 계정을 제외하고는 해당 디렉터리 권한이 없도록 설정해야 한다. 특히 "w"권한은 제거 해야한다.

#> cat /etc/login.defs | grep "UMASK"를 통해 허가권 UMASK 확인. 

 

3). 조치 방안

UMASK를 022 혹은 077로 하여 쓰기 권한이 없도록하고, /etc/passwd 파일을 확인해서 홈디렉터리의 소유권을 확인해야 한다.

 


19. 홈 디렉터리로 지정한 디렉터리의 존재 관리

1). 취약점 개요

사용자 홈 디렉터리는 사용자가 로그인한 후 작업을 수행하는 디렉터리이다. 로그인 후 사용자 홈 디렉터리에 존재하는 사용자 환경 설정 파일에 의해 사용자 환경이 구성되면 홈 디렉터리의 부재로 인한 보안상 다음의 문제가 발생될 수 있다.

(1) 홈 디렉터리가 존재하지 않는 경우 root 계정이 아닌 일반 사용자의 홈디렉터리가 /로 되어있을 경우 로그인 시 사용자 현재 디렉터리가 /로 로그인되므로 관리/보안상 문제가 발생된다. 

(2) 홈 디렉터리 내에 숨겨진 디렉터리가 존재하는 경우 정당하지 못한 사용자가 파일을 숨길 목적으로 만들어 놓은 것일 수있다.

(3) 홈 디렉터리 내에 시스템 명령의 이름을 가진 불법적인 실행파일이 존재하는 경우 상대경로와 시스템 명령을 입력하여 불법적인 파일이 실행되게 한다. 

 

2). 점검 방법

(1). 홈디렉터리가 없는 사용자 계정

- #> pwck   // passwork check /etc/passwd/ 파일과 /etc/shadow 파일의 필드를 점검하는 명령어 ex)  계정은 있으나, 홈디렉터리가 없는 경우

- #> cut -d ":" -f 1,6 /etc/passwd          //계정과 홈디렉터리를 매칭시켜보기.

(2). 잘못된 경로가 지정되어있는 경우

- 일반 사용자 계정의 홈디렉터리 -> /home/[계정명]

- 시스템 계정 -> 확인이 필요

 

3). 조치 방안

홈 디렉터리가 없는 사용자 계정을 삭제하거나 홈 디렉터리가 없는 사용자 계정에 홈 디렉터리를 지정해 준다.

 


 

20.  숨겨진 파일 및 디렉터리 검색 및 제거

1). 취약점 개요

불법적으로 생성되었거나 숨겨진 의심스러운 파일로부터 침입자는 정보 습득이 가능하며, 파일을 임의로 변경할 수 있다. "."으로 시작하는 숨겨진 파일 존재 여부 확인 후 불법적이거나 의심스러운 파일을 삭제해야 한다.

 

2). 점검 방법

평소 #> ls -al 명령어를통해 숨김 파일 까지 확인하여 의심스러운 파일은 삭제하도록한다.

 

3). 조치 방안

평소 #> ls -al 명령어를통해 숨김 파일 까지 확인하여 의심스러운 파일은 삭제하도록한다.