728x90
반응형
📁 리눅스 기본 디렉토리 구조와 역할<details>
| 디렉토리 | 서명 |
| / | 루트 디렉토리. 모든 경로의 시작점 |
| /bin | 기본 명령어 실행 파일 저장 (ex: ls, cp, mv) |
| /sbin | 시스템 관리용 관리자 명령어 (ex: shutdown, reboot) |
| /etc | 시스템 설정 파일 (ex: passwd, hosts, fstab) |
| /home | 일반 사용자들의 홈 디렉토리 (/home/사용자명) |
| /root | 루트 사용자 홈 디렉토리 |
| /usr | 사용자용 프로그램, 라이브러리 등 (하위 /usr/bin, /usr/lib 등 포함) |
| /var | 가변 데이터 저장소, 주로 로그파일, 메일, 캐시 등 |
| /tmp | 임시 파일 저장소 (재부팅 시 비워짐) |
| /boot | 부팅 관련 파일 저장소 (vmlinuz, initrd, grub) |
| /lib, /lib64 | 라이브러리 파일들 (명령어 실행 시 필요한 공유 라이브러리) |
| /dev | 디바이스 파일 (ex: /dev/sda, /dev/null) |
| /proc | 가상 파일시스템, 커널 정보 제공 (ex: /proc/cpuinfo) |
| /sys | 커널과 하드웨어 정보 제공 (장치 드라이버 등 관리) |
| /media, /mnt | 외부 장치 마운트 포인트 |
💡 /usr/local은 사용자가 설치한 프로그램을 관리하는 위치야.
📜 주요 로그 파일 종류 (위치: /var/log/)
| 로그 파일 | 설명 |
| messages | 시스템 전반의 일반 메시지와 오류 정보 (syslog 기반) |
| syslog | 시스템 로그 (Ubuntu 등 Debian 계열에 많음) |
| dmesg | 부팅 시 커널 메시지 (하드웨어 관련 메시지 등 포함) |
| auth.log 또는 secure | 인증 관련 로그, 로그인 시도, sudo 사용 등 |
| boot.log | 부팅 과정에서 발생한 메시지 로그 |
| kern.log | 커널 관련 메시지 로그 |
| cron | 크론 잡(cron job) 실행 기록 |
| maillog 또는 mail.log | 메일 서버 관련 로그 |
| Xorg.0.log | X 서버(그래픽 시스템) 로그 |
| httpd/, nginx/ | 웹서버 관련 로그 (access.log, error.log 등) |
| apt/ | APT 패키지 설치, 업데이트 로그 |
| yum.log | RHEL/CentOS 등에서의 패키지 설치 로그 |
| lastlog | 사용자 마지막 로그인 기록 |
| btmp | 로그인 실패 기록 (이진 로그로 lastb 명령으로 확인) |
| wtmp | 로그인/로그아웃 기록 (who, last 명령으로 확인) |
| utmp | 현재 로그인한 사용자 정보 (who, w 명령으로 확인) |
✅ 참고 명령어
- journalctl : systemd 기반 시스템 로그 전체 보기
- dmesg : 커널 메시지 확인
- cat /var/log/messages : 시스템 메시지 확인
- last, lastb : 로그인/로그아웃 기록 보기
📖 1. 로그 확인 방법
🔹 시스템 로그 확인 명령어
| 명령어 | 설명 |
| cat, less, tail | 로그 파일 내용 확인less /var/log/messages, tail -n 100 /var/log/syslog |
| tail -f /var/log/messages | 실시간 로그 모니터링 |
| grep | 키워드 검색grep "error" /var/log/messages |
| journalctl | systemd 기반 로그 뷰어 (Ubuntu, CentOS 7 이상)journalctl -xe, journalctl -u sshd |
| dmesg | 커널 부팅 메시지 확인 |
| last, lastb | 로그인/실패 기록 보기 (/var/log/wtmp, /var/log/btmp) |
🔸 예시
# SSH 접속 실패 내역 확인
grep "Failed password" /var/log/auth.log
# 최근 50줄만 보기
tail -n 50 /var/log/syslog
# systemd 서비스 로그 확인
journalctl -u ssh.service
🔍 2. 로그 분석 팁
✅ 주요 키워드로 분석
- "error", "fail", "denied" 등으로 grep 검색
- 포트스캔, 무차별 로그인 시도 탐지 가능
✅ 시간 기준 분석
# 최근 1시간 이내 로그
journalctl --since "1 hour ago"
# 특정 날짜 기준
journalctl --since "2025-07-20 00:00:00" --until "2025-07-21 00:00:00"
✅ auth 로그 분석 예시
grep "Accepted" /var/log/auth.log # 성공한 로그인
grep "Failed" /var/log/auth.log # 실패한 로그인
grep "sudo" /var/log/auth.log # sudo 사용 추적
⚙️ 3. 로그 커스터마이징 방법
🔹 rsyslog 설정 (전통적인 로그 시스템)
파일: /etc/rsyslog.conf 또는 /etc/rsyslog.d/*.conf
# 예시: 모든 cron 로그를 별도 파일에 저장
cron.* /var/log/cron.log
설정 변경 후 재시작:
sudo systemctl restart rsyslog
🔹 logrotate 설정 (로그 파일 자동 관리)
파일: /etc/logrotate.conf, /etc/logrotate.d/*
기능:
- 로그 용량 초과 시 압축
- 오래된 로그 삭제
- 지정 주기마다 회전(rotate)
/var/log/secure {
weekly
rotate 4
compress
missingok
notifempty
}
➡️ 위 설정은 /var/log/secure를 주마다 회전, 4개까지 유지, gzip으로 압축한다는 뜻이야.
🔹 journalctl 설정 (systemd)
설정 파일: /etc/systemd/journald.conf
[Journal]
Storage=persistent
SystemMaxUse=500M
- Storage=persistent: 재부팅해도 로그 유지
- SystemMaxUse: 최대 저장 용량 제한
재시작:
sudo systemctl restart systemd-journald
🔐 보안 로그 분석 팁
분석 항목 예시
| 분석 항목 | 에시 |
| SSH 로그인 실패 | grep "Failed password" /var/log/auth.log |
| 루트 권한 사용 추적 | grep "sudo" /var/log/auth.log |
| 포트 스캔 탐지 | dmesg, journalctl -k 에서 "port scan" 등 확인 |
| 의심스러운 프로세스 | ps aux, top, netstat, lsof 명령과 함께 사용 |
반응형
'OS > Linux' 카테고리의 다른 글
| NAS 서버 (1) | 2025.03.27 |
|---|---|
| Kerberos Authentication Server (0) | 2025.03.26 |
| Remote Log Server (0) | 2025.03.26 |
| DHCP (0) | 2025.03.26 |
| NTP 설정 및 활용 (0) | 2025.03.26 |