주요정보통신시설기반 리눅스 기술적 보안조치 2021 3월자 최신 기준입니다.
-2022-02-08 수정
항목 부분 색깔 보시며 구분할 수 있게 하였습니다.
빨간색 글씨의 경우 default가 취약이므로 변경하셔야 되는 부분입니다.
검정색 글씨의 경우 default가 양호입니다.
바쁘시면 빨간 글씨만 보세요
버전은 ubuntu 16.04입니다. 향후 18.04 20.04 업데이트 합니다.
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/*
ubuntu 16.04 에는 해당 파일 기본적으로 없음.
소유자 / 권한 600 권장이므로 chown과 chmod로 변경.
7. /etc/syslog.conf 파일 소유자 및 권한 설정
# ls -al /etc/rsyslog.conf
아래와 같이 출력되면 양호
-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 {} \;
조치하시고
다시 점검 명령어 쳐서 없어졌는지 확인하세요.
위 조치는 서비스와 민감하여 상의하시고 조치하시길바래요...
시스템 기본값으로 아래와 같이 표시됩니다.
-rwxr-sr-x 1 root tty 27368 12월 1 2017 /usr/bin/wall
-rwsr-xr-x 1 root root 39904 5월 17 2017 /usr/bin/newgrp
-rwsr-xr-x 1 root root 23376 1월 18 2016 /usr/bin/pkexec
-rwsr-xr-x 1 root root 40432 5월 17 2017 /usr/bin/chsh
-rwxr-sr-x 1 root crontab 36080 4월 6 2016 /usr/bin/crontab
-rwxr-sr-x 1 root shadow 22768 5월 17 2017 /usr/bin/expiry
-rwsr-xr-x 1 root root 32944 5월 17 2017 /usr/bin/newgidmap
-rwsr-xr-x 1 root root 75304 5월 17 2017 /usr/bin/gpasswd
-rwxr-sr-x 1 root ssh 358624 1월 18 2018 /usr/bin/ssh-agent
-rwsr-xr-x 1 root root 32944 5월 17 2017 /usr/bin/newuidmap
-rwsr-xr-x 1 root root 136808 7월 4 2017 /usr/bin/sudo
-rwxr-sr-x 1 root mlocate 39520 11월 18 2014 /usr/bin/mlocate
-rwsr-xr-x 1 root root 49584 5월 17 2017 /usr/bin/chfn
-rwsr-xr-x 1 root root 54256 5월 17 2017 /usr/bin/passwd
-rwxr-sr-x 1 root shadow 62336 5월 17 2017 /usr/bin/chage
-rwxr-sr-x 1 root tty 14752 3월 1 2016 /usr/bin/bsd-write
-rwxr-sr-x 1 root utmp 434216 2월 7 2016 /usr/bin/screen
-rwsr-xr-x 1 root root 10232 3월 28 2017 /usr/lib/eject/dmcrypt-get-device
-rwsr-xr-- 1 root messagebus 42992 1월 13 2017 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
-rwsr-xr-x 1 root root 428240 1월 18 2018 /usr/lib/openssh/ssh-keysign
-rwsr-sr-x 1 root root 85832 12월 1 2017 /usr/lib/snapd/snap-confine
-rwsr-xr-x 1 root root 38984 6월 15 2017 /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic
-rwxr-sr-x 1 root utmp 10232 3월 11 2016 /usr/lib/x86_64-linux-gnu/utempter/utempter
-rwsr-xr-x 1 root root 14864 1월 18 2016 /usr/lib/policykit-1/polkit-agent-helper-1
-rwxr-sr-x 1 root shadow 35632 3월 17 2016 /sbin/pam_extrausers_chkpwd
-rwxr-sr-x 1 root shadow 35600 3월 17 2016 /sbin/unix_chkpwd
-rwsr-xr-x 1 root root 27608 12월 1 2017 /bin/umount
-rwsr-xr-x 1 root root 44168 5월 8 2014 /bin/ping
-rwsr-xr-x 1 root root 142032 1월 29 2017 /bin/ntfs-3g
-rwsr-xr-x 1 root root 40128 5월 17 2017 /bin/su
-rwsr-xr-x 1 root root 40152 12월 1 2017 /bin/mount
-rwsr-xr-x 1 root root 30800 7월 12 2016 /bin/fusermount
-rwsr-xr-x 1 root root 44680 5월 8 2014 /bin/ping6
----------------------------------------------------------------------------------------------------------------------------
우분투에 VM계열 까시면 해당 디렉토리도 S권한 들어갑니다. 골때려요.....
저는 ISMS 심사원하고 일단 협의를 해보겠습니다...
컨설팅업체는 일단 다 막고 장애나면 풀라는 식이라서.. 협의점이 사실상 없어요
로그가 친절하게 안찍히면 다른부분 문제인지 이 조치의 문제인지 빠르게 찾아낼 수 있을까요?
----------------------------------------------------------------------------------------------------------------------------
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 {} \;
event_control 부분은 기본적으로 나오게 됩니다. 놔두시고 그외 있다면 판단하시고 조치하세요.
보통은 /tmp 경로에 있는게 취약합니다.
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 로 접속제한 필요.
ufw 데몬으로 컨트롤 하셔도 됩니다.
명령어가 상당히 직관적입니다.
에를들면 아래와 같습니다.
# ufw allow from 192.168.0.1 to any port 22
15. hosts.lpd 파일 소유자 및 권한 설정
ubuntu 16.04 기본적으로 hosts.lpd 파일 없음
# find / -name host.lpd
16. UMASK 설정 관리
# umask 라고 입력시
0022
위와 같이 표기되면 양호
수치가 다르다면
# vi /etc/profile
들아가서 UMASK 022 추가
# export umask
17. 홈디렉토리 소유자 및 권한 설정
# ls -ald 사용자별 홈디렉토리
홈 디렉터리 소유자가 해당 계정이고, 타 사용자 쓰기 권한이 제거된 경우 양호
W권한이 앞부분에만 들어가고 그룹권한 기타사용자 권한에는 W가 들어가지 않아야함.
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 ".*"
검색 후 필요하지 않은 파일 삭제
(- 부분 붙여넣기할때 이상한 마이너스로 붙여지는 경우가 있어서...직접치시면 에러안납니다.)
'ISMS-P > linux' 카테고리의 다른 글
리눅스서버 보안조치 2021 주통기반 (ubuntu계열) 계정부분 (0) | 2022.02.07 |
---|---|
리눅스서버 보안조치 2021 주통기반 (RHEL/Ubuntu) 서비스 관리 부분 (0) | 2021.11.22 |
리눅스서버 보안조치 2021 주통기반 (RHEL계열 7/8) 파일 및 디렉토리 (0) | 2021.06.09 |
리눅스서버 보안조치 2021 주통기반 (RHEL계열 7/8/9) 계정부분 (0) | 2021.05.12 |
댓글