| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- #루키즈
- sk 쉴더스 루키즈
- 모의침투
- Kali#Linux#KALI#LINUX#INSTALL#github#설치
- sk shieldus
- 개인정보보호
- Kali#Linux#Brute#Force#Attack#Test#DVWA#Hacking#Low#무차별#대입#공격#해킹
- 루키즈
- 클라우드 보안 기술
- 보고서
- AI #취업
- rocky linux#siem#project#threat detection#soc#onpremise#ids#python#csv#pipeline#kali linux#DVWA#security monitoring
- 클라우드 기반
- 29기
- DVWA#Brute#Force#Attack#Test#Kali#Linux#Medium#Level#sleep
- 클라우드기반 보안 시스템 구축/운영 실무
- 시스템-네트워크 보안 기술
- 기술 특강 및 OT
- Case Study
- Foxyproxy#install#setting#firefox
- kisa #보안관제
- 애플리케이션 보안 기술
- 클라우드 보안 기반
- 모듈프로젝트
- 쉴더스
- 모듈 프로젝트
- DVWA#INSTALL#github#security#kali#linux
- 인프라 활용을 위한 파이썬
- CERT
- VMWARE#INSTALL#설치
- Today
- Total
이것저것
[SK shieldus Rookies 29기] 19일차 본문
계정 및 그룹 관리 파일 분석
1) /etc/passwd (사용자 계정 정보)
모든 사용자가 읽을 수 있으며, 시스템 사용자의 기본 정보를 담고 있습니다.
구조 (7개 필드):username:password:UID:GID:comment:homedirectory:shell
| 필드 | 설명 | 비고 |
|---|---|---|
| username | 사용자 계정명 | |
| password | 암호화된 비밀번호 | 보통 x로 표시 (실제 암호는 shadow 파일에) |
| UID | 사용자 식별 번호 | 0(Root), 1 |
| GID | 주 그룹 식별 번호 | |
| comment | 설명 (주석) | |
| homedirectory | 사용자 홈 디렉터리 | |
| shell | 로그인 쉘 | /bin/bash 등 |
⚠️ 중요: UID가 0인 계정은 모두 Root 권한을 갖습니다. 계정명은 다르더라도 UID가 0이면 슈퍼유저로 인식됩니다.
2) /etc/shadow (패스워드 정보)
Root 사용자만 읽을 수 있으며, 실제 암호화된 패스워드와 만료 정보를 담고 있습니다.
구조 (9개 필드):username:password:lastchange:mindays:maxdays:warndays:inactive:expire:flag
| 필드 | 설명 | 예시 |
|---|---|---|
| password | 암호화된 패스워드 | $6$Salt$HashValue (SHA-512) |
| lastchange | 마지막 변경일 | 1970.1.1 기준 일수(유닉스 타임) |
| mindays | 최소 사용 기간 | 암호 변경 후 최소 유지해야 하는 기간 |
| maxdays | 최대 사용 기간 | 암호 변경 없이 사용 가능한 최대 기간 |
| warndays | 경고일 | 만료 전 경고 메시지를 출력하는 기간 |
| inactive | 유예 기간 | 만료 후 계정이 잠기기 전까지의 유예 기간 |
| expire | 계정 만료일 | 계정 자체가 비활성화되는 날짜 |
- 패스워드 상태:
!!또는*: 계정 잠김 (로그인 불가)(공백): 패스워드 미설정
3) /etc/group (그룹 정보)
groupname:password:GID:member_list
- member_list: 해당 그룹을 2차 그룹(Secondary Group)으로 사용하는 사용자 목록
)
4) /etc/gshadow (그룹 암호 정보)
groupname:password:admin:member_list
- password: 그룹 암호 (잘 사용되지 않음,
!는 암호 없음) - admin: 그룹 관리자 (구성원 추가/삭제 권한 보유)

정보기 준비하는 분들 익숙하시죠..
계정 관리 명령어
1) useradd (계정만 생성)
useradd -u 1001 -g users -d /home/newuser -s /bin/bash user01
#유저는 1000번 대부터
-u: UID 지정-g: GID 지정-d: 홈 디렉터리 지정-s: 쉘 지정-e: 계정 만료일 지정 (YYYY-MM-DD)-f: 계정 유예 기간(Inactive) 지정
adduser=⇒ 패스워드 설정, 홈디렉터리 자동 생성
useradd=⇒계정만 생성
2) usermod (계정 수정)
usermod -g admin -G wheel user01
-g: 주 그룹 변경-G: 2차 그룹 변경 (기존 그룹 유지 시-aG사용 권장)-l: 계정명 변경 (usermod -l newname oldname)-L: 계정 잠금 (Lock)-U: 잠금 해제 (Unlock)
3) passwd (암호 설정)
passwd user01 (관리자만 가능)
$ passwd (본인 암호 변경)
-l: 잠금 설정-u: 잠금 해제-d: 암호 삭제 (암호 없이 로그인 가능)-e: 다음 로그인 시 강제 변경 설정
4) chage (패스워드 정책 관리)
/etc/shadow 파일의 날짜 필드를 수정합니다.
chage -l user01 # 정보 확인
chage -m 10 -M 90 -W 7 user01 # 정책 설정
-m: 최소 사용 기간-M: 최대 사용 기간-W: 경고 기간-E: 계정 만료일 설정
5) userdel (계정 삭제)
userdel -r user01
-r: 홈 디렉터리 및 메일함까지 완전 삭제 (필수 권장)deluser도 가능
로그(Log) 개요 및 종류
로그란?
시스템 운영 중 발생하는 모든 이벤트를 기록한 파일로, 문제 해결(Troubleshooting) 및 보안 감사(Auditing)의 핵심 자료입니다.
- 기본 위치:
/var/log디렉터리
로그의 분류
| 구분 | 주요 로그 파일 | 설명 |
|---|---|---|
| 시스템 로그 | /var/log/messages |
시스템 전반의 표준 메시지 기록 |
| 보안/인증 로그 | /var/log/secure |
로그인 인증, PAM, SSH 관련 로그 |
| 부팅 로그 | /var/log/boot.log |
시스템 부팅 시 발생하는 메시지 |
| 메일 로그 | /var/log/maillog |
Sendmail, Postfix 등 메일 서버 로그 |
| 스케줄링 로그 | /var/log/cron |
Crond(작업 예약) 실행 로그 |
| 애플리케이션 | /var/log/httpd/ |
Apache 웹 서버 로그 (access_log, error_log) |
| 로그인 기록 | /var/log/wtmp |
성공한 로그인/로그아웃 (바이너리) |
| 로그인 실패 | /var/log/btmp |
실패한 로그인 시도 (바이너리) |
주요 텍스트 기반 로그 분석
텍스트 에디터(vi, cat, tail 등)로 직접 내용을 확인할 수 있는 로그입니다.
1) /var/log/messages
- 시스템에서 발생하는 가장 표준적인 로그
- Root 사용자만 읽기 가능
- 기록 형식:
날짜 시간호스트명프로세스명[PID]:메시지 내용
cat /var/log/messages

2) /var/log/secure
- 사용자 인증(Auth) 관련 로그
- SSH 접속 성공/실패,
su명령어 사용,sudo권한 행사 기록
주요 바이너리 기반 로그 분석 (wtmp, btmp)
텍스트로 저장되지 않고 바이너리(Binary) 형태로 저장되므로, 전용 명령어를 사용하여 확인해야 합니다.
1) /var/log/wtmp (성공 로그)
- 내용: 로그인/로그아웃, 재부팅(reboot), 시스템 종료(shutdown) 이력
- 명령어:
last
$ last # 전체 이력 확인
$ last gildong # 특정 사용자 이력 확인
$ last reboot # 재부팅 이력 확인
$ last -1 # 가장 최근 접속 기록 1개만 확인
2) /var/log/btmp (실패 로그)
- 내용: 로그인 실패 기록 (Brute Force 공격 탐지에 유용)
- 명령어:
lastb(Root 권한 필요)
lastb # 로그인 실패 이력 확인
lastb -3 # 최근 3개의 실패 이력 확인
3) /var/log/lastlog
- 내용: 각 사용자의 가장 마지막 로그인 정보만 기록
- 명령어:
lastlog
Rsyslog (System Logging Daemon) 이해
리눅스의 로그를 중앙 집중적으로 관리하는 데몬으로, /etc/rsyslog.conf 설정에 따라 로그를 파일, 콘솔, 또는 원격 서버로 전송합니다.
- 데몬명:
rsyslogd - 설정 파일:
/etc/rsyslog.conf - 서비스 관리:
systemctl restart rsyslog

Rsyslog 설정 파일 (/etc/rsyslog.conf) 상세
설정 문법
[Facility].[Priority] [Action]- 의미: "어떤 프로그램(Facility)이 어떤 수준(Priority) 이상의 로그를 발생시키면 어디로(Action) 보내라"
1) Facility (메시지 발생 주체)
| 종류 | 설명 |
|---|---|
| auth / authpriv | 인증 및 보안 관련 (SSH, su 등) |
| cron | 예약 작업 (Cron, At) |
| daemon | 시스템 데몬 (Telnet, FTP 등) |
| kern | 커널 발생 메시지 |
| 메일 시스템 | |
| local0 ~ local7 | 사용자 정의 (커스텀 로그용) |
| * | 모든 Facility |
2) Priority (위험 수준 / Level)
아래로 갈수록 심각도가 높습니다. (설정한 레벨 이상의 로그가 기록됨)
| 레벨 | 이름 | 설명 |
|---|---|---|
| debug | 디버그 | 개발/테스트용 상세 메시지 |
| info | 정보 | 일반적인 정보 메시지 |
| notice | 알림 | 에러는 아니지만 주의가 필요한 메시지 |
| warning | 경고 | 주의가 필요한 경고 (warn) |
| err | 에러 | 소프트웨어 오류 발생 (error) |
| crit | 치명적 | 하드웨어 문제 등 치명적 상태(alert, emerg 포함) |
| alert | 경계 | 즉각적인 조치가 필요한 상태 (DB 손상 등) |
| emerg | 응급 | 시스템 사용 불가 상태 (Panic) |
| none | 없음 | 로그를 기록하지 않음 |
3) Action (로그 저장 위치)
/var/log/file: 지정한 파일에 기록@192.168.0.1: 원격 호스트로 전송 (UDP)@@192.168.0.1: 원격 호스트로 전송 (TCP)*: 현재 로그인한 모든 사용자 화면에 출력/dev/console: 시스템 콘솔에 출력
Rsyslog 예시
치명적 오류(crit)만 별도 관리 (커널 제외)
*.=crit;kern.none /var/log/critical.=crit: 정확히 crit 레벨만 (=사용);kern.none: 커널 로그는 제외 (none)
응급 상황(emerg) 발생 시 모든 사용자에게 알림
*.emerg *
- 메일 로그 중 정보(info) 수준은 제외
mail.*;mail.!=info /var/log/maillog!=info: info 레벨은 제외
cat /etc/rsyslog.conf
이걸로 확인가능, 예시대로 변경하기는 힘드러...
---
## 그룹 관리 명령어
### 1) `groupadd`
```bash
groupadd -g 2000 devteam2) groupmod
groupmod -n newteam oldteam # 그룹명 변경
groupmod -g 3000 newteam # GID 변경
3) gpasswd (그룹 관리)
그룹 관리자를 지정하거나 그룹 멤버를 관리합니다.
gpasswd -A adminuser devteam # 그룹 관리자 지정
gpasswd -a user01 devteam # 멤버 추가 (2차 그룹)

gpasswd -d user01 devteam # 멤버 삭제
패스워드 크래킹 (Password Cracking)
⚠️ 공격 기법
- Dictionary Attack (사전 대입): 의미 있는 단어 목록(사전 파일)을 대입
- Brute-Force Attack (무차별 대입): 모든 가능한 문자의 조합을 시도
- Rainbow Table: 미리 계산된 해시 값 테이블을 이용하여 역추적
실습: John The Ripper 사용
0단계: 사전 준비
미리 복사를 합니다.
)
1단계: 패스워드 파일 결합
리눅스는 보안을 위해 passwd와 shadow를 분리하므로, 이를 하나로 합쳐야 합니다. 그리고 passcrack에 저장합니다.
unshadow passwd shadow | grep '\$y' | tee passcrack

2단계: 크래킹 수행
저장이 됐는지 확인을 하고 크래킹을 시작합니다.
john passcrack --wordlist /usr/share/wordlists/fasttrack.txt --format=crypt

3단계: 결과 확인
패스워드가 그대로 평문에 노출된 것을 확인할 수 있습니다.
john --show passcrack

패스워드 보안 정책
/etc/security/pwquality.conf
패스워드 복잡성(강도)을 설정하는 파일입니다.
| 설정값 | 설명 | 권장값 |
|---|---|---|
| minlen | 최소 길이 | 8 이상 |
| dcredit | 숫자 최소 개수 | -1 (1개 이상) |
| ucredit | 대문자 최소 개수 | -1 (1개 이상) |
| lcredit | 소문자 최소 개수 | -1 (1개 이상) |
| ocredit | 특수문자 최소 개수 | -1 (1개 이상) |
| retry | 입력 실패 시 재시도 횟수 | 3회 |
| usercheck | 아이디 포함 여부 확인 | 1 (포함 금지) |
/etc/login.defs
계정 생성 시 기본값을 설정하는 파일입니다.
- PASS_MAX_DAYS: 암호 최대 사용 기간 (90일 권장)
- PASS_MIN_DAYS: 암호 최소 사용 기간
- PASS_WARN_AGE: 만료 경고 기간
- UID_MIN / MAX: 일반 사용자 UID 범위 지정
벌써 또 하나 끝났다.... 시간 왤케 빨리 가지..?
추가적으로 강사님께서 pam, 부팅과정, 프로세스 공부를 진행하면 실력이 많이 발전할 거라고 하셨다.
'SK Shieldus Rookies 29' 카테고리의 다른 글
| [SK shieldus Rookies 29기] 21일차 (0) | 2025.12.05 |
|---|---|
| [SK shieldus Rookies 29기] 20일차 (0) | 2025.12.05 |
| [SK shieldus Rookies 29기] 18일차 (0) | 2025.12.05 |
| [SK shieldus Rookies 29기] 17일차 (0) | 2025.12.05 |
| [SK shieldus Rookies 29기] 16일차 (0) | 2025.12.05 |
