— 시스템/네트워크/애플리케이션/침해사고 분석까지, 숫자·명령어·메커니즘 전부 한 번에 잡는 포스팅
[서론]
정보보안기사 실기는요, “개념을 아는 것”만으로는 부족해요.
시험장에서는 결국 숫자(권한/포트/이벤트ID), 명령어(find/nmap/last/snort 룰), 메커니즘(왜 그렇게 되는지)를 동시에 요구해요.
그래서 이 글은 외우기 좋은 문장과 바로 써먹는 명령어, 그리고 시험에 바로 나오는 포인트만 쭉 적었습니다.
목표는 단 하나예요.
지하철에서 중얼거리면 그대로 답이 나오는 상태.
[본론] SECTION 1. 시스템 보안 – 숫자 싸움의 끝판왕
1) 리눅스 계정 파일 구조: /etc/passwd vs /etc/shadow
✅ /etc/passwd (기본: 644, “누구나 읽기”)
- 역할: 계정의 “뼈대 정보”가 들어 있어요.
- 구조(시험용 포맷):
ID : x : UID : GID : 설명 : 홈디렉터리 : 로그인쉘
암기 포인트
- 두 번째 필드의
x= “비밀번호는 여기 없고/etc/shadow에 있다” - UID=0이면 root (시험 단골)
“passwd는 신상정보, shadow는 비밀번호 금고”라고 비유했요.
✅ /etc/shadow (시험 포인트: root만 읽기 / “보안 핵심”)
- 역할: 비밀번호 해시가 있는 진짜 금고
- 구조(시험용):
ID : $해시ID$솔트$암호문 : ...
해시ID 암기(진짜 자주 나와요)
$1$= MD5$5$= SHA-256$6$= SHA-512
Salt(솔트) 왜 넣나요?
- 레인보우 테이블(미리 계산된 해시 표) 공격을 막기 위해
- “랜덤값 섞어서 해시 생성” → 같은 비밀번호라도 해시가 달라짐
실무에서는
/etc/shadow권한이 400만 있는 경우도 있고(강경 세팅), 640처럼 그룹 shadow를 쓰는 배포판도 있어요.
시험에서는 “root만 읽는 파일”로 잡고 가는 게 안전해요.
2) 특수 권한 3종 세트: SetUID / SetGID / Sticky Bit
여기부터는 기호(s,t) ↔ 숫자(4000,2000,1000) 매칭 싸움이에요.
✅ SetUID (4000, s)
- 의미: 실행 시 파일 소유자 권한(root 등)으로 실행
- 위험 포인트:
/usr/bin/passwd같은 파일
→ 공격자가 악용하면 권한 상승 가능
SetUID 찾기(시험 단골 명령)
find / -perm -4000
find / -perm -4000
✅ SetGID (2000, s)
- 의미: 실행 시 그룹 권한으로 실행
- (시험에서는 SetUID보다 비중은 조금 낮지만, 숫자/기호는 꼭 외워야 해요)
✅ Sticky Bit (1000, t) – /tmp의 “공용인데 삭제는 제한”
- 공용 디렉터리에 설정됨(대표
/tmp) - 규칙: 누구나 생성 가능, 삭제는 소유자와 root만 가능
- 표기:
drwxrwxrwt(맨 끝t확인)
“/tmp는 공용 주차장, 차는 누구나 대지만(생성) 남의 차는 못 빼요(삭제)”
이렇게 이미지로 외워봐요.
3) umask 계산: “최대 권한 – umask = 기본 권한”
- 파일 최대:
666(실행권한 없음) - 디렉터리 최대:
777
예: umask 022일 때 파일 권한
666 - 022 = 644 (rw-r--r--)
여기서 실수 포인트: “파일도 777에서 빼는” 실수 정말 많이해요.
파일은 666부터 시작입니다.
[본론] SECTION 1-2. 로그 파일 완전 해부 – 무조건 출제 파트
1) 리눅스 로그 5대장 (기본 경로: /var/log)
| 로그 | 내용 | 확인 명령 | 포인트 |
|---|---|---|---|
utmp | 현재 로그인 사용자 | w, who, finger | 바이너리 |
wtmp | 로그인/로그아웃/부팅 이력 | last | 바이너리, 히스토리 |
btmp | 로그인 실패 기록 | lastb | Brute Force 탐지 핵심 |
lastlog | 계정별 마지막 접속 | lastlog | /var/log/lastlog |
secure | 인증(PAM), sudo, 계정 | cat, vi | RHEL 계열 핵심 |
Debian/Ubuntu는
secure대신auth.log가 더 흔해요.
시험에서는 “RHEL=secure”로 잡는 게 맞습니다.
2) Syslog 설정 포맷 + 중요도 레벨 순서(암기 필수)
✅ 설정 형식
서비스(Facility).중요도(Priority) 로그위치(Action)
✅ 중요도(높음 → 낮음)
- emerg
- alert
- crit
- err
- warning
- notice
- info
- debug
암기 리듬: E-A-C-E-W-N-I-D
(이거는 진짜로 소리 내서 외우면 시험장에서 자동으로 나옵니다.)
3) 로그 로테이션: logrotate
- 로그가 꽉 차서 장애 나는 걸 막기 위해
- 압축/삭제/순환을 자동으로 관리
- 설정:
/etc/logrotate.conf
[본론] SECTION 1-3. 시스템 공격 & 방어 – 메커니즘이 답이다
1) 메모리 공격
✅ 버퍼 오버플로우
- 입력 검증 없이 넘치게 넣음 → Return Address 변조
- 대응 3종 세트:
- ASLR: 주소 랜덤 배치
- Stack Guard/Canary: 복귀주소 앞 검증값
- 안전 함수:
strcpy → strncpy,strcat → strncat
✅ 포맷 스트링 공격
printf(buf)처럼 포맷 지정자 없이 출력하면%x,%n등으로 메모리 열람/변조 가능
2) Race Condition & 심볼릭 링크 공격(/tmp 단골)
- /tmp 같은 공용 공간에서
- 관리자 권한 프로그램이 임시 파일 만들 때
- 공격자가 미리 같은 이름의 심볼릭 링크를
/etc/passwd같은 중요 파일로 걸어두면…
→ “내가 만든 임시 파일”이 사실 “중요 파일 덮어쓰기”로 바뀔 수 있어요.
대응
- umask 강화
- 임시 파일명 랜덤 생성:
mkstemp
3) 패스워드 크래킹 3종
- Dictionary: 사전 단어 대입
- Brute Force: 전수조사(느림)
- Rainbow Table: 해시를 미리 계산해둔 거대한 표
대응은 한 줄로 끝
- Salt 추가 (레인보우 테이블 무력화)
[본론] SECTION 1-4. 필수 보안 설정 & 데몬
1) PAM (Pluggable Authentication Modules)
- 인증 모듈 프레임워크
- 프로그램 재컴파일 없이
/etc/pam.d/수정으로 정책 변경
4가지 타입(시험 서술형 단골)
auth: 사용자 신원 확인account: 계정 유효성/시간/정책password: 비밀번호 변경/설정session: 로그인 전/후 환경
로그인 실패 제한(계정 잠금)
pam_tally.so(시험 포인트)
2) TCP Wrapper
- inetd 슈퍼데몬 계열 서비스 접근 제어
- 검사 순서:
hosts.allowhosts.deny
중요 룰(시험 답안용 문장)
- Allow에 있으면 통과
- 없으면 Deny 확인
- 둘 다 없으면 통과(Default Allow)
- 보안성 확보하려면 Deny에
ALL:ALL기본 차단을 둔다
[본론] SECTION 2. 네트워크 보안 – 포트/플래그/옵션의 전쟁
1) DoS: “자원 고갈의 미학”
✅ TCP SYN Flood
- SYN만 대량 → 서버는 SYN+ACK 후 ACK 기다림
- Backlog Queue가 꽉 차서 정상 연결 불가
대응 키워드
- Syncookies
- First SYN Drop
- 커널 설정:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_syncookies = 1
✅ Smurf
- Src IP를 피해자로 스푸핑 + 브로드캐스트에 ICMP Echo Request
- 수많은 호스트가 피해자에게 Reply 폭탄
대응(시험 한 줄 답안)
- 라우터에서 Directed Broadcast 차단
no ip directed-broadcast
no ip directed-broadcast
✅ Land
- Src IP = Dst IP (자기 자신) → 무한 루프 유발
- 대응: 방화벽에서 Source==Destination 차단
✅ Teardrop / Bonk / Boink
- Fragment Offset 중첩/조작 → 재조립 오류
- 대응: OS 패치 + 조각화 패킷 검사
2) DDoS 구성요소(그림으로 외우기)
공격자 → 마스터(C&C) → 에이전트(좀비) → 타겟
고전 도구(시험 고정픽)
- Trinoo: UDP Flood
- TFN: UDP/TCP SYN/ICMP
- Stacheldraht: TFN + 암호화
3) Spoofing & Sniffing
✅ ARP Spoofing(MITM)
- 공격자가 “내가 GW야” ARP Reply 지속 전송 → ARP Cache Poisoning
대응
arp -s IP MAC
arp -s IP MAC
✅ DNS Spoofing(파밍)
- DNS 응답을 정상보다 빠르게 위조 응답
- 대응: 중요 사이트는 hosts에 고정(시험 포인트)
[본론] SECTION 2-2. 무선랜 보안 – 알고리즘 매칭이 점수다
1) 암호화 방식 진화(시험 표로 그대로)
| 구분 | 알고리즘 | 포인트 |
|---|---|---|
| WEP | RC4 + IV(24bit) | IV 짧아서 키 복구 취약 |
| WPA(v1) | TKIP(RC4 기반) | WEP 보완, 키 갱신 |
| WPA2 | AES-CCMP | 표준/정답 1순위 |
| WPA3 | SAE | PSK 사전대입 보완, OWE |
2) 무선랜 공격
- War Driving: 이동하며 취약 AP 탐색
- Rogue AP: 불법 AP, 내부망 침투 통로
[본론] SECTION 2-3. VPN & IPSec – AH/ESP 구분이 킬러
IPSec(3계층 보안)
✅ AH vs ESP
- AH: 무결성/인증/재전송 방지 (암호화 X)
- ESP: 무결성/인증 + 기밀성(암호화)
✅ Transport vs Tunnel
- Transport: IP 헤더 유지, Payload 보호(종단간)
- Tunnel: 패킷 전체 보호 + 새 IP 헤더(게이트웨이간 VPN)
✅ 키 교환(IKE)
- UDP 500번
SSL/TLS VPN
- 브라우저 기반(4~7계층), 클라이언트 설치 부담이 낮음
[본론] SECTION 2-4. 포트 스캐닝 & IDS/IPS – nmap 옵션은 실기 단골
1) 스캔 기법(논리로 외우기)
- TCP Connect: 3-way handshake 완료(로그 남음)
- SYN Half-open: SYN → SYN/ACK 받으면 RST로 끊음
- FIN/NULL/Xmas: 닫힌 포트는 RST, 열린 포트는 무응답(RFC 규약 악용)
Xmas = FIN + PSH + URG (“전구 다 켠다”)
2) IDS vs IPS
- IDS: 탐지
- IPS: 탐지 + 차단
- 오탐(False Positive) vs 미탐(False Negative) 구분(미탐이 더 위험)
3) Snort 룰(시험장에서 그대로 쓰는 구조)
- 헤더:
[Action] [Proto] [Src IP] [Src Port] -> [Dst IP] [Dst Port] - 옵션(룰 바디): msg, content, sid 등
예시:
alert tcp any any -> 192.168.1.0/24 80 (msg:"Web Attack"; content:"GET"; sid:1001;)
alert tcp any any -> 192.168.1.0/24 80 (msg:"Web Attack"; content:"GET"; sid:1001;)
[본론] SECTION 3. 애플리케이션 보안 – “코드/로그로 판별” 수준까지
1) SQL Injection(심화)
✅ Error-Based
- 에러 메시지로 정보 노출
- 패턴:
'입력, HAVING 1=1 등
✅ Union-Based
UNION으로 결과 합치기- 조건: 컬럼 수 & 데이터 타입 일치
예:
' UNION SELECT 1, user(), 3, 4 --
' UNION SELECT 1, user(), 3, 4 --
✅ Blind SQLi
- 에러 안 보이면 “질문”으로 뽑아냄
Boolean-Based
- 참/거짓에 따라 페이지 내용 변화
- substring/ascii/length 활용
Time-Based
- 참이면 응답 지연
- MSSQL:
WAITFOR DELAY '0:0:5' - MySQL:
SLEEP(5)
✅ Mass SQLi
- 대량 변조(UPDATE/SET/REPLACE 등장)
방어(서술형 정답 1순위)
- Prepared Statement(가장 확실)
- 입력값 검증(정규식/치환)
- 에러 메시지 차단(디버깅 정보 숨김)
2) XSS vs CSRF vs SSRF(삼대장)
✅ XSS: 실행은 “피해자 브라우저”
- Reflected / Stored / DOM
- 대응:
- HTML Entity 변환(
<→<) - 출력 시 write() 주의
- 쿠키 보호: HttpOnly
- HTML Entity 변환(
✅ CSRF: 요청은 “사용자 권한으로”
- 대응:
- CSRF Token
- 중요 기능 재인증
✅ SSRF: 요청은 “서버가 내부망을 찌르게”
- 대응:
- 내부망 대역 차단
- 요청 URL 검증
3) FTP Active vs Passive(포트가 점수)
✅ Active
- 명령: 클라(1024+) → 서버 21
- 데이터: 서버 20 → 클라(1024+)
- 문제: 클라 방화벽이 서버 20 접속을 막으면 실패
✅ Passive
- 명령: 클라(1024+) → 서버 21
- 데이터: 클라(1024+) → 서버(1024+ 랜덤)
- 문제: 서버 측 랜덤 포트 개방 부담
보안 설정: ftpusers에 root 등록(접속 차단)
4) E-mail 보안(포트 고정)
- SMTP 25(발송)
- POP3 110(수신/삭제)
- IMAP 143(수신/서버보관)
- Relay Deny(스팸 릴레이 차단)
SPF / DKIM / DMARC: 서술형 키워드
5) Apache/IIS 실무 설정(시험 답안용)
- 디렉터리 리스팅 제거:
Options -Indexes - 위험 메서드 제한: PUT/DELETE/TRACE
- 서버 정보 숨김:
ServerTokens Prod - 커스텀 에러 페이지
[본론] SECTION 4. 침해사고 분석 & 대응 – “로그/룰/증거수집”이 배점이다
1) Snort 룰(실기에서 문법 틀리면 0점 느낌)
옵션 핵심:
- msg, content, nocase
- offset, depth
- sid(사용자 정의는 1,000,001부터)
- rev
- 바이너리:
| 00 FF A1 | - 정규식:
pcre:"/regex/"
예시(FTP root 접속 탐지):
alert tcp any any -> 10.10.10.0/24 21 (msg:"FTP Root Login"; content:"USER root"; nocase; sid:1000001; rev:1;)
alert tcp any any -> 10.10.10.0/24 21 (msg:"FTP Root Login"; content:"USER root"; nocase; sid:1000001; rev:1;)
2) YARA(악성코드 분류 도구)
구조: rule / meta / strings / condition
- strings: 텍스트/16진수/정규식
- condition:
$a and $b같은 논리 조건
3) 리눅스 로그 분석 핵심
- wtmp:
last - btmp:
lastb(로그인 실패) - secure: 인증/PAM/sudo
추가:
- xferlog: FTP 전송 기록
- Pacct(프로세스 회계):
lastcomm,acctcom
4) 윈도우 이벤트 로그(숫자 암기)
Logon Type
- 2: 대화형
- 3: 네트워크
- 10: RDP
Event ID(Security.evtx)
- 4624: 로그인 성공
- 4625: 로그인 실패
- 4672: 관리자 권한 로그인
- 1102: 로그 삭제(Audit Log Clear) ← 공격 흔적 삭제 단골
5) 포렌식 핵심 개념
✅ 증거 수집 순서(Order of Volatility, RFC 3227)
- 레지스터/캐시 → 라우팅/ARP/메모리(RAM) → 임시파일 → 디스크 → 원격로그/매체
✅ Slack Space
- RAM Slack / Drive Slack / File system slack
- 범인이 데이터 숨기기 좋은 영역
6) 패킷 분석 단골 시그니처(와이어샥 눈)
- Land: Src IP == Dst IP
- Smurf: Src IP=피해자, Dst=Broadcast(ICMP)
- Ping of Death: 65,535 초과
- Teardrop: Fragment Offset 중첩
- RUDY: 느린 HTTP POST(Content-Length 크게, 데이터 천천히)
[중간 점검] “시험장 답안”으로 바로 쓰는 한 줄 정리
/etc/passwd는 계정 정보,/etc/shadow는 해시 금고(솔트/해시ID 포함)예요.- 특수 권한: SetUID=4000(s), SetGID=2000(s), Sticky=1000(t)예요.
- 로그 5대장: utmp/wtmp/btmp/lastlog/secure, 확인 명령도 세트로 외워요.
- SYN Flood 대응: syncookies + 커널 설정, Smurf 대응: directed broadcast 차단이에요.
- WPA2=AES-CCMP, IPSec에서 AH는 암호화 X, ESP는 암호화 O예요.
- SQLi는 Error/Union/Blind(Boolean/Time)로 쪼개고 방어는 Prepared Statement가 1순위예요.
- 윈도우 로그 삭제는 1102, 로그인 성공/실패는 4624/4625예요.
[결론] 3줄 요약
- 실기는 “개념”보다 숫자/명령어/메커니즘이 점수를 결정해요.
- 오늘 정리는 시험 단골을 세트(파일↔권한↔명령, 공격↔대응, 로그↔확인)로 묶어 암기하게 설계했어요.
- 지금부터는 “읽는 공부”가 아니라 퀴즈로 말로 뱉는 공부(Active Recall)로 넘어가면 합격권이에요.
💡 독한 퀴즈 (진짜로 말로 답해보세요)
오늘은 한 문제만 풀고 가요. (답은 댓글처럼 당신이 먼저 말해보는 게 핵심이에요)
Q. 리눅스에서 “로그인 실패(Bad Login)” 기록을 저장하는 파일명과, 확인 명령어는 무엇인가요?

