[로그 관리 및 분석] 로그데몬 컨트롤하기

 1. 로그데몬 및 실행스크립트

 – 로그데몬은 /sbin/syslogd 에 존재함. 서버관리자는 이 데몬파일의
사이즈 및 생성일자 및 파일퍼미션등의 관리를 해야함. 해킹을 당했을 때에는 이들 파일의 사이즈 및 퍼미션등이 변경되어 있을 수가
있음. 대부분 rtipwire 라는 파일시스템 무결성 검사툴을 설치하여 사용하는 것이 바람직 할 것임.

 – 이 데몬( /sbin/syslogd ) 을 실행시키려면 /etc/rc.d/init.d 에 syslog 라는 스크립트가 존재함. 이 스크립트( /etc/rc.d/init.d/syslog ) 를 통해 로그데몬을 실행시킴.

 2. 로그데몬 실행 및 종료

 – /sbin/syslogd 를 실행시키고 종료시키는 것은 /etc/rc.d/init.d/syslog 라는 스크립트를 통해서 하면 됨.

 – 직접 데몬을 실행시킬 수도 있지만, 스크립트를 통해서 실행시키는 것이 일반적.

 – /etc/rc.d/init.d/syslog start

 – /etc/rc.d/init.d/syslog restart

 – /etc/rc.d/init.d/syslog stop

 – syslogd 란 데몬이 실행이 되었다라는 의미는 /etc/syslog.conf 파일에 설정된 것처럼 관련된 이벤트가 발생을 했을 경우에 지정된 로그파일에 기록을 하게 된다는 것을 의미.

[로그 관리 및 분석] /etc/syslog.conf 파일의 설정포멧

 1. /etc/syslog.conf 파일

 – /etc/syslog.conf 파일은 시스템 로그데몬( syslogd ) 이 실행이 될 때 참조되는 로그파일 설정파일로서 관련된 로그파일들이 어떤경우에 어떤 파일에 남겨지는가에 대한 설정내용을 가지고 있음.

 – 시스템로그데몬( syslogd )이 실행이 될 때( 이 데몬은 시스템부팅시에 실행이 됨 ) 환경파일( /etc/syslog.conf ) 을 읽게되며, 관련 로그를 설정된 곳의 파일에 남겨두게 됨.

 – 형식 : facility.prioriry                                   logfile-location
                 A          B                                                      C
” A 서비스( 데몬 ) 에 대하여 B 의 경우에 해당하는 상황이 발생하였을 때에 C 파일에 그 기록을 남겨라 “
 
즉, facility 는 해당서비스를 의미함. mail,cron, kern, uucp 등이 이에 해당함. priority 는 각
서비스( facility ) 들의 상황정도는 나타내는 우선순위임. logfile-location 은 해당 서비스의 로그내용이
기록될 파일위치를 지정한 것.

 – facility : 서비스이름( 메세지의 종류 )
auth : 로그인과 같이 사용자 인증에 관한 메시지
authpriv : 보안 및 승인에 관한 메시지
cron : crond 데몬과 atd 데몬에 의해 발생되는 메시지
daemon : telnet, ftp 등과 같은 데몬에 의한 메시지
kern : kernel 에 의한 메시지로서 커널메시지라고 함.
lpr : 프린터데몬인 lpd 에 의해 발생되는 메시지
mail : sendmail 또는 pop 또는 qmail 등의 메일에 의해 발생되는 메시지
news : innd 등과 같은 뉴스시스템에 의해 발생되는 메시지
uucp : uucp 에 의한 시스템에 의한 메시지

 – priority( 메시지의 우선순위를 의미함 )
emerg : 최상위. 매우 위험한 상황
info : 단순한 프로그램에 대한 정보 메시지
notice : 에러가 아닌 알림에 관한 메시지
warning : 주의를 요하는 메시지
err : 에러가 발생한 상황
crit : 급한상황은 아니지만 치명적인 시스템 문제발생 상황
alert : 최하위, 즉각적인 조치를 취해야 하는 상황
none : 어떠한 경우라도 메시지를 저장하지 않음.

[로그 관리 및 분석] 기본로그파일의 종류와 이해

 1. 리눅스 서버에서 발생되는 기본적인  로그 두가지

 – 커널로그 : kernel messages 라고 하는 것으로 klogd 라는 데몬에 의해 생성

 – syslogd 데몬에 의해 생성되는 로그

 –
시스템관리에 있어서 주기적으로 확인 및 점검해야 할 사항들 중에 가장 중요한 것이 로그파일들이다. 시스템에 이상이 있거나 보안의
위험을 감지하기 위해서는 시스템에서 남겨지는 메시지를 확인해야 함. 모든 시스템에는 특정작업이 발생한 후에는 반드시 로그가
남겨지며, 관리자는 이를 정기적으로 점검을 해야 함.
 시스템에 이상이 생겼을 때 혹은 서버보안에 문제가 있어 해킹을 당했을 때 이에 대한 1차적인 확인을 로그파일을 통해서 할 수 있음.

 – 리눅스에서는 /var/log 디렉토리에서 시스템의 모든 로그를 기록 및 관리하고 있음.

 – 시스템의 /etc/syslog.conf 파일에서 시스템 로그파일들의 위치를 지정함.

 2. /var/log 의 디렉토리에 있는 로그파일과 로그디렉토리

 – boot.log : 리눅스가 부팅이 될 때 출력되는 모든 메시지를 기록함. 부팅시의 에러나 조치사항을 살펴보려면 이 파일을 참조해야 함

 –
cron : 시스템의 정기적인 작업에 대한 로그, 즉 시스템 cron 작업에 대한 기록을 하고 있는 파일. /etc/디렉토리
에는 cron.hourly, cron.daily, cron.weekly, cron.monthly 디렉토리들이 있음. 이
디렉토리들은 각각 시간별, 일별, 주별, 월별로 정기적으로 운영체제에서 자동실행할 작업스크립트 파일들이 존재하고 있음. 이들
작업이 실행되고 난 이후에는 이 로그파일( /var/log/cron ) 에 실행내역을 기록함.

 – messages : 리눅스 시스템의 가장 기본적인 시스템로그파일로서 시스템 운영에 대한 전반적인 메시지를 저장함. 주로 시스템 데몬들의 실행상황과 내역, 그리고 사용자의 접속정보등의 로그기록내역을 기록함.

 –
secure : 주로 사용자들의 원격로그인 정보를 기록하고 있는 로그파일로서 서버보안에 아주 민감하고 중요한 파일임. 특히
tcp_wrapper( xinetd ) 의 접속제어에 관한 로그파일로서 언제, 누가, 어디서, 어떻게 접속을 했는가에 대한
로그를 기록하고 있음. 시스템의 불법침입등이 있었다고 의심이 될 때에는 반드시 이 로그파일을 확인해야 함.

 –
xferlog : 리눅스시트메의 FTP 로그파일로서 proftpd 또는 vsftpd 데몬들의 서비스내역을 기록하는 파일. 즉,
ftp 로 로그인 하는 사용자에 대한 로그를 기록과 어떤파일을 업로드/다운로드 하였는가에 대한 상세기록을 함. 따라서 어떤
특정한 파일이 시스템으로 FTP 서비스에 의해서 업로드되었을 때에나 또는 시스템외부로 다운로드 되었을때에 이 파일의 기록내역을
확인해 보면 날짜, 파일명, 디렉토리명등의 주요 정보를 확인 할 수 있음.

 – /var/spool/mail :
사용자들에 대한 메일을 보관하고 있는 디렉토리로서 메일을 한번 이상 사용한 사용자는 사용자 계정 ID 와 동일한 파일이 하나씩
존재함. 사용자 계정생성시에 /var/spool/mail 디렉토리 내에 생성하는 계정명과 동일한 메일파일이 생성됨. 메일을 읽은
후에 사용자의 메일디렉토리로 저장하거나 메일을 삭제했을 경우네는 이 파일에서 메일내용이 삭제 됨.
 이 디렉토리에 있는
파일을 보기위해 ” elm -f ID ” 로 하면 사용자의 메일을 확인할 수 있음. 일반 사용자들은 elm 을 이용하여
자기자신의 mail 내용만을 확인 할 수 있으며, root 권한으로는 모든 사용자의 메일내용 확인이 가능함.

 3.
시스템을 모니터링 한다는 말의 의미는 여러 가지가 있을 수 있음. 하지만 거의 대부분 시스템 모니터링은 시스템에서 남겨지는
로그파일을 통해서 이루어짐. 즉, 시스템관리자로서 시스템을 모니터링하기 위해서는 로그파일을 반드시 확인하고분석해야 한다는 의미.

[리눅스 일반] 파일 압축 유틸리티 bzip2/bunzip2 실무

 1. 리눅스 압축유틸리티 bzip2, 압축해제 유틸리티 bunzip2

 – compress 로 압축된 파일은 uncompress 로 풀어야하며, gzip 으로 압축된 파일은 반드시 gunzip 으로 풀어야 하는 것처럼, bzip2 로 압축된 압축파일은 반드시 bunzip2 로 풀어야 함.

 – bzip2  는 복구용 유틸리티인 bzip2recover 라는 것이 있어 손상된 bzip2 압축파일을 복구할 수도 있음.

 – 사용형식 : bzip2 [ -cdfkqstvzVL123456789 ] [ 파일명 … ]
                      bunzip2 [ -fkvxVL ] [ 파일명 … ]

 2. bzip2 로 특정 파일압축하기와 bunzip2 로 압축파일 풀기

 – bzip2 TestFile

 – bunzip2 TestFile.bz2

 3. bzip2 와 bunzip2 로 두개 이상의 파일의 압축과 압축해제

 – bzip2 *

 – bunzip2 *

 4. bzip2 로 압축된 파일을 bzip2 로 해제하기

 – -d 옵션을 사용하면 bzip2 명령어로도 압축해제를 할 수 있음.

 – bzip2 -d TestFile.bz2

 5. bzip2 로 압축한 파일과 동인한 파일 존재하더라도 덮어쓰기

 – -f 옵션을 하용사면 압축후에 동일한 파일이 존재하더라도 덮어쓰게 할 수 있음.

 – bzip2 -f TestFile

[리눅스 일반] 파일 압축 유틸리티 gzip/gunzip 실무

 1. 리눅스 표준 압축명령어 gzip 과 압축해제 명령어 gunzip 개론과 활용

 – tar 는 엄격하게 이야기해서 압축명령어가 아니라 파일을 묶어주는 명령어임

 – 리눅스의 가장 표준적인 범용 압충( 해제 ) 명령어는 gzip( gunzip ) 임.

 – 압축은 Lempel-Ziv 라는 인코딩방법을 사용하며 텍스트파일 기준으로 60% 에서 70% 정도의 압축효율을 가짐.

 – gunzip 으로 압축해제를 하면 gzip ㅇ로 압축하기 전의 원본파일의 소유주와 소유그룹, 파일액세스 시간, 파일변경시간, 퍼미션은 그대로 유지한채로 압축해제가 됨.

 – gzip -d 는 gunzip 과 동일하며, gzip 에서 -d 옵션을 사용하는 것으로 압축해제를 하는 옵션임.

 – 사용형식 : gzip [ -acdfhlLnNrtvV19 ] [ -S 확장자 ] [ 파일 … ]
                      gunzip [ -acfhlLnNrtvV ] [ -S s 확장자 ] [ 파일 … ]

 
 2. gunzip 으로 .gz 압축파일 해제하기

 – gunzip TestFile.gz

 – gzip -d TestFile.gz 도 동일함.

 3. gzip 으로 두개이상의 파일을 동시에 압축하기.

 – gzip *

 – 현재 디렉토리내에 있는 모든 파일을 압축.

 4. 두개이상의 압축된 파일을 동시에 압축해제하기

 – gunzip *

 – 현재 디렉토리내의 모든 파일을 압축해제.

 5. gzip 으로 현재 사용중인 파일까지도 강제압축하기

 – gzip 으로 압축을 할때, 현재 사용중인 파일은 압축이 되지 않음.

 – -f 옵션을 사용하면 사용중인 파일이라도 강제 압축을 할 수 있음.

 – gzip -f TestFile

 6. gzip 으로 압축한 후에 파일의 압축효율 확인하기

 – gzip 으로 압축을 할 때, -l 옵션을 사용하면 압축한 후에 압축효율을 수치로 나타내 줌.

 – gzip -l TestFile

 7. gzip 으로 압축된 파일의 확장자를 임의대로 붙이기

 – gzip 으로 압축을 하면 압축파일의 기본확장자로서 .gz 를 사용함.

 – -S 옵션을 사용하면 gzip 으로 압축된 파일이라도 .gz 확장자 대신에 다른 이름을 임의대로 지정하여 붙일 수 있음.

 – gzip -S .zip TestFile

 – -S 옵션으로 압축된 파일은 gunzip 으로 압축해제를 할 때에도 동일하게 -S 옵션을 사용해야만 압축해제가 됨.

 – gunzip -S .zip TestFile.zip

 8. 특정 디렉토리내의 모든 파일을 gzip 으로 압축하기

 – 특정디렉토리를 대상으로 압축하고자 한다면 -r 옵션을 붙여서 사용하면 됨.

 – gzip -r TestDir

 – 특정디렉토리를 대상으로 압축해제를 하고자 한다면 압축을 할 때 주었던 -r 옵션을 풀때에도 주어야 함

 – gunzip -r TestDir