본문 바로가기

Personal/Cloud

클라우드 리눅스 취약점 - 파일 및 디렉토리 관리

U-06. root 홈, 패스 디렉터리 권한 및 패스 설정 /  취약도 : 상

요약 : root 계정의 PATH 환경변수에 "." (현재 디렉터리 지칭)이 포함되어 있으면 해당 이름의 악성파일이 실행될 수 있다.

 

피해 : 악성파일이 실행되어 악의적인 행위 발생 가능

 

해결법 및 추가 설명 : PATH 환경변수에 "."이 맨 앞이나 중간에 포함되지 않게 해야 한다. echo $PATH로 현재 설정된 PATH값을 확인한다. "."이 있는 경우 vi 편집기로 아래 그림과 같이 수정한다.

bin과 sbin 참고 : https://code-bee.tistory.com/4

bin은 일반 사용자 일반 명령어 / sbin은 루트 사용자 시스템 명령어?

U-07. 파일 및 디렉터리 소유자 설정 /  취약도 : 상

요약 : 삭제된 소유자의 파일이나 디렉토리가 남아있는 경우 동일한 UID의 타 사용자에 의해 중요 정보가 노출될 수 있다.

 

피해 : 사용자 정보 등 중요 정보 노출

 

해결법 및 추가 설명 : 소유자나 그룹이 존재하지 않는 파일 및 디렉터리가 없어야 한다. find / -nouser -o -nogroup 또는 find /etc /tmp /bin /sbin \( -nouser -o -nogroup \) -xdev -exec ls -al {}\; 2> /dev/null 명령어를 쳐서 소유자나 그룹이 존재하지 않는 파일 및 디렉터리가 있는지 확인한다. 존재한다면 파일일 경우 rm으로 디렉토리일 경우 rm -rf 로 삭제한다. 필요한 파일일 경우 chown 명령으로 소유자 및 그룹을 변경하자.

 

U-08. /etc/passwd 파일 소유자 및 권한 설정 /  취약도 : 상

요약 : root 외 사용자가 "/etc/passwd" 파일의 변조가 가능할 경우 취약하다.

 

피해 : shell 변조, 사용자 추가/삭제, root를 포함한 사용자 권한 획득 시도 등 악의적 행위

 

해결법 및 추가 설명 : /etc/passwd 파일의 소유자가 root이고, 권한이 644인 경우 양호하다.

/etc/passwd 파일의 퍼미션과 소유자를 ls -l /etc/passwd 로 확인한다.  파일의 소유자가 root이고, 권한이 644인 경우가 아니라면 chown root /etc/passwd 로 소유자 root로 변경, chmod 644 /etc/passwd로 권한도 변경해준다.

644 => root 읽기 쓰기 모두 가능 나머지(일반 사용자와 그룹) 읽기만 가능.

 

U-09. /etc/shadow 파일 소유자 및 권한 설정 /  취약도 : 상

요약 : /etc/shadow 파일의 권한 관리를 안 하면 id나 패스워드 정보가 노출될 수 있다.

 

피해 : 사용자 계정 정보 유출로 인한 다양한 피해

 

해결법 및 추가 설명 : /etc/shadow 파일의 소유자가 root이고, 권한이 400인 경우 양호하다.

/etc/shadow 파일의 퍼미션과 소유자를 ls -l /etc/shadow 로 확인한다.  파일의 소유자가 root이고, 권한이 644인 경우가 아니라면 chown root /etc/shadow 로 소유자 root로 변경, chmod 400 /etc/shadow로 권한도 변경해준다.

400 => root 읽기 쓰기 가능 나머지(일반 사용자와 그룹) 권한 x

 

U-10. /etc/hosts 파일 소유자 및 권한 설정 /  취약도 : 상

요약 : /etc/hosts 파일을 허가되지 않은 사람이 쓰기 권한으로 쓸 수 있게 되면 악의적인 시스템 등록이 가능하다.

 

피해 : 악의적인 시스템을 등록하여 정상적인 DNS를 우회하여 악성사이트로의 접속을 유도하는 파밍 공격 등에 악용될 수 있다.

 

해결법 및 추가 설명 : /etc/hosts 파일의 소유자가 root이고, 권한이 644 이하인 경우 양호하다.

/etc/hosts 파일의 퍼미션과 소유자를 ls -l /etc/hosts 로 확인한다.  파일의 소유자가 root이고, 권한이 644 이하인 경우가 아니라면 chown root /etc/hosts 로 소유자 root로 변경, chmod 644 /etc/hosts로 권한도 변경해준다.

 

U-11. /etc/(x)inetd.conf 파일의 소유자 및 권한 설정 /  취약도 : 상

요약 : /etc/(x)inetd.conf 파일을 허가되지 않은 사람이 쓰기 권한으로 쓸 수 있게 되면 악의적인 프로그램을 등록할 수 있다.

 

피해 : 악의적인 프로그램을 등록하여 root 권한으로 불법적인 서비스를 실행할 수 있다.

 

해결법 및 추가 설명 : /etc/(x)inetd.conf 파일의 소유자가 root이고, 권한이 644 이하인 경우 양호하다.

/etc/(x)inetd.conf파일의 퍼미션과 소유자를 ls -l /etc/(x)inetd.conf 로 확인한다.  파일의 소유자가 root이고, 권한이 644 이하인 경우가 아니라면 chown root /etc/(x)inetd.conf 로 소유자 root로 변경, chmod 644 /etc/(x)inetd.conf로 권한도 변경해준다.

 

U-12. /etc/(r)syslog.conf 파일 소유자 및 권한 설정 /  취약도 : 상

요약 : /etc/(x)inetd.conf 파일의 접근권한이 적절하지 않을 경우, 임의적인 파일 변조가 가능하다.

 

피해 : 침입자의 흔적, 시스템 오류 사항을 분석하기 위해 반드시 필요한 시스템 로그가 정상적으로 기록되지 않을 수 있다.

 

해결법 및 추가 설명 : /etc/(r)syslog.conf 파일의 소유자가 root이고, 권한이 644 이하인 경우 양호하다.

/etc/(r)syslog.conf 파일의 퍼미션과 소유자를 ls -l /etc/(r)syslog.conf 로 확인한다.  파일의 소유자가 root이고, 권한이 644 이하인 경우가 아니라면 chown root /etc/(r)syslog.conf 로 소유자 root로 변경, chmod 644 /etc/(r)syslog.conf 로 권한도 변경해준다.

*syslog 파일보다 rsyslog는 좋은 거임.

 

U-13. /etc/services 파일 소유자 및 권한 설정 /  취약도 : 상

요약 : /etc/services 파일의 접근권한이 적절하지 않을 경우, 비인가 사용자의 운영 포트 번호 변경이 가능하다.

 

피해 : 정상적인 서비스를 제한, 허용되지 않은 포트 오픈해 악성 서비스를 의도적으로 실행

 

해결법 및 추가 설명 : /etc/services 파일의 소유자가 root이고, 권한이 644 이하인 경우 양호하다.

/etc/services 파일의 퍼미션과 소유자를 ls -l /etc/services 로 확인한다.  파일의 소유자가 root이고, 권한이 644 이하인 경우가 아니라면 chown root /etc/services 로 소유자 root로 변경, chmod 644 /etc/services 로 권한도 변경해준다.

 

U-14. SUID, SGID, Sticky bit 설정 파일 점검 /  취약도 : 상

요약 : SUID, SGID 파일의 접근권한이 적절하지 않으면 두 가지가 설정된 파일로 특정 명령어를 실행할 수 있다.

 

피해 : 공격자의 root 권한 획득이나 정상 서비스 장애가 발생할 수 있다.

 

해결법 및 추가 설명 : 주요 실행파일의 권한에 SUID와 SGID에 대한 설정이 부여되어 있지 않아야 한다.

find / -user root -type f \( -perm -4000 -o -perm -2000 \) -exec ls -lg {} \; 로 두 가지 설정이 된 파일을 검색한다.

chmod -s 파일이름으로 두 가지 설정이 된 파일들을 제거한다. 아래의 사진과 같은 코드로 주기적인 감사를 한다.

* Sticky bit: 모든 사용자가 사용할 수 있는 디렉토리에 있는 파일을 함부로 삭제할 수 없고 오직 소유자만 삭제 변경 가능하도록 함.

U-15. 사용자, 시스템 시작파일 및 환경파일 소유자 및 권한 설정 /  취약도 : 상

요약 : 홈 디렉터리 내의 사용자 파일 및 사용자별 시스템 시작파일 등과 같은 환경변수 파일의 접근권한 설정이 적절하지 않을 경우 비인가자가 환경변수 파일을 변조할 수 있다.

 

피해 : 환경변수 파일이 변조되어 정상 사용중인 사용자의 서비스가 제한될 수 있다.

 

해결법 및 추가 설명 : 사용자, 시스템 시작파일 및 환경 파일 소유자가 root 또는 해당 계정이고 권한이 644로 설정되어 있는 경우 안전하다. ls 명령어로 각 홈 디렉토리의 소유자 및 권한을 확인하고 올바르지 않으면 chown과 chmod로 변경해준다.

U-16. world writable 파일 점검 /  취약도 : 상

요약 : 시스템 파일과 같은 중요 파일에 world writable 설정이 될 경우, 악의적인 사용자가 해당 파일을 변경 가능하다.

 

피해 : 해당 파일에 마음대로 파일을 덧붙이거나 지울 수 있게 되어 시스템의 무단 접근 및 시스템 장애를 유발할 수 있다.

 

해결법 및 추가 설명 : world writable 파일이 존재하지 않거나, 존재 시 설정 이유를 확인하고 있는 경우 안전하다.

find / -type f -perm -2 -exec ls -l {} \; 으로 world writable 파일의 존재 여부를 확인한다. 적합하지 않다면 chmod로 다시 권한 설정하거나 rm -rf로 파일을 삭제해준다.

* world writable : 파일의 내용을 소유자나 그룹 외 모든 사용자에 대한 쓰기가 허용된 파일

 

U-17. $HOME/.rhosts, hosts.equiv 사용 금지 /  취약도 : 상 

요약 : rlogin, rsh 등과 같은 'r' command의 보안 설정이 적용되지 않은 경우, 원격지의 공격자가 관리자 권한으로 목표 시스템상의 임의의 명령을 수행시킬 수 있다.

 

피해 : 명령어 원격 실행을 통해 중요 정보 유출 및 시스템 장애를 유발시킬 수 있다. 또한 공격자 백도어 등으로도 활용될 수 있다.

 

해결법 및 추가 설명 : 

login, shell, exec 서비스를 사용하거나, 사용 시 아래와 같은 설정이 적용된 경우

- /etc/hosts.equiv 및 $HOME/.rhosts 파일 소유자가 root 또는, 해당 계정인 경우

- /etc/hosts.equiv 및 $HOME/.rhosts 파일 권한이 600 이하인 경우

- /etc/hosts.equiv 및 $HOME/.rhosts 파일 설정에 '+' 설정이 없는 경우

- /etc/hosts.equiv 파일 또는 .rhosts 파일이 존재하지 않을 경우

파일 소유자 및 권한 확인을 ls -al /etc/hosts.equiv와 ls -al $HOME/.rhosts 로 한다.

계정 별 '+' 부여 적절성 확인을 cat으로 두 파일을 읽어서 진행한다.

.rhosts, hosts.equiv 파일 미사용 시에는 두 파일을 rm -f 로 삭제한다.

두 파일을 사용 시에는 두 파일의 소유자를 root 나 해당 계정으로 변경한다.

"/etc/hosts.equiv" 및 "$HOME/.rhosts" 파일의 퍼미션을 chmod로 600 이하로 변경

"/etc/hosts.equiv" 및 "$HOME/.rhosts" 파일에서 "+"를 제거하고 허용 호스트 계정 등록 vi 편집기로 편집한다.

*+를 제거하는 이유: +는 해당 그룹에 있는 모든 시스템을 신뢰할 수 있는 것으로 간주하겠다.

 

U-18. 접속 IP 및 포트 제한 /  취약도 : 상 

요약 : 허용할 호스트에 대한 IP 및 포트제한이 없는 경우 취약하다.

 

피해 : Telnet, FTP같은 보안에 취약한 네트워크 서비스를 통해 불법적인 접근 및 시스템 침해사고가 발생할 수 있다.

* 파일 전송 프로토콜(File Transfer Protocol, FTP)은 TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜이다.

 

해결법 및 추가 설명 : 접속을 허용한 특정 호스트에 대한 IP 주소 및 포트 제한을 설정한 경우 안전하다.

All deny 적용 확인 및 접근 허용 IP 적절성 확인 또는 iptables 에서 서버로 접속 하는 IP 설정 확인

- /etc/hosts.deny, allow 설정 확인 및 iptables 설정 확인(iptables -nL)을 한다. vi 편집기를 이용하여 "/etc/hosts.deny"파일을 열어서 ALL:ALL으로 ALL Deny 설정을 한다. vi편집기로 /etc/hosts.allow 파일을 열어 아래와 같이 설정한다.

 

U-19. cron 파일 소유자 및 권한 설정 /  취약도 : 상 

요약 : root 외 일반사용자에게도 crontab 명령어를 사용할 수 있도록 할 경우 취약하다.

* crontab(크론탭): 예약된 작업을 주기적으로 실행시킬 수 있게 설정하는 기능. 윈도우의 작업 스케줄러와 비슷한 것.

 

피해 : 고의 또는 실수로 불법적인 예약 파일 실행으로 시스템 피해를 일으킬 수 있다.

 

해결법 및 추가 설명 : /etc/crontab 파일의 소유자가 root이고, 권한이 640이하인 경우 안전하다. "/etc/cron.allow" 및 "/etc/cron.deny" 파일의 소유자 및 권한 확인 ls -l로 두 파일을 확인한다. 소유자와 권한이 올바르지 않다면 chown과 chmod로 권한 및 소유자를 변경한다.

 

출처 : KISA 클라우드 취약점 점검 가이드-합본 (2020.12)

위 파일을 보고 공부하며 요약 및 정리한 글입니다. 정확하지 않은 내용이 있을 수 있으니, 위 파일을 직접 참고하시길 권장드립니다.