리눅스마스터 - 시스템 보안 및 관리
<시스템 분석>
●시스템 로그의 개요
시스템에서 일어나는 사건이나 이벤트를 서비스 별로 기록하는 것을 로그(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
이 파일은 읽기 전용 파일이며 수정 시에는 root가 visudo 명령어를 이용하여 수정
사용자 접속한곳=명령어 경로 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 보다 처리속도 빠름)