정보보안 - 유닉스 서버 취약점
유닉스 서버 취약점 - 계정 관리
- 계정관리
- 패스워드 복잡성 설정
- 영문, 숫자, 특수문자가 혼합된 8자리 이상 패스워드가 설정되어야 함
- 주의사항
- 사전에 등록된 정보
- Null 패스워드
- 연속된 캐릭터 조합
- 계정에서 유추 가능
- OS 별 점검 파일 위치 및 점검 방법
- SunOS, linux :
/etc/shadow
- shadow 파일의 존재 확인
/etc/passwd
파일의 두 번째 필드 ‘x’ 값 확인pwconv
: shadow 패스워드 적용pwunconv
: 일반 패스워드 적용
- HP-UX :
/etc/shadow
/tcb
디렉터리 존재 확인- trusted mode 일 경우
/tcb/files/auth
디렉터리 내 계정이니셜, 이름에 따라서 파일 저장관리,/etc/shadow
는 접근불가 - trusted mode 인지 확인 (PW 암호화 저장)
- trusted mode / untrusted mode
- trusted mode 로 전환 :
#/etc/tsconvert
- untrusted mode 로 전환 :
#/etc/tsconvert -r
- trusted mode 일 경우
/etc/passwd
파일의 두 번째 필드 ‘x’ 값 확인
- AIX :
/etc/security/passwd
- SunOS, linux :
- 패스워드 파일 보호
- 패스워드를 암호화하여 저장해야 함.
/etc/shadow
- 패스워드를 암호화하여 저장해야 함.
- UID 확인
- Root 계정과 동일한 UID (0) 금지
- 사용자 간 UID 중복 건이 있는지 검사 (감사 추적 어려움)
- OS 별 점검 파일 위치 및 점검 방법
- SunOS, linux, AIX, HP-UX
#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
- …
- SunOS, linux, HP-UX
usermod
명령으로 수정- UID 0인 일반 계정의 UID 수정
- SunOS, HP-UX : 100 이상
- linux : 500 이상
usermod -u 100 test
- UID 0인 일반 계정의 UID 수정
- AIX
chuser
명령으로 수정chuser id=1001 test
- SunOS, linux, AIX, HP-UX
- 패스워드 최소 길이 설정
- 패스워드 최소 길이가 8자 이상으로 설정되어야 함
- OS 별 점검 파일 위치 및 점검 방법
- SunOS
#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_PASSWORD_LENGTH=8
- SunOS
- 패스워드 최대 사용기간 설정
- 패스워드 최대 사용기간이 90일 이하로 설정되어야 함
- OS 별 점검 파일 위치 및 점검 방법
- SunOS
#cat /etc/default/passwd
- MAXWEEKS=12
- Linux
#cat /etc/login.defs
- PASS_MAX_DAYS 90
- AIX
#cat /etc/security/user
- maxage=8
- HP-UX
#cat /etc/default/security
- PASSWORD_MAXDAYS=8
- SunOS
- 패스워드 최소 사용기간 설정
- 패스워드 최소 사용기간이 1일로 설정되어야 함
- OS 별 점검 파일 위치 및 점검 방법
- SunOS
#cat /etc/default/passwd
- MINWEEKS=1
- Linux
#cat /etc/login.defs
- PASS_MIN_DAYS 1
- AIX
#cat /etc/security/user
- minage=1
- HP-UX
#cat /etc/default/security
- PASSWORD_MINDAYS=1
- SunOS
- 패스워드 복잡성 설정
파일 및 디렉터리 관리
- root 홈, 패스 디렉터리 권한 및 패스 설정
- root 계정 PATH 환경변수에
.
이 맨 앞이나 중간에 포함되지 않은 경우 양호 - 예 : 악의적인 사용자가
/bin/ps
명령어보다 우선 실행될 수 있도록 ps 로 악성코드를 심어놓음. ~/.profile
혹은/etc/profile
PATH = .:$PATH:$HOME/bin
: . 제거 필요
#echo $PATH
/usr/local/sbin:/sbin:......:/usr/local/bin
.
또는::
포함 여부 확인 필요
- root 계정 PATH 환경변수에
- 파일 및 디렉터리 소유자 설정
- 소유자가 존재하지 않은 파일 및 디렉터리가 존재하지 않는 경우 양호
- 삭제된 소유자의 UID 와 동일한 UID 사용자가 접근 가능
- 존재할 경우 삭제 또는 소유자변경 필요
rm [file명|디렉터리명]
chown [user명] [file명]
- OS 별 점검 파일 위치 및 점검 방법
- 소유자가 nouser, nogroup 인 파일이나 디렉터리 탐색
- SunOS, AIX
#find / -nouser -o -nogroup -xdev -ls 2> /dev/null
- HP-UX
#find / \( -nouser -o -nogroup \) -xdev -exec ls -al {} \; 2>dev/null
- Linux
#find / -nouser -print
#find / -nogroup -print
- 소유자가 존재하지 않은 파일 및 디렉터리가 존재하지 않는 경우 양호
/etc/passwd
파일 소유자 및 권한 확인/etc/passwd
파일 소유자가 root 이고, 권한이 644 이하인 경우 양호- OS 별 점검 파일 위치 및 점검 방법
- SunOS, Linux, AIX, HP-UX
#ls -l /etc/passwd
chown root /etc/passwd
chmod 644 /etc/passwd
- SunOS, Linux, AIX, HP-UX
/etc/shadow
파일 소유자 및 권한 확인/etc/shadow
파일 소유자가 root 이고, 권한이 400 인 경우 양호- OS 별 점검 파일 위치 및 점검 방법
- SunOS, Linux
#ls -l /etc/shadow
- AIX
ls -ld /etc/security/passwd
- HP-UX
ls -ld /tcb/files/auth
- 조치
chown root [파일위치]
chmod 400 [파일위치]
- SunOS, Linux
/etc/hosts
파일 소유자 및 권한 확인/etc/hosts
파일 소유자가 root 이고, 권한이 600 인 경우 양호- IP 주소와 대응되는 호스트네임이 기록되어 있는 파일, 잘못 매핑 되어있을 경우 악의적인 시스템에 연결됨
- OS 별 점검 파일 위치 및 점검 방법
- SunOS, Linux, AIX, HP-UX
#ls -l /etc/hosts
- SunOS, Linux, AIX, HP-UX
- world writable 파일 점검
- world writable 파일이 존재하지 않거나 존재 시 설정 이유를 확인하고 있는 경우 양호
- world writable : 모든 사용자가 작성할 수 있는 파일
- OS 별 점검 파일 위치 및 점검 방법
#find / -perm -2 -ls
chmod o-w [파일명]
- 그 외 중요 파일들
/etc/xinetd.conf
,/etc/inetd.conf
: 슈퍼데몬 설정파일 (프로그램 등록)- root 소유 600 권한 이하 설정
/etc/syslog.conf
: syslogd 설정파일, 여러 로그에 대한 정보를 남김- root 소유 644 권한 이하 설정
/etc/services
: 서비스관리 정보 (포트, 프로토콜 정보)- root 소유 644 권한 이하 설정
서비스 관리
- Finger 서비스 비활성화
- Finger 서비스가 비활성화 되어 있는 경우 양호
- Finger
- 사용자 정보 확인 서비스
- 네트워크에 연결된 타 시스템의 사용자 확인 가능
- 외부에서 확인 가능
- 자세한 정보 제공
- who : 현재 사용중인 사용자 확인 (간단한 정보)
- OS 별 점검 파일 위치 및 점검 방법
- Linux, AIX, HP-UX, SunOS (5.9 이하)
cat /etc/inetd.conf
#finger stream tcp nowait bin /usr/lbin/fingerd fingerd
(주석처리)
- SunOS (5.9 이상)
inetadm | grep "finger"
inetadm -d [데몬명]
- Linux (xinetd)
ls -al /etc/xinetd.d/* | egrep "echo finger"
vi /etc/xinetd.d/finger
- disable=yes
- 적용을 위해 서비스 재시작
kill -HUP [pid]
service xinetd restart
- Linux, AIX, HP-UX, SunOS (5.9 이하)
-
그 외 익명 ftp, r 계열 서비스 비활성화
- cron 파일 소유자 및 권한 설정
- cron 접근제어 파일 소유자가 root 이고 권한이 640 이하인 경우 양호
- OS 별 점검 파일 위치 및 점검 방법
- Linux, AIX, HP-UX, SunOS
ls -al [cron 접근제어 파일 경로]
- SunOS :
/etc/crontab
- Linux, AIX, HP-UX :
/var/spool/cron/crontabs/*
- Linux, AIX, HP-UX, SunOS
패치 관리
- 최신 보안패치 및 벤더 권고사항 적용
- 패치 적용 정책을 수립하고 주기적으로 패치를 관리하고 있는 경우 양호
- 패치 적용 정책 수립여부 및 정책에 따른 패치 적용여부 확인
로그 관리
- 로그의 정기적 검토 및 보고
- 로그 기록의 검토 분석 리포트 작성 및 보고 등이 정기적으로 이루어지는 경우 양호
- 로그 분석 계획 수립여부 및 로그 분석결과에 대한 점검
- 정기적인 로그 분석을 위한 절차
- 정기적인 로그 검토 및 분석 주기 수립
- 로그 분석에 대한 결과 보고서 작성
- 로그 분석 결과보고서 보고 체계 수립
댓글남기기