본문 바로가기
Linux

[Linux] 보안 취약점 점검 가이드 - 파일 및 디렉토리 관리

by 오송나라 2024. 4. 17.
728x90
SMALL
안녕하세요. 오송입니다.

 

오늘은 간단하게 Linux 보안 취약점 중 파일 및 디렉토리 관리 부분의 조치사항 조치방법에 대해 알아보겠습니다.

 

천천히 따라오시면서 모르는 부분이 있으시면, 댓글 달아주시면 됩니다.


1. 파일 및 디렉토리 관리

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

  • 관리자가 명령어(예: ls, mv, cp 등)를 수정했을 때 root 계정의 PATH 환경변수에 *.* (현재 디렉터리 지칭)이 포함되어 있으면 현재 디렉터리에 명령어와 같은 이름의 악성파일이 실행되어 악의적인 행위가 일어날 수 있음.
진단 기준
양호 PATH 환경변수에 *.*이 맨 앞이나 중간에 포함되지 않은 경우
취약 PATH 환경변수에 *.*이 맨 앞이나 중간에 포함된 경우

1.1.1 진단방법

# 현재 설정된 PATH 값 확인
echo $PATH

1.1.2 조치방법

viu /etc/profile

*******************************
[수정전] PATH=.:$PATH:$HOME/bin
[수정후] PATH=$PATH:$HOME/bin
*******************************

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

  • 삭제된 소유자의 UID와 동일한 사용자가 해당 파일, 디렉터리에 접근 가능하여 사용자 정보 등 중요 정보가 노출될 위험이 있다.
진단 기준
양호 소유자나 그룹이 존재하지 않는 파일 및 디렉터리가 없는 경우
취약 소유자나 그룹이 존재하지 않는 파일 및 디렉터리가 있는 경우

1.2.1 진단방법

# 시스템에서 소유자나 그룹이 존재하지 않는 파일 및 디렉터리를 검색
find / -nouser -o -nogroup 또는 find /etc /tmp /bin /sbin \( -nouser -o -nogroup \) -xdev -exec ls -al {} \; 2> /dev/null

1.2.2 조치방법

# 소유자가 존재하지 않는 파일이나 디렉터리가 불필요한 경우 rm 명령으로 삭제
rm <file_name>
rm -rf <directory_name>
# 필요한 경우 chown 명령으로 소유자 및 그룹 변경
chown <user_name> <filre_name>

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

  • 관리자(root) 와 사용자가 "/etc/passwd" 파일의 변조가 가능할 경우 shell 변조, 사용자 추가/삭제, root를 포함한 사용자 권한 획득 시도 등 악의적인 행위가 가능하다.
진단 기준
양호 /etc/passwd 파일의 소유자가 root이고, 권한이 644이하인 경우
취약 /etc/passwd 파일의 소유자가 root가 아니고, 권한이 644초과인 경우

1.3.1 진단방법

# /etc/passwd 파일의 퍼미션과 소유자 확인
ls -l /etc/passwd

1.3.2 조치방법

# /etc/passwd 파일의 소유자 및 권한 변경(소유자 root, 권한 644)
chown root /etc/passwd
chmod 644 /etc/passwd

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

  • 해당 파일에 대한 권한 관리가 이루어지지 않을 시 ID 및 패스워드 정보가 외부로 노출될 수 있다.
진단 기준
양호 /etc/shadow 파일의 소유자가 root이고, 권한이 400이하인 경우
취약 /etc/shadow 파일의 소유자가 root가 아니거나, 권한이 400초과인 경우

1.4.1 진단방법

# /etc/shadow 파일의 퍼미션과 소유자 확인
ls -l /etc/shadow

1.4.2 조치방법

# /etc/shadow 파일의 소유자 및 권한 변경 (소유자 root, 권한 400)
chown root /etc/shadow
chmod 400 /etc/shadow

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

  • hosts 파일에 비인가자 쓰기 권한이 부여된 경우, 공격자는 hosts파일에 악의적인 시스템을 등록하여, 이를 통해 정상적인 DNS를 우회하여 악성사이트로의 접속을 유도하는 파밍(Pharming) 공격 등에 악용될 수 있다.
진단 기준
양호 /etc/hosts 파일의 소유자가 root이고, 권한이 644 이하인 경우
취약 /etc/hosts 파일의 소유자가 root가 아니거나, 권한이 644 초과인 경우

1.5.1 진단방법

# /etc/hosts 파일의 퍼미션과 소유자를 확인
ls -l /etc/hosts

1.5.2 조치방법

# /etc/hosts 파일의 퍼미션을 644로, 소유자를 root로 변경
chmod 644 /etc/hosts
chown root /etc/hosts
SMALL
728x90

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

  • (x)inetd.conf 파일에 비인가자의 쓰기 권한이 부여되어 있을 경우, 비인가자가 악의적인 프로그램을 등록하여 root 권한으로 불법적인 서비스를 실행할 수 있다.
진단 기준
양호 /etc/(x)inetd.conf 파일의 소유자가 root이고, 권한이 644이하인 경우
취약 /etc/(x)inetd.conf 파일의 소유자가 root가 아니거나, 권한이 644초과인 경우

1.6.1 진단방법

# /etc/(x)inetd.conf 파일의 퍼미션과 소유자 확인
ls -l /etc/(x)inetd.conf

1.6.2 조치방법

# /etc/(x)inetd.conf 파일의 퍼미션을 644로, 소유자를 root로 변경
chmod 644 /etc/(x)inetd.conf
chown root /etc/(x)inetd.conf
ls -l ./xinetd.d 하였을 때 total 0 나오면 양호

1.7 /etc/(r)syslog.conf 파일 소유자 및 권한설정

  • (r)syslog.conf 파일의 접근권한이 적절하지 않을 경우, 임의적인 파일 변조로 인해 침입자의 흔적 또는 시스템 오류 사항을 분석하기 위해 반드시 필요한 시스템 로그가 정상적으로 기록되지 않을 수 있다.
진단 기준
양호 /etc/(r)syslog.conf 파일의 소유자가 root이고, 권한이 644이하인 경우
취약 /etc/(r)syslog.conf 파일의 소유자가 root가 아니거나, 권한이 644초과인 경우

1.7.1 진단방법

# /etc/(r)syslog.conf 파일의 퍼미션과 소유자 확인
ls -l /etc/(r)syslog.conf

1.7.2 조치방법

# /etc/(r)syslog.conf 파일의 퍼미션을 644로, 소유자를 root로 변경
chmod 644 /etc/(r)syslog.conf
chown root /etc/(r)syslog.conf

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

  • services 파일의 접근권한이 적절하지 않을 경우 비인가 사용자가 운영 포트 번호를 변경하여 정상적인 서비스를 제한하거나, 허용되지 않은 포트를 오픈하여 악성 서비스를 의도적으로 실행할 수 있다.
진단 기준
양호 /etc/services 파일의 소유자가 root이고, 권한이 644이하인 경우
취약 /etc/services 파일의 소유자가 root가 아니거나, 권한이 644초과인 경우

1.8.1 진단방법

# /etc/services 파일의 퍼미션과 소유자 확인
ls -l /etc/services

1.8.2 조치방법

# /etc/services 파일의 퍼미션 644로, 소유자 root로 변경
chmod 644 /etc/services
chown root /etc/services

1.9 SUID, SGID, Sticky bit 설정 파일 점검

  • SUID, SGID 파일의 접근권한이 적절하지 않을 경우 SUID, SGID 설정된 파일로 특정 명령어를 실행하여 root 권한 획득 및 정상 서비스 장애를 발생시킬 수 있다.
진단 기준
양호 주요 실행파일의 권한에 SUID와 SGID에 대한 설정이 부여되어 있지 않은 경우
취약 주요 실행파일의 권한에 SUID와 SGID에 대한 설정이 부여되어 있는 경우

1.9.1 진단방법

# 명령어로 SUID와 SGID 파일을 검색하여 주요 파일의 권한을 확인
find / -user root -type f \( -perm -4000 -o -perm -2000 \) -exec ls -lg {} \;

1.9.2 조치방법

# 제거 방법
chmod -s <file_name>

# 주기적 감사 방법
find / -user root -type f \( -perm -04000 -o -perm -02000 \) -xdev -exec ls -al {} \;

# 반드시 사용이 필요한 경우 특정 그룹에서만 사용하도록 제한하는 방법(일반 사용자의 Setuid 사용을 제한함, 임의의 그룹만 가능)
/usr/bin/chgrp <group_name> <setuid_file_name>
/usr/bin/chmod 4750 <setuid_file_name>
SUID 제거 시 OS 및 응용프로그램 서비스 정상작동 유무 확인 필요

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

  • 홈 디렉터리 내의 사용자 파일 및 사용자별 시스템 시작파일 등과 같은 환경변수 파일의 접근권한 설정이 적절하지 않을 경우 비인가자가 환경변수 파일을 변조하여 정상 사용중인 사용자의 서비스가 제한될 수 있다.
진단기준
양호 사용자, 시스템 시작파일 및 환경 파일 소유자가 root 또는 해당 계정이고 권한이 644로 설정되어 있는 경우
취약 사용자, 시스템 시작파일 및 환경 파일 소유자가 root 또는 해당 계정이고 권한이 644로 설정되어 있지 않은 경우

1.10.1 진단방법

# 사용자 홈 디렉터리 확인
cat /etc/passwd | grep /home
# 해당 홈 디렉터리 소유자 및 권한 확인
ls -ld <사용자 홈 디렉터리>
# 홈 디렉터리 내 환경설정 파일 소유자 및 권한 설정
ls -al <사용자 홈 디렉터리>

1.10.2 조치방법

# 소유자 변경 방법
chown <user_name> <file_name>
# 일반 사용자 쓰기 권한 제거 방법
chmod o-w <file_name>

1.11 world writable 파일 점검

  • 시스템 파일과 같은 중요 파일에 world writable 설정이 될 경우, 악의적인 사용자가 해당 파일을 마음대로 파일을 덧붙이거나 지울 수 있게 되어 시스템의 무단 접근 및 시스템 장애를 유발할 수 있다.
진단기준
양호 world writable 파일이 존재하지 않거나, 존재 시 설정 이유를 확인하고 있는 경우
취약 world writable 파일이 존재하나 해당 설정 이유를 확인하고 있지 않는 경우

1.11.1 진단방법

# world writable 파일 존재 유무 확인
find / -type f -perm -2 -exec ls -l {} \;

1.11.2 조치방법

# 파일 삭제 방법
rm -rf <world-writable 파일명>

1.12 $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 파일이 존재하지 않을 경우
취약 login, shell, exec 서비스를 사용하지 않거나, 사용 시 아래와 같은 설정이 적용 되어 있지 않은 경우
- /etc/hosts.equiv 및 $HOME/.rhosts 파일 소유자가 root 또는, 해당 계정인 경우
- /etc/hosts.equiv 및 $HOME/.rhosts 파일 권한이 600 이하인 경우
- /etc/hosts.equiv 및 $HOME/.rhosts 파일 설정에 '+' 설정이 없는 경우
- /etc/hosts.equiv 파일 또는 .rhosts 파일이 존재하지 않을 경우

1.12.1 진단방법

# 파일 소유자 및 권한 확인
ls -al /etc/hosts.equiv
ls -al $HOME/.rhosts
# 계정 별 '+' 부여 적절성 확인
cat /etc/hosts.equiv
cat $HOME/.rhosts

1.12.2 조치방법

# .rhosts, hosts.equiv 파일 미사용 시

1. .rhosts, hosts.equiv 파일 삭제
rm -f [삭제 할 파일 및 디렉터리 경로]
rm -f $HOME/.rhosts 또는 /etc/ hosts.equiv

# .rhosts. hosts.equiv 파일 사용 시

1. "/etc/hosts.equiv" 및 "$HOME/.rhosts" 파일의 소유자를  root 또는 해당 계정으로 변경
chown root /etc/hosts.equiv
chown [계정 명] $HOME/.rhosts

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

3. "/etc/hosts.equiv" 및 "$HOME/.rhosts" 파일에서 '+'를 제거하고 허용 호스트 및 계정 등록
vi /etc/hosts.equiv (or $HOME/.rhosts)

1.13 접속 IP 및 포트 제한

  • 허용할 호스트에 대한 IP 및 포트제한이 적용되지 않은 경우 Telnet, FTP 같은 보안에 취약한 네트워크 서비스를 통하여 불법적인 접근 및 시스템 침해사고가 발생할 수 있다.
진단기준
양호 접속을 허용할 특정 호스트에 대한 IP 주소 및 포트 제한을 설정한 경우
취약 접속을 허용할 특정 호스트에 대한 IP 주소 및 포트 제한을 설정하지 않은 경우

1.13.1 진단방법

# All deny 적용 확인 및 접근 허용 IP 적절성 확인 또는 iptables에서 서버로 접속하는 IP 설정 확인
# /etc/hosts.deny, allow 설정 확인
cat /etc/hosts.deny
cat /etc/hosts.allow

# iptables 설정 확인
iptables -nL

1.13.2 조치방법

# vi 편집기로 /etc/hosts.deny 파일 오픈
vi /etc/hosts.deny

# 아래와 같이 수정 또는 추가(ALL Deny 설정)
ALL:ALL

# vi 편집기로 /etc/hosts.allow 파일 오픈
vi /etc/hosts.allow

# 아래와 같이 접속 허용 서비스 및 IP 설정
sshd : 192.168.0.148, 192.168.0.6

# TCP Wrapper 접근제어 가능 서비스
SYSTAT, FINGER, FTP, TELNET, RLOGIN, RSH, TALK, EXEC, TFTP, SSH

이렇게 설정하면 허용되지 않는 IP는 서비스 사용이 불가능함

1.14 cron 파일 소유자 및 권한 설정

  • root 외 일반사용자에게도 crontab 명령어를 사용할 수 있도록 할 경우, 고의 또는 실수로 불법적인 예약 파일 실행으로 시스템 피해를 일으킬 수 있다.
진단기준
양호 /etc/crontab 파일의 소유자가 root이며, 권한이 640이하인 경우
취약 /etc/crontab 파일의 소유자가 root가 아니거나, 권한이 640초과인 경우

1.14.1 진단방법

# /etc/cron.allow 및 /etc/cron.deny 파일의 소유자 및 권한 확인
ls -l /etc/cron.allow
ls -l /etc/cron.deny

1.14.2 조치방법

# /etc/cron.allow 및 /etc/cron.deny 파일의 소유자 및 권한 변경
chown root /etc/cron.allow
chmod 640 /etc/cron.allow

chown root /etc/cron.deny
chmod 640 /etc/cron.deny

 

 

 

 

 

 

 

※ 참고문서

https://ssv.skill.or.kr/cloud-security/linux-security-vulnerability

728x90
LIST