오늘은 보안을 공부하면서 암기요소중의 하나인 운영체제별로 로그파일, 설정파일 및 정책을 어떻게 작성하고 변경하는지 알아보고자 함
파일 위치
/etc/default/login
- 접속 제한 예시 코드
CONSOLE=/dev/console
설명 :
CONSOLE 라인을 통해 root의 원격 접속을 제한할 수 있음
#
을 통한 주석처리로 외부에서 root 계정 원격접속 가능파일 위치
/etc/pam.d/login
- 접속 제한 예시 코드
auth required /lib/security/pam_securetty.so
설명 :
LINUX의 경우 PAM(Pluggable Authentication Module)을 활용하여 root 계정의 원격 접속을 제한할 수 있음
/etc/securetty
파일 : pam_securetty.so 모듈이 사용하는 파일로 터미널 접속 시 root 접근 제한 설정 파일파일 위치
/etc/security/user
- 접속 제한 예시 코드
rlogin = false
설명 :
rlogin 설정을 true 또는 false 로 설정하므로써 root 계정의 접속제한 설정이 가능함
파일 위치
/etc/securetty
- 접속 제한 예시 코드
console
설명 :
console 라인을 통해 root의 원격 접속을 제한할 수 있음
#
을 통한 주석처리로 외부에서 root 계정 원격접속 가능파일 위치
/etc/default/login
- 잠금 임계값 설정 예시 코드
RETRIES=5 # 5.9 이상 버전일 경우 추가적으로 "/etc/security/policy.conf" 파일 확인 LOCK_AFTER_RETRISE=YES
파일 위치
/etc/pam.d/system-auth
- 잠금 임계값 설정 예시 코드
auth required /lib/securuty/pam_tally.so deny=5 unlock_time=120 no_magic_root account required /lib/security/pam_tally.so no_magic_root reset
파일 위치
/etc/security/user
- 잠금 임계값 설정 예시 코드
loginretries=5
파일 위치
/tcb/files/auth/system/default
- 잠금 임계값 설정 예시 코드
u_maxtries#5 # 11.v3 이상일 경우 "/etc/default/security" 파일 확인 AUTH_MAXTRIES=5
su
제한 설정
wheel
그룹이 su 명령어 사용그룹이라고 예시를 들어 작성
wheel
그룹 및 그룹 내 구성원 존재 여부 확인
cat /etc/group
wheel:x:10:root,admin
wheel
그룹이 su 명령어를 사용할 수 있는지 설정 여부 확인
ls -al /usr/bin/su
chgrp sucrity su
chmod 4750 su
PAM 모듈을 사용
cat /etc/pam.d/su
auth required /lib/security/pam_wheel.so debug group=wheel
# 또는
auth required /lib/security/$ISA/pam_wheel.so use_id
cat /etc/security/user # default의
sugroup=staff # sugroup=staff 설정 확인
vi /etc/default/security
SU_ROOT_GROUP=wheel # SU_ROOT_GROUP=wheel 설정 확인
파일 권한 확인
ls -l /usr/bin/su
-rwsr-x--- usr/bin/su
# 파일 권한이 4750인 경우 양호
파일 위치 :
/etc/default/passwd
# 최소 길이
PASSLENGTH=8
# 최대 사용기간(단위 : 주)
MAXWEEKS=12
# 최소 사용기간(단위 : 주)
MINWEEKS=1
파일 위치 :
/etc/login.defs
# 최소 길이
PASS_MIN_LEN 8
# 최대 사용기간(단위 : 일)
PASS_MAX_DAYS 90
# 최소 사용기간(단위 : 일)
PASS_MIN_DAYS 1
파일 위치 :
/etc/security/user
# 최소 길이
minlen=8
# 최대 사용기간(단위 : 주)
maxage=12
# 최소 사용기간(단위 : 주)
minage=1
파일 위치 :
/etc/default/security
# 최소 길이
MIN_PASSWORD_LENGTH=8
# 최대 사용기간(단위 : 일)
PASSWORD_MAXDAYS=90
# 최소 사용기간(단위 : 일)
PASSWORD_MINDAYS=1
shadow 파일의 패스워드 암호화 존재 확인
cat /etc/shadow root:$5iqxyJTZL$ZaX2ktsXRvvZpXsjbKitVS0Q0.Mc8PXCf6rodghI9w6:19553:::7:::
/etc/passwd
파일 내 두번째 필드가x
로 표시되어 있는지 확인cat /etc/passwd root:x:0:0:root:/root:/bin/bash
pwconv
: shadow 패스워드 정책으로 변경하는 명령어pwunconv
: 일반 패스워드 정책으로 변경하는 명령어/etc/security/passdw
파일 내 패스워드 암호화 여부 확인/etc/security/passdw
파일에 패스워드를 암호화하여 저장함/tcb/files/auth
디렉터리에 계정 이니셜과 계정이름에 따라 파일로 저장 ,관리함x
로 표시되어 있는지 확인/etc/tsconvert
/etc/tsconvert -r2
history, secure, messages, dmesg, boot.log, xferlog, crom, maillog 이 8가지의 로그 파일들은 UNIX에서 필수적이지 않거나, 시스템에 따라 파일의 위치나 이름이 다를 수 있으므로 추가적인 설명은 생략하겠음
현재 로그인한 사용자의 상태 정보를 담고 있는 로그파일
- binary 파일로 존재
- 명령어 :
w
,who
,finger
등
파일 위치
/var/run/utmp
/var/adm/utmpx
사용자의 성공한 로그인/로그아웃 정보, 시스템의 Boot/Shutdown정보에 대한 히스토리를 담고 있는 로그파일
- binary 파일로 존재
- 명령어 :
last
- 계정명, 터미널 타입, 접속 주소, 로그인 시간, 로그아웃 시간 등을 확인 할 수 있음
파일 위치
/var/log/wtmp
/var/adm/wtmpx
가장 최근에 성공한 로그인 기록을 담고 있는 로그파일
- binary 파일로 존재
- 명령어 :
lastlog
(Linux),finger
(Linux, Unix(SunOS))
- 옵션
lastlog -u [계정명]
lastlog -t [일수]
(해당 일 이내에 접속한 기록)
파일 위치
/var/log/lastlog
/var/adm/lastlog
실패 로그인 시도에 대한 기록을 담고 있는 로그파일
btmp는 Linux, loginlog는 Unix(SunOS)의 로그 파일
lastb
/var/log/btmp
/var/adm/loginlog
su(switch user) 명령을 사용한 결과를 저장한 파일
- 텍스트 파일로 존재
파일 위치
/var/adm/sulog
/var/log/secure
cat /var/adm/sulog | tail -5
SU 02/28 00:48 + pts/4 test99-test88
SU 02/28 00:48 + pts/4 test99-root
SU 02/28 00:49 - pts/4 test99-root
+
기호는 su 명령이 성공했음을, -
기호는 실패 했음을 의미함시스템에 로그인한 모든 사용자가 로그아웃할 때까지 입력한 명령어와 터미널의 종류, 프로세스 시작 시간 등을 저장한 로그
- binary 파일로 존재
- 명령어 :
lastcomm
파일 위치
/var/account/pacct
accton /var/account/pacct
명령 실행 필요/var/adm/pacct
/usr/lib/acct/accon /var/adm/pacct
명령 실행 필요플래그
계정별로 실행한 명령어에 대한 기록을 저장한 파일로 계정별 홈 디렉터리에 존재함
- 텍스트 파일로 존재함
.쉘종류_history
형식으로 생성
vi
등의 편집기 또는 history
명령을 이용하여 확인가능
vi .bash_history
# 또는
history | head -5
사용자/그룹의 생성/삭제, 로그인 등의 사용자 인증에 대한 정보를 기록하고 있는 로그파일로 서버 보안에 아주 민감하고 중요함
- 원격 접속 및 su 명령 수행 내역 등이 저장됨
파일 위치
/var/log/secure
리눅스 시스템의 가장 기본적인 시스템 로그파일로 시스템 운영에 대한 전반적인 메시지를 저장
- 시스템 데몬들의 실행상황과 내역, 사용자들의 접속 정보, TCP Wrapper 접근 제어 정보 등
파일 위치
/var/log/messages
로그 메시지 형식
| 1 | 2 | 3 | 4 | 5 |
Jan 13 00:26:26 CentOS8S system [1]: Starting Vsftpd ftp deamon
리눅스가 부팅될 때 출력되는 모든 메시지를 기록
부팅 시의 에러나 조치사항을 살펴볼 수 있음
- 텍스트 형식으로 존재
- 명령어 :
dmesg
파일 위치
/var/log/dmesg
리눅스가 부팅될 때 파일 시스템에 대한 체크, 서비스 데몬들의 실행 상태 등을 기록
성공 [ OK ] / 실패 [ FAILED ] 여부를 확인할 수 있음
파일 위치
/var/log/boot.log
리눅스 시스템의 FTP 서비스 로그파일
vsFTP, ProFTP 등 다양한 FTP 서버 프로그램에서 버시스 내역을 기록
- 접속 일시, 원격 호스트와 사용자 정보, 업로드/다운로드한 파일 등
파일 위치
/var/log/xferlog
필드 종류
시스템에서 동작 중인 cron 데몬이 수행한 정기적인 작업을 기록
파일 위치
/var/log/cron
시스템에서 동작 둥인 메일 서버의 메일 송수신 관련 작업 기록
파일 위치
/var/log/maillog