NTP (Network Time Protocol)
‣ 시간 동기화를 제공하는 프로토콜
‣ UDP 123 번호 이용
‣ 시간 동기화를 위해 유니캐스트, 브로드캐스트, 멀티캐스트 사용
‣ NTP 서버들에 대한 정보를 제공(https://www.ntppool.org)
‣ 시간 동기화 목적
❶ 백업이나 패치 등 예약한 작업들이 실행되지 않는 것을 방지
❷ 로그에 대한 신뢰도 - 언제 어떤 작업을 했는지 보여주는 로그의 시간은 정확해야 함
❸ 보안. 암호화 인증 프로토콜 과정 시 timestamp 및 lifetime이 추가 - 이때 서버와 클라이언트의 시간과 일치하지 않으면, 서비스에 접근을 차단
•시간 종류
RTC (Real Time Clock ) | • 하드웨어 시간 또는 CMOS 시간 • 컴퓨터 보드의 배터리에 의해 작동하는 시간 • 요일, 날짜, 시간 표시 • RTC 시간 변경은 컴퓨터 시작 전 BIOS 설정 창이나 운영체제 실 행 중에 명령어를 통해 가능 |
System Clock (시스템시간) | • 리눅스 커널이 사용하는 시간 • 소프트웨어 시간 • 요일, 날짜, 시간 표시 및 표준시간대과 썸머타임제 표시까지 가능 • 리눅스 커널은 1970년 1월1일 자정을 기준으로 시간계산 • 초기 시스템 시간은 부팅 시에 하드웨어 시간으로부터 가져와 부팅 하고 부팅 이후부터는 독립적으로 시간을 계산 |
• 명령어 date
⇒ 현재의 요일, 날짜 및 시간 정보 표시
‣ Local time : 시스템 시간에서 time zone에 따라 변경
‣ UTC : 세계 표준시 (UTC 변경 명령어 data-utc)
• 명령어 timedatectl
⇒ 시스템 시간 및 날짜 정보 변경, 표준시간대 변경, 원격지 서버와의 자동화 기능 지원
•Stratum
‣ 시간을 전송하는 장비
•NTP 서버 설치
‣ SplunkServer NTP 구축
NTP 서버 설치
‣ 한국 표준 시간대(time zone)에 해당하는 서버들의 목록 정의
‣ Pool.ntp.org 이름들은 매 시간마다 변하면서 임의의 서버들을 지정
‣ Zeep IDS NTP 설치
‣ ntpdate : 리눅스 시간을 timeserver와 동기화하는 명령어
호스트 파일에서 NTP 서버의 IP 및 호스트 이름 지정
‣ WebServer NTP 설치
• chrony
‣ Redhat 계열 리눅스 기본 시간 동기화 프로그램
‣ Redhat Enterprise Linux 8 부터 기본 시간 동기화 프로그램으로 채택
‣ CentOS 8 chrony를 기본 시간 동기화 프로그램으로 사용
‣ Chrony는 기본 설치가 되어 있어 CentOS 8 에서 별도 설치를 하지 않고 사용
‣ Sysmon NTP 설치
NTP 서버 등록
Rsyslog 구성도
•로그(Log)
‣ 시스템의 모든 기록을 담고 있는 데이터
⇒ 성능, 오류, 경고 및 운영정보 등의 중요 정보 기록
⇒ 특별한 형태의 기준에 따라 숫자와 기호 등으로 이뤄짐 => SNMP
‣ 로그를 분석하지 않고 그대로 활용하기는 어려움
⇒ 웹 서버의 경우 하루 수백 메가에서 기가 단위의 로그가 쌓임
⇒ 대용량 로그를 일일이 살펴보기란 어려움
•로그 데이터 중요성
‣ 시스템에서 발생하는 모든 문제에 대한 유일한 단서
‣ 시스템에서 발생한 오류 및 보안 결함 검색 가능
‣ 잠재적인 시스템 문제를 예측하는데 사용될 수 있음
‣ 장애 발생 시 복구에 필요한 정보로 활용
‣ 침해 사고 시 근거 자료로 활용
‣ 각정 법규 및 지침에서 의무화
•로그 분석
‣ 로그 데이터를 분석하여 필요로 하는 유용한 정보를 만드는 행위
⇒ 대량의 로그를 필요로 하는 정보로 만들어 내는 행위
‣ 분석할 로그 종류
⇒ 서버(윈도우 및 리눅스 서버), 네트워크 장비, 보안장비 등
‣ 로그 데이터 분석을 통해 얻을 수 있는 정보
⇒ 외부로부터 침입 감지 및 추적
⇒ 시스템 성능 관리
⇒ 마케팅 전략으로 활용
⇒ 시스템의 장애 원인 분석
⇒ 시스템 취약점 분석
※ 분석할 로그 종류
•Network/Security Device Log
‣ 방화벽 로그
‣ VPN 로그
‣ 라우터/스위치로그
‣ IPS 로그
‣ IDS 로그
•Server/Endpoint/Application Log
‣ 서버 로그
‣ 이벤트 로그
‣ 애플리케이션 로그
•리눅스 로그
‣ 시스템 로그
⇒ 리눅스 시스템 운영에 필요한 로그들
⇒ 사용자들이 서비스 제공을 위해 추가한 애플리케이션이 발생시킨 로그와는 성격이 다른 로그 파일들
‣ 애플리케이션 로그
⇒ 특정 애플리케이션이 발생시킨 로그
‣ 바이너리 로그
⇒ 텍스트가 아닌 바이너리 파일로 되어 있어 사용자가 직접 파일들을 읽지 못하고 특정 명령어를 사용해야만 읽을 수 있음
•시스템 로그
인증로그 | 인증 시스템(PAM 등)이 발생시키는 로그 /var/log/secure |
데몬 로그 | 백그라운드 프로그램의 로그 /var/log/damon.log |
커널 로그 | 커널에서 발생시킨 로그 /var/log/kern 과 /var/log/dmesg |
시스템 로그 | 시스템에서 발생하는 대부분의 로그 기록 /var/log/messages |
•애플리케이션 로그
Apache 웹 서버 | 아파치 웹 서버가 발생시킨 로그 /var/log/httpd |
Samba 서버 | 삼바 서버가 발생시킨 로그 /var/log/samba에 기록 |
SMTP 서버 | Sendmail이나 Postfix 같은 메일 서버가 발생시킴 /var/log/maillog |
FTP 서버 | VSFTP나 Proftp 서버가 발생시킨 로그 /var/log/xferlog |
•바이너리 로그
/var/run/utmp | 사용자의 현재 로그인 정보를 기록 로그 확인 명령어 who , w, user, finger |
/var/log/wtmp | 성공한 로그인과 로그아웃, 시스템 재부팅 정보 로그 확인 명령어 : last |
/var/log/btmp | 사용자의 로그인 실패를 기록 로그 확인 명령어 : lastb |
/var/log/lastlog | 가장 최근 로그인 정보를 기록 로그 확인 명령어 : lastlog |
/usr/adm/pacct | 시스템에 로그인한 사용자가 수행한 프로그램 정보 기록 로그인해서 로그오프 할 때까지 입력 정보등을 기록 시스템 자원을 많이 소모하므로 기본적으로 동작 안함 로그 확인 명령어 : acctcom, lastcomm |
•Rsyslog (rocket-fast system for log processing)
‣ RHEL 6부터 로그 관리 데몬인 syslog를 대체하기 위해 지원된 프로그램
‣ 호스트 간 로그 전송을 위해 UDP와 TCP 모두 지원해 신뢰도를 높였음
‣ Facility, Priority, Property, Expression을 이용한 필터링 기능을 통해 더 정확한 로그 기록이 가능
‣ SQL 데이터베이스를 이용한 로그 저장 가능
‣ TLS를 통한 암호화 기능 가능
•Rsyslog 환경설정 파일
‣ rsyslogd 데몬이 동작하면서 로그를 기록
‣ 데몬 동작은 /etc/rc.d/init.d/rsyslog라는 스크립트를 이용
‣ 환경 설정은 /etc/rsyslog.conf 파일을 통해서 제어
파일명 | 설명 |
/etc/rc.d/init.d/rsyslog | rsyslogd 데몬을 동작 시키는 스크립트 start, stop, restart 등의 인자값을 사용 |
/etc/rsyslog.conf | rsyslogd 데몬의 환경설정파일 |
/etc/sysconfig/rsyslog | rsyslogd 데몬 실행과 관련된 옵션이 설정되는 파일 |
/sbin/rsyslogd | 실제 rsyslogd 데몬 실행 명령 |
• Facility/ Priority/ Action
‣ rsyslogd 데몬은 /etc/rsyslog.conf 설정 파일을 참조하여 로그를 남김
‣ /etc/rsyslog.conf 파일에는 "어디에서 로그가 생성이 되면 어디에 로그를 남겨라" 설정
‣ Facility
•로그를 발생하는 시스템 (subsystem)
•Facility의 숫자는 코드번호를 의미 kern(0), user(1), mail(2), daemon(3), auth(4), syslog(5), lpr(6) news(7), uucp(8), cron(9), authpriv(10), ftp(11) local0~7(16~23)
•운영체제마다 다를 수 있음
•Local0~7 : 시스코 라우터처럼 네트워크 장비에서 사용
‣ Priortiy (Serverity)
•로그 메시지가 갖고 있는 중요도와 우선순위를 지정
•로그의 레벨을 정의하면 그 상위 레벨도 모두 해당
(예) err(3)을 설정하면 상위 crit(2), alert(1), emerge(0)에 로그도 기록
‣ Action
‣ Faility
⇒ 일종의 서비스를 의미, 메시지를 발생시키는 프로그램의 유형
‣ priority
⇒ 위험 정도를 나타냄, 설정한 수준보다 높아야 메시지를 보냄
‣ action
⇒ 메시지를 보낼 목적지나 행동을 에 관한 설정으로 일방적으로 파일명을 적음
예제
user.err /var/log/user.log
→ user에서 발생하는 error 이상의 로그를 /var/log/user.log에 기록
→ 커널이 발생하는 메시지는 제외
*. notice @192.168.10.10
→ 모든 시스템에서 발생하는 notice 이상의 로그를 목적지 192.168.10.10에 저장
→ 192.168.10.10에 전달 시 UDP 사용
→ @는 UDP, @@는 TCP를 의미
mail.* @@192.168.10.10:6514
→ 메일 시스템에서 발생하는 모든 종류의 로그를 192.168.10.10, 포트 6514로 TCP를 이용해 보내 저장
*.* @(z9) 192.168.10.10
→ 모든 시스템에서 발생시키는 모든 종류의 로그를 9 레벨의 압축 후 UDP 방법을 이용해 192.168.10.10으로 전송 저장
→ 숫자 9는 최대 수준의 압축, 1이 가장 낮은 압축 수준 18
*.=crit;kern.none /var/log/critical
→ 모든 facility가 발생하는 메시지 중에 crit 수준의 메시지만 /var/log/critical에 기록
→ 커널이 발생하는 메시지는 제외
*. emerg *
→ 모든 emerg 수준 이상의 문제가 발생하면 모든 사용자에게 메시지를 전달
authpriv.* root, gildong
→ 인증 관련 로그를 root 및 gildong 사용자의 터미널로 전송
cron.! info,! debug /var/log/cron.log
→ cron 시스템이 발생시킨 로그 중에서 info와 debug를 제외한 모든 로그를 기록
→ 느낌표(!)는 특정 priority를 제외하기 위해 사용
19 authpriv.* /dev/tty2
→ 인증 관련 로그를 /dev/tty2으로 전송
mail.*;mail.!=info /var/log/maillog
→ mail 관련한 모든 정보는 /var/log/maillog에 기록하는데, info 수준의 로그는 제외
uucp, news.crit /var/log/news
→ uucp 및 news에서 발생하는 crit 수준 이상의 메시지는 /var/log/news에 기록
‣ Splunk Server rsyslog 설치
% HOSTNAME%/ : 클라이언트 호스트
% PROGRAMNAME% : 생성된 로그 파일명
‣ ZeekIDS rsyslog 설치
시스템에서 발생하는 모든 종류의 로그를 192.168.10.10:514로 TCP를 이용해 전송
‣ webserver rsyslog 설치
시스템에서 발생하는 모든 종류의 로그를 192.168.10.10:514로 TCP를 이용해서 전송
•SIEM 구축 방안
‣ 로그 수집
• 단일 지점 로그 수집 방식
‣ 장점
⇒ 네트워크를 지나는 모든 데이터를 로그로 생성할 수 있다.
⇒ 다수 서비스를 단일 센서로 처리한다.
⇒ 생성 로그 형식이 동일하다
⇒ 로그를 위해서 서비스를 변경할 필요가 없다
‣ 단점
⇒ 네트워크 가시성을 이해해야 한다
⇒ 네트워크 트래픽 처리를 위한 추가 서버가 필요하다
⇒ 네트워크 가시성은 복잡도를 증가시킨다
• 다중 지점 로그 수집 방식
‣ 장점
⇒ 이해하기 쉽다
⇒ 단순한 구축이 가능하다
⇒ 네트워크 구조에 비의존적이다
‣ 단점
⇒ 시스템 관리가 어렵다
⇒ 관리자가 아는 항목만 수집한다
⇒별도 서비스마다 수집해야 한다
⇒ 서비스별 로그 형식이 다르다
‣ 로그 검색/분석
‣ 경고
•Zeek
‣ 네트워크 침입탐지 시스템 (NDIS)
⇒ Bro 또는 프로토콜 분석
⇒ 네트워크를 모니터링할 수 있는 오픈 소스 프로그램
‣ IP 헤더와 TCP 헤더를 분석하여 로그 생성
‣ 응용 프로토콜의 헤더를 분석하여 로그 생성
⇒ FTP, HTTP, SMTP, X.509....
‣ 설치 전 환경설정
‣ zeek 설치
‣ Path 설정
‣ 환경설정
‣ 서비스 활성화
‣ 생성된 로그 파일 splunk server에게 전송
‣ splunk server에서 받기 위한 설정
'Rookies 9기 > 클라우드기반 시스템 운영구축 실무' 카테고리의 다른 글
클라우드기반 시스템 운영구축 실무 7일차 (0) | 2022.11.01 |
---|---|
클라우드기반 시스템 운영구축 실무 6일차 (0) | 2022.10.31 |
클라우드기반 시스템 운영구축 실무 4일차 (0) | 2022.10.27 |
클라우드기반 시스템 운영구축 실무 3일차 (0) | 2022.10.26 |
클라우드기반 시스템 운영구축 실무 2일차 (0) | 2022.10.25 |