Linux/서버 보안(CentOS)

[Mini Project] 로그분석시스템

D4tai1 2018. 11. 23.

※ 이전 장의 로그관리를 로그서버구축으로 조금 개선해보려고 한다.

1. 로그분석 시스템

(1) 시나리오

 [1] 원래는 시스템에 접근 시 로그를 기록해놓는다.

 [2] 만약 인가되지 않은 사용자가 접속에 성공한 경우 시스템이 망가져서 누가 접속했는지 조차 알 수 없다.

 [3] 로그서버를 하나 제작하여 모든 접속기록에 대한 로그를 로그서버로 전송한다.

 [4] 로그서버에 있는 모든 로그기록을 일일이 확인하기 어렵기 때문에 종류별로 데이터베이스화 한다.

 [5] 로그서버에 있는 로그기록을 직관적으로 볼 수 있도록 웹으로 보여준다.


(2) 구현환경

 [1] 시스템서버 - CentOS 6.6

 [2] 로그서버 - CentOS 6.6

 [3] rsyslog

 [4] 로그서버의 데이터베이스 - mysql

 [5] 로그서버의 웹서버 - apache

 [6] 웹서버 오픈소스 - LogAnalyzer 오픈소스 참조(PHP)


(3) 시연

  ▶ [서비스서버] ifconfig 명령어를 이용하여 서비스서버의 IP(192.168.35.154)를 확인한다.


  ▶ ifconfig 명령어를 이용하여 로그서버의 IP(192.168.35.172)를 확인한다.


  ▶ [서비스서버] cat /etc/rsyslog.conf | sed -n '34, 49p' 명령어를 이용하여 rsyslog설정파일 중 34라인 ~ 49라인을 확인한다.

  ▶ [서비스서버] authpriv.* @192.168.35.172(내용추가), 로그서버에 udp방식으로 전송한다.



  ▶ cat /etc/rsyslog.conf | sed -n '6,19p' 명령어를 이용하여 rsyslog설정파일 중 6라인 ~ 19라인을 확인한다.

  ▶ $ModLoad imudp(주석해제) $UDPServerRun 514(주석해제), 서비스서버로부터 전송되는 로그를 udp 514포트로 받는다.


  ▶ [터미널접속시도]192.168.35.154:22, 서비스서버로 ssh접속을 시도한다.


  ▶ service rsyslog restart 명령어를 이용하여 rsyslog 데몬을 재시작한다.

  ▶ tail -F /var/log/secure 명령어를 이용하여 서비스서버에서 실시간으로 기록되는 로그를 확인한다.


  ▶ yum install update 명령어를 이용하여 모든 패키지를 업데이트 한다.


  ▶ yum install -y wget http php mysql rsyslog-mysql php-mysql, wget http php mysql rsyslog-mysql php-mysql 명령어를 이용하여 패키지를 설치한다.


  ▶ yum install mysql-server, mysql-server 패키지도 설치한다.


  ▶ service httpd start, httpd 명령어를 이용하여 데몬을 시작한다.

  ▶ service mysqld start, mysqld 명령어를 이용하여 데몬을 시작한다.


  ▶ chkconfig --level 3 httpd on 명령어를 이용하여 텍스트유저모드에서 부팅 시 httpd 데몬을 시작한다.

  ▶ chkconfig --level 3 mysqld on 명령어를 이용하여 텍스트유저모드에서 부팅 시 mysqld 데몬을 시작한다.

  ▶ chkconfig | grep "httpd\|mysqld" 명령어를 이용하여 부팅 시 httpd 또는 mysqld 데몬의 자동시작 여부를 확인한다.


  ▶ chkconfig | grep rsyslog 명령어를 이용하여 부팅 시 rsyslog 데몬의 자동시작 여부를 확인한다.

  ▶ service --status-all | grep rsyslog, rsyslog 명령어를 이용하여 데몬의 현재 서비스 상태를 확인한다.


  ▶ mysql -u root < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql 명령어를 이용하여 rsyslog를 저장할 수 있는 데이터베이스를 생성한다.

  ▶ mysql -u root 명령어를 이용하여 root계정으로 mysql에 로그인을 시도한다.


  ▶ [mysql>]GRANT all privileges ON Syslog.* TO rsyslog@'localhost' IDENTIFIED BY 'wjdqhqhdks'; 명령어를 이용하여 계정명이 'rsyslog'이고 패스워드가 'wjdqhqhdks'인 계정에게 로컬 내 모든 서버에 접근할 수 있는 권한을 설정한다.


  ▶ [mysql>] use mysql; 명령어를 이용하여 mysql 데이터베이스에 접근한다.
  ▶ [mysql>] update user set password = password('wjdqhqhdks') where user = 'root'; 명령어를 이용하여 root계정의 패스워드를 'wjdqhqhdks'으로 업데이트 한다.
  ▶ [mysql>] flush privileges;, 변경사항을 반영한다.


  ▶ [mysql>] show databases; 명령어를 이용하여 데이터베이스 목록 내 Syslog를 확인한다.


  ▶ cat -b /etc/rsyslog.conf | sed -n '6,26p' 명령어를 이용하여 rsyslog설정파일 중 6라인 ~ 26라인을 확인한다.

  ▶ ($ModLoad ommysql) ($ActionOmmysqlServerPort 3306) (*.* :ommysql:127.0.0.1,Syslog,rsyslog,wjdqhqhdks) [내용추가]
 localhost에서 3306포트로 Syslog데이터베이스에 rsyslog계정의 wjdqhqhdks패스워드를 사용하여 mysql에 접속한다.


  ▶ service rsyslog restart 명령어를 이용하여 설정파일이 변경되었으므로 서비스를 재시작한다.


  ▶ cd /usr/local/src 명령어를 이용하여 설치파일을 다운로드받을 경로로 이동한다.

  ▶ wget http://download.adiscon.com/loganalyzer/loganalyzer-4.1.6.tar.gz 명령어를 이용하여 웹 상의 파일을 다운로드 받는다.


  ▶ tar -zxvf /usr/local/src/loganalyzer-4.1.6.tar.gz 명령어를 이용하여 다운로드 받은 파일의 압축을 해제한다.

  ▶ mv /usr/local/src/loganalyzer-4.1.6/src /var/www/html/loganalyzer 명령어를 이용하여 웹 서비스를 할 수 있는 경로로 파일을 이동시킨다.
  ▶ mv /usr/local/src/loganalyzer-4.1.6/contrib/* /var/www/html/loganalyzer 명령어를 이용하여 웹 서비스를 할 수 있는 경로로 파일을 이동시킨다.
  ▶ chmod +x /var/www/html/loganalyzer/configure.sh /var/www/html/loganalyzer/secure.sh 명령어를 이용하여 두 파일에 쓰기권한을 추가해준다.


  ▶ cd /var/www/html/loganalyzer 명령어를 이용하여 설정스크립트가 있는 곳으로 이동한다.

  ▶ ./configure.sh 명령어를 이용하여 설정스크립트를 실행한다.


  ▶ cat -b configure.sh 명령어를 이용하여 스크립트의 내용을 확인한다.


  ▶ [웹브라우저]192.168.35.172/loganalyzer/index.php로 로그서버의 웹서버로 접속한다. 메인 구성파일을 찾을 수 없어 생성하려고 한다.


  ▶ 돋보기 내 클릭, loganalyzer를 설치하려고 한다.


  ▶ 파일을 읽을 수 없다고 나온다


  ▶ chown apache:apache -R /var/www/html/loganalyzer/ 명령어를 이용하여 아파치가 접근이 가능하도록 디렉터리를 아파치를 소유자로 변경한다.
  ▶ chcon -t httpd_sys_content_t /var/www/html/loganalyzer -R
  ▶ chcon명령어는 보안컨텍스트를 직접 지정하는 명령어로 -t옵션으로 컨텍스트를 지정하고 -R옵션으로 하위디렉터리까지 적용한다.
  ▶ chcon -t httpd_sys_rw_content_t /var/www/html/loganalyzer -R


  ▶ 돋보기 내 클릭, 권한문제를 해결해서 설정파일이 쓰기 가능하도록 한다.


  ▶ loganalyzer에 대한 데이터베이스 정보 입력 후 돋보기 내 클릭, 데이터베이스 정보를 입력하고 rsyslog에 사용된 것과 동일하게 입력한다.


  ▶ 돋보기 내 클릭, 데이터베이스의 테이블을 생성한다.


  ▶ 돋보기 내 클릭, 테이블 생성결과를 확인한다.


  ▶ 생성할 관리자계정의 정보 입력 후 돋보기 내 클릭, 관리자계정을 생성한다.


  ▶ rsyslog 데이터베이스 정보를 입력 후 돋보기 내 클릭, syslog에 대한 소스를 만든다.


  ▶ 돋보기 내 클릭, loganalyzer 설치를 완료한다.


  ▶ 접속하여 로그를 확인한다.


  ▶ [mysql>] use Syslog;, Syslog데이터베이스에 접근한다.
  ▶ [mysql>] show tables;, 테이블 목록을 확인한다.


  ▶ [mysql>] select * from SystemEvents;, SystemEvents테이블의 내용전체를 출력해서 확인한다.
  ▶ [mysql>] delete from SystemEvents;, SystemEvents테이블의 내용전체를 삭제한다.
  ▶ [mysql>] select * from SystemEvents;, SystemEvents테이블의 내용이 지워졌는지 확인한다.


  ▶ [웹브라우저]192.168.35.172/loganalyzer/index.php, 로그를 찾을 수 없는 것을 확인한다.


  ▶ [터미널접속시도]192.168.35.154, 비밀번호 오류로 접속을 실패한다.


  ▶ [웹브라우저]192.168.35.172/loganalyzer/index.php, 방금 접속에 실패한 로그기록을 확인한다.
  ▶ 돋보기 내 클릭 후 원하는 새로고침 시간설정, 5초에 1번씩 새로고침하도록 설정 후 확인한다.


'Linux > 서버 보안(CentOS)' 카테고리의 다른 글

스케쥴러  (0) 2018.12.16
네트워크 보안  (0) 2018.11.25
로그관리  (0) 2018.11.23
디스크 암호화  (0) 2018.11.12
디스크 관리  (0) 2018.11.11

댓글