본문 바로가기
IT/Tips

리눅스마스터 - 시스템 보안 및 관리

by Jany 2016. 7. 26.
반응형

<시스템 분석>

시스템 로그의 개요

시스템에서 일어나는 사건이나 이벤트를 서비스 별로 기록하는 것을 로그(log) 라고 한다.

 

syslog, rsyslog

리눅스 초기에는 syslog를 사용했는데 최근에는 rsyslog로 대체됨

rsyslog의 장점: 멀티쓰레드 지원, TCP 지원, SSL TLS지원, mySQL과 같은 DB지원

 

rsyslog 구성

/etc/rc.d/init.d/rsyslog: 데몬을 동작 시키는 스크립트

/etc/rsyslog.conf: rsyslog 데몬의 환경 설정 파일

 

/etc/rsyslog.conf 기본 구성 형식

facility.prioity                    action

서비스.위험의 정도           행동

 

서비스 종류(facility)

auth, security: login

authpriv: ssh

daemon: telnet, ftp

위험의 정도(prioity)

emerg, panic > alert > crit > error, err > warning, warn > notice

행동 종류(action)

file: 지정한 파일에 로그 기록

@host: 지정한 호스트에 메시지 전달

user: 지정한 사용자가 로그인한 경우 사용자의 터미널로 전달

*: 로그인 되어있는 모든 사용자의 화면으로 전달

콘솔 또는 터미널: 지정한 콘솔 또는 터미널로 메시지를 전달

 

logrotate

로그 파일을 여러 개로 분할해 주는 명령어 logrotate [option] config_file

-f 강제로 환경설정 파일을 읽어 들여서 실핼

/etc/loglotate.conf: logrotate 환경 설정 파일

weekly,monthly: 로그 파일을 기간 로테이트 한다.

rorate 숫자: 최대 숫자까지 로테이트 하는 설정(logfile, logfile1, logfile2 ··· 순으로 생성)

create: 로테이트을 한 후에 비어있는 로그파일을 생성 하도록 설정하는 항목

dateext: 로테이션으로 생성되는 로그 파일에 해당 날짜 덧붙여 추가

compress: 로테이션을 한 후에 압축

include 경로: 경로 안에 설정된 파일에도 적용

로그관련 주요 파일

 

/var/log/message: 시스템에서 발생하는 표준 메시지가 기록되는 파일

/var/log/secure: 인증에 기반한 접속과 관련된 로그가 기록되는 파일

(telnet, ssh, tcp_wappers, xinetd 관련 로그가 쌓임)

/var/log/dmesg:시스템이 부팅될 때 출력되는 로그가 기록되는 파일

(커널 부트 메시지 로그 라고 불림)

/var/log/mailog: 메일 관련 로그가 기록(sendmail, dovcot)

/var/log/xferlog: FTP접속 과 관련된 로그 기록되는 파일(14개의 로그포맷으로 구성)

/var/log/cron: cron 관련 정보가 기록되는 로그

/var/log/boot.log: 부팅시 발생하는 메시지 정보가 기록되는 로그(데몬 관련정보 기록)

/var/log/lastlog: telnet, ssh를 이용해 접속한 각 사람의 마지막 정보 기록 -> lastlog

/var/log/wtmp: telnet, ssh를 이용해 접속한 사용자의 기록, 재부팅한 기록 등의 로그가 쌓이는 파일 -> last

/var/log/btmp: wtmp와 반대되는 로그로 접속이 실패할 경우 기록 -> lastb

 

last

var/log/wtmp 내용을 출력 하는 명령어 last [option] [사용자명]

-f 기본 로그파일 이외의 다른 로그파일 기록을 볼 경우

-n 숫자 가장 최근부터 해당 숫자까지 내용 출력

-ad ip 주소, 호스트명이 있을 경우 호스트명으로 맨 마지막 필드에 출력

 

lastlog

/var/log/lastlog 내용을 출력하는 명령어 lastlog [option]

-u 사용자명 특정 사용자에 대한 정보 출력

-t 날짜 오늘부터 지정한 날짜만큼 거슬러 올라가 그 이후 로그인 한 사용자 출력

 

lastb

/var/log/btmp 내용을 출력 하는 명령어 lastb [option] [사용자명]

-last와 옵션 동일

 

dmesg

커널 링 버퍼(kernel ring buffer)의 내용을 출력하고 제어 dmesg [option]

-c 출력 후 내용 삭제

 

<시스템 보안 관리>

물리적 보안 설정: 시스템은 관리자만 접근할 수 있는 공간에 배치, 이중 잠금 시스템

불필요한 서비스 제거: 처음 설치시 메뉴를 통해 설치를 함으로 원치 않는 서비스는 제거

시스템 정보 감추기: /etc/issue에서 커널 정보, 리눅스 버전에 대한 내용 변경

root 패스워드 변경 제한: root패스워드는 single mode에서 쉽게 변경이 가능 Grub 에 패스워드 설정.

사용자 관리: UID 0인 사용자(root 권한), 쉬운 암호 설정한 사용자(존더 리퍼), 패스워드 없는 사용자(shadow 영역 2번째 필드 공백)

보안이 강화된 서비스로 대체 이용: telnet 보다는 ssh를 이용

파일 시스템 관리: Set-UID,Set-GID,Sticky-Bit 설정 방지하기 위해 fstab nosuid 추가

 

 

sysctl

커널의 변수값을 제어하며 시스템을 최적화 할 수 있는 명령어

매개 변수는 /proc/sys 디렉터리 에 존재

sysctl은 이 디렉터리를 root 디렉터리로 인식하고 하위 디렉터리는 .으로 대체한다.

sysctl [option] 변수=

-a, -A 커널 매개 변수와 값을 모두 출력 한다.

-p 환경 변수 파일에 설정된 값 출력(기본 값 /etc/sysctl.conf)

-n 특정 매개 변수에 대한 값을 출력할 때 사용

-w 매개 변수에 값을 설정

 

sudo

일반 사용자가 root 권한 획득을 위해 사용하는 명령어(/etc/sudoers 에 설정된 유저)

 

/etc/sudoers

이 파일은 읽기 전용 파일이며 수정 시에는 rootvisudo 명령어를 이용하여 수정

사용자 접속한곳=명령어 경로 ex)user1 localhoast=/usr/sbin/useradd, /usr/sbin/passwd

 

lsattr, chattr

lsattr: 파일에 설정된 속성을 확인할 때 사용하는 명령어(13가지 속성)

lsattr [option] 파일명

-R 하위 디렉터리 까지 한 번에 속성을 확인

-a .으로 시작되는 숨김 파일, 디렉터리까지 확인

chattr: 파일의 속성을 변경하는 명령어(root만 사용 가능)

chatter [option] mode 파일명

-R 하위 디렉터리 까지 한 번에 속성을 변경

mode

a: 해당 파일에 추가만 가능 하도록 설정

i: 해당 파일의 변경, 삭제, 이름 변경, 파일 추가, 링크 파일 생성 등을 불가능하게 한다.

 

ACL(Access Control List)

파일이나 디렉터리에 접근 권한을 제어할 수 있도록 만든 시스템

getfacl: 파일이나 디렉터리에 설정된 접근 권한 리스트 확인하는 명령어

getfacl [option] [파일명]

-d 접근권한 리스트 기본 값 출력

 

setfacl: 파일이나 디렉터리에 접근권한 리스트를 설정하는 명령어(root만 사용 가능)

setfacl [option] [사용자 or 그룹:사용자 이름 or 그룹이름] [파일명]

-m 권한을 지정하거나 수정할 때 사용(--modify)

-x 권한을 삭제할 때 사용(--remove)

-R 하위 디렉터리와 파일까지 권한을 변경할 때 사용(--recursive)

-b 권한 및 mask 등 지정한 권한을 전부 제거(--remove-all)

ex) setfacl m u:user:rw test.txt => test.txt user에게 rw권한 부여

 

주요 보안 도구

nnap: 네트워크 탐지 도구 및 보안 스캐너(포트 스캐닝)

tcpdump: 명령행 에서 사용하는 네트워크 트레픽 모니터링 도구(ethereal, wireshack)

tripwire: 파일의 변조 여부를 검사하는 도구

nessus:서버의 보안 취약점을 검사해 주는 도구

GnuPC:데이터의 암호화와 디지털 서명에 사용

John the Ripper: 패스워드 크랙 도구

 

SELinux(Security Enhanced Linux)

특정 데몬은 버그를 통해 root권한을 획득 하더라도 다른 데몬이나 시스템에 접근 불가능

하도록 하여 시스템의 보안을 강화한다.

SELinux 적용

etc/selinux/config or /etc/sysconfig/selinux에서 vi 편집기를 이용해 수정

X window에서는 system-config-selinux 이용

getenforce를 통해 현재 설정을 학인 할 수 있고  setenforce 로 설정 변경 가능

 

<시스템 백업>

자료를 읽어버릴 경우를 대비하는 것으로 시스템 관리자가 최우선으로 해야 할 작업

/etc, /usr, /home, /var 등이 백업 고려대상

 

백업의 종류

전체 백업(Full Backup): 특정 디스크나 파티션을 전체 백업(x,a ->x,a,b -> x,a,b,c)

증분 백업(Incremental Backup): 증가된 내용들만 백업(x,a -> a,b ->a,b,c)

차등 백업(Differential Backup): 바뀐 부분만 백업(x,a -> b -> c)

 

tar(tape archive)

-c 압축

-x 압축 해제

-f 파일 묶기

-v 내용 출력

-p 퍼미션 유지

증분 백업

tar g 파일 cvfp 압축파일명 경로ex)tar g list cvfp home1.tar /home

증분 백업 복원

tar xvf 압축파일명1 C /

tar xvf 압축파일명2 C /  (순차적으로 복원하면 된다)

부분 백업

tar cv -N일 월 년 -f 압축파일 경로ex)tar cv N 01 may 2015 -f home.tar /home

2015/05/01이후 변경된 내용만 압축

분할 및 압축 백업

tar zcvf 경로 | split b 10m 압축파일: 10m 단위로 분할하여 압축

분할 및 압축 백업 복원

cat 압축파일a* | tar zxvf - (분할된 파일은 파일명aa ab ac 순으로 분할)

 

cpio(copy input to outout)

파일을 아카이브 형태로 복사하는 프로그램(아카이브는 압축과 달리 파일의 변형을 가하지

않고 그냥 포함하는 형태로 만드는 것이다.)

많은 양의 데이터에 대해서는 tar 보다 빠르다

증분 백업 기능은 지원하지 않는다

[셀 명령어 |] cpio option

cpio option < 파일명

-i 압축 해제

-o 압축 생성

-p 표준입력으로 파일명을 읽는다.

-B 블럭단위로 입출력

-c 아스키 형식으로 헤더정보를 읽고 쓴다.

-d 디렉터리 생성

-v 상세 정보 출력

-t 내용 확인

 

dump,restore

dump

파일들이 아닌 파일시스템 전체를 백업할 때 사용하는 유틸리티(보통 파티션 단위로 백업)

dump option 파일명 백업대상

-0~9 레벨을 지정(0: 전체백업 나머지 레벨: 부분백업)

-f 백업할 매체나 파일명 기록

-u dump 작업후 /etc/dumpupdates 에 내용 기록

ex)dump 0u f backup/dump /dev/sda7

restore

restore option 백업 파일명

-i 대화식으로 복구할 파일을 선택한 후에 복원

-f 백업할 메체나 파일명 기록

-r 전체 복원시에 사용(파일시스템 미리생성, 마운트 되어 있어야 함)

ex) restore rf backup.dump

dd(data dumper)

파티션이나 디스크 단위로 백업할 때 사용하는 유틸리티 사용하기는 쉬우나 시간이 오래 걸

린다

ex) dd if=/dev/sda1 of=/dev/sdb1 bs=1k: 블록 사이즈를 1k로 하여 if of 로 백업한다.

 

rsync(remote synchronous)

네트워크로 연결된 원격지의 파일들을 동기화하는 유틸리티(rcp 보다 처리속도 빠름)

 

 

반응형

댓글