728x90
안녕하세요. 오송입니다.
오늘은 간단하게 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
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
'Linux' 카테고리의 다른 글
[Linux] 보안 취약점 점검 가이드 - 서비스 관리 (2) | 2024.04.17 |
---|---|
[Linux] 보안 취약점 점검 가이드 - 계정관리 (0) | 2024.04.16 |