자격증/리눅스마스터 1급

리눅스 마스터 1급_2과목_CH6.시스템 보안

Leo.K 2023. 6. 13. 15:51

CH.6 시스템 보안

1. 시스템 분석

1-1.  시스템 로그 분석

※ 시스템 로그 파일 종류

  • 일반적으로 리눅스에서는 /var/log 디렉토리에서 시스템의 모든 로그를 기록하고 관리한다. 
  • 로그들은 (r)syslogd에 의해서 관리되며, /etc/syslog.conf 파일에서 로그 파일의 저장 위치와 저장 파일 이름을 변경할 수 있다. 
  • 시스템 로그 / 관련 명령어 정리 
로그명 내용 로그 경로 명령어 기타
utmp 현재 로그인한 사용자의 정보 /var/run/utmp finger, w, who 바이너리 파일이므로 명령어를 통해 확인
wtmp 성공한 로그인 / 로그아웃, 
시스템 boot / shutdown 정보
/var/log/wtmp last, last -F 바이너리 파일이므로 명령어를 통해 확인
lastlog 마지막으로 성공한 로그인 기록 /var/log/lastlog lastlog, finger lastlog -u [계정명]
lastlog -t [일수]
btmp 실패한 로그인 시도에 대한 기록 /var/log/btmp lastb
last -f btmp
실패한 모든 로그를 남김
바이너리 파일이므로 명령어를 통해 확인
acct/pacct 사용자가 입력한 명령어, 터미널 종류, 프로세스 시작시간 등을 기록 -   바이너리 파일이므로 명령어를 통해 확인
secure 사용자 / 그룹 생성, 삭제, 로그인 등 사용자 인증에 대한 정보 기록 /var/log/secure lastcomm 원격 접속(ssh, telnet) 기록, su 명령어 수행 내역, xinetd 인증 기록
message 시스템 운영에 대한 전반적인 메시지 기록 /var/log/messages x tcpwrapper, snort 등의 수행 내역 기록
dmesg 리눅스가 부팅될 때 출력되는 메시지 기록 /var/log/dmesg dmesg 텍스트 파일
boot.log 리눅스가 부팅될 때 파일 시스템, 서비스 데몬 체크한 정보 기록 /var/log/boot.log x  
Xferlog FTP 로그 파일 /var/log/xferlog x FTP 사용한 내용을 상세하게 기록

 

※ 로그 관련 명령어  상세 

  • last 명령어 
    • 성공한 로그인 / 로그아웃 정보, 시스템 부팅 / 종료 정보를 출력하는 명령어 
    • 관련 로그 파일 : /var/log/wtmp
    • [-F] : 정보에 대한 시간을 자세하게 표시 
    • [-NUM] : 최근으로부터 NUM개의 정보를 출력
    • [-f FILE] : 지정한 파일의 로그 정보 출력
    • [-x] : 런레벨의 변동 정보도 같이 출력
    • 명령어 뒤에 특정 사용자 계정을 지정하면 해당 사용자 계정에 대한 로그인 만을 출력한다. 
      • # last -10 reboot  -> 시스템 부팅/종료에 대한 최근 10개의 로그를 출력
  • lastb 명령어 
    • 실패한 로그인 시도에 대한 정보를 출력하는 명령어 
    • 관련 로그 파일 : /var/log/btmp
    • last 명령어와 옵션이 동일
  • lastlog 명령어
    • 마지막으로 성공한 로그인 기록을 출력하는 명령어 
    • 관련 로그 파일 : /var/log/lastlog
    • [-u] : 지정한 사용자에 대한 로그만 출력
    • [-t DAY] : DAY 일수 이전에 대한 로그만 출력
  • dmesg 명령어 
    • 리눅스 부팅 시 출력되는 메시지 기록을 출력하는 명령어 
    • 관련 로그 파일 : /var/log/dmesg

※ /etc/(r)syslog.conf 파일

  • facility(서비스) 종류 
    • auth : 인증 관련 시스템 (로그인, su, getty 등)
    • authpriv : auth와 같지만 사용자 별로 읽을 수 있는 파일에 기록된다. 
    • kern : 커널 시스템
    • cron, ftp, mail, lpr, syslog ... 
  • priority(우선순위)
    • emerg > alert > crit > err > warning > notice > info > debug
  • action (서비스/우선순위에 대한 결과)
    • 특정 로그 파일을 지정하거나, 터미널 / 콘솔 / 특정 유저에게 보낼 수 있다. 
  • 설정 내용 예제
    • kern.* /dev/console
      • 커널에 관련된 모든 로그를 콘솔에 출력
    • *.info;mail.none;auth.none /var/log/messages
      • mail, auth 서비스에 대한 로그를 제외한 모든 서비스에 대한 info 레벨이상의 메시지를 messages 파일에 기록
    • *.err fedora
      • 모든 서비스에 대한 err 레벨 이상의 메시지를 fedora 사용자의 스크린으로 메시지를 보냄
    • mail.*;mail.!=info /var/log/maillog
      • 메일 서비스에 대해 info 레벨을 제외한 모든 메시지를 maillog 파일에 기록

※ rsyslog

  • syslog의 확장 버전으로, TCP / UDP를 이용한 로깅을 지원
  • 데이터 베이스 관련 로그 관리도 가능함
  • 데몬은 rsyslogd이며, 설정 파일은 /etc/rsyslog.conf 이다. 

※ 로그 순환(logrotate)

  • 로그 파일이 지정 용량에 도달했을 때 다른 파일로 대체하고, 로그 파일을 압축하여 관리하는 것 
  • 통합 로그 설정(/etc/logrotate.conf)
    • weekly : 주 단위 로그 파일 순환 (daily, monthly)
    • rotate 4 : 순환 로그 파일의 개수 설정
    • create : 순환 시 새롭게 로그 파일을 생성
    • dateext : 로그파일의 확장자로 날짜를 붙여서 생성
    • compress : 로그 파일 압축, 압축  안함(uncompress)
    • include /etc/logrotate.d : 해당 디렉토리에 있는 개별 데몬 / 프로세스 설정 파일을 포함

  • 개별 로그 설정(/etc/logrotate.d/*)
    • /var/log/httpd/*log : httpd 디렉토리에 있는 모든 로그에 적용
    • missingok : 로그 파일이 없어도 오류 발생 x
    • notifempty : 로그파일이 비어 있는 경우 순환 x

 

2. 시스템 보안 및 관리

2-1.  시스템 보안 관리

※SELinux

  • 리눅스 커널에 내장된 보안 모듈로 MAC(강제적 접근 제어)를 수행한다. 
  • 관련 명령어 
    • getenforce : SELinux의 상태를 확인하는 명령어 
      • 활성화 -enforcing / 비활성화 -disabled / 테스트 모드(비활성화) -permissive
    • setstatus : SELinux의 정보를 출력하는 명령어
    • setenforce : SELinux의 동작 모드를 변경하는 명령어 (0 - permissive, 1 - enforcing)

 

2-2. 시스템 보안 관련 명령어 

※ SSH (Secure Shell)

  • 암호 통신을 이용하여 네트워크상의 다른 컴퓨터로 접속하여 원격으로 명령을 실행/파일 조작을 하는 프로토콜
  • 원격 쉘(rsh) 지원, 원격 복사(scp) 지원, sftp 지원
  • 포트 번호 : TCP / 22 
  • 명령어 옵션
    • [-l] : 원격 시스템에 로그인할 사용자 지정
    • [-p]: 원격 시스템에 연결할 포트 지정 

※ PAM (Pluggable Authentication Modules)

  • 리눅스 사용자 인증의 핵심으로, 중앙 통제 기능을 한다. 
  • PAM 구성 파일(/etc/pam.d/*) 문법
    • [type] [control] [module-path] [module-arguments]
  • 구성 토큰
    • type : PAM에 어떤 타입의 인증이 사용될 것인지를 알려줌
      • account : 사용자가 해당 서비스에 접근이 허용되었는지, 패스워드 기간이 만료되었는지 결정 
      • auth : 프로 패스워드를 사용하지만, 보다 정교한 방법을 통해 사용자가 맞는지를 결정
      • session : 사용자가 인증받기 전/후에 해야할 것을 나타냄
    • control : 이 모듈이 동작하지 않는다면 PAM에게 무엇을 해야 할지 알려주는 것
      • requisite : 이 모듈을 이용하는 인증이 실패하는 경우, 즉시 인증을 거부하도록 함
      • required : 인증이 거부되기 전에 PAM이 이 서비스에 등록된 다른 모듈들을 요구해도 인증을 실패할 경우, 인증을 거부하도록 함.
      • sufficient : 이전에 요청되어진 모듈이 실패하더라도 이 모듈에 의해 인증이 성공할 경우, PAM은 이증을 승인
    • module-path : PAM에게 어떤 모듈을 사용할 것인지, 어디에 위치하여 있는지 알려줌
    • module-arguments : 모듈에게 전달되는 인수
  • pam_tally2 명령어 
    • 사용자들의 인증 실패에 대한 정보 출력 / 관리하는 명령어 
    • 패스워드 인증 실패 횟수 초과 시 명령어  사용
      • # pam_tally2 -u [계정 이름] -r

※ sudo 명령어

  • 관리자가 사용자에게 특정 명령어에 대한 루트 권한으로 실행할 수 있게 해주는 명령어 
  • /etc/sudoers 파일에서 특정 명령어에 대해 sudo 명령어를 사용할 수 있도록 관리할 수 있다.

※ tripwire 명령어

  • 원본 파일의 무결성을 점검하는 도구 
  • MD5, SHA, CRC-32 등의 다양한 암호화 함수를 제공
  • 먼저 시스템에 존재하는 파일들에 대해 DB를 만들어 저장한 후, 생성된 DB와 비교하여 점검한다.

※ COPS(Computer Oracle and Password System)

  • 리눅스 시스템에 대한 보안 문제를 알려주는 도구
  • /etc/passwd, /etc/group, SUID 파일 등에 대한 점검을 수행
  • 파일, 디렉터리 및 장치 파일에 대한 퍼미션 점검 수행

 

3. 시스템 백업

3-1.  백업 정책 수립

※ 백업의 종류

  • 데이 제로 백업 (A Day-zero BackUp) : 시스템을 설치한 후 사용자들이 시스템을 사용하기 전에 시스템을 백업하는 것
  • 풀 백업 (A Full BackUp) : 주기적으로 시스템을 백업하는 것
  • 증분 백업 (An Incremental BackUp) : 특정한 이벤트 후 또는 주기적으로 이전의 백업 후 변경된 파일들만 백업하는 것
  • 단순 백업 : 첫 백업 때 풀 백업을 진행한 후, 그 다음부터 변경분 백업을 수행하는 것
  • 다단계 백업 (Multilevel BackUp) : 큰 규모나 중요한 시스템의 백업을 할 때 수행하는 것

3-1.  백업 관련 명령어 

※ cpio 명령어 

  • 많은 양의 데이터를 테이프 드라이브에 백업하기 위한 명령어
  • 네트워크를 통한 백업 / 증분 백업을 지원하지 않는다. 
  • 주요 옵션 
    • [-c] : ASCII 형태로 헤더 정보를 읽고 쓴다.  
    • [-i] : 아카이브에서 파일 추출
    • [-o] : 아카이브 생성
    • [-v] : 진행 과정을 자세하게 출력
    • EX > # ls *.conf | cpio -ocv > config.bak -> 모든 .conf 파일을 백업

※ dump 명령어 

  • 파일 시스템 전체를 백업하는 명령어 
  • 점진적인 백업 기능 : 이전 백업 이후 변경된 파일들에 대해 백업 수행 가능
  • 장점
    • 여러 개의 테이프에 백업 가능 
    • 어떤 타입의 파일도 백업 가능 
    • 증분 백업 가능 
    • 결함을 가진 파일들도 다룰 수 있다
  • 단점 
    • 모든 파일 시스템은 개별적으로 dump 되어야 한다. (각각의 파티션도 개별적으로 dump 되어야 함)\
    • NFS 파일 시스템은 dump 할 수 없다. 로컬 파일 시스템만 가능하다. 
  • 주요 옵션
    • [-0~9] : 0 - 전체 백업, 1~9 - 부분 백업
    • [-f] : 지정한 파일명으로 백업 파일 생성

※ restore 명령어 

  • 복구를 위한 명령어
  • 주요 옵션
    • [-i] : 대화형으로 복원 수행
    • [-i] : 장치 이름 지정
    • [-i] : 백업 대상 전체를 복원

※ restore 명령어 

  • tar 명령어를 이용한 백업
    • [-g] : 증분 백업을 위한 옵션
  • dd 명령어를 이용한 백업
    • 파티션이나 디스크 단위로 백업할 때 사용
  • rsync 명령어
    • 파일을 동기화하는 명령어, 원격지에 있는 파일들도 동기화할 수 있다. 
    • cp. ftp, rcp 명령어보다 동기화 기능이 뛰어나다. 
    • 형식 : # rsync [옵션][동기화할 원본][동기화될 위치]
    • [-a] : 아카이브 모드 (여러 옵션을 묶어 놓은 옵션)
    • [-v] : 진행과정을 자세하게 출력
    • [-z] : 동기화 파일을 압축