1. 서버 관리자의 업무
1) 보안 유지 관리 개념
취약점 발견, 새 위협으로부터 대비하기 위해서 보안유지 관리가 필요하다.
로깅정보 감시 및 분석, 정기적으로 백업 수행 및 시스템 보안을 테스트한다.
2) 사용자 계정 관리
2.1) Linux
원격 접근권한 제거: /etc/passwd
파일에서 /bin/bash
같은 쉘 항목을 삭제한다.
계정 사용기간 설정: /etc/shadow
파일에서 사용기간 또는 만료일을 설정한다.
2.2) Window
현재 로그인된 사용자 확인: net session
로그인된 사용자 세션 제거: net session /delete
psloggedon툴로 로그인한 세션을 확인할 수 있다.
3) 리눅스 자원 관리
프로세스 관리: ps, kill, wait, su, wait, nice 등이있다.
메모리 관리: free (메모리 및 Swap 메모리 사용 현황 확인)이 있다.
메일, 디스크 등의 자원 관리: quota, du 등이 있다.
4) 네트워크 관리
ifconfig, netstat, route, nslookup, ping, traceroute, hostname, who, w, snoop 등이 있다.
2. 윈도우 로그 설정과 관리
1) 이벤트 개념
윈도우는이벤트(Event)라는 중앙 집중화된 로그를 수집하여 저장한다.
관리는 편리하지만 한 공격자가 한 로그인만 삭제하면 되므로 위험하고 보안 수준이 낮은 편이다.
로깅하는데 시스템 자원이 많이 소모되므로모든 정보를 로깅 하도록 설정하는것은 바람직하지 않다.
2) 윈도우 시스템 이벤트 로그 종류
응용 프로그램 로그(AppEvent.Evt): 응용 프로그램이 기록한 다양한 이벤트, 소프트웨어 개발자에 의해 결정된다.
보안 로그(SecEvent.Evt): 유효하지 않은 로그인 시도(관리자가 지정), 파일 생성, 열람, 삭제 등에 관한 로그를 저장한다.
시스템 로그(SysEvent.Evt): 시스템 부팅시 에러로그 등 시스템 관련 로그를 저장한다.
그 이외에도 디렉터리 서비스, 로그파일 복제 서비스 로그, DNS 서버 로그가 존재한다.
이벤트 로그파일 위치는 %windows%\system32\config
폴더 아래에 있는.Evt
파일이다.
바이너리 형식이기 때문에 이벤트 뷰어를 통해 열어야 한다.
이벤트 로그는 CSV로 Export가 가능하다.
[제어판]-[관리 도구]-[이벤트 뷰어]를 통해 로깅 정보를 확인할 수 있다.
3) 윈도우 로그 감사 정책
어떤 로그를 남길지를 정의한 규칙이다.
[제어판]-[관리 도구]-[로컬 보안 정책] → [로컬정책]-[감사 정책]을 통해 설정할 수 있다.
① 계정 관리 검사(실패): 사용자 관련 설정 변경 로그를 탐지한다.
② 디렉터리 서비스 액세스 검사(실패): 시스템 액세스 제어 목록(SACL)에 저장되어있는 AD 개체에 접근하는 사용자에대한 로그를 탐지한다.
③ 계정 로그인 이벤트 감사(성공, 실패): 도메인 계정의 로그인에 대한 사항을 탐지한다.
④ 로그인 이벤트감사(성공, 실패): 로컬 계정 접근 시 생성되는 이벤트를 탐지한다.
⑤ 권한 사용 감사(성공, 실패): 권한 설정 변경, 관리자 권한이 필요한 작업 로그를 탐지한다.
⑥ 정책 변경 감사 (성공, 실패): 사용자 권한 할당 정책, 감사 정책 또는 신뢰 정책과 관련된 로그를 탐지한다.
⑦ 개체 액세스 감사(감사 없음): 객체(디렉터리, 프린터)에 대한 접근시도, 속성 변경 등을 탐지한다.
⑧ 프로세스 추적 검사(감사 없음): 사용자 또는 응용 프로그램이 프로세스 중지 및 시작하는 로그를 탐지한다.
⑨ 시스템 이벤트 검사(감사 없음): 시스템의 시작 및 종료, 로그 삭제등 시스템에 주요한 로그를 탐지한다.
보안설정 → 로컬정책: 네트워크 보안, 네트워크 액세스 등의 설정을 할 수 있다.
보안설정 → 공개키 정책: 파일이나 드라이브 암호화 관련 설정을 할 수 있다.
3. 유닉스, 리눅스 로그 분석
유닉스는로그를 여러곳에 저장하기 때문에 모두 파악하고 관리하기 어렵지만 다양한 로그들의 분석으로 공격자를 추척할 수 있게 된다.
1) utmp
현재 시스템에 로그인한 사용자의 상태를 출력한다. (/etc/lib/utmpd)
바이너리 형태이고 로그 확인 명령어는 w, who, users, whodo, finger 등이 있다.
2) wtmp
사용자의 로그인, 로그 아웃, 시스템 재부팅 정보를 담는다. (/usr/include/utmp.h)
바이너리 형태이고로그 확인 명령어는 last가 있다.
wtmp는 로그인 관련 정보를 관리하지만 로그인 실패 정보는 btmp가 관리한다.
3) btmp (Linux), loginlog(Unix)
btmp는 실패한 모든 로그를 남긴다. (var/log/btmp)
바이너리 형태이고 lastb 명령어를 통해 볼 수 있다.
loginlog는 5회이상 실패 시 실패한 로그를 남긴다. (var/adm/loginlog)
텍스트 형태이고 vi를 통해 확인할 수 있다.
4) lastlog
가장 최근에 성공한 로그인 기록을 저장하는 로그이다.
바이너리 형태이고 lastlog, finger 명령을 사용한다.
5) sulog (Unix)
로그인시 권한 변경에 대한 로그이다. (/var/adm/sulog)
텍스트 형태이고 관련 명령어는 su가 있다.
6) acct/pacct
시스템에 로그인한 모든 사용자가 수행한 프로그램에 대한 정보를 저장하는 로그이다. (/usr/adm/pacct)
시스템 자원을 비교적 많이 소모하며, 기본으로 동작하지 않는다. (터미널 입력 정보 저장)
바이너리 형태이고, acctcom, lastcomm 명령을 통해 볼 수 있다.
7) .sh_history 또는 .bash_history
실행한 명령에 대한 기록이 [쉘의 종류]_history 형식으로 각 계정의 홈 디렉토리에 저장된다.
history 명령어를 통해 확인할 수 있다.
8) dmesg
리눅스가 부팅될 때 출력되는 모든 메시지를 기록한다.
9) secure
원격 로그인 관련 정보를 저장한다.
TCPWapper(xinetd)의 접속제어에 관한 로그도 남는다.
10) messages
시스템 운영에 대한 전반적인 로그를 기록한다.
다른 로그 파일에 비해 많은 정보를 저장하고 버퍼 오버플로우 등 시스템 장애에 대한 정보도 보관하고 있다.
루트 프로세스에서 발생한 커널 메시지 및 기타 커널 상태 메시지를 저장하고 있다.
11) HTTPD Log (Access_log, Error_log)
웹서비스에 대한 로그는 /usr/local/apache에 기록한다.
12) xferlog
FTP 로그 파일로서 proftpd 또는 vsftpd 데몬들의 서비스 내역을 기록하는 파일이다.
# more xferlog
Thu May 17 11:54:41 2018 6 file.test.kr 1234567 /home/user/test1.mp3 b _ i r peemang ftp 0 * c
Thu May 17 11:54:42 2018 7 file.test.kr 1234567 /home/user/test2.mp3 b _ o r peemang ftp 0 * c
① 파일 크기: 1234567
(byte)
② 전송된 파일 이름: /home/user/test1.mp3
③ 특수 동작: C
파일의 압축, U
파일의 압축 해제, -
아무것도 하지 않음
④전송 방법: a
텍스트 파일 전송, b
바이너리 파일 전송
⑤ 방향: i
클라이언트 → 서버, o
서버 → 클라이언트
⑥ 접근계정: A
익명 계정, G
패스워드가 설정된 게스트 계정, R
사용자 계정
⑦서비스 이름: ftp
⑧ 인증 서버 사용 여부: 0
인증서버가 없는 경우 1
RFC931을 이용한 인증 수행
⑨ 인증 사용자 ID: 인증 방법에 의해 되돌려 지는 사용자 ID*
는 인증된 사용자 ID를 사용할 수 없다는 의미
⑩ 파일 전송 성공 여부: C
파일 전송 성공, I
파일 전송 실패 또는 오류
4.유닉스, 리눅스 시스템 로그 설정
1) syslog 개념
유닉스에서는 syslog에서 로그를 생성하고 관리한다.
syslogd는 운영체제에 의해 자동으로 실행되고 시작 시 /etc/syslog.conf
파일을 읽어서 어디에 로그를 남길지 결정한다.
로그를 외부의 다른 서버로 전송할 수 있다.
2) syslog 구조
facility.priority; facility.prioity action(logfile-location)
서비스 이름(facility)에 대하여 메시지 우선순위(priority)의 경우에 해당하는 상황이 발생하였을 때에 logfile-location 파일(Action)에 그 기록을 남기라는 의미이다.
2.1) syslog 구조 예시
kern.* /dev/console
커널에 관한 모든 로그 기록을 콘솔에 출력하는 의미이다.
*.info;mail.none;news.none;authpriv.nonene /var/log/message
모든 로그의 info 수준의 로그를 `에 기록하되 mail, news, authpriv 로그는 저장하지 않는다는 의미이다.
2.2) 서비스 이름 (facility) 종류
* (모든 서비스), auth, auth,authpriv(xinetd), console, crom, daemon, ftp, kern, lpr, mail, mark, news, ntp, security, syslog, user,iicp, local0~7이 있다.
2.3) 메시지 우선순위 (priority) 종류
메시지 알람 우선순위를 결정한다.
2.4) 행동 (Action)
로그를 어디에 남길 것인지 결정한다.
로그 파일: 파일명(경로)를 지정한다. (/var/log/secure 등)
콘솔: /dev/console
로 지정 시 콘솔로 출력된다.
원격 로그 서버: @호스트 주소
를 통해 지정한 호스트로 로그를 보낸다.
user: 지정된 사용자의 스크린으로 메시지를 보낸다.
*: 현재 로그인 되어있는 사용자에게 메시지를 보낸다.
5. 응용 프로그램 관리
1) IIS 웹 서버 로그
기본 W3C 형식으로 남도록 설정되어 있다.
2) W3C 주요 로그 필드
date: 사용자가 페이지에 접속한 날짜 time: 사용자가 페이지에 접속한 시간 (GMT 기준) c-ip: 접속한 사용자 정보 (공격자 IP) cs-username: 접속한 사용자 계정 s-computername: 웹 서버 이름 s-ip: 웹 서버 IP s-port: 웹 서버 포트 번호 cs-method: HTTP 메소드 cs-uri-stem: 요청 페이지 (index.html/bs.asp?id=123 일경우 GET bs.asp?id=123이 저장된다) cs-uri-query: 요청 파라미터 (id=123) cs-status: 응답 코드이며 사용자의 요청이 정상인지 아닌지 확인한다. Cs(Referer): 사이트 접속 전에 어느 사이트에 들어갔는지 확인한다. Cs(Cookie): 사용자의 쿠키 정보 |
2.1) W3C 로그 필드 확인
2020-02-06 15:03:12 192.168.0.5 /GET /XSS/GetCookie.asp?
cookie=ASPSESSIONIDQQCAQDDA 80 - 192.168.0.56 Crome 200 0 0 225
date: 2020-02-06
time: 15:03:12
Server-ip: 192.168.0.5
cs-uri-stem: /GET /XSS/GetCookie.asp?cookie=ASPSESSIONIDQQCAQDDA
Server-port: 80
Client-ip: 192.168.0.56
cs-status: 200
서버에서 클라이언트로 전송한 데이터 크기: 0
클라이언트에서 서버로 전송한 데이터 크기: 0
처리 소요 시간: 225
3) Apache 웹 서버 로그
access log: 클라이언트 요청에 의해 웹 서버가 응답한 내용
error log: 오류가 발생했을 경우
httpd.conf
파일에서 LogFormat을 확인할 수 있다.
ModSecurity: 클라이언트로부터 악의적인 접속 요청이 발견되면 공격 차단, 로딩 등 사전에 정의된 행위를 수행한다.
3.1) /etc/httpd/logs/access_log 예시
192.168.100.15 - - [05/FEB/2020:15:14:28 +0900] "GET /HTTP/1.1" 403 4609 "-" Crome
클라이언트 IP: 192.168.100.15
클라이언트 로그인 명(%i): -
클라이언트 사용자 명(%u): -
날짜와 시간(%): [05/FEB/2020:15:14:28 +0900]
HTTP 접근 방법과 접근 url(%r): "GET /HTTP/1.1"
실행결과 코드: 403
서버에서 클라이언트로 전송한 데이터 크기 (%b): 4609 byte
클라이언트의 웹 브라우저 종류: Crome
6. 크래킹 소프트웨어
1) 크래킹 개념
악의적인 목적을 가지고 시스템에 침입하는 행위이다.
2) 크래킹 S/W 사례
John the ripper: 패스워드 점검도구 (Window, Linux, MacOS)
pwdunp: 패스워드를 dump할 수 있는도구 (Window)
L0phtCrack: 패스워드 취약점 점검 도구, 원격 및 로컬 PC 점검
ipccrack: 사용자 계정 패스워드를 원격지에서 추측해 취약점 분석
chntpw: 물리적인 접근이 가능한 시스템에서 패스워드를 리셋 시키는 프로그램
ERD Commander: 패스워드를 복구해야 하는경우 사용 (Window)
7. 기타 공격 사례
1) 키로그 S/W 사례
키로거 (Keylogger): 키보드로 입력한 정보를 로그로 남겨 실시간 또는 정해진 시간에 공격자에게 전송하도록 하는 프로그램
2) 누킹 S/W 사례
blue bomb, Winnuke
8. 서버 보안용 소프트웨어
1) SATAN (Security Analysis Tool for Auditing Networks)
해커와 똑같은 방식으로 시스템에 침해 보안상의 약점을 찾아 보안하는 네트워크 분석용 툴이다. (사전에 발견)
2) SARA (Unix)
SATAN 기반, 네트워크 기반의 컴퓨터, 라우터 IDS 취약점, HTML 형식의 보고서가 있다
3) SAINT (Unix)
네트워크 취약점 분석도구이다. HTML 형식의 보고서가 있다.
4) COPS (Unix)
시스템 내부에 존재하는 취약점을 점검하는 도구 (취약한 패스워드 체크)
5) Nessus
클라이언트-서버 구조로 클라이언트의 취약점을 점검한다.
GUI 환경, 플러그인 업데이트가 쉽다.
HTML 형식의 보고서이다.
닫혀있는 포트, 서비스에 대한 취약점 수준, 운영체제 종류 등을 확인할 수 있다.
6) nmap
포트 스캐닝 도구 TCP connect 방식 뿐만 아니라 stealth 모드로 포트를 스캐닝 한다.
9. 무결성 점검 점검 도구
정상적인 상태의 디렉터리 및 파일 정보를 백업해 두었다가 점검 수행 시점에서 현재 정보와 이전 정보를 비교하여 점검하는 도구이다.
tripwire는 유닉스 및 리눅스 환경에서 사용가능하고 MD5, SHA, CRC-32 등 해시함수를 지원하고 파일에 대한 DB를 만들어 공격자들에 의한 파일 변조 여부를 파악한다.
그 이외에도 fcheck, SAMHAIN 등이 존재한다.
10. 스캔 탐지 도구
mscan: 메인 전체를 스캔하여 최근 많이 이용되는 주요 취약점을 한 번에 스캔할 수 있다.
sscan: 네트워크를 통해 취약점 점검을 수행할 수 있는 도구
portsentry: 실시간으로 포트 스캔을 탐지하고 대응하기 위한 프로그램. 공격 호스트를 경유하여 오는 모든 트래픽을 자동 재구성한다.
11. 침입 탐지 및 방화벽
1) Snort
유닉스에서 실시간 트래픽 분석과 IP 네트워크 상에서 패킷 로깅이 가능한 대표적인 네트워크 침입탐지 시스템이다.
실시간 트래픽 분석,IP 네트워크에서의 패킷 처리를 담당하는 IDS이다.
버퍼 오버플로우, stealth 포트 스캔, CGI 공격, SMB 프로브, OS 핑거프린팅 등 다양한 공격을 감지할 수 있다.
2) IPchain/IPtable
패킷 필터링 방화벽이다. 인바운드, 아웃바운드 규칙을 설정할 수 있다.
ipfwadm: 리눅스 커널에서 IP 방화벽, 통계분석 규칙을 설정 유지 감독하기 위한 도구이다.
'Certification Study > 정보보안기사' 카테고리의 다른 글
[정보보안기사] 18. 최신 보안 주제들 (출제율: 1.5%) (0) | 2020.02.10 |
---|---|
[정보보안기사] 17. 각종 시스템 보안위협 및 대응책 (출제율: 3.2%) (0) | 2020.02.10 |
[정보보안기사] 15. 유닉스/리눅스 서버 보안 (출제율: 4.5%) (0) | 2020.02.08 |
[정보보안기사] 13. 클라이언트 보안 (출제율: 2.3%) (0) | 2020.02.06 |
[정보보안기사] 12. 보안 운영체제 (출제율: 0.5%) (0) | 2020.02.05 |
공부&일상 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 질문은 언제나 환영입니다😊