본문 바로가기
자격증/보안기사

03_애플리케이션 보안_2

by Choraengyi 2021. 2. 12.
728x90

5. 웹로그 분석

* access log : 서버에서 발생하는 로그 및 CGI 와 같은 스크립트 정보 저장
/var/log/httpd/access_log

- 구조

Host : 클라이언트의 호스트명 또는 IP
ident : 클라이언트가 응답을 보내면 identity 정보 기록, 보통은 '_'
authuser : 인증이 있을 경우 사용자명 기록, 보통은 '_'
date : 접속 날짜 및 시간
Request : 클라이언트 요청 자료
Status : 상태 코드
Bytes : Header 제외한 바이트 크기

#access log 분석
SQL Injection 이면 sqlmap, select, union 등의 형태
XSS 공격이면 <script>, <iframe>, <a> 등과 같은 스크립트문
업로드된 파일 중 확장자가 *.php, *.jsp, *.asp 인지 확인

 

* ErrorLog : 에러를 기록
ErrorLog /var/log/httpd/error_log : httpd.conf 중 에러로그 경로 지정

Errorlog syslog : 에러로그 발생 시 syslog 에 기록

- Level
Emerg : 에러, Alert : 불안정 시스템, Crit : 중대한 에러, Error : 에러
Warn : 경고 발생, Notice : 일반적인 메세지, info : 정보제공, Debug : 디버깅

ex) Local7.warn /var/log/httpd.warn : warn 레벨의 로그 기록

Local7.debug!=notice /var/log/httpd/error_log : debug < x < notice 인 로그 기록

 

* Common Log Format
%h : 원격지 호스트, 클라이언트 IP
%I : 원격지 사용자 ID
%u : 인증 요청된 사용자 이름
%t : 요청 시간 및 날짜
%r : HTTP 메소드를 포함한 요청 첫 라인
%s : HTTP 상태 코드
%b : HTTP 헤더를 제외한 바이트
%{Referer}i : 참조되거나 링크된 URL
%{User-Agent}i : 클라이언트의 운영체제 및 브라우저 버전
%T : 요청을 처리하는데 걸린 시간

* HTTP 상태 코드
200 : OK
403 : Forbidden
404 : Not Found

* 리눅스 배너 정보
CentOS 의 경우 /etc/motd 파일에서 설정 가능

 

6. 웹방화벽
홈페이지 자체 및 웹 프로토콜을 기반으로 하는 모든 서비스와 애플리케이션 데이터 기반 정보 시스템에 보안 서비스 제공
웹 애플리케이션 취약점 대응, 웹 서버 해킹을 보호해 중요 데이터 유출 방지
- 종류
네트워크 기반 방화벽 : 네트워크 구간에 인라인 Transparent 및 Proxy 방식 구성, 웹트래픽 분석 및 차단
호스트 기반 방화벽 : 웹 서버에 에이전트 설치, 마스터 서버, 관리자용 콘솔 구성, 에이전트가 해킹 시도 및 이상 징후 탐지
Proxy Method : 웹 서버 앞단에서 클라이언트 요청을 받아 필터링 처리 후 웹 서버에 접속하는 방식, SW 및 HW 기반
Filtering Module Method : 웹 서버의 플러그인 모듈처럼 동작
- 주요 기능
웹 공격 방지 : 논리적 공격, 명령어 실행, 정보 유출등의 공격에 보안 및 차단
Positive Security Model : 강제 접근 및 알려지지 않은 공격 차단
SSL 지원
애플리케이션 구조 변화에 대응, 서비스 지속성
#워터링홀 : 홈페이지에 접속하는 특정 사회적 그룹을 대상으로 악성코드를 유포하는 공격

 

7. DNS 보안
① DNS(Domain Name Service)
URL 주소 -> IP 주소
nslookup을 통한 확인 가능
1) DNS Cache 테이블 확인
2) hosts 파일 확인
3) DNS 서버에 이름 해석 요청(=Recursive Query)
4) DNS 서버 Cache에 있으면 DNS Response 메세지 전송
5) Top Level -> Second Level 방향으로 해석 요청(=Iterative Query)
# DNS Cache Table 초기화 명령
ipconfig /flushdns

② DNS 구조
Root domain
Top Level Domain : com, org, kr 등 국가, 지역
Second Level Domain : 사용자가 신청 가능한 영역
Third or Sub domain
Sub domain

③ DNS 세부 방식
클라이언트가 UDP 53 으로 DNS Request 를 DNS 서버로 전송
* DNS 레코드
A(Address) : IPv4 주소
AAAA(IPv6 Address) : IPv6 주소
PTR(Pointer) : IP 주소를 호스트 이름으로 해석, 리버스 도메인 또는 인버스 도메인, 스팸필터에서 송신자 IP로 질의를 하여 도메인 비교
NS(Name Server) : DNS 서버를 가리킴
MX(Mail Exchanger) : 도메인에 대한 메일 교환 서버
CNAME(Canonical Name) : 도메인 이름의 별칭
SOA(Start of Authority) : DNS 영역에 대한 핵심 정보 지정
Any(ALL) : 모든 레코드 표시
#DNS 증폭 공격
Open DNS Resolver 서버에 DNS Query 의 Type 을 ANY 로 요청
모든 레코드를 반환하기 때문에 훨씬 큰 크기로 Victime 에게 부하가 발생
- DNS 질의량에 비해 DNS 서버 응답량이 큼
- DNS 프로토콜은 인증 절차가 없음
1) Cracker 가 Victim IP 로 출발지 조작, DNS 쿼리 Type ANY
2) DNS Resolver 서버에서의 많은 응답이 Victim 에게 전송됨
# 예방 방법, 재귀 쿼리 비허용 recursion=no;, BIND 최신버전으로 유지

 

④ DNS 보안
1) dnsspoof
DNS Spoofing 을 할 수 있음, 53번 UDP 데이터를 모니터링하다가 리스트에 있는 URL에 대해 특정 IP로 응답 해줌
#DNS 싱크홀 : 악성봇에 감염된 PC 가 봇 명령을 받지 못하도록 해줌
감염된 PC 가 연결을 해커가 아닌 싱크홀 서버로 연결되도록 함
2) DNSSEC : DNS 캐시 포이즈닝과 DNS 보안 취약점 보완
DNS 응답 정보에 전자서명 값을 첨부하여 수신자가 서명값을 검증, DNS 위변조 방지, 무결성 제공
- DNS 서버 과정
공개키로 서명용 키쌍을 만들어 사전 배포
개인키를 가지고 제공하려는 정보의 해시값을 서명처리하여 전자서명 생성
원데이터 + 전자서명을 인터넷 상에 공개
- 수신자 과정
원본데이터와 전자서명 값 분리
사전에 수신한 공개키로 전자서명 복호화
원본데이터를 해시 처리한 값과 전자서명 값을 비교하여 무결성 확인
3) DNS 캐시 포이즈닝 공격
Local DNS 서버로 DNS 쿼리 응답 패킷 전송
DNS 유효패킷이 되려면 출발 포트번호, 목적 포트번호, 트랜잭션 ID 가 맞아야함
# 트랜잭션 ID 공격 : 16Bit, 32768 번의 대입
결과적으로 Local DNS 서버에 잘못된 쿼리를 삽입해 클라이언트에게 잘못된 IP 또는 정보 제공

* 메일 보안 기술
RBL(Real Time Black List) : 스팸 방지를 위한 IP Black List
SPF(Send Policy Framework) : 허용된 도메인 또는 IP 에서 발송 여부 확인
Sanitizer : 확장자를 사용한 필터링, MS Office 매크로 검사, 악성 메일 score, 감염된 메세지 보관장소 설정
procmail : 메일 크기, 내용, 보낸사람 등으로 필터링
inflex : 메일 검사, 첨부파일 필터링
spamassasin : Rule 기반으로 헤더 및 내용 분석, RBL 참조해 Rule 매칭되고 총 점수가 임계치 넘으면 spam

 

8. 데이터베이스 보안
데이터베이스 : 비즈니스를 수행하기 위해 필요한 각종 데이터를 일정한 규칙으로 저장하여 관리, 여러사람 공동사용 및 데이터 공유
SQL : 데이터 베이스에서 사용하는 표준화된 언어
- 정의어 : 테이블 생성, 수정, 삭제
- 조작어 : 조회, 삽입, 수정, 삭제
- 제어어 : 사용자 생성 및 권한 부여
1) 데이터 베이스 기능
지속성(persistence) : 영속성, 재사용
데이터 공유(Data Sharing) : 동시사용, 시뮬레이션 데이터베이스 유지
회복(Recovery) : 원상태로 복구
데이터베이스 언어 : SQL, 질의 처리 및 쿼리
보안 & 무결성 : 데이터베이스 쿼리 및 지속

2) DBMS(Database Management System)
데이터베이스를 생성 및 관리하고 이를 응용하기 위한 소프트웨어 모임

3) DBMS 구성요소
- DDL 컴파일러 : DDL로 명시한 스키마를 내부 형태로 처리하여 시스템 카탈로그에 저장
- 질의어 처리 : 터미널을 통해 일반 사용자가 요청한 고급 질의어 처리
- 예비 컴파일러 : 응용프로그래머가 호스트프로그래밍 언어로 작성한 DML 명령어 추출
- 데이터 조작어 컴퍼일러 : 데이터 조작어 명령을 목적코드로 전환
- 런타임 데이터베이스 처리기 : 실행시간에 데이터베이스 접근을 취급
- 트랜잭션 관리자 : 무결성 제약조건 만족 여부, 접근 권한 검사, 병행제어, 쟁애 시 회복
- 저장 데이터 관리자 : 디스크에 있는 DB 접근제어, 기본 OS 모듈 이용, 로깅, 데이터회복, 모듈 호출

4) 데이터베이스 모델
데이터구조를 논리적으로 표현해 데이터, 데이터 관계, 데이터의 의미 및 데이터 제약 조건을 기술하기 위한 개념적 도구들의 집단(계층형, 네트워크, 관계형)
* 개체관계모델(ERD, Entity Relationship Diagram) : 정보추출 후 정보간의 관계 시각화
* 구성요소
개체(Entity) : 물리적 또는 개념적으로 존재하는 대상
관계(Relation) : Entity 간의 관계
속성(Attribute) : Entity의 특성이나 속성

 

* MySQL 데이터베이스 --> Oracle 인수, GPL과 상용라이센스로 나뉨
명령어
mysql -u root -p : 로그인
show database; : 데이터베이스 목록 확인
use mysql : 사용할 데이터베이스 선택
show tables; :  테이블 목록 확인
desc 'user' : 해당유저의 테이블 구조 확인
select '컬럼' from '테이블' : 테이블 내용 확인
# 사용자 생성 시 접근 부여
사용자ID@localhost : 로컬에서만 접근 가능
사용자ID@%  : 외부에서 접근 가능
- 사용자 생성 방법
insert 문을 통한 '데이터 정의어' 사용
create user 문을 통한 '데이터 정의어' 사용
drop user 를 통한 사용자 제거
grant '권한'on '테이블' to 'user'; : 사용자에게 테이블 권한 부여
권한 조회할 경우 'WITH GRANT OPTION' 이 있으면 권한 부여 가능한 사용자
revoke : 권한 취소
# 권한 제약

/etc/mysql/my.cnf : MySQL 설정 파일

bind-address=127.0.0.1 을 통해 로컬로만 접속 가능
# MSSQL 의 xp_cmdshell 취약점
윈도우 명령 shell을 생성 및 실행, os 명령 실행 가능

 

* Oracle 데이터베이스
대기업 및 공공기관 계정계 시스템을 다루는 데이터베이스 -> 안정적, 병렬처리 및 트랜잭션 우수
SQL *Net 프로그램을 통해 연결, server Manager : 데이터베이스 관리자
기본사용자(Default user) 생성됨, 관리자를 위해 system, sys 사용자 생성, 테스트를 위해 scott 사용자 생성
MySQL 과 동일하게 create user test identified by 1234; 형식
desc 명령으로 태이블 구조 확인, grant 권한 부여

* 데이터베이스 보안
1) 데이터베이스 보안 위협요소
- 집합성(Aggregation) : 낮은 보안등급의 정보들을 통해 높은등급의 정보를 알아냄, 개별정보는 의미가 부족하나 합치면 중요청보알 수 있음
- 추론(Inference) : 일반 사용자가 보안으로 분류되지 않은 정보에 정당 접근해 기밀정보 유추, raw 데이터로부터 민감한 데이터를 유출, 파티션 내 보안대책을 암호화하여 정당치 않은 사용자 접근 방지, 보안대책 : 다중 인스턴스화(Polyinstantiation)
2) 데이터베이스 보안 요구사항
- 무결성 보장 : 운영적 무결성, 데이터의 의미적 무결성
- 추론 방지 : 일반정보에서 기밀정보 추측 및 도출하는 추론 방지, 통계 집계 정보에서 각 객체의 추론 방지
- 사용자 제한 : 인가된 사용자만 접근
- 감사 기능 : 모든 접근 기록 저장, 접근 단계별 log trail 축적
- 암호화 : 중요 데이터 암호화

 

* 데이터베이스 보안 솔루션
보안기법 : 내외부망 불문 주민번호는 반드시 암호화 필요
1) DB 암호화 솔루션
장점 : 허가 받지 않은 사용자가 데이터를 취득해도 조회 불가
단점 : 운영 서버 부하 발생, DB 단위 접근제어 안됨, SQL 문장 로깅 안됨
- 패스워드 : 암호화 솔루션이 아닌 해시함수를 통한 암호화, 국내의 경우 SHA-256 이상의 해시함수
- PlugIn 방식 : DB 서버에 별도의 암호화 솔루션 설치, 애플리케이션이 데이터 조작어 실행 시 암/복호화 실행
- API 방식 : 애플리케이션에서 암호화 API 호출하여 암호화 수행, 암호화가 필요한 애플리케이션 수정 필요
# 암호화 솔루션은 빠른 성능 필요

2) DB 감사 솔루션
모든 접근에 대해 로그를 기록하여 추적성 확보
장점 : 해당서버가 죽어도 업무 지장 없음, 운영서버에 부담없음
단점 : 접근제어 안됨, 패킷로스 있음
# 스니퍼 소프트웨어를 사용한 SQL Log 데이터베이스화, 패킷로스 발생, T-Sensor 라는 별도의 하드웨어 사용, 패킷을 하드웨어를 통해 복제하여 Log 파일에 저장, 실제 기업에 많이 사용, 성능저하 최소화, 패킷로스 발생X

3) DB 접근제어 솔루션
권한이 있는 사용자만 접근 가능
장점 : 독립된 서버, DB 단위 접근제어
단점 : 이중화 필요, Tlenet을 통해 접근하는 SQL 명령은 통제 어려움, 우회 주의
# 실제 기업에서 잘 사용하지 않은 방식, 전체적인 성능 저하

4) DB 암호화 및 접근통제
- 사용자인증(Authentication) : 암호나 개인 신분번호 확인, 사용자만 가지고 있는 물건 : 카드, 키, 배지 등, 사용자의 신체적 특성 : 지문, 홍채 등, 사용자만 알고 있는 함수 사용
- 권한부여(Authorization) : 인증과정을 거친 사용자를 대상으로 사용자가 해당 데이터 항목에 연산 수행 권한이 있는지 확인, 사전에 사용자/데이터 항목별 권한 부여 테이블 유지
- 암호화(Encryption) : 데이터 내용을 암호화, 데이터 취득해도 해독 불가

* 데이터베이스 백업
- 전체 잭업 : 전체 백업, 디스크 또는 특정필터에 대한 전체를 백업, 많은 공간 필요
- 차등 백업 : 가장 최근에 수행된 전체 백업 이후 변경된 모든것을 백업
- 증분 백업 : 가장 최근에 수행된 백업 이후 변경된 것만 백업, 백업 시간 절감, 저장매체의 효율적 이용
- mysqldump를 통한 mysql 백업 : 모든 SQL 문을 텍스트 형태로 백업

 

 

참고 서적 : www.yes24.com/Product/Goods/89220771

728x90
반응형

'자격증 > 보안기사' 카테고리의 다른 글

03_애플리케이션 보안_1  (0) 2021.01.27
02_네트워크_3  (0) 2021.01.23
02_네트워크_2  (0) 2021.01.23
02_네트워크_1  (0) 2021.01.22
01_시스템 보안 정리_3  (0) 2021.01.22

댓글