[UNIX/Linux] 서버 취약점(계정 관리)
가장 기본적인 P/W 설정과 관련된 계정 관리 방법에 대해서 알아보겠습니다.
(1) root 계정 이외 계정이 UID 0 금지
- root(UID=0)과 동일한 UID를 가진 계정 존재 시 root 권한으로 시스템 접근이 가능하므로 root의 UID를 가진 계정이 존재하지 않도록 확인해야 합니다.
- 계정 UID는 /etc/passwd에 명시되어 있으므로 cat /etc/passwd | grep ID 명령어를 활용하여 특정 계정의 UID를 확인할 수 있습니다.
+ UID 변경 명령어 [ root 관리자 권한으로 실행 ]
[SunOS, 리눅스, AIX] usermod-u UID 계정명
EX ) usermod -u 1005 credere
+ 리눅스의 경우 UID는 500이상 설정, 솔라리스 및 HP-UX의 경우 100 이상으로 설정합니다.
[HP-UX]
EX) chuser id=1000 credere
(2) P/W 관련 설정
- P/W 복잡성 및 최소길이설정
- P/W 최대 사용기간 설정
- P/W 최소 사용기간 설정
- P/W 파일 보호
1) P/W 복잡성 및 최소길이 설정
- 영문, 숫자, 특수문자를 2종류 이상 조합하여 계정명과 상이한 최소 10자 이상의 P/W 설정 혹은 3종류 이상을 조합하여 최소 8자리 이상의 길이로 구성
( 영문 대문자(26개), 영문 소문자(26개), 숫자(10개), 특수문자(32개) )
+ 이는 Brute Force Attack이나 레인보우 테이블을 통한 패스워드 크래킹 및 P/W 추측 공격을 방지하기 위해 리눅스를 이용하는 이용자의 최소한의 예의라고 생각합니다.
2) P/W 최대 사용기간 설정
- P/W 유출시 최대 사용기간을 설정하지 않은 경우 일정 기간 경과 후에도 공격자는 유출된 패스워드로 접속이 가능합니다. 유출된 계정으로 악의적인 사용자의 지속적인 접근을 차단하기 위해 최대 사용기간을 설정하여 주기적으로 P/W를 변경할 수 있게 해야합니다.
OS별 점검 파일 위치 및 점검방법 | |
SunOS | cat /etc/default/passwd MAXWEEKS=10 (단위 : 주) |
리눅스 | cat /etc/login.defs PASS_MAX_DAYS 90 (단위 : 일) |
AIX | cat /etc/security/user maxage=12 (단위 :주) |
HP-UX | cat /etc/default/security PASSWORD_MAXDAYS=90 (단위 일) |
3) P/W 최소 사용기간 설정
- P/W 최소 사용기간을 설정하지 않은 경우에 이용자가 익숙한 P/W로 지속적으로 변경하여 재사용함으로써 사용 기간 설정의 의미가 무의미해질 수 있습니다.
OS별 점검 파일 위치 및 점검방법 | |
SunOS | cat /etc/default/passwd MINWEEKS=1 (단위 : 주) |
리눅스 | cat /etc/login.defs PASS_MIN_DAYS (단위 : 일) |
AIX | cat /etc/security/user minage=1 (단위 : 일) |
HP-UX | cat /etc/default/security PASSWORD_MINDAYS=1 (단위 : 일) |
4) P/W 파일 보호
- P/W는 무조건 암호화하여 보호하여야 합니다.
- shadow 파일을 사용 "/etc/shadow" 에 암호화된 P/W 저장
+ passwd 와 shadow의 구조
(1) /etc/passwd
계정명 | P/W | UID | GID | comment | 홈디렉터리 | login_shell |
+보안 관련해서 주의 깊게 봐야될 것은 P/W와 로그인쉘입니다.
과거에는 두 번째 필드에 P/W를 평문으로 명시하였으나 보안상의 문제로 최근에는 X를 입력합니다.
( X의 뜻은 P/W를 사용하지 않는다는 것이 아니라, /etc/shadow 파일에 암호화된 P/W를 이용한다는 뜻입니다.)
+로그인이 불필요한 계정 (일반적으로 시스템 및 어플리케이션 계정) 에 대해서는 로그인을 금지하도록 설정하여 공격자에 의한 불법적인 시스템 접근에 악용되지 않도록 해야한다. ( /sbin/nologin , /bin/false 를 필드에 입력한다.)
(2) /etc/shadow
계정명 | 암호화된PW | P/W 마지막 변경일 | P/W 최소 사용기간 | P/W 최대 사용기간 | P/W 만료 이전 경고일 수 | P/W 만료 이후 비활성 일수 | 계정 만료일 |
+암호화된 P/W의 구조
$id$salt$암호화된 P/W
1) id는 적용된 일방향 해시 알고리즘의 id 입니다.
( 1: MD5 , 2: BlowFish, 5: SHA-256 6: SHA-512 )
2) salt ( 난수값) 은 암호화 강도를 높이기 위한 값으로 이 값 덕분에 같은 p/w를 설정하더라도 실제 암호화된 P/W 값은 서로 다르게 됩니다.
+ AIX 서버는 기본적으로 /etc/security/passwd 파일에 P/W를 암호화하여 저장
+ HP-UX Trusted Mode로 전환될 경우 P/W를 암호화하여 /tcb/files/auth 디렉터리에 계정 이니셜과 계정 이름에 따라 파일로 저장
(3) Session Timeout 설정
- 계정이 일정 시간 동안 아무 이벤트 ( 시스템 호출 ) 등이 발생하지 않으면 연결을 종료하는 Session Timeout 설정
+ TCP 연결이나 HTTP 서버 세션 타임아웃과 비슷한 이유
<sh, ksh, bash 사용시>
cat /etc/profile(.profile)
TMOUT=600
export TMOUT // export TMOUT의 의미는 해당 쉘에서 생성된 자식 쉘에도 전부 동일한 타임아웃을 설정하는 것
<csh 사용시>
cat /etc/csh.login cat /etc/csh.cshrc
set autologout=10
댓글