본문 바로가기
ISMS-P/linux

리눅스서버 보안조치 2021 주통기반 (RHEL계열 7/8) 파일 및 디렉토리

by open_tracking 2021. 6. 9.

주요정보통신시설기반 리눅스 기술적 보안조치 2021 3월자 최신 기준입니다.

-2021-10-26 수정

항목 부분 색깔 보시며 구분할 수 있게 하였습니다.

빨간색 글씨의 경우 default가 취약이므로 변경하셔야 되는 부분입니다.

검정색 글씨의 경우 default가 양호입니다.

바쁘시면 빨간 글씨만 보세요

 

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

- echo $PATH
:부분으로 구분되는데 ::가 연속 두번 나오거나 :부분이 맨앞에 오는경우 취약

양호한 예시 
/usr/share/Modules/bin:/sbin:/bin:/usr/sbin:/usr/bin

cat /etc/profile 양호한 경우 예시

pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}

 

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

- find / -nouser

- find / -nogroup

출력되는 path 목록 확인

 

일반적인 경우에는 출력되지 않지만,  만약 퇴사자가 서버를 구성했고 그계정이 삭제되었다면 나올 수 있습니다.

그럴경우 새로 nologin계정만들어서 chown 명령어 활용하여 매핑시켜주시면 됩니다.

 

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

- ls -l /etc/passwd

아래와같이 출력되면 양호

-rw-r--r--. 1 root root /etc/passwd

 

644이하이며 root 소유자이면 양호

 

취약시 조치방법

#chown root /etc/passwd

#chmod 644 /etc/passwd

 

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

- ls -l /etc/shadow

아래와 같이 출력되면 양호

-r--------. 1 root root /etc/shadow

 

400이하이며 root소유자

 

취약시 조치방법

#chown root /etc/shadow

#chmod 400 /etc/shadow

 

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

- ls -l /etc/hosts

아래와 같이 출력되면 양호

-rw-------. 1 root root /etc/hosts

 

취약시 조치방법

#chown root /etc/hosts

#chmod 600 /etc/hosts

 

* (주의사항)

해당 파일에 사용자가 넣은 값이 있다면... 해당 파일을 user권한으로 읽는 부분이 있는지 확인후 적절히 조치 필요.

 

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

- ls -l /etc/xinetd.conf

- ls -al /etc/xinetd.d/*

 

RHEL계열 7/8 에는 해당 파일 기본적으로 없음.

 

소유자 / 권한 600 권장이므로 chown과 chmod로 변경.

 

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

- ls -al /etc/rsyslog.conf (rhel 7/8 계열 기준)

아래와 같이 출력되면 양호

-rw-r-----. 1 root root /etc/rsyslog.conf

 

취약시 조치방법

#chown root /etc/rsyslog.conf 

#chmod 640 /etc/rsyslog.conf

 

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

- ls -l /etc/services

아래와 같이 출력되면 양호

-rw-r--r--. 1 root root /etc/services

 

취약시 조치방법

#chown root /etc/services

#chmod 644 /etc/services

 

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

- find / -user root -type f \( -perm -04000 -o -perm -02000 \) -xdev -exec ls -al {} \;

 

꽤 많은 파일이 나올 수 있습니다.

너무 귀찮아서 그냥 다 조치하고 감수할께 싶으면 아래 명령어 입니다.

 

- find / -user root -type f \( -perm -04000 -o -perm -02000 \) -xdev -exec chmod -s {} \;

조치하시고 

 

다시 점검 명령어 쳐서 없어졌는지 확인하세요.

 

위 조치는 서비스와 민감하여 상의하시고 조치하시길바래요...

 

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

- ls -l /home/사용자/bash*

 

소유자가 root또는 해당 사용자계정으로만 설정되어 있어야함.

* 소유자 변경 chown 활용

* 일반 사용자 쓰기 권한 제거 chmod o-w 파일이름

 

11. world writable 파일 점검

world writable 파일을 이용한 시스템 접근 및 악의적인 코드 실행을 방지하기 위함

KISA가이드에는 아래 명령어로 나와 있습니다.

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

 

그러나 /sys와 /proc 해당안되는 부분이 너무 많이 나와서 제외하고 검색하였습니다.

# find / . ! \( \( -path '/proc' -o -path '/sys' \) -prune \) -type f -perm -2 -exec ls -l {} \;

 

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

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

 

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

 

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

/etc/hosts.equiv 파일 및 .rhosts 파일 사용자를 root 또는, 해당 계정으로 설정한 뒤 권한을 600으로 설정하고 해당파일 설정에 ‘+’ 설정(모든 호스트 허용)이 포함되지 않도록 설정되어 있는지 점검

# ls -al /etc/hosts.equiv 

(존재하지 않을시 해당 사항없음)

# find /home -name .rhosts

(존재하지 않을시 해당 사항없음)

 

조치 방법

해당파일 소유자를 해당 계정이나 root로 하며 권한을 600이하로 설정

 

14. 접속 IP 및 포트 제한

리눅스 경우 리눅스 자체 방화벽에 참조.

그렇지 않은경우 /etc/hosts.deny 또는 /etc/hosts.allow 로 접속제한 필요.

 

RHEL계열 7 이상에서는 firewalld 사용하고 있고 접속ACL를 운용하고 있으면 무관

 

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

RHEL 7/8 계열 hosts.lpd 파일 없음

 

16. UMASK 설정 관리

/etc/profile 파일에 UMASK=022로 설정되어있는지 여부

 

#vi /etc/profile

들아가서 UMASK부분 확인

 

17. 홈디렉토리 소유자 및 권한 설정

ls -ald 사용자별 홈디렉토리

홈 디렉터리 소유자가 해당 계정이고, 타 사용자 쓰기 권한이 제거된 경우 양호

 

18. 홈디렉토리로 지정한 디렉토리의 존재 관리

# vi /etc/passwd 에서 사용자 계정이 home 디렉토리로 설정되어 있어야함
예를 들면 

#test:x:501:501::/:/bin/bash (보안에 취약한 예시)

#test:x:501:501::/home/test:/bin/bash 로 변경되어야함.

 

19. 숨겨진 파일 및 디렉토리 검색 및 제거

#find / -type d -name ".*"

#find / -type f -name ".*"

 

검색 후 필요하지 않은 파일 삭제

(- 부분 붙여넣기할때 이상한 마이너스로 붙여지는 경우가 있어서...직접치시면 에러안납니다.)

댓글