log?
-컴퓨터의 일기장 같은 것
-시스템에 남는 동작 흔적
🧾 대표 로그 파일 모음.zip
/var/log/messages | 시스템 전반의 일기 📢(로그인, 네트워크, 오류 등) | tail -f, grep |
/var/log/secure | SSH, FTP, Telnet 로그인 기록 🔐 | cat, grep |
/var/log/maillog | 메일 서비스 기록 ✉️ | tail -f |
/var/log/cron | 예약 작업(cron) 실행 기록 ⏰ | tail -f |
/var/log/boot.log | 부팅 중 서비스 실행 결과 🚀 | cat |
/var/log/dmesg | 부팅 직후 하드웨어/커널 메시지 🧠 | dmesg |
/var/log/xferlog | FTP 파일 전송 기록 📦 | cat |
/var/log/httpd/access_log | 웹 접속 기록 🌐 | tail -f |
/var/log/httpd/error_log | 웹 서버 오류 로그 💥 | tail -f |
/var/log/named.log | DNS 서버 요청 및 오류 🔎 | cat |
👤 로그인 관련 로그
/var/log/wtmp | 전체 로그인/로그아웃 기록누가 언제 로그인/로그아웃했는지 📅 | last |
/var/run/utmp | 현재 로그인 중인 사용자 정보 👥 | who, w |
/var/log/lastlog | 각 사용자 마지막 로그인 시간 🕓 | lastlog |
/var/log/btmp | 로그인 실패 기록 🚫 | lastb |
🧊 참고: 위 로그들은 바이너리 파일이라 그냥 열면 깨져보이므로 꼭 전용 명령어(last, who, lastlog, lastb)로 확인!
사용자가 사용한 명령어 기록
~/.bash_history | 사용자가 입력한 명령어들을 저장 🧾해킹 분석 시 매우 중요 |
종류 | .bash_history, .zsh_history, .history 등 사용 중인 쉘에 따라 다름 |
🎯 시스템 에러 빠르게 찾기!
tail -f /var/log/messages | grep error
🐧 rsyslog란?
로그 메시지를 받아서 저장하고 처리하는 ‘리눅스의 일기장 매니저’!
- 시스템, 커널, 프로그램들이 남기는 메시지를 모으고 정리.
- 메시지를 어디에 어떻게 저장할지 설정파일(/etc/rsyslog.conf)에서 결정
- 기본적으로 UDP 514 포트로 메시지를 받는다 📡
⚙️ /etc/rsyslog.conf 구조
선택자(Selector) | 어떤 로그를 기록할지 선택하는 부분 | authpriv.* (보안관련 모든 로그) |
- Facility (시설) | 메시지를 만드는 프로그램 종류 | auth, cron, kern 등 |
- Level (우선순위) | 로그 중요도 | info, warning, err 등 |
구분자 | Facility 와 Level 구분 | .(점)으로 구분, 여러 선택자 구분은 ;(세미콜론) |
행동(Action) | 로그를 어디에 기록할지 설정 | 파일, 콘솔, 사용자 계정, 원격 호스트 등 |
🏷️ Facility (로그 종류) 종류
auth | 로그인/사용자 인증 관련 | SSH, FTP 로그인 기록 🔐 |
cron | 예약작업 데몬 관련 | crond 작업 기록 ⏰ |
daemon | TELNET, FTP 같은 데몬 메시지 | |
kern | 커널 메시지 | 하드웨어 상태, 커널 이벤트 🧠 |
메일 시스템 관련 메시지 | ||
user | 일반 사용자 프로세스 메시지 | |
local0~local7 | 사용자/특정 프로그램 전용 | 개발자들이 자주 이용 |
🥇 Level (우선순위) 종류
emerg | 가장 위험한 상태 | 🚨 시스템 전체가 긴급! |
alert | 즉각 조치 필요 | ⚠️ 빨리 고쳐야 해요! |
crit | 치명적 문제 발생 | 💥 심각한 장애! |
err | 에러 발생 | ❌ 오류 있음 |
warning | 주의할 점 | ⚠️ 조심하세요 |
notice | 주목할만한 알림 | 📢 참고용 알림 |
info | 일반 정보 메시지 | ℹ️ 그냥 알려줘요 |
debug | 디버그용 상세 메시지 | 🐞 문제 찾는 중 |
우선 순위
📋 행동(Action)
파일 | 지정한 로그 파일에 기록 | /var/log/messages |
장치 | 콘솔 화면 등에 출력 | /dev/console |
계정 | 특정 사용자에게 알림 | root 또는 * (전체) |
호스트 | 다른 서버로 전송 | @192.168.1.100 |
🔄 logrotate란?
쌓이는 로그 파일, 용량 걱정 없이 관리해주는 ‘로그 정리사’! 🧹
- 로그가 계속 쌓이면 서버가 느려질 수 있죠? 😵
- logrotate가 주기적으로 옛날 로그를 압축하거나 삭제해서 용량을 확보
- 리눅스 설치 시 기본 탑재! 보통 cron으로 자동 실행
📂 logrotate 구성요소
/etc/logrotate.conf | 기본 설정 파일 |
/etc/logrotate.d/ | 프로그램별 추가 설정 파일 |
/usr/sbin/logrotate | logrotate 실행 프로그램 |
/var/lib/logrotate.status | 마지막 실행 상태 기록 |
/etc/cron.daily/logrotate | cron이 매일 실행하는 스크립트 |
⚙️ 주요 옵션 설명
daily/weekly/monthly | 로그 순환 주기 설정 | weekly는 매주 한 번 |
rotate [숫자] | 보관할 백업 로그 개수 | rotate 4 → 4개만 보관 |
compress / nocompress | 압축 여부 | 기본은 compress (gzip) |
compressext | 압축 파일 확장자 | .gz, .bz2 등 |
dateext | 날짜 확장자 추가 | 로그파일-20250527.gz |
delaycompress | 최신 백업은 다음 순환 때 압축 | 바로 압축 안함 |
missingok | 로그 파일 없어도 에러 안 냄 | 파일 없으면 그냥 넘어감 |
notifempty | 빈 로그 파일은 순환 안 함 | 내용 없으면 순환 안함 |
size [크기] | 로그파일 크기 기준 순환 | 100M 넘으면 순환 |
📋 로그 순환 전/후 스크립트
- prerotate / endscript: 로그 돌리기 전후에 할 작업 설정 가능
- sharedscripts: 여러 로그 돌릴 때 스크립트 한 번만 실행
action | ||
file 경로가 들어간 경우 | 해당 파일안에 데이터를 저장 | /var/log/hello.log |
device의 경로가 들어간 경우 | 해당 장치로 데이터를 전송 -> 처리 | /dev/pts/1 |
계정명이 들어간 경우 | 해당 계정에게 메시지를 알림 | |
주소가 들어간 경우 | 해당 주소(ip address)의 시스템으로 메시지를 전송 | @10.10.10.1 -> UDP 전송 (속도) @@10.10.10.1 -> TCP 전송(안전) |
주소로 로그데이터를 전송하는 경우에 로그데이터를 받는 쪽에서 rsyslog 수신 설정을 해야 한다
여러군데에서 발생하는 로그를 하나의 서버에서 관리하는 것이 가능하다
rsyslog 설정 방법 (송신 측 시스템)
설정 파일 열기
vi /etc/rsyslog.conf
아래 추가 (udp)
rsyslog 설정 방법 (수신 측 시스템)
설정 파일 열기
vi /etc/rsyslog.conf
아래 항목 주석 해제 또는 추가
# UDP 수신
module(load="imudp")
input(type="imudp" port="514")
# TCP 수신
module(load="imtcp")
input(type="imtcp" port="514")
+tab 2개로 확인하기
/dev/pts/1
'Cryptology' 카테고리의 다른 글
리눅스 방화벽 및 서버 구축 실습 (vm 4개로 서로 통신, log기록설정 등 해보기) (0) | 2025.05.27 |
---|---|
SSL - HTTPS, VSFTPS 구성해보기, 인증서 만들기 (0) | 2025.04.30 |
MITM(Man-in-the-Middle 공격과 인증서 (0) | 2025.04.25 |
암호화 - 단방향 암호(hash, MAC), 양방향 암호(대칭, 비대칭) (0) | 2025.04.23 |
SSH, SCP, firewalld, iptables 작동방식, 사용법 (0) | 2025.04.23 |