정보 보안 개론과 실습 시스템 해킹과 보안 √ 원리를 알면 IT가 맛있다 ehanbit.net
학습목표 로그의 중요성과 역할 이해 운영체제별 로그의 종류와 용도 이해 적절한 로그 정책 수립과 적용 로그 분석과 이해
로그에 대한 이해 ■ 로그에 대한 이해 Authentication : 지문 인식 시스템과 같은 경우를 생각할 수 있다. 손가락을 지문 인식 시스템에 대면, 지문 자체는 여러분의 신원을 가리킨다. 지문을 손가락에 대는 과정까지가 Authentication이다. Authorization :지문이 올바른 것이어서 문이 열리는 것은 Authorization이다. 패스워드를 입력할 때도 마찬가지다. 올바른 패스워드를 입력해서 시스템에 로그인이 허락된 사용자라고 판명되어 로그인되는 과정이 Authorization이다. Accounting : Accounting은 시스템에 로그인한 후 시스템이 이에 대한 기록을 남기는 과정 Audit Trail
■ 윈도우 로그 분석 - 세션 관리 윈도우 로그 분석과 설정 현재 로그인한 세션 정보 획득 및 관리 net session net session /delete
윈도우 로그 분석과 설정 ■ 윈도우 로그 분석 - 세션 관리 연결관리 psloggedon nbtstat -c
윈도우 로그 분석과 설정 ■ 윈도우 로그 분석 - 세션 관리 윈도우 셸 히스토리 doskey /history
윈도우 로그 분석과 설정 ■ 윈도우 로그 분석 – 로깅(감사) 정책 윈도우 감사 정책에 대한 정책 설정
윈도우 로그 분석과 설정 ■ 윈도우 로그 분석 – 로깅(감사) 정책 항목 별 정책 설정
■ 윈도우 로그 분석 – 로깅(감사) 정책 윈도우 로그 분석과 설정 Auditpol을 이용한 감사 정책 확인
윈도우 로그 분석과 설정 ■ 윈도우 로그 분석 – 개체 액세스 감사 특정 디렉토리에 대한 접근 권한 설정
윈도우 로그 분석과 설정 ■ 윈도우 로그 분석 – 개체 액세스 감사 특정 디렉토리에 대한 감사 정책 설정
■ 윈도우 로그 분석 – 개체 액세스 감사 윈도우 로그 분석과 설정 개체 액세스 감사 로그 및 주요 이벤트 이벤트 ID 내 용 내 용 560 개체에 접근 허가 562 개체에 대한 핸들 닫힘 563 삭제할 목적으로 개체에 접근 564 보호된 개체의 삭제
■ 윈도우 로그 분석 – 개체 액세스 감사 윈도우 로그 분석과 설정 이벤트 ID : 560 예제 개체 열기: 개체 서버: Security 개체 형식: File 개체 이름: C:\TEST2\Wishfree 새 핸들 ID: 1268 작동 ID: {0,2644721} 프로세스 ID: 1808 주 사용자 이름: wishfree 주 도메인: WISHFREE 주 로그인 ID: (0x0,0x272789) 클라이언트 사용자 이름: - 클라이언트 도메인: - 클라이언트 로그인 ID: - 액세스 READ_CONTROL SYNCHRONIZE ReadData (또는 ListDirectory) ReadEA ReadAttributes 권한 -
윈도우 로그 분석과 설정 ■ 윈도우 로그 분석 – 계정 관리 감사 개체 관리 감사 로그
■ 윈도우 로그 분석 – 계정 관리 감사 윈도우 로그 분석과 설정 개체 관리 감사 주요 이벤트 이벤트 ID 내 용 624 내 용 624 사용자 계정 만듦 625 사용자 계정 유형 바꿈 626 사용할 수 있는 사용자 계정 627 암호 변경 시도 628 사용자 계정 암호 설정 629 사용하지 않는 사용자 계정 630 삭제된 사용자 계정 636 보안 사용 로컬 그룹 구성원 추가됨 637 보안 사용 로컬 그룹 구성원 제거됨 642 변경된 사용자 계정 643 변경된 도메인 정책 644 사용자 계정 잠김
■ 윈도우 로그 분석 – 계정 로그인 이벤트 감사 윈도우 로그 분석과 설정 개체 로그인 감사 로그 및 주요 이벤트 이벤트 ID 내 용 680 로그인 성공 정보 681 로그인 실패 정보
■ 윈도우 로그 분석 – 권한 사용 감사 윈도우 로그 분석과 설정 권한 사용 감사 로그 및 주요 이벤트 이벤트 ID 내 용 내 용 576 권한의 할당 577 권한이 있는 서비스 호출 578 권한이 있는 개체 작동
윈도우 로그 분석과 설정 ■ 윈도우 로그 분석 – 로그인 이벤트 감사 로그인 이벤트 감사 로그
■ 윈도우 로그 분석 – 로그인 이벤트 감사 윈도우 로그 분석과 설정 로그인 이벤트 감사 주요 이벤트 이벤트 ID 내 용 내 용 528 성공적인 로그인 529 알 수 없는 계정이나 잘못된 암호를 이용한 로그인 시도 530 로그인 시 허용 시간 이내에 로그인 실패 531 사용이 금지된 계정을 이용한 로그인 시도 532 사용 기간이 만료된 계정을 이용한 로그인 시도 533 로그인이 허용되지 않는 계정을 이용한 로그인 시도 534 허용되지 않은 로그인 유형을 통한 로그인 시도 535 암호 사용기간의 만료 536 Net Logon 서비스 비활성화 상태 537 위의 사항에 해당되지 않으나 로그인 실패인 경우 538 로그오프 539 로그인하려는 계정이 잠겨 있음. 패스워드 크래킹 공격시 가능 540 로그인 성공 682 연결이 끊기 터미널 서비스 세션에 사용자 재연결 683 사용자가 로그오프하지 않고 터미널 서비스 세션 연결 끊음
■ 윈도우 로그 분석 – 정책 변경 감사 윈도우 로그 분석과 설정 정책 변경 감사 주요 이벤트 이벤트 ID 내 용 608 내 용 608 사용자 권한 할당 609 사용자 권한 제거 610 다른 도메인과의 신뢰 관계 형성 611 다른 도메인과의 신뢰 관계 제거 612 감사 정책 변경
■ 윈도우 로그 분석 – 프로세스 추적 감사 윈도우 로그 분석과 설정 프로세스 추적 감사 주요 이벤트 이벤트 ID 내 용 내 용 592 새 프로세스 생성 593 프로세스 종료 594 개체에 대한 힌트의 중복 595 개체에 대한 간접적인 접근
■ 윈도우 로그 분석 – 시스템 이벤트 감사 윈도우 로그 분석과 설정 시스템 이벤트 감사 주요 이벤트 이벤트 ID 내 용 내 용 512 윈도우 시동 513 윈도우 종료 514 LSA(Local Security Authority) 인증 패키지 로드 515 신뢰할 수 있는 로그인 포로세스가 LSA로 등록 516 저장 공간의 부족으로 인해 일부 보안 이벤트 메시지 소실 517 보안 로그 삭제
윈도우 로그 분석과 설정 ■ 윈도우 로그 분석 이벤트 로그의 백업 – 이벤트 로그의 저장 위치 확인
윈도우 로그 분석과 설정 ■ 윈도우 로그 분석 이벤트 로그의 백업 – 백업
■ 윈도우 로그 분석 윈도우 로그 분석과 설정 원격과 로컬에서 이벤트 로그 획득 – 관리자 권한의 세션 생성 net use \\192.168.68.4 "qwer1234" /u:administrator 원격과 로컬에서 이벤트 로그 획득 – 원격지 로그 백업 dumpel -f 4.txt -s \\192.168.68.4 -l security
윈도우 로그 분석과 설정 ■ 윈도우 로그 분석 원격과 로컬에서 이벤트 로그 획득 – 백업된 원격지 로그
윈도우 로그 분석과 설정 ■ 윈도우 로그 분석 원격지 로그 관리 – MMC(Microsoft Management Console) 실행
윈도우 로그 분석과 설정 ■ 윈도우 로그 분석 원격지 로그 관리 – MMC에 원격지 이벤트 로그 추가
윈도우 로그 분석과 설정 ■ 윈도우 로그 분석 원격지 로그 관리 – MMC에 원격지 이벤트 로그 추가
■ 윈도우 로그 분석 윈도우 로그 분석과 설정 원격지 로그 관리 – 관리자 권한의 세션 생성 net use \\192.168.68.3\admin$ "qwer1234" /u:administrator
윈도우 로그 분석과 설정 ■ 윈도우 로그 분석 원격지 로그 관리 – 원격지 로그 관리
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 주요 유닉스 시스템의 로그 파일 저장 위치 경 로 적용 시스템 경 로 적용 시스템 /usr/adm 초기 유닉스, BSD 게열 : HP-UX 9.X, SunOS 4.x /var/adm 최근 유닉스, SVR 계열 : SUN Solaris, HP-UX 10.x 이후, IBM AIX /var/log 일부 BSD 계열 : BSD, FreeBSD, SUN Solaris, Linux /var/run 일부 리눅스
리눅스/유닉스 로그 분석과 설정 ■ 리눅스/유닉스 로그 분석 /var/log의 내용 cd /var/log ls -al
리눅스/유닉스 로그 분석과 설정 ■ 리눅스/유닉스 로그 분석 /var/adm의 내용 cd /var/adm ls -al
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 UTMP 유닉스 시스템의 가장 기본적인 로깅을 제공하는 데몬(/etc/lib/utmpd)으로 현재 시스템에 로그인한 사용자의 상태를 출력해준다. utmp 데몬이 저장하고 있는 로깅 정보의 형식은 /usr/include/utmp.h 파일에서 구조를 다음과 같이 확인할 수 있다. vi /usr/include/utmp.h
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 UTMP utmp 데몬에 저장된 로그를 출력해주는 명령어로는 w, who, users, whodo, finger 등의 명령어가 있다. w who
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 WTMP wtmp 데몬 역시 /usr/include/utmp.h 파일의 구조체를 그대로 사용하며, utmp 데몬과 비슷한 역할을 한다. wtmp는 사용자들의 로그인, 로그아웃, 시스템의 재부팅에 대한 정보를 담는다. last
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 WTMP Last 명령은 선별적인 로그 출력이 가능하다. last reboot
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 SU(Switch User) su 로그는 권한 변경에 대한 로그다. 로그인한 계정의 권한을 변경할 때 쓰던 su 명령에 대한 로그다. ‘su root'와 ’su - root'는 모두 관리자 계정으로 실제 권한을 변경한 것이기 때문에 이 su 로그에 남으며, /var/adm/sulog 파일에 텍스트 형식으로 남는다. 권한은 600으로 설정되어 있어 관리자만이 읽고 쓸 수 있다. cat /var/adm/sulog
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 SU(Switch User) – SU 로그에 대한 설정 su 로그에 대한 설정 파일은 /etc/default/su다. 이 파일 안에서는 몇 가지 설정을 할 수 있다. vi /etc/default/su
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 PACCT(Process Account) PACCT(Proccess account)는 시스템에 로그인한 모든 사용자가 수행한 프로그램에 대한 정보를 저장한다. PACCT는 해커를 추적하기 위한 목적이라기보다는 대형 시스템을 여러 사용자가 비용을 지불하고 쓰는 형식으로 공유하여 사용할 때, 각 사용자에 대한 요금을 부과하기 위한 목적으로 이용되는 것이 일반적이다. /usr/lib/acct/accton /var/adm/pacct
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 PACCT(Process Account) 로그 분석 acctcom acctcom -u root -u vi
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 .Sh_history or .bash_history history cat .bash_history
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 Lastlog lastlog는 /var/adm/lastlog로 저장되고, AIX의 경우에는 /etc/security 디렉토리에 저장된다. lastlog는 wtmp와 마찬가지로 last 명령을 통해서 해당 사항을 출력해준다. vi /var/adm/lastlog
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 Syslog 시스템의 로그에 대한 대부분의 정보를 수집하여 로깅하는 기능을 한다. 간단히 살펴보면 syslog는 /etc/syslog.conf 파일에서 지정한 사항에 대해 로깅을 실시한다. vi /etc/syslog.conf
*.err ; kern.debug ; daemon.notice ; mail.crit /var/adm/messages 리눅스/유닉스 로그 분석과 설정 ■ 리눅스/유닉스 로그 분석 Syslog *.err ; kern.debug ; daemon.notice ; mail.crit /var/adm/messages ‘;’을 기준으로 구분한다. 모든 에러(*.err)와 커널의 디버그 시 남는 로그(kern.debug), 각 데몬의 동작에 대한 일반적인 정보(daemon.notice), 그리고 메일 서비스에 심각한 오류가 있는 경우(mail.crit)에는 /var/adm/messages 파일에 해당 메시지를 저장하라는 의미다. cat /var/adm/messages
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 Syslog mail.debug ifdef('LOGHOST', /var/log/syslog, @loghost) 메일에 대한 디버깅 정보(mail.debug)를 'LOGHOST'가 정의되어 있을 경우(ifdefine)에 loghost 시스템의(@loghost) /var/log/syslog 파일에 저장하라는 의미다. vi /var/log/syslog
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 Loginlog Loginlog는 실패한 로그인 시도에 대한 로깅을 수행한다. Loginlog 를 동작하기 위해서는 loginlog 파일을 로그가 저장되어 있는 디렉토리인 /var/adm 디렉토리에 생성해야 한다. loginlog 파일을 생성하면, 관리자 소유의 'other' 그룹에 기본 권한인 644로 생성되기 때문에 적절한 그룹과 권한 설정이 함께 필요하다. touch /var/adm/loginlog chmod 600 /var/adm/loginlog chgrp sys /var/adm/loginlog
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 Loginlog /var/adm/loginlog 파일 생성후 시스템 재부팅할 때 적용된다. Loginlog 에 대한 기본적인 설정은 /etc/default/login 에서 설정한다. vi /etc/default/login
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 Loginlog의 동작시 로그 반복적인 잘못된 로그인 시도에 대한 콘솔 경고문 잘못된 로그인 시도에 대한 loginlog 파일의 로그
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 FTP 파일 전송 로그(Xferlog) FTP를 이용한 로그인은 앞서 살펴보았던 것에 의해 로깅이 가능하나, 파일의 전송에 대한 것은 따로 로깅하는 작업이 필요하다. 공격자가 FTP 서비스를 이용해 시스템에 어떤 파일을 복사해갔는지, 또 어떤 파일을 시스템에 복사해두었는지 찾아낼 필요가 있을 때 유용하게 사용할 수 있다. vi /etc/inetd.conf vi /etc/ftpd/ftpaccess
■ 리눅스/유닉스 로그 분석 리눅스/유닉스 로그 분석과 설정 FTP 파일 전송 로그(Xferlog) 분석 Thu Feb 26 15:50:28 2004 1 192.168.68.3 632 /etc/passwd a _ o r wish ftp 0 * c ① ② ③④⑤ ⑥ ⑦ ⑧⑨⑩ ① 파일 크기 : 전송된 파일의 크기(바이트)를 표시한다. ② 전송된 파일의 이름 ③ 전송 방법 ④ 특수 동작 : 파일 전송 이외에 행한 특수한 동작에 대한 정보를 담는다. ⑤ 파일 전송 방향 ⑥ 접근 계정 ⑦ 서비스 이름 : 당연히 FTP에 대한 로깅 정보이므로, FTP다. ⑧ 인증 서버 사용 여부 ⑨ 인증 서버를 통한 사용자 인증 ⑩ 파일 전송 성공 여부
■ 솔라리스 로그 설정 - NTP 리눅스/유닉스 로그 분석과 설정 NTP 설정 큰 네트워크의 로깅 환경 설정시 시스템간의 시간을 똑같이 맞추는 것도 매우 중요하다. 모든 로그에는 시간에 대한 기록이 남는다. 이러한 시간 설정이 시스템마다 다르다면, 로그 분석자는 매우 혼란스러울 것이다. 이런 이유로 유닉스에는 시스템의 시간을 일정하게 서로 맞추는 NTP(Network Time Protocol)를 기본으로 제공한다. /usr/sbin/ntpdate -s [NTP 서버] 지속적으로 NTP 서비스를 구동시키기 위해서는 /etc/inet/ntp.conf 파일에 사용할 NTP 서버를 나열하고 다음과 같이 XNTPD 데몬을 구동시킨다. /etc/init.d/xntpd start
■ 솔라리스 로그 설정 – Log rotate 리눅스/유닉스 로그 분석과 설정 Logadm.conf 설정 그 파일이 계속해서 커지면, 시스템의 자원의 소모가 많아지고, 관리가 힘들어진다. 또한 해커가 침투하여 로그를 삭제할 때 일시에 모든 로그를 잃을 수 있는 위험이 있다. 따라서 이러한 로그 파일을 적당한 크기로 나누어 저장하고 백업하는 것이 좋다. 이를 위한 설정은 /etc/logadm.conf에서 할 수 있다. cp /etc/logadm.conf /etc/logadm.conf.orig Vi /etc/logadm.conf
■ 솔라리스 로그 설정 – Log rotate 리눅스/유닉스 로그 분석과 설정 Logadm.conf 설정 Crontab 설정 /var/log/syslog -C 8 -P 'Sun ...' -a 'kill -HUP `cat /var/run/syslog.pid`' ① ② ③ ④ ① : 로그할 파일의 이름을 나타낸다. ② : ‘-C 8' 로그 파일의 최대 개수를 표시한다. 8로 설정되어 있으므로 로그 파일이 8개 이상 생성되기 시작하면, 새로 하나가 생성될 때마다 가장 오래된 로그는 삭제된다. ③ : ‘-P 'Sun Mar 2 ...'는 로그가 마지막으로 로테이션된 날짜가 기록된다. ④ : ‘-a 'Kill -HUP ... '는 해당 데몬을 재시작하는 명령이 적혀있는데, 추가적인 다른 명령도 수행할 수 있다. Crontab 설정 58 23 * * * /usr/sbin/logadm
■ 솔라리스 로그 설정 – BSM(Base Security Module) 리눅스/유닉스 로그 분석과 설정 ■ 솔라리스 로그 설정 – BSM(Base Security Module) 1. 관리자 계정으로 로그인한 후 싱글 사용자 모드로 재부팅한다. init 1 2. 싱글 모드에서 BSM 시작 /etc/security/bsmconv
■ 솔라리스 로그 설정 – BSM(Base Security Module) 리눅스/유닉스 로그 분석과 설정 ■ 솔라리스 로그 설정 – BSM(Base Security Module) 3. /var/audit 디렉토리에 생성된 로그 4. BSM 설정 Ls /etc/security
■ 솔라리스 로그 설정 – BSM(Base Security Module) 리눅스/유닉스 로그 분석과 설정 ■ 솔라리스 로그 설정 – BSM(Base Security Module) 5. Audit_startup cat audit_startup 6. Audit_control cat /etc/security/audit_control
■ 솔라리스 로그 설정 – BSM(Base Security Module) 리눅스/유닉스 로그 분석과 설정 ■ 솔라리스 로그 설정 – BSM(Base Security Module) 7. Audit_user cat /etc/security/audit_user 8. Audit_event cat /etc/security/audit_control
■ 솔라리스 로그 설정 – BSM(Base Security Module) 리눅스/유닉스 로그 분석과 설정 ■ 솔라리스 로그 설정 – BSM(Base Security Module) 9. BSM으로 생성된 로그 읽기 praudit 20040316023011.not_terminated.wishfree
Thank you ehanbit.net