정보보안기사 PART01 시스템
SECTION1. 시스템 기본 학습
1. 윈도우 기본 학습
2. UNIX / Linux 기본 학습
- 아래 /etc/passwd 파일 필드? 29p
1
root:x:0:0:root:/root:/bin/bash # 계정:패스워드:UID:GID:사용자정보:홈디렉토리:쉘
- 사용자 확인 명령어? 30
id <사용자명>, whoami사용자명>
- 패스워드 변경 명령어? 30
passwd
- /etc/group 파일? 31
그룹명:패스워드:GID:그룹멤버
- 파일시스템 구성? 34
부트블록, 슈퍼블록, 아이노드, 데이터블록
- 아이노드 구조? 34
inode 번호, 파일타입, 접근권한, link 수, 소유자, 소유그룹, 파일크기, MAC 시간, Block index
- 하드링크 vs 심볼릭링크? 35
같은 inode를 공유 vs 다른 inode 사용 (원본 파일의 경로 정보만 저장)
원본 삭세시 데이터 유지 vs 원본 삭제시 링크 끊김 - umask ? 42
/etc/profile 파일에 umask를 설정하면 시스템 전체에 적용
- find 옵션? 43
-name, -type, -user, -group, -size, -perm, -atime, -ctime, -mtime, -exec
- PCB에 저장되는 정보? 47
프로세스 상태, 프로세스 번호, 프로그램 카운터, 레지스터, 메모리 정보
FDT? 47
- 좀비 프로세스? 50
프로세스가 종료되었지만 PCB가 남아있는 프로세스
부모 프로세스가 자식 프로세스의 종료 사실을 확인하지 않아 발생 프로세스 실행과정? 51
pid, ppid, pgid, sid? 52
- ps 명령어? 52
-f, -l, -a, -A, -e
- 프로세스 간의 통신? 53
IPS - 파이프, 시그널, 메시지큐, 공유메모리, 세마포어
3. UNIX / Linux 시스템 관리
- 사용자 계정 관리? 57
useradd <사용자명> (-m: 홈디렉토리 생성, -s: 쉘 지정)
userdel <사용자명> (-r: 홈디렉토리 삭제)
사용자명>사용자명> - 그룹 관리? 58
groupadd <그룹명> / groupdel <그룹명>
usermod -G <그룹명> <사용자명> >> 사용자의 보조 그룹 변경
usermod -aG <그룹명> <사용자명> >> 사용자의 보조 그룹 추가
usermod -g <그룹명> <사용자명> >> 사용자의 주 그룹 변경사용자명>그룹명>사용자명>그룹명>사용자명>그룹명>그룹명>그룹명> - 하드디스크 용량? 59
du, df
- cron 명령어? 61
crontab -u <사용자명> (-e: 편집, -l: 리스트, -r: 삭제)사용자명>
- crontab 접근 제어? 63
/etc/cron.allow, /etc/cron.deny
두 파일이 모두 존재하는 경우 cronallow 우선아혀 해당 파일에 등록디ㅗ 사용자만이 crontab 명령어 사용 가능 <br명 (allow 우선, 둘다 없으면 root만 가능)
4. UNIT / Linux 서버 보안
shadow 파일? 65
- encrypted_password 필드 구성? 66
$id$salt$encrypted
*: 패스워드 잠김(별도 인증방식(SSH) 가능), !!: 패스워드 잠김(별도 인증방식(SSH) 불가능), 빈값: 패스워드 설정 필요 - suid, sgid, sticky bit? 67
suid: 파일 소유자의 권한으로 실행, sgid: 파일 소유자의 그룹 권한으로 실행, sticky bit: 자유롭게 파일을 생성하되 파일 삭제나 파일명 변경은 소유지만이 가능하도록 함
명령어: chmod u+s, chmod g+s, chmod +t / chmod 4755, 2755, 1755 EUID, EGID 가 소유자의 권한으로 실소 (<-> RUID, RGID) - port 범위? 72
0 ~ 1023: well-known, 1024 ~ 49151: registered port, 49152 ~ 65535: dynamic port
- inetd 서비스 관리 ? 73
/etc/inetd.conf
- TCP Wrapper? 74
/etc/inetd.conf 파일에 TCP Wrapper를 지원하는 서비스가 등록되어 있어야 함
/etc/hosts.allow, /etc/hosts.deny (allow 우선) (ex> <daemon>: <ip>)1 2 3 4 5 6 7 8 9 10
# /etc/hosts.allow ALL: ALL # 모든 접속 허용 ALL: xxx.xxx.xxx.xxx # 특정 IP만 모든 서비스 허용 ALL : LOCAL # 로컬 접속만 허용 ALL EXCEPT in.telnetd : ALL # 특정 서비스만 차단 in.telnetd : xxx.xxx.xxx.xxx # 특정 IP만 텔넷 서비스 허용 in.telnetd : .xxx.com # 특정 도메인만 텔넷 서비스 허용 in.telnetd : xxx.xxx.xxx.xxx/<mask> # 특정 IP 대역만 텔넷 서비스 허용 # /etc/hosts.deny ALL : ALL # 모든 접속 차단
- 슈퍼 데몬? (xinetd)? 76
/etc/xinetd.d/<daemon> 의 설정파일로 서비스 제어 cps: 초당 접속 제한, instances: 동시에 서비스 할 수 있는 서버의 수, per_source: 동일 출발지 최대 접속 수, only_from: 접속 허용 IP, no_access: 접속 차단 IP 등
- PAM (Pluggable Authentication Modules)? 78
/etc/pam.d/<service> 파일로 인증 제어
/lib/security/<module>.so 파일로 인증 모듈 제공
/etc/security/<module>.conf 파일로 인증 모듈 설정 auth, account, password, session 4가지 모듈로 구성
- SSH root 원격 접속 제한 설정? 81
/etc/ssh/sshd_config 파일에서 PermitRootLogin no 설정
- 계정 잠금 임계값 설정? 82
/etc/pam.d/system-auth 파일에 pam_tally2.so 모듈 추가
1
auth required pam_tally2.so deny=3 unlock_time=120 no_magic_root # deny: 잠금 횟수, unlock_time: 잠금 시간 (초), no_magic_root: root 제외
- root 계정 su 제한? 84
/etc/pam.d/su 파일에 pam_wheel.so 모듈 추가
1
auth required pam_wheel.so use_uid group=wheel # wheel 그룹에 속한 사용자만 su 가능
- sudo 명령 제한? 85
/etc/sudoers 파일에 설정, visudo 명령으로 수정
1 2 3 4 5
\<user\> ALL=(ALL) ALL # <user> 계정은 sudo 명령을 통해 모든 호스트에서 모든 명령을 root 권한으로 실행 가능 \<user\> ALL=(ALL) /bin/ls # <user> 계정은 sudo 명령을 통해 /bin/ls 명령만 root 권한으로 실행 가능 \<user\> ALL=(ALL) NOPASSWD: ALL # <user> 계정은 sudo 명령을 통해 패스워드 입력 없이 모든 명령을 root 권한으로 실행 가능 \<user\> xxx.xxx.xxx.xxx=(ALL) ALL # <user> 계정은 xxx.xxx.xxx.xxx 호스트에서 모든 명령을 root 권한으로 실행 가능 \<user\> ALL=(test1,test2,test3) ALL # <user> 계정은 test1, test2, test3 계정 권한으로 모든 명령을 실행 가능
- 주요 로그 파일? 88
구분 명령어 파일 내용 utmp w, who, finger /var/run/utmp 현재 로그인한 사용자 정보 (바이너리 파일) wtmp last /var/log/wtmp 로그인, 로그아웃 정보 (바이너리 파일), ex> last <사용자명>, finger <사용자명>사용자명>사용자명> btmp lastb /var/log/btmp 로그인 실패 정보 (바이너리 파일), ex> lastb <사용자명>사용자명> lastlog lastlog /var/log/lastlog 마지막으로 성공한 로그인 정보 (바이너리 파일), ex> lastlog -u <사용자명>, lastlog -u <사용자명> -t <시간>시간>사용자명>사용자명> sulog - /var/log/secure su 명령어 사용 정보, ex> tail -f /var/log/secure acct/pacct lastcomm /var/account/pacct 시스템에 로그인한 모든 사용자가 실행한 명령어 정보 (바이너리 파일), ex> lastcomm <사용자명>사용자명> histsory history ~/.<쉘종류>_history쉘종류> 계정별 명령어 이력 정보, ex> history, history -c, history -w secure - /var/log/secure 시스템 보안 로그 정보, ex> tail -f /var/log/secure message - /var/log/messages 시스템 메시지 로그 정보, ex> tail -f /var/log/messages cron - /var/log/cron cron 로그 정보, ex> tail -f /var/log/cron - syslog 설정? 99
/etc/syslog.conf, /etc/rsyslog.conf
- 로그파일 순환 관리? 104
5. 시스템 해킹
- 버퍼 오버플로우? 106
- 스택 버퍼 오버플로우 대응기술? 112
스택 가드, 스택 쉴드, ASLR
- 레이스 컨디션? 113
- 포맷 스트링 공격? 115
SECTION2. UNIX/Linux 서버 취약점
1. 계정 관리
- 패스워드 최소 길이 설정? 120
/etc/login.defs 파일에 PASS_MIN_LEN 설정
- 패스워드 최대 사용기간 설정? 120
/etc/login.defs 파일에 PASS_MAX_DAYS 설정
- 패스워드 최소 사용기간 설정? 121
/etc/login.defs 파일에 PASS_MIN_DAYS 설정
- Session Timeout 설정? 121
/etc/profile 파일에 TMOUT 설정
- 패스워드 복잡도 설정? 121
/etc/pam.d/system-auth 파일에 pam_cracklib.so 모듈 추가
1
password requisite pam_cracklib.so retry=3 minlen=8 dcredit=1 ucredit=1 lcredit=1 ocredit=1 difok=3
2. 파일 및 디렉터리 관리
- 소유자 or 소유그룹 존재하지 않는 파일 검색? 125
1
find . \( -nouser -o -nogroup \) -exec ls -l {} \;
- word writable 파일 검색? 125
1
find / -perm -2 -type f -exec ls -l {} \;
SECTION3. 윈도우 서버 취약점
생략