빅데이터 보안

이주인·2023년 10월 15일

23-2학기

목록 보기
3/5

1장 인터넷과 웹의 이해

인터넷 프로토콜

컴퓨터간 정보를 원활하게 교환하기 위해 상호간에 정한 여러 통신규약

프로토콜의 구성요소

  • 구문 : 데이터의 형식이나 신호로 부호화 방법을 정의
  • 의미 : 정확한 정보 전송을 위한 전송제어와 오류 제어방법을 정의
  • 순서 : 송신자와 수신자 간 혹은 양단의 통신 시스템, 망 사이의 통신 속도나 순서를 정의

TCP/IP : 가장 많이사용되는 통신 프로토콜
RFC : 인터넷에서 기술을 구현하는데 필요한 상세 절차와 기본 틀을 제공하는 기술문서

인터넷 거버넌스

ICANN : 국제인터넷주소 관리 기구

  • 인터넷의 기술적인 문제를 관리
  • 도메인 이름, DNS와 ip 주소, 프로토콜 번호롸 매개변수 지정등을 관리

IANA : 인터넷할당번호관리기관

  • 인터넷 초기에 사용자들에게 인터넷 주소를 할당하기 위해 DISA가 만든 기관
  • DNS Root Zone을 관리하는 것이 중요 기능

ISOC

  • 인터넷의 이용과 기술에 관한 국제적인 협조와협력을 촉진하기 위한 국제 기구

ISOC

  • 인터넷의 운영, 관리, 개발에 대해 협의하고 프로토콜과 구조적인 사안을 분석하는 인터넷 표준화 기구

월드와이드웹 컨소시엄(W3C)

  • 웹 브라우저, 웹 서버 기술의 표준화는 추진하는 단체

국제 전기 통신 엽합(ITU)

  • 인터넷에 영향을 미칠 수 있는 관세 문제를 다루고, 정보통신 네트워크에 대한 기술적인 표준과 운영 표준을 발행

http의 기본 개념

문서간의 상호 연결을 통해 다양한 텍스트, 그래픽, 애니메이션을 화면에 보여주고 사운드를 재생

request 방식

  • 서버에 클래이언트가 전송한 인자값에 추가정보를 전송할 때 사용
  • url에 나타난 호스트명을 자세하게 나타내기 위해 사용
  • get 방식의 경우, 요청 데이터에 대한 인수를 url을 통해 웹 브라우저로 전송(...?id=33)
  • post 방식의 경우 http 보디 영역에 소켓을 사용하여 데이터 전송
    -> 보내려는 인자값이 노출되지 않아 보안측면에서 더 안전

get/post 방식의 사용

  • get: 목록이나 글을 보는 화면에는 접근 자유도를 부여
  • post: 보안을 위해 글을 저장/수정/삭제 하는 작업에 사용

rquest 패킷의 메소드

  • head : 서버 쪽 데이터를 검색하고 요청할 때 사용
  • options : 자원에 대한 요구(선택사항에 대한 정보 전송시)
  • put : 메시지에 포함되어 있는 데이터를 지정한 url 장소에 지정된 이름으로 저장
  • delete : url에 지정된 자원을 서버에서 제거
  • trace : 루프백 검사용으로 사용

respose 방식

  • 클라이언트가 보낸 request의 응답 패킷으로 형식이 간단함
  • 서버에서 사용하는 프로토콜 버전, http 상태코드, 전달한 데이터의 형식. 데이터 길이 등과 같은 추가 정보가 포함되어 있음

http 상태 코드

  • 100 : 정보 전송
  • 200 : 정보 전송 성공
  • 300 : 리다이렉션
  • 400 : 클라이언트 측 에러
  • 500 : 서버 측 에러

http 1.0의 동작방식

  • 문서에 그림이 존재할 경우, text가 저장된 html 문서를 먼저 전송 받은 후, 연결을 끊은 후 다시 그림을 전송 받음

http 1.1의 동작 방식

  • 연결 요청이 계속 들어오면 html 문서를 받은후 연결을 유지한 채 이미지 파일을 요청

웹 어플리케이션의 기술

서버측 기능

  • 초기 웹서버는 정적 페이지만 보여주었으나,
    현재는 입력한 값에 따라 다양한 결과를 보여주는 동적 기능을 제공

웹 어플리케이션이 이용하는 서버측 기능

서버 측 스크립트 언어(노드 js, php 등)

  • 요청 받은 데이터를 서버측에서 처리하여 원하는 결과를 돌려주기 위해 사용하는 언어
  • 취약점 분석을 위해선 기본적인 서버 스크립트 언어에 대해 이해하고 있어야 함

웹 서버

  • 아파치, IIS, 노드 js, nginx 등을 주로 사용

데이터베이스

  • DBMS : 데이터베이스를 관리하는 소프트웨어
  • DBMS를 통해 DB를 만들고 데이터를 crud 할 수 있음

클라이언트 측 기능

html

  • 대표적인 특징으로 플러그인 없이 멀티미디어를 재생할 수 있음

자바스크립트

  • 성능문제로 인해 서버 측에서 처리하지 않는 부분을 클라이언트 측에서 처리할 수 있도록 할 때 사용
  • 자바스크립트로 작성된 입력값 검증 부분은 주요 공격 대상이 됨

2장 웹 해킹의 키초

웹 해킹 방법

  1. 취약점의 존재 여부를 확인 후 그곳을 통해 침투를 시도하는 방법
  2. 발견 가능한 모든 공격 표면을 찾은 후 매트릭스를 작성한 뒤, 하나씩 시도하는 방법

시스템에 침투하는 일반적인 해킹 과정

공격 대상 선정 -> 정보 수집 -> 취약점 분석 -> ㄱㅇ격 -> report, defacement, 흔적 제거 등

공격 대장 선정

  • 방문자가 많은 웹 사이트를 선정
  • 도메인을 모두 검색 한 후 가장 취약한 부분을 대상으로 함

정보 수집

  • 공격 대상의 특성과 취약점을 찾음
  • 웹 어플리케이션의 개발 언어, 주요 공격 대상의 기능, 웹서버의 종류 등을 파악

자동화 도구를 이용한 정보 수집

  • 공격 대상의 취약점이 가장 많이 발생하고 영향력이 큰 영역을 먼저 조사
  • 사용자 로그인, 게시판, 자료실 등 파일을 업로드할 수 있는 부분이 있는지 파악
  • 웹 사이트의 디렉터리 구조, 소스코드 간의 연관성등 기본 정보를 얻을 수 있는지 파악

정보 수집 도구들

  • burp suite
  • 개발자 도구
  • 검색 엔진 사용(site, file type, link, cache, intitle, inurl 등의 검색어를 사용)
  • 스캐닝 도구

웹 어플리케이션의 취약점

OWASP : 웹 보안에 대한 정보를 공유하고 체계를 세우는 자발적인 온라인 정보 공유 사이트

  • 잠재적인 공격자는 다양한 경로를 통해 보안 취약점을 공격
  • 각 보안 취약점 마다 보안 통제를 설계
    -> 취약점 악용시 발생하는 기술적인 영향을 통해 해당 위험을 계산

OWASP TOP 10

  • A1 : 잘못된 접근 통제
  • A2 : 암호화 오류
  • A3 : sql 인젝션
  • A4 : 안전하지 않은 설계
  • A5 : 보안 설정 오류
  • A6 : 취약하거나 오래된 컴포넌트
  • A7 : 식별 및 인증 실패
  • A8 : 소프트웨어와 데이터 무결성 실패
  • A9 : 보안 로그 및 모니터링 실패
  • A10 : 서버 사읻 요청 변조(SSRF)

3장 인증 기술과 접근 통제

인증 기술

인증방법은 가급적 두개 이상의 방법을 함께 사용해야 안전함

알고 있는 것

  • 특정인을 인증할 때 사용하는 방법
  • 패스워드/주민등록번호/i-pin 기반 인증

가지고 있는 것

  • 그 사람이 가지고 있는 것을 통해 인증
  • 스마트카드, 간편 인증 등

그 자체

  • 생체 인증

위치하는 곳

  • 장소 기반 인증 방법
  • ip주소, 지역 정보를 토대로 정상 사용자인지 아닌지 파악

접근 통제

수직적 접근통제

  • 특정 정보에 대한 접근 권한을 수준별로 상이하게 설계한 통제
  • 대부분의 사이트는 일반사용자와 관리자 기능을 분리해둠

수평적 접근 통제

  • 여러 사용자가 존재시 상대방의 정보를 볼 수 없도록 통제하는 것
  • url에 노출되는 자신의 식별 코드나 쿠키/세션 값을 대체함으로서 공격함

비지니스 로직 접근 통제

  • 사용자 권한에 종속되지 않고 민감하거나 중요한 자원에 대한 접근과 관련됨
  • 관리자 권한이 없어도 관리자만 접근할 수 있는 메뉴에 접근하는 경우

4장 sql 인젝션의 개요

원리

  • 웹 어플리케이션과 데이터베이스가 연동되는 부분에 공격자가 임의의 sql 명령어를 삽입하여 공격
  • 사용자 로그인, 검색 부분, 자료실 등이 대부분

# 웹 어플리케이션에서 쿼리를 실행하는 소스코드
SELECT * FROM employee WHERE userid = " + userid + " and password = '" + 
password+ "'

# 로그인 입력 창에 Neville Bartholomew(admin), ‘or’‘=’ 명령어를 입력
# or 문으로 인해 쿼리가 참이 되면서 로그인이 됨
SELECT * FROM employee WHERE userid = 'Neville Bartholomew(admin)' and password =''or''=''

dbms의 종류에 따른 sql 인젝션 공격

microsoft sql 서버에는 운영을 좀 더 편리하고 효율적으로 하기 위한 여러 확장 저장 프로시저가 존재
-> 이를 통해 다양한 공격을 시도가능

# 사용자 정의 테이블 가져오기
SELECT name FROM sysobjects WHERE xtype = 'U'

# 컬럼 이름 가져오기

SELECT name FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name ='컬럼 이름을 얻으려는 테이블의 이름')

XPath 삽입 공격

XPath란

  • xml 문서로부터 선택한 노드를 사용하기 위한 프로그래밍 언어
  • xml 데이터를 트리 구조로 형성

sql 인젝션과 비슷하게 공격을 가능

# 공격 방법
Username = anesra' or '1'='1
Password = 1234' or '1'='1

# 결과
XPath query: //Users/user[username/text() = 'anesra' or '1'='1' and password/text() = '1234' or '1'='1']

5장 XSS 공격의 개요

웹 어플리케이션이 사용자를 인증하는 방법

  • 아이디와 패스워드를 기반으로 사용자의 신원을 확인
  • 웹 어플리케이션이 사용자에게 고유한 값을 전달
  • 웹 어플리케이션으로부터 받은 고유값을 가지고 사이트를 이용

쿠키

  • 사용자 정보를 알 수 있는 데이터
  • 쿠키를 만든 사이트의 도메인. 사이트 구분 숫자, 만기일 등의 정보가 존재

쿠키의 용도

  • 사이트 개인화 -> 사용자의 성향을 파악
  • 장바구니 시스템
  • 웹사이트의 이용 방식 추적
  • 타깃 마케팅

XSS

  • 다른 사용자의 정보를 추출하는 공격 기법
  • 입력을 받아들이는 부분의 스키립트 코드를 필터링하지 않음으로서 공격자가 스크립트 코드를 실행 가능

XSS 공격 유형

stored XSS

  • 사용자가 글을 저장하는 부분에 스크립트 코드를 입력
  • 다른 사용자가 게시물을 열람시 공격자가 입력해둔 스크립트가 실행됨

Reflect XSS

  • url의 변수 부분처럼 스크립트 코드를 입력하는 동시에 결과가 나오는 공격 기법

# 표준 스크립트 문자열을 입력하여 테스트
<script>alert(document.cookie)</script>

CSRF 공격

크로스 사이트 요청 변조

  • 피해자의 브라우저가 특정 사이트에 강제적으로 리퀘스트를 보내도록 하는 기법

6장 소스코드의 취약점 분석

취약점 테스트 방식

black box 테스팅

  • 소스코드가 아닌 웹 어플리케이션의 외부 인터페이스나 구조를 분석하여 취약점을 발견
  • 취약점 발견 속도가 빠르며 다양한 취약점을 발견 가능
  • 인터페이스 간의 상관관계를 분석하여 취약점이 발생하는 부분 식별 가능

white box 테스팅

  • 소스코드를 살펴보며 코딩의 취약점을 분석

gray box 테스팅

  • 외부에서 보이는 취약점은 웹 어플리케이션 보안 진단을 통해 확인하고, 소스코드에서 접근 통제, 입력 값 검증, 세션 처리 문제들을 같이 살펴보면서 취약점을 조사하는 방식

취약점 유형

  • 대부분의 취약점이 사용자가 입력한 값을 적절하게 검증하지 않아서 발생

취약점 분석 방법

입력값 검증 취약점

  • sql 인젝션, XSS, 위험한 형식의 파일 업로드, 디렉터리 경로 조작 등
public boolean login(WebSession s, String userId, String password)
{
	// System.out.println("Logging in to lesson");
	boolean authenticated = false;
	try
		{
        // 취약점 1
    
		String query = "SELECT * FROM employee WHERE userid = " + 	userId + " and password = '" + password + “’”;
		// System.out.println("Query:" + query);
	try
		{
		Statement answer_statement = WebSession.getConnection(s) .createStatement(
		ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        
        // 취약점 2
		ResultSet answer_results = answer_statement.executeQuery(query);

문제가 되는 코드 부분

  • 문제가 되는 핵심 코드의 실행 과정
  • 사용자가 입력한 아이디와 패스워드는 userId와 password 변숫값으로 저장
    된다.
  • userId와 password 변숫값을 포함하여 SELECT 문장을 만든다.
  • 완성된 SELECT 문장을 executeQuery 함수를 통해 실행한다.
protected void addMessage(WebSession s)
{
	try
	{
		String title = HtmlEncoder.encode(s.getParser( ).getRawParameter(TITLE, ""));
		String message = s.getParser( ).getRawParameter(MESSAGE, "");
		⋮
		statement.setInt(1, count++);
		statement.setString(2, title);
		statement.setString(3, message);
		statement.setString(4, s.getUserName());
		statement.setString(5, this.getClass().getName());

문제가 되는 코드 부분

  • 사용자가 입력한 title과 message 변수를 getRawParameter 함수를 통해 받
    아들인다.
  • 해당 변수를 필터링 없이 데이터베이스 쿼리문에 포함하여 저장한다.
    → 사용자가 입력하는 값을 getRawParameter 함수를 통해 받아들이며, 이후 추
    가적인 필터링 기능이 없는 것 확인

기타 예시

위험한 형식의 파일 업로드에 대한 입력값 검증 미비의 문제점 확인

  • getUserName으로 파일명을 가져와서 처리할 때 파일명 및 확장자에 대한 필
    터링이 없는 것 확인
    → 웹 애플리케이션의 파일을 업로드하는 부분에서 파일 확장자를 검사하는지
    살펴볼 필요가 있음

디렉터리 경로 조작

  • 파일명을 받아 처리하는 부분에 파일명에 대한 필터링이 없으면 공격자는 디
    렉터리 경로를 조작하여 상위 디렉터리에 있는 임의의 파일에 접근할 수 있음
    → 파일명을 받는 file 변수나 getRawParameter 변수를 통해 필터링하고 있는지
    확인

매개변수와 쿠키 조작

  • URL에서 변수 또는 POST 형태로 전송되는 매개변숫값을 조작하여 자신이 소
    유한 것 외의 권한을 획득하는 공격 기법
  • 매개변수 조작 취약점이 존재하는지 확인하려면 사용자 권한이 필요한 페이지
    에 접근할 때 세션 처리를 하는 코드를 포함하는지 확인
  • 예) 사용자가 입력한 매개변숫값을 받아들여 쿠키로 저장하고 그 쿠키 값으로
    인증하는 경우

강제 브라우징

  • 권한이 필요한 페이지에 권한 체크 코드가 누락되었을 때 발생
  • /admin/과 같은 관리자 디렉터리 내에 있는 소스코드 중에 세션 처리 등의 코
    드가 존재하는지 확인해봄으로써 강제 브라우징 취약점이 존재하는 페이지를
    찾을 수 있음
    → 관리자 페이지 및 인증이 필요한 페이지에 세션 처리 코드가 포함되어 있는
    지 확인

중요 정보 평문 전송

  • 패스워드나 주민등록번호와 같은 민감한 내용을 암호화하지않고 평문으로 전
    송할 때 발생하는 취약점

중요 정보 평문 전송 취약점을 확인하는 방법

  • 사용자의 중요 정보를 전송하는 페이지가 HTTPS(SSL) 등의 암호화된 채널로 통
    신하는지 확인
  • 소스코드 내에서 중요한 정보를 암호화 함수를 통해 전송하는지 확인

암호화 함수를 이용한 전송

  • 소스코드 또는 중요 정보를 암호화하더라도 복호화 함수나 복호화 키가 쉽게
    노출된다면 암호화된 정보가 공격자에 의해 악용될 수 있음

하드 코딩된 패스워드

  • 하드 코딩(hard coding): 패스워드 및 시스템 접속 정보와 같은 민감한 정보가
    소스코드 내에 그대로 노출되어 있는 경우

주석 처리된 중요 정보

  • 주석에는 해당 소스코드가 어떤 기능을 하는지 설명하는 내용이 많은데, 간혹
    개발 단계에서 수정이 발생한 소스코드를 삭제하지 않고 주석 처리를 하는 경
    우가 있음

7장 웹해커의 도구

웹 브라우저의 개발자 도구

Burp suite

target

  • 탐색한 사이트의 정보를 확인 가능
  • 웹 사이트의 구조를 분석할 때 사용
  • 해당 페이지의 http 헤더, request, response 정보를 상세히 확인 가능

intruder 기능

  • 해당 웹페이지에 전달되는 변숫값을 자동으로 생성하여 전달하도록,
    규칙 생성 가능
  • 어떤 변수 값을 조작할 지, 변숫값의 종류와 범위, 리소스 할당량 등을 관리 가능
  • Status와 Length 값을 확인하여 다른 내용을 가진 페이지르 확인 가능

repeater

  • request 항목에서 target 탭에서 전달한 요청을 확인 가능
  • response 항목에서 요청한 결과를 확인 가능

웹 취약점 스캐너

데이터 기반 웹 스캐너

Nikto

  • 웹 서버와 어플리케이션에 있는 취약점 데이터베이스 기반 웹 스캐너

N-stealth(N-stalker)

  • 웹 취약점 데이터베이스를 기반으로 하는 웹 취약점 스캐너

특정 웹 취약점 스캐너

Absinthe

  • sql 인젝션 취약점 툴

Sqlmap

  • sql 인젝션 자동화 공격에 주로 사용됨

Acunetix

  • 웹 어플리케이션의 취약점을 찾는 휴리스틱 웹 취약점 스캐너
  • 특정 사이트를 스캔하여 취약점을 확인 할 수 있음
    -> 어떤 변수에서 공격이 가능한지, 상세 http 요청은 무엇인지 확인 가능
  • 스캔된 결과를 통해 다양한 형태의 보고서를 생성 가능

8장 sns 보안 위협

sns : 종족, 가족, 동성 간의 특정한 네트워크를 만드는 행위

웹 2.0

  • 이용자가 적극적으로 참여하여 정보/지식을 생산, 공유, 소비하는 열린 인터넷을 표방
  • 복합적인 정보를 양방향으로 빠르게 주고받을 수 있개 됨으로써 비교할 수 없을 만큼 정보가 방대해짐
  • 공격자에게 있으 새로운 공격 표면으로 부상

SNS 보안 위협과 대응 방안

개인

  • 출처를 알 수 없는 링크는 클릭하지 않는다
  • 모르는 사람에게 받은 이메일에 첨부된 파일은 열지 않는다
  • sns에서 검증되지 않은 어플리케이션은 가급적 사용하지 않는다.
  • sns의 개인정보 설정이 적절하게 유지되고 있는지 확인한다
  • 안티바이러스 소프트웨어를 설치하고 항상 최신 버전을 유지 한다

기업

  • 직원을 대상으로 보안 인식 교육을 실시
  • 네트워크 기반의 ids/ips를 주요 시스템과 네트워크의 접점에 설치
  • 주요 서버에 호스트 기반의 ids/ips를 사용한다.
  • 업무와 상관없는 sns를 이용하지 못하도록 웹 필터링 프록시를 사용
  • 악성소프트웨어 필터링을 이용
  • 메신저나 p2p 프로그램의 사용을 제한

피싱 대응 방안

피싱

  • 진짜 사이트와 비슷하게 꾸민 가짜 사이트를 이메일 또는 링크를 통해 전달하여 개인 정보를 탈취하는 공격기법

피싱 공격 제대로 알기

  • 개인 정보 요구시 주의를 기울이기

안티피싱 솔루션 사용

  • 신뢰할 수 있는 사이트가 제공하는 안티피싱 솔루션을 사용

개인 정보는 반드시 확인 후 제공하기

이블 트윈 어택

  • 사용자를 속이는 소셜 엔지니어링 공격 기법
  • 사용자 정보를 중간에서 가로채어 사용자인 것처럼 행동하는 공격에서 나온 것
  • ex) 유명인을 흉내내는 sns 계정 등

9장 웹 보안과 웹서버 보안

패스워드

가장 널리 사용되는 기본적인 사용자 인증 방식

안전한 패스워드 만들기

  • 8자 이상, 세 종류 이상의 문자 구성
  • 10자 이상, 두종류 이상의 문자 구성
  • 특정 명칭을 예측하기 어렵도록 가공
  • 특수문자, 숫자 삽입
  • 기본 패스워드 문자열 + 사이트 이름

안전하게 패스워드 보관하기

  1. 패스워드 변경

ROT13 방식

  • 영어 알파벳을 13 글자씩 밀어서 암호로 만드는 방법
  • ROT18은 모든 문자와 숫자를 치환가능하며, 47은 모든 ASCII을 치환할 수 있다.
  1. 패스워드 보관 파일의 암호화

  2. 패스워드와 보관 파일을 외부 저장장치와 하드 디스크에 이중 보관

사용자 인증 방식

공인 인증서

  • 전자 서명의 검증이 필요한 공개키에 소유자 정보를 추가해서 만든 일종의 전자 신분등
  • 패스워드 인증 매커니즘보다 한 단계 강화된 인증 방식
  • 공개키와 비밀키 한 쌍을 이용하여 사용자를 인증하는 공개키 기반 구조

생체 인증 방식

  • 현존 방식 중 가장 강화된 방식
  • 모바일 기기로 인해 생체 인증 방식이 도입되는 추세

지문

  • 개인의 고유한 생체 정보로 일생동안 변하지 않음

손모양

  • 손을 폈을때 손가락 길이, 굵기 등의 요소를 인증에 사용
  • 정맥 모양을 촬영해서 인증하기도 함

망막

  • 눈 뒷부분에 있는 모세혈관의 형태를 확인해서 인증
  • 시간이 오래 걸림
  • 안경을 쓴 상태에선 사용 불가

홍채

  • 홍채 패턴을 통해 식별하는 방식
  • 정확도 및 식별 범위도 김

서명

  • 보안 수준이 낮음

목소리

  • 환경, 감정에 따라 변할 수 있어 보안 수준이 낮음

얼굴

  • 애플의 face id가 대표적

뇌파

생체 인증의 성능 측정

FRR : 권한이 있는 사람이 인증을 시도했을 때 실패하는 비율
FAR : 권한이 없는 사람이 인증을 시도했을 때 성공하는 비율
EER : frr과 far이 그리는 곡선의 교차점

접근 통제

보안을 위한 첫 단게는 보호하려는 정보의 가치를 결정하는 것

DAC

  • 임의적 접근 통제
  • 정보 소유자가 정보의 보안 수준을 결정하고 그에 대한 접근 통제까지 설정
  • 중앙 집중화된 정보 관리가 어려워 엄격한 정보에 대한 접근 통제 거의 불가

MAC

  • 강제적 접근 통제
  • Bell-LaPadula, Biba. RBAC 등의 모델이 있음

접근 통제 모델


Bell-LaPadula : 정보의 기밀성에 따라 상하 관계가 구별된 정보를 보호하기 위해 사용

  • property
    -> 자신의 권한보다 높은 보안 문서는 쓰기가 가능하나, 낮은 보안 문서는 쓰기 권한이 없음

Biba 모델

  • 정보의 무결성을 높이는 것이 목적일 대 사용

RBAC

  • 사람이 아닌 직책에 따라 권한을 부여

접근 통제 구현 방법

관리적 접근 통제

  • 정책 및 절차를 통해 조직이 보유한 주요 정보를 식별하고 그에 따른 통제 방안을 수립
  • 구성원이 회사의 보안 정책을 준수하도록 직원 통제 활동이 필요

논리적 접근 통제

  • 보호할 정보에 접근하는 것을 제한하기 위한 하드웨어와 소프트웨어 도구
  • IP, MAC 주소에 따른 접근 통제
  • 인터페이스 통제 : 필요한 기능만 사용하도록 메뉴, 셀의 형태로 제공

물리적 접근 통제

  • 네트워크 분리, 경계선 보안, 전산실 통제, 데이터 백업 등
  • 네트워크 장비에 임의로 접근하지 못하도록 잠금장치를 설치해야 함

입력 값 검증

SQL 인젝션

SQL 인젝션 공격 취약점을 제거하려면 Prepared statement 객체를 이용하여 데이터베이스에 컴파일된 쿼리문을 전달하는 방식이 가장 안전함

// 안전하지 않은 코드
String tableName = props.getProperty("jdbc.tableName");
String name = props.getProperty("jdbc.name");
String query = "SELECT * FROM" + tableName + "WHERE Name =" + name;
stmt = con.prepareStatement(query);
rs = stmt.executeQuery();

//안전한 코드
String tableName = props.getProperty("jdbc.tableName");
String name = props.getProperty("jdbc.name");
String query = "SELECT * FROM ? WHERE Name = ?";
stmt = con.prepareStatement(query);
stmt.setString(1, tableName);
stmt.setString(2, name);
rs = stmt.executeQuery();

크로스 사이트 스크립팅 공격 코드 입력 값 검증

스크립트 코드를 입력하지 못하도록 방어

스크립트를 입력하기 위한 문자열 <, >, &, "등을 <, > 등으로 치환하는 것이 유리

// 위험한 코드

<h1> XSS Vulnerability Sample </h1>
<%
String name = request.getParaemeter("name");
%>
<p> NAME: <% =name %> </p>


// 안전한 코드
<%
String name = request.getParameter("name");
if (name != null)
{
name = name.replaceAll("<", "&lt;");
name = name.replaceAll(">", "&gt;");
name = name.replaceAll("&", "&amp;");
name = name.replaceAll("\"", "&quot;");
}
else { return; }
%>

악성 파일 업로드 공격 입력 값 검증

  • 필요한 파일의 확장자만 업로드 허용
  • 파일 저장시 문자열 값을 변경하여 파일명과 확장자를 추측하지 못하도록 변형

서버측과 클라이언트 측 필터링

  • 입력값 검증을 위한 코드를 백엔드 or 프런트엔드 측에 포함할지에 따라 보안 수준이 달라짐
  • 프런트엔드의 경우 값 변형이 쉬우므로 백엔드에서 구현하는 것이 좋음

필터링 방식

화이트 리스트 방식 필터링

  • 필요한 특정 입력 값만 받아들이고 그외의 모든 값은 필터링
  • 특정 파일의 확장자가 아닌 모든 값을 차단

블랙리스트 방식 필터링

  • 악성 패턴에 한해서만 필터링
  • 대부분의 입력값은 허용하고 일부 특정 입력값만 차단시 사용

아파치 웹 서버 보안

아파치 웹 서버 설정은 httpd.conf, apache2.conf 파일을 통해 이루어짐

10장 인터넷 해킹과 보안

보안 정책

security policy

  • 조직의 상위 관리자가 만든 보안 활동에 대한 일반적인 사항을 기술한 문서
  • 기록 내용
    -> 보호하려는 자산, 정보소유자의 역할과 책임 정의. 관리되는 정보들의 분류와 기분 정의, 관리에 필요한 기본적인 통제 내용

standards

  • 일반적으로 지켜야할 보안 사항에 대해 기술한 문서
  • 일반적인 표준 절차만 담고 있음

Baselines

  • 가장 기본적인 보안 수준을 기술한 문서

Guidelines

  • 특정 상황에 대한 충고나 방향 등을 제시한 문서

procedures

  • 가장 하위 문서로, 각각의 절차에 대한 세부 내용을 담고 있음

보안 정책의 주요 요소

정보 보호 관리 체계(ISO 270010

  • 국제적으로 가장 널리 사용하는 정보보호 관리체계

개인정보보호

  • 개인정보 보호법 : 고객의 개인 정보를 수집, 관리시 따라야할 내용

모바일 보안

  • BYOD : 개인 소유의 휴대용 디바이스를 직장에서 사용시 회사의 기밀 정보와 어플리케이션에 접근하는 것을 허용하는 모바일 보안 정책

사이버 보안

보안 조직

CISO : 조직마다 임명하는 최고 정보보안 책임자

보안 업무의 역할과 책임

  1. 정보보안 기획
    • 정보보안 전략/계획 수립
    • 정보보안 정책/지침, 표준 제정 및 관리
    • 정보보안 위험 관리
  2. 정보보안 관리
    • 시스템 구축 및 보안 장비 도입
  3. 정보보안 운영
    • 인프라 보안 운영 및 보안 장비 운영
    • 위협 및 취약성 관리
    • 보안 관제
    • 보안 교육
    • 정보보안 사고대응 관리
  4. 정보보안 모니터링
    • 정보보안 성과 모니터링 및 성과 관리
    • 정보보안 내부 감사
    • 아웃소싱 보안 관리
    • 컴플라이언스 관리

보안 솔루션

인트라넷

  • 기업 내부간 데이터 통신을 위한 네트워크

VPN

  • 인터넷 회선을 전용선과 비슷한 용도로 사용하게 해줌
  • 기밀성을 위해 암호화 처리가 필요
  • 암호화 프로토콜로 PPTP, L2TF, SSL 등이 있음

VPN 이용사레

  • 해외 전용 사이트 입장
  • 집에서 회사 내부 시스템 접근
  • 원격의 두 지점을 내부 네트워크 처럼 이용
    -> 종류에 따라 인증없이 암호화 터널링도 제공

IPS

  • 방화벽과 침입 탐지 시스템의 한계로 대두된 보안 솔루션
  • 방화벽 다음에 설치
  • 방화벽이 없을 경우, ASIC를 사용

스팸메일 차단 솔루션

  • 프록시 메일 서버로 동작
  • SMTP 프로토콜을 이용한 디도스, 폭탄 메일, 스팸 메일등을 차단
  • 메일 내용과 첨부파일을 검사하여 정보 유출을 방지

스팸메일 차단 솔루션의 종류

  • 메일 헤더 필터링 : 아이디, 수신자, 도메인등을 검사
  • 제목, 본문, 첨부파일 필터링

PC 방화벽

  • 후킹(Hooking) : 방화벽 드라이버 설치

백신

  • 시스템에 침투한 바이러스의 실행을 검사

DRM(Digital Right Management)

  • 문서 보안에 초점을 맞춘 보안 기술로, 문서를 열람하고 편집하고 프린트하는 것까지 접근 권한을 설정하여 통제
  • MS 워드, HWP, TXT, PDF 등 업무에 사용하는 파일을 대부분 통제할 수 있음

ESM

  • 여러 종류의 보안 솔루션을 중앙 집중화한 구조로 모니터링 하는 솔루션
  • 보안, 관리 정책에 따른 사용자 및 접근 제어
  • 네트워크, 시스템 취약점이나 위험 요소를 분석 및 모니터링하는 관리도구

SIEM

  • 시스템에서 발생하는 로그를 분석하여 이상징후를 파악한 후 그 결과를 운영진에게 보고
  • 실시간 위험 탐지를 위해 이벤트 로그 데이터를 실시간으로 수집 하고 분석

추가기능

  • 공유 자원 접근 제어
  • 패치 모니터링 및 설치
  • 파일 암호 및 복호화
  • 주변 기기 매체 제어
  • 자산 및 IP 관리
  • 모니터링
profile
블로그 이전

0개의 댓글