외로운 Nova의 작업실

정보보안기사 실기 - unix 서버 취약점 분석 평가 본문

Certification/정보보안기사

정보보안기사 실기 - unix 서버 취약점 분석 평가

Nova_ 2023. 3. 27. 13:44

- 계정 관리

<root 계정의 원격 접속 제한>

원격 접속 프로그램인 remote에 pam의 인증모듈중 root 계정의 원격접속을 금지하는 pam_securetty.so 모듈을 사용하도록 추가해야합니다. 이렇게 하면 telnet 서비스로 root 계정 원격 접속 하는 것을 막습니다.

ssh도 막아야합니다. ssh는 sshd_config 설정 파일을 통해서 막을 수 있습니다. PermitRootLogin을 no로 바꿔줘야합니다.

 

<계정 잠금 임계값 설정>

무작위 대입 공격을 막기위해 계정 잠금 임계값을 지정(권장 5회이상)하여 초과시 계정을 일정 시간 잠궈야합니다. pam_tally2.so(또는 pam_tally.so)를 이용합니다. 먼저, system-auth 설정파일에 모듈을 추가합니다.

추가로 no_magic_root 옵션이 있는데 root 계정은 패스워드 잠금 설정을 적용하지않는 옵션이고 reset은 접속 시도 성공시 실패한 횟수 초기화 하는 옵션입니다.

 

<root 계정 su 제한>

root 계정으로 su하는 경우 아무나 하지못하게하고 wheel 그룹의 사용자만이 root 계정으로 su 할 수 있게해야합니다. 이를 pam_wheel.so 모듈이 해줍니다. 이 모듈을 su 서비스에 추가해줍니다.

이후 정당한 사용자만이 wheel 그룹에 넣어줍니다.

 

<sudo 명령을 이용한 관리자 권한 부여>

sudo 명령을 사용해서 제한적으로 관리자 권한의 명령어를 실행하는 것은 보안관점에서 root의 비밀번호를 알려주지않아도되기떄문에 좋습니다. 따라서 sudo 명령을 사용해야하는데, sudo 명령의 설정파일은 /etc/sudoers파일입니다. 아래는 sudoers 파일의 필드입니다.

계정명 호스트명=(실행 권한 계정명) [NOPASSWD:]명령어

위 사진에서  nova는 모든 호스트에서 로그인하고 sudo 명령을 했을때 모든 권한을 부여하며 모든명령을 허용합니다. 이때 sudo 명령에 비밀번호를 입력해야합니다.

위 사진에서  nova는 모든 호스트에서 로그인하고 sudo 명령을 했을때 모든 권한을 부여하며 모든명령을 허용합니다. 이때 sudo 명령에 비밀번호를 입력하지 않아도 됩니다.

 

<root 이외의 UID가 0 금지>

root와 동일한 UID를 가진 계정 존재시 root 권한으로 시스템 접근이 가능하므로 root의 UID를 가진 계정이 존재하지 않도록 확인해야합니다.

만일 UID가 0인경우 저절한 UID를 부여하거나 계정을 삭제해야합니다.

 

<패스워드 복잡성 설정>

사용자 계정 암호를 유추하기 쉽게 설정할 경우 비인가자의 시스템 접근을 허용하게 하는 위험이 존재하므로 아래와 같은 복잡성을 설정합니다.

  • 영문,숫자,특수문자를 조합하여 계정명과 상이한 8자 이상의 패스워드
  • 문자 종류 2종류 이상을 조합하여 최소 10자리 이상 또는 3종류 이상을 조합하여 최소 8자리 이상의 패스워드

<패스워드 최소 길이 설정>

패스워드 무차별 공격이나 패스워드 추측공격을 피하기위하여 패스워드 최소 길이 설정이 필요합니다. 아래는 각 os 별 패스워드 정책 설정 파일 점검입니다.

SOLARIS #cat /etc/default/passwd
PASSLENGTH=8
LINUX #cat /etc/login.defs
PASS_MIN_LEN 8
AIX #cat /etc/security/user
minlen=8
HP-UX #cat /etc/default/security
MIN_PASSWRD_LENGTH=8

 

<패스워드 최대 사용기간 설정>

악의적인 사용자로부터 계속적인 접속을 차단하기위해 패스워드 최대 사용기간을 설정하여 주기적으로 변경할 수 있게합니다.

SOLARIS #cat /etc/default/passwd
MAXWEEKS=12
LINUX #cat /etc/login.defs
PASS_MAX_DAYS 90
AIX #cat /etc/security/user
maxage=12(주)
HP-UX #cat /etc/default/security
PASSWORD_MAXDAYS=90(일)

 

<패스워드 최소 사용기간 설정>

사용자에게 익숙한 패스워드로 변경하는 것을 방지하기위해 최소 사용기간을 설정합니다.

SOLARIS #cat /etc/default/passwd
MINWEEKS=1
LINUX #cat /etc/login.defs
PASS_MIN_DAYS1
AIX #cat /etc/security/user
minage=1
HP-UX #cat /etc/default/security
PASSWORD_MINDAYS=1

 

<패스워드 파일 보호>

패스워드를 암호화하여 보호하여야하며, shadow 패스워드를 사용하는 경우 해당 파일을 권한이 있는 사용자들만 읽을 수 있도록 제한해야합니다.

 

<session Timeout 설정>

계정이 접속된 상태로 방치될 경우 권한이 없는 사용자에게 사용될 수 있으므로 session timeout을 설정해야합니다. 타임아웃은 10분이하로 설정합니다.

모든 운영체제, profile #cat /etc/profile
TMOUT=600(초)
모든 운영체제, csh #cat /etc/csh.login or #cat /etc/csh.cshrc
set autologout=10

 

- 파일 및 디렉터리 관리

<root 홈 패스 디렉터리 권한 및 패스 설정>

root 계정의 PATH 환경 변수에 "."이 맨 앞 또는 중간에 위치해있으면 root 계정으로 접속한 관리자가 의도하지않은 현재 디렉터리에 위치하고 있는 명령어가 실행될 수 있습니다. 예를 들어 현재 디렉터리가 /root이고 해당 디렉터리에 악의적인 파일인 ps가 들어있을때 root는 /bin/ps를 실행시키고 싶지만 #ps 명령어를 주면 /root/ps가 실행되게되는 것입니다.

echo $PATH를 통해 패스 확인이 가능합니다. 설정 파일은 아래와 같습니다.

/bin/sh /etc/profile, $HOME/.profile
/bin/bash ksh+csh 장점만 합한 쉘 /etc/profile, $HOME/.bash_profile
/bin/ksh kohn이 만든 쉘 /etc/profile, $HOME/.profile, $HOME/kshrc
/bin/csh c언어로 만든 쉘 /etc/.login, $HOME/.cshrc, $HOME/.login

 

<파일 및 디렉터리 소유자/소유그룹 설정>

중요파일이 소유자/소유그룹이 존재하지 않는 파일이 될 수 있고 그렇지 않더라도 시스템 자원 낭비가 될 수 있으므로 항상 소유지와 소유 그룹을 확인해야합니다. 특히 계정 삭제할때 해당 계정이 만든 파일들을 확인해야합니다.

 

<world writable 파일 점검>

world writable 파일이란 모든 사용자에게 쓰기 권한이 부여되어 있는 파일을 말합니다. 모든 사용자가 파일 정보를 변경할 수 있기에 공격에 활용될 수 있습니다. 따라서 항상 주기적으로 중요파일이 world writable 파일인지 확인해야합니다.

<주요파일 소유자 및 권한 설정>

/etc/passwd 파일 : root 소유의 644 이하의 권한을 설정합니다.

/etc/shadow 파일 : root 소유의 400이하의 권한을 설정합니다.

/etc/hosts 파일 : root 소유의 600 이하의 권한을 설정합니다.

/tec/inetd.conf 파일 : root 소유의 600이하의 권한을 설정합니다.

/etc/syslog.conf 파일 : root 소유의 644이하의 권한을 설정합니다.

/etc/service 파일 : root 소유의 644이하의 권한을 설정합니다.

 

<$HOME/.rhosts, hosts.equive 사용금지>

r계열 서비스는 원격 접속을 통한 정보 유출등 침해사고 원인이 될 수 있기에 r 계열 서비스를 허용하지않아야합니다. 만약 불가피하게 사용할 경우에는 트러스트 관계 설정파일에 적절한 보안조치를 해야합니다. 아래는 적절한 보안 조치입니다.

  • /etc/hosts.equiv 및 $HOME/.rhost 파일 소유자를 root 또는 해당 계정으로 변경합니다.
  • /etc/hosts.equiv 및 $HOME/.rhost 파일 권한을 600 이하로 변경합니다.
  • /etc/hosts.equiv 및 $HOME/.rhost 파일에서 +를 제거하고 반드시 필요한 호스트 계정만 등록합니다.

 

Comments