일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- chmod
- newbingai
- 랜카드인식불량
- M365필터
- swapon
- mount
- tar
- HTTPD
- MSBing
- chatGPT
- docker
- nmcli
- permission
- 같은폴더
- firewalld
- ssh
- lvcreate
- vgcreate
- ansible
- 프로세스
- vagrant kubernetes
- docker image
- yum
- 리다이렉션
- docker network
- 엑셀파일명변경
- journalctl
- Kubernetes
- 날짜변경
- pvcreate
- Today
- Total
becool
20210422 (목) 본문
9:32 review
debug shell
[root@localhost ~]# systemctl start debug-shell.service
[root@localhost ~]# systemctl enable debug-shell.service
Created symlink from /etc/systemd/system/sysinit.target.wants/debug-shell.service to /usr/lib/systemd/system/debug-shell.service.
[root@localhost ~]#
디버그 쉘로 부팅이 가능하며, 로그인 없이 root의 권한으로 실행 가능.
보안상의 문제가 발생할 수 있으므로 특정 디버깅시에만 활성화하며, 사용 후 비활성화가 필수이다.
======================================
로그관리
관련 법규에 따라 정책 수립
전자상거래법, 거래정보 보관연한 등
systemd-jounald
커널, 부팅 프로세스 초기단계의 출력, 시작 및 실행 시 데몬의 stdin 및 stderr, syslog 이벤트를 포함하는 많은 리소스에서 이벤트 메시지를 수집한다.
그런다음 표준 형식으로 다시 구조화하고 구조화 및 인덱싱된 시스템 저널에 쓴다.
기본적으로 이 저널은 재부팅 후 유지되지 않는 파일 시스템에 저장된다.
하지만 rsyslog 서비스는 도착하는 대로 저널의 systemd-journald에서 받은 syslog 메시지를 읽는다.
그런 다은 syslog 이벤트를 처리하여 로그 파일에 기록하거나 자체 구성에 따라 다른 서비스에 전달한다.
rsyslog서비스는 /var/log에서 재부팅 시 지속되는 로그 파일에 syslog 메시지를 정렬하고 쓴다.
rsyslog 서비스는 각 메시지를 전송한 프로그램 유형을 기반으로 하는 특정 로그 파일 또는 기능 및 각 syslog 메시지의 우선 순위로 로그 메시지를 정렬한다.
syslog 메시지 파일 외에도 /var/log 디렉터리에는 시스템의 다른 서비스의 로그 파일이 포함되어 있다.
syslog (rsyslog)
journal log (systemd-journald)
syslog
유닉스, 리눅스에서 사용하는 기본 로그(init)
로그 저장 경로 : /var/log/
로그 저장 포맷 : text
Facility 와 Priority에 따라 선별적으로 저장됨.
/etc/rsyslog.conf
/var/log/messages : 대부분의 syslog 메시지 저장
/var/log/secure : 로그인 로그
/var/log/maillog : 메일 로그
/var/log/cron : 작업예약 로그
/var/log/boot.log : 부트 로그
Facility
kern : Kernel 관련 메시지
user : User Level 관련 메시지
mail : Mail 관련 메시지
daemon : 시스템 데몬 관련 메시지
auth : 인증과 관련된 메시지
syslog : Syslog가 생산하는 메시지
lpr (line printer) : Line Printer 관련 메시지
news : News 그룹관련 메시지
uucp : UUCP관련 메시지
cron : crond와 관련된 메시지
authpriv : 보안인증관련 메시지
ftp : FTP서비스 관련 메시지
local0-local7 : 사용자 정의 Facility (단, local7은 부팅 로그 기록용으로 사용)
Priority
code | 우선순위 | 심각도 |
0 | emerg | 시스템을 사용할 수 없음 |
1 | alert | 즉각적인 조치 필요 |
2 | crit | 심각한 상태 |
3 | err | 심각하지 않은 오류 상태 |
4 | warning | 경고 상태 |
5 | notice | 정상이지만 중요한 이벤트 |
6 | info | 정보 이벤트 |
7 | debug | 디버깅 수준의 메세지 |
rsyslog 의 rules
/etc/rsyslog.conf
facility.priority 형태로 사용
46 #### RULES ####
47
48 # Log all kernel messages to the console.
49 # Logging much else clutters up the screen.
50 #kern.* /dev/console
51
52 # Log anything (except mail) of level info or higher.
53 # Don't log private authentication messages!
54 *.info;mail.none;authpriv.none;cron.none /var/log/messages
→ 50 : kern.* 모든 대상을 저장
→ 54 : 단, info.mail authprive cron의 모든 메세지는 저장하지 않는다
56 # The authpriv file has restricted access.
57 authpriv.* /var/log/secure
58
59 # Log all the mail messages in one place.
60 mail.* -/var/log/maillog
61
62
63 # Log cron stuff
64 cron.* /var/log/cron
65
→ 57 : authprive의 모든 프라이어리티는 /var/log/secure에 기록
→ 60 : mail의 모든 프라이어리티는 /var/log/millo에 기록
→ 64 : cron의 모든 프라이어리티는 /var/log/cron에 기록
66 # Everybody gets emergency messages
67 *.emerg :omusrmsg:*
68
69 # Save news errors of level crit and higher in a special file.
70 uucp,news.crit /var/log/spooler
71
72 # Save boot messages also to boot.log
73 local7.* /var/log/boot.log
→ 67 : 모든 퍼실리티의 emerg는 :omusrmsg.*
→ uucp,news.crit 은 /var/log/spooler
→ 73 : local7.* 의 모든 내용은 /var/log/boot.log에 저장
============
authpriv 로그 테스트
아래와 같이 user가 root 사용자 로그인에 실패한 부분에 대한 기록이 남음. (tail -f 옵션을 통해 모니터링)
[root@localhost log]# tail -f /var/log/secure
Apr 22 11:58:44 localhost su: pam_unix(su-l:session): session opened for user user by root(uid=0)
Apr 22 12:00:03 localhost unix_chkpwd[5154]: password check failed for user (root)
Apr 22 12:00:03 localhost su: pam_unix(su-:auth): authentication failure; logname=root uid=1000 euid=0 tty=pts/1 ruser=user rhost= user=root
Apr 22 12:00:03 localhost su: pam_succeed_if(su-l:auth): requirement "uid >= 1000" not met by user "root"
============
logger 명령어
/etc/rsyslog.conf
authprive.warn /var/log/logtest_sec → rsyslog.conf 에 입력 후 테스트
[root@localhost log]# logger -p authpriv.warn "authpriv logtest"
[root@localhost log]# cat logtest_sec
Apr 22 12:14:57 localhost root: authpriv logtest
위와같이 logger 명령을 통해 메세지를 발생시킬 수 있다. (로그 테스트에 사용)
[root@localhost log]# systemctl restart rsyslog.service
로거가 정상적으로 적재될려면 rsyslog.service를 재시작한 후 테스트한다.
===========
journal log
systemd 시스템에서 추가된 로그 관리 방식
로그 저장 경로 : /run/log/journal/
로그 저장 포맷 : 바이너리
부팅 시 부터 모든 로그 기록
재부팅 시 로그가 사라짐 (설정 변경 가능)
일반사용자도 journalctl 가능하지만 특정 메시지가 표시되지 않도록 제한될 수 있다.
journalctl -p옵션
(rsyslog과 다름에 유의)
code | 스펠링 |
0 | emerg |
1 | alert |
2 | crit |
3 | err |
4 | warning |
5 | notice |
6 | info |
7 | debug |
[root@localhost log]# journalctl -p crit..err
크리티컬부터 에러 수준까지 출력
[root@localhost log]# journalctl -p err
이머전시부터 에러까지 출력
[root@localhost log]# journalctl -p 4
이머전시부터 워닝까지 출력
[root@localhost log]# journalctl -r → 최근일어난 이벤트부터 정렬하여 출력 -r옵션
[root@localhost log]# journalctl -n 5 → 지정된 숫자 5 만큼의 라인(로그 갯수)을 출력 -n옵션
[root@localhost log]# journalctl -f → 10만큼의 라인(로그 갯수)을 출력 -f옵션 ( tail -f 와 동일)
[root@localhost log]# journalctl --since --until "YYYY-MM-DD hh:mm:ss"
[root@localhost log]# journalctl --since "2021-04-22 11:09:00" -p err
[root@localhost log]# journalctl --until "2021-04-22 12:00:00" -p err
[root@localhost log]# journalctl --since "-1hour" -p notice
출력방식 지정
# journalctl -o OUTPUT_FORMAT
short: 간결한 형태(기본값)
verbose : 자세히 표시
json : JSON포맷으로 표시
PID로 지정하여 검색
[root@localhost log]# ps -ef |grep cron
root 1295 1 0 10:50 ? 00:00:01 /usr/sbin/crond -n
[root@localhost log]# journalctl _PID=1295
-- Logs begin at Thu 2021-04-22 10:49:08 KST, end at Thu 2021-04-22 15:01:37 KST. --
Apr 22 10:50:01 localhost.localdomain crond[1295]: (CRON) INFO (RANDOM_DELAY will be scale
Apr 22 12:23:01 localhost.localdomain crond[1295]: (mkdir) ERROR (getpwnam() failed)
명령어로 지정하여 검색
[root@localhost log]# journalctl _COMM=crond
-- Logs begin at Thu 2021-04-22 10:49:08 KST, end at Thu 2021-04-22 15:03:37 KST. --
Apr 22 10:50:01 localhost.localdomain crond[1295]: (CRON) INFO (RANDOM_DELAY will be scale
Apr 22 12:23:01 localhost.localdomain crond[1295]: (mkdir) ERROR (getpwnam() failed)
UID로 사용자 기준 검색
[root@localhost log]# journalctl _UID=1000
-- Logs begin at Thu 2021-04-22 10:49:08 KST, end at Thu 2021-04-22 15:06:04 KST. --
Apr 22 12:08:39 localhost.localdomain su[5552]: FAILED SU (to root) root on pts/1
Apr 22 12:11:39 localhost.localdomain su[5721]: pam_unix(su-l:auth): authentication failur
Apr 22 12:11:39 localhost.localdomain su[5721]: pam_succeed_if(su-l:auth): requirement "ui
Apr 22 12:11:41 localhost.localdomain su[5721]: FAILED SU (to root) root on pts/1
==========================
패키지 관리
RPM (Red Hat Package Management)
( ①httpd-③2.4.6-40.③el7.④centos.x86_64.rpm )
①패키지 이름②버전③Release(리눅스 배포판 버전 포함)④아키텍쳐
yum (Yellowdog Updater Modified)
RPM 패키지를 고수준으로 관리
저장소(Repository)를 사용하여 패키지를 다운로드 받아 설치
패키지 설치시 의존성을 고려하여 필요한 패키지를 같이 설치
기본적으로 네트워크 연결이 되어있어야 사용 가능함.
'linux' 카테고리의 다른 글
20210426 (월) (0) | 2021.04.26 |
---|---|
20210423 (금) (0) | 2021.04.23 |
20210421 (수) (0) | 2021.04.21 |
20210420 (화) (0) | 2021.04.20 |
20210419 (월) (0) | 2021.04.19 |