Unix 서버 취약점 분석, 평가 항목

환경 :

VMware

CentOS Linux release 7.9.2009 (Core)

 

다음 항목을 나만의 리눅스 서버에 적용하자!

 

참조

취약점

- 로그인이 불필요한 계정이나 OS 및 패키지 설치 시 기본적으로 생성되는 계정으로 쉘이 설정되어있을 경우, 공격자는 기본 계정들을 통하여 중요파일 유출이나 악성코드를 이용한 root 권한 획득 등의 공격을 할 수 있음

 

- Session timeout 값이 설정되지 않은 경우 유휴 시간 내 비인가자의 시스템 접근으로 인해 불필요한 내부 정보의 노출 위험이 존재함

 

보안조치

 

1. 로그인이 필요하지 않은 계정에 대해 /etc/passwd에서 /bin/false/bin/nologin 쉘 부여

2. /etc/profile에서 TMOUT=600초(10분) 설정

동안 입력이 없을 경우 접속된 Session을 끊도록 설정

 

1. 사용자 shell 점검

#vi /etc/passwd 

root와 test 계정만 로그인 할 수 있고 이외의 계정은 로그인할 수 없게해주자

 

결과

 

 

2. TMOUT 설정

#vi /etc/profile
#source /etc/profile	//작성했으니 적용해주자!

600초 동안 미입력 상태일 경우 세션을 종료한다

더보기

쉘 종류에 따른 다른 적용방법

<sh, ksh, bash 사용 시>

#cat /etc/profile(.profile)

TMOUT=600

export TMOUT

 

<csh 사용 시>

#cat /etc/csh.login 또는 /etc/csh.cshrc

set autologout=10

 

계정별 적용방법

#cd ~ //홈디렉토리 이동

#vi .bash_profile

TMOUT=600

export TMOUT

결과

telnet이나 ssh 접속 중이라면 600초 이후 자동종료!

취약점

su 명령어를 모든 사용자가 사용하도록 설정되어 있는 경우, root 계정 권한을 얻기 위해 패스워드 무작위 대입 공격을 시도하여 root 계정 패스워드가 유출될 위협이 있음

 

따라서, su명령어가 su 관련 그룹에서만 허용되도록 설정하자!

 

보안조치

su 사용자를 지정하는 방법으로는 2가지 방식이 있다. 하나는 "PAM 설정", 두 번째는 "권한 설정"이다.

PAM 설정은 PAM 모듈을 이용하고 권한 설정은 wheel이라는 그룹을 관리하여 이 그룹의 구성원만이 su를 사용할 수 있도록 한다.

여기서는 두 번째 방식을 적용하도록 하겠다!

 

 

■ 먼저는 wheel 그룹을 확인해보자!

[root@localhost ~]# cat /etc/group | grep wheel
wheel:x:10:root,test

구성원으로서 root가 존재한다, test계정을 추가해주었다.

 

■  다음 3가지를 수행

#1 su명령어 위치 확인
[root@localhost ~]# which su
/usr/bin/su
[[root@localhost ~]# ls -l /usr/bin/su
-rwsr-xr-x. 1 root root 32128 10월  1 02:46 /usr/bin/su

#2 그룹변경
[root@localhost ~]# chgrp wheel /usr/bin/su
[root@localhost ~]# ls -l /usr/bin/su
-rwxr-xr-x. 1 root wheel 32128 10월  1 02:46 /usr/bin/su

#3 SetID설정
[root@localhost ~]# chmod 4750 /usr/bin/su
[root@localhost ~]# ls -l /usr/bin/su
-rwsr-x---. 1 root wheel 32128 10월  1 02:46 /usr/bin/su

#3에서 SetUID를 설정해주는 이유는 기본적으로 su명령어는 관리자 권한이 필요하기 때문이다.

따라서, 명령어가 실행될 때만 사용자의 권한을 위임받을 수 있는 setuid를 적용해준 것이다(su 사용자는 현재 root)

*chmod 4750 : other에게 실행권한을 주면 말짱도로묵

 

 

결과

test는 wheel에 속하므로 정상 사용이 되고

test2는 wheel에 속하지 않으니 사용이 안된다!

 

 

참조

+ Recent posts