공부?/국비 지원 일기장

60일차 - 보안

무무요 2024. 11. 7. 17:32

통풍발작으로 인해 휴가를 쓰고 학원을 쉬었다.. 서있지도 못했다...


=======

 

CSS (Client Side Script)

- Client에서 웹 페이지를 동적으로 표현하기 위해 사용되는 스크립트 언어

- Client에서 처리되는 명령이므로 서버가 source code 원형을 전달 함

- 한번 parsing 동작을 거친 data에 재 접근하여 추가 동작을 지원 함

- 기존의 HTML로 수행될 수 없는 추가 동작을 지원 함

- 종류

  - Javascript, Visual Basic Script, Jscript …

 

SSS (Server Side Script )

- Server 프로그램의 동작을 동적으로 처리 하기 위해 사용되는 스크립트 언어

- WAS에서 사용되는언어

- 클라이언트로부터 전달되는 데이터의 처리, 데이터 베이스로 연동 되는 명령 등을 처리하기 위해 사용 됨

- Server에서 처리되는 명령이므로 처리 결과만 Client에게 반환함

- 종류

  - ASP/ASP.net, PHP, JSP, Perl, Python, Ruby, Node.js …

 

SQL (Structured Query Language)
- 1970년 IBM에서 개발 됨
- DBMS를 통해 Database를 생성, 관리, 제어하기 위해 사용되는 언어
  - DBMS에 정해진 형식의 질의를 전달하여 처리된 결과를 반환 받음
- MySQL, Oracle, SQL Server …


XSS(Cross Site Scripting)
- 공격코드(Scripting)가 서버를 이용하는 클라이언트에서 실행(Cross Site)되게 만들어 클라이언트에서 비 정상적인 동작이 수행되게 하는 공격

공격 발생 원인
- 동적 웹 서비스에서 클라이언트로부터 전달 되는 데이터를 검증 없이 받아들일때 발생 하는 취약점

공격 대상 및 특징
- 웹 서버의 서비스를 제공 받는 클라이언트
- 웹 서버에 직접적인 피해를 일으키는 것이 아니라 웹 서버를 경유하여 클라이언트를 공격함
  - 서버를 장악하지 않고도 사용자의 권한을 쉽게 도용할 수 있음
 
피해 범위
- 사용자의 Cookie를 이용한 권한도용, 클립보드Access, Key Logging 등...


CSRF(Cross Site Request Forgery, XSRF)
- 사이트 간 요청 위조 공격 -> Session Riding 공격
- 웹 사이트에서 제공하는 기능을 신뢰된 사용자의 권한으로 요청하도록 하는 공격
- Sessiong Hijacking과 비슷함 -> 클라이언트의 권한을 도용 함

공격 발생 원인
- 요청의 정상적인 경로를 확인하지 않을 때 발생
  - Referer, Anti Forgery Token, 동일-출처 정책 등으로 정상 경로로부터 전달된 것인지 확인하지 않음

공격 대상 및 특징
- 서버가 공격 대상임
- Script를 이용하지 않아도 공격 가능함
- Server Side Validation과 무관하게 공격 가능 함
- 공격자를 추적하기 어려움
  - 정상 사용자의 정상 권한으로 정상 요청을 발생시키므로 공격자의 정보(IP)를 확인하기 어려움

피해 범위
- 서버에서 제공되는 모든 기능이 공격의 범위가 됨
- 공격자의 요청을 대신 수행하는 클라이언트의 권한이 높을 수록 피해의 범위가 확산 됨

2010년 옥션이 CSRF로 방식으로 해킹을 당한뒤 모든 사이트에서 인증서 도입이 필수가 되었다.
- 방화벽도 설치되어 있지 않았고 데이터베이스에 등록된 주민번호가 암호화가 안되있었다.
- 관리자 페이지 비밀번호가 초기 비밀번호는 'admin' 이었다.

공통점 
- Script가 실행되서 발생되는 공통점
- 공격코드가 순차적으로 발생된다.

차이점
- XSS는 클라이언트쪽에서 스크립트가 실행된다

  - 클라이언트에 요청하는것

- CSRF는 서버쪽에서 스크립트가 실행된다

  - 서버에 요청하는것

CSRF 공격 흐름

 

이미지를 누르면 이미지 누른 사람의 password를 hack으로 바꾼다는 공격 코드

자기 의도와는 다르게 웹서버에게 위조된 요청을 보내 P/W가 바뀌는것 

Script가 실행이 되는 시스템이면 

 

 

CSRF

- 위조된 요청



HTTP (Hyper Text Transfer Protocol)(Connections less, Stateless 연결유지, 연결유지된 상태를 유지하지 않는다)

- 연결을 지속해서 유지하지 않는다. 

  - 이유 : 바쁘기 때문

- html로 구성된 WEB data(WEB page)를 전달하기 위해 지정된 통신규약

- Text(hyper text)로 구성된 데이터를 신뢰성을 보장하며 전달 함

  - TCP port 80

- 기본구조 → Header + Body

  - Header → 요청 또는 응답을 처리하기 위한 정보

  - Body → WEB data(HTML) 

  - HTTP 데이터 전체가 text로 구성되기 때문에 값의 구분 또는 필드의 구분을 공백, 개행, 빈줄로 처리함

- 종류

  - HTTP 0.9(1991), HTTP 1.0(1996), HTTP 1.1(1999), HTTP 2.0(2015.5 RFC 7540)

 

HTTP 기본 동작
- Client → 자원 요청에 대한 정보를 메시지 형태로 생성하여Server에게 전달 함
- Server → 요청된 자원의 정보를 메시지 형태로 생성하여 Client에게 전달 함

HTTP 특징
Connectionsless
- 하나의 HTTP 메시지(WEB data)를 전송하기 위해 하나의 연결을 맺음
  > 연속된 웹 페이지를 요청해도 한 데이터 단위씩 반복적으로 연결 동작을 수행 함
- 초기 서버의 지속된 연결에 의한 부하를 줄이기 위해 지원된 방법
  > 다수의 Client에게 서비스를 지원하기 위해 사용됨

Stateless
- 동일한 Client의 이전 상태정보를 유지하지 못함
- 동적인 서비스에서 사용자의 상태 정보를 유지하지 못하므로 동적인 서비스 제공에 문제점이 됨
  >Cookie, session등의 기술을 통해 해결 함
- HTTP는 stateless 하는 프로토콜이다.
- cookie 발급 이유 
  - 웹 서버가 연결이 끊겨도 다음 연결때 기억하기 위해서


HTTP Version
- HTTP 0.9 Version
  - HTTP 1.0 표준이 지정되기 전 비 표준 HTTP를 통칭 함
- HTTP 1.0 Version
  - 1996년 발표 (RFC 1945)
  - 단순TEXT 형태의 메시지를 송/수신 하기 위해 정의됨
- HTTP 1.1 Version
  - 1999년 발표 (RFC 2616)
  - 1.0 version의 기능을 향상 함
  - 지속적인 연결 (파이프 라이닝) 기능, 가상호스트(version 1.1의 필수), 향상된 proxy/cache 기능 제공
  - 파이프 라이닝→ 첫번째 요청에 대한 응답을 기다리지 않고 요청을 계속 전달 함
- HTTP 2.0 Version
  - 2015년 발표 (RFC 7540)
  - 기본적으로 발전된 WEB 환경에 맞는 속도 향상을 목표로 함
  - 바이너리 형태로 HTTP 헤더를 구성
  - SPDY(speedy) 지원 , TLS 통신
- SSL 버전 높은것 = TLS 

 

Version 1.0과 Version 1.1의 차이 - 가상 호스트(다중 웹)

 

HTTP Message 형식
- 값의구분 → 공백(space)
- 필드구분 → 개행
- 헤더와 바디의 구분 → 빈줄(black)

 

메소드(Method) 종류
- 메소드는 대문자로 지정 해야함


GET 과 POST의비교
-사용목적
  - GET → 서버의 자원을 요청할 때 사용 함
  - POST → 서버에게 데이터를 전송하고자 할 때 사용 함

-차이
  - 데이터 전달방식
  - 데이터 전송량

- 공통점
  - 대입 연산자(=)를 이용하여 매개변수 이름과 값을 연결 함
  - 평문 전송 됨

- WEB Browser는 일반적으로 GET, POST를 이용한 요청을 생성 함
  - 이외의 메소드는 특수한 경우에만 생성함

HTTP Response Code 종류
- Status Code와 Reason-Pharse가 한 쌍으로 지정 되어 있음

- 400번대 오류 클라이언트 오류

- 500번대 오류 서버 오류

 

 

URL (Uniform Resource Location)

- 통합 자원 위치

- 네트워크 상 자원의 위치를 나타내기 위한 규약


SSL(Secure Socket Layer)
- Netscape사에서 개발됨
- 1999년 SSL v3을 표준화시켜서 TLS(Transport Layer Security)라는 이름으로 명명함
- Application 계층과 TCP 계층 사이에 추가된 보안 계층으로 동작

- 포트번호 TCP 444

- 웹에 관련된 통신을 할때 암호화 하는것


SSL Handshaking
- SSL 통신을 위한 준비단계
- Client와 Server 간 Session을 설정하기 위한 인증 및 협상을 진행

SSL HandShake 구조                    


SSL Change Cipher Spec
- Handshaking 과정에서 협상한 암호화 알고리즘을 이용해 암호화를 진행 하겠다는 통보 메시지

SSL Alert
- SSL 통신 과정에서 문제 발생시 Error Message 전달

SSL Record
- SSL 하위 Protocol
- 상위 Protocol에서 생성된 메시지에 따라 MAC, 암호화, 압축 기능을 제공

SSL 보안 서버 구성

- 운영하고 있는 웹서버에 보안서버 인증서가 설치되어 있어야 함

- SSL 인증서를 이용한 보안 서버는 서버에 설치된 SSL 인증서를 통해 개인정보를 암호화 하여 전송

  - 사용자 컴퓨터에 별도의 보안 프로그램 설치가 필요 없음

- 주기적으로 인증서 갱신을 위한 비용이 소모

 

SSL 보안 서버 구성 순서

- 1. 운영하는 웹 서버에서 개인키를 생성 후, CSR 파일을 생성하여 인증기관에 보안 서버 인증서 발급신청

  - CSR을 이용하여 인증서를 신청할 때 회사의 담당자 정보등을 입력

- 2. 인증 기관에서 정보 검증 후 인증서 발급

- 3. 발급 받은 인증서를 운영중인 웹 서버에 설치 하여 보안 서버 설정 완료

- 4. SSL 인증서가 설치된 후 인증서의 유효성에 따라 사용자 브라우저에 보안 경고창 발생여부 확인

  - 인증 기관의 신뢰여부, 주체, 유효기관, ...


WEB Encoding

부호화(Encoding)
- 특정 정보이 형태/형식 등의 표현 방법을 변경하는 것

암호화(Encryption)와 부호화(Encoding)의 차이
- Encryption → 정보(데이터)의 의미를 숨기기 위해 형태를 변경 함
- Encoding → 정보(데이터)의 의미는 유지하지만 표현 형태만 변경 함

ASCII (American Standard Code for Information Interchange )
- WEB에서 데이터를 표현할 때 사용하는 표준 문자 인코딩 기법
- TEXT 형태의 HTTP 메시지를 구성할 때 사용 됨
http://www.asciitable.com/

주요ASCII code
- 제어 문자
  - LF(Line Feed, 0x0A), CR(Carriage Return, 0x0D)
-출력문자
  - 공백(space, 0x20)
  - 숫자(0~9, 0x30~0x39)
  - 영어대문자(A~Z, 0x41~0x5a), 영어 소문자(a~z, 0x61~0x7a)


ASCII 출력 가능 문자

 

ASCII 제어 문자 및 공백 문자

 


URL Encoding
- URL에서 사용되는 메타(Meta) 문자의 충돌을 회피하기 위해서 사용
   - URL에 사용된 문자들을 안전하게 서버에 전달하기 위해 사용
- 클라이언트 측에서만 사용되는 인코딩 기법
- 보안솔루션(방화벽)의 필터링을 회피하기 위해 사용되기도 했음 → Force Full URL Encoding

URL Encoding 표현 법
- 클라이언트의 입력값이 URL에서 사용되는 메타 문자와 동일한 경우 변환하여 Parameter로 전달함
- 해당 문자의 ASCII 값 앞에 % 기호를 붙여서 표현함
 ex) ? => %3F

정보를 위한 정보 - meta data 메타 데이터


BASE64 Encoding
- MIME형태의 데이터를 HTTP 형식으로 전달할때 데이터의 손실을 방지하기 위해 사용됨
- WEB 서비스의 Basic 인증에서 ID, password를 변형할 때 사용 됨

MIME (Multipurpose Internet Mail Extensions)
- 전자우편을 위한 표준 데이터 표현 형식
- 기본 형태인 7bit ASCII로 표현하지 못하는 데이터(이미지, 사운드, 영상, 프로그램 등) 표현을 위해 8bit 바이너리 파일로 표현 하는 방식
- 바이너리 데이터를 7bit의 ASCII 형식으로 표현하기 위해 BASE64를 사용 함

BASE64의 구성
- 64개의 문자와 패딩을 처리하는 = 을 사용 함


BASE64 Encoding 변환
- 3byte 단위의 블록으로 데이터를 나눈후 ASCII 이진 형태로 변환
  - 블록의 크기가 맞지 않으면 0으로 padding함
- 6bit 단위의 데이터로 분할
- Base64 코드의 값으로 변환

BASE64 Encoding 변환 예제
- 원본데이터 → ABCD
- 3byte 블록
   ABC → 41 42 43 → 01000001 01000010 01000011
   D[00] → 44 [00 00] → 01000100 [00000000 00000000]
- 6bit 단위로 데이터 분할
   010000   01 0100  0010 01  000011 
   010001   00 [0000 0000 00  000000]
- Base64 코드로 변환
   16 20 9 3 → Q U J D
   17 0 [0 0] → R A [= =]
- 인코딩 된 값
   QUJDRA==

- 인코딩 방식을 알아먹게 해주는 codec을 깔아줘야 한다.

                                                                                                                                                                                                  BASE64 Code

 

기타문자 Encoding
- ASCII로 표현할 수 없는 문자를 표현하기 위해 사용됨

- EUC-KR
  - KS X1001와 KS X 1003을 사용하는 8비트 문자 인코딩, EUC의 일종
  - 대표적인 한글 완성형인 코딩
  - 표현할 수 있는 한글 문자의 제한이 있음 

- CP949 (Code Page 949)
  - EUK-KR의 확장이며 Microsoft의 한글 Windows에서 사용 됨

- Unicode
  - 전 세계의 다양한 문자를 표현하기 위한 16bit 인코딩
  - 표현 방식이 URL Encoding과 비슷함 → %uUNICODE → %u2215 = /

- UTF-8
  - Unicode를 위한 가변길이(1~4byte) 문자 인코딩 → 가장 널리 사용되며 windows98부터 지원 됨
  - 표현방식이URL Encoding과 동일 함 → %UTF-8코드
  - https://ko.wikipedia.org/wiki/UTF-8


코딩 시 인코딩 설정

HTML
- <meta charset="UTF-8">
CSS
- @charset "utf-8";
PHP
- <?php header("Content-Type: text/html; charset=UTF-8") ?>
Javascript
- <script type="text/javascript" charset="utf-8"></script>

=======

보안 시스템 이해

보안 시스템(보안 솔루션)
- 정보 보안의 내/외부 위협 요인들로부터 정보 자산(H/W, S/W, Data, Service …)을 보호하여 보안 사고를 피해를 최소화 하는 정책을 통한 기술적, 관리적 행위

방화벽(=F/W)
- 원래 의미 → 화재가 더 이상 번지는 것을 막는 불 연재로 만든 벽
- 보안 위협으로부터 불법적인 침입을 차단하여 보안 사고를 사전에 예방하는 Software 또는 Hardware
- 방화벽을 기준으로 신뢰할 수 있는 영역(Trusted Network)과 신뢰할 수 없는 영역(Untrusted Network)을 구분하여 정책에 해당하는 데이터를 제어 또는 통제(허용/거부)하는 동작을 수행 함
- 망을 분리해준다.

접근 제어
- 자산을 보호할 정책에 맞게 데이터를 필터링 하는 기능
- 패킷 필터링, Proxy 필터링

인증
- 내부 네트워크에 접근할 수 있는 사용자, 메시지를 인증함

모니터링 및 로깅(Logging)/감사추적(Auditing)
- 모니터링 → 지속적으로 트래픽을 모니터링 하면서 유동적인 정책을 세울 수 있게 함
- 로깅/감사추적 → 침해가 발생 했을때 역 추적의 정보를 남겨야 함

NAT
- 내부 네트워크의 주소를 외부에 노출시키지 않음
- 내부 네트워크로의 직접적인 접근을 차단함

VPN
- 방화벽에서 다른 방화벽 또는 호스트까지 전달되는 트래픽을 암호화해서 전달 함


보안시스템종류

- 방화벽(Firewall)
  - 침입 차단 시스템
  - 신뢰하지 않는 외부 네트워크와 신뢰하는 내부 네트워크 사이를 지나는 패킷을 미리 정한 정책(규칙)에 따라 차단하거나 보내주는 기능을 하는 하드웨어 또는 소프트웨어
  - 보안에서 가장 기본적인 솔루션

- IDS(Intrusion Detection System)
  - 침입 탐지 시스템
  - 네트워크를 통한 공격을 탐지하기 위한 장비이며, 방화벽이 차단하지 못한 해킹이나 악성코드의 활동을 탐지
  - 설치 위치와 목적에 따라 호스트 기반이나 네트워크 기반으로 설치

- IPS(Intrusion Prevention System)
  - 침입 차단 시스템
  - IDS + Firewall과 같은 네트워크 기반의 솔루션을 논리적으로 결합한 시스템
  - 방화벽(Firewall)의 단순한 룰 셋 적용을 통한 차단으로 실질적인 공격의 차단율이 낮다는 점을 보완하기 위해 개발
  - 비정상적인 트래픽(공격)에 대해 능동적인 분석과 차단을 수행

- UTM(Unified Threat Management)
  - 통합 위협 관리
  - 하나의 장비에서 여러 보안 기능을 통합적으로 제공하여 다양하고 복잡해진 공격에 대응
  - Firewall / WebFilter / WAF / VPN / IDS / IPS / Antivirus / AntiSpyware / AntiSPAM / Wireless Security / ...


- Web Filter
  - 웹 브라우저의 통신 내역을 감시하여 위험성 높은 내용을 차단
  - 위험한 사이트 접속 차단 및 위험한 컨텐츠 차단

- WAF(Web Application Firewall)
  - 웹 방화벽

- VPN(Virtual Private Network)
  - 가상 사설망
  - 인터넷(공용망)을 전용선처럼 사용할 수 있도록 제공하는 서비스
  - 본사와 지사간에 전용망을 설치한 것과 같은 효과를 거둘 수 있으며, 기존 사설망의 고 비용 부담을 해소하기 위해 사용(비용 절감)
  - 터널링 + 암호화

- Anti DDoS Solution
  - DDoS 공격탐지/차단

- Anti SPAM Solution
  - 스팸 탐지/차단 또는 스팸 필터 솔루션

- Anti Virus Wall
  - 악성코드 탐지/차단 솔루션

- Load Balancing
  - 부하 분산
  - SLB(Server Load Balancing) / NLB(Network Load Balancing)
  - 동작방식: 라운드로빈, 가중치라운드로빈, ...

- LVS(Linux Virtual Server)
  - 리눅스를 이용해서 고 가용성 확보를 위해 로드 밸런싱을 운영하는 시스템

=======
                                                                                                                                                                                        

                                                                                              

'공부? > 국비 지원 일기장' 카테고리의 다른 글

62일차 - 가상화, 도커, 컨테이너  (2) 2024.11.11
61일차 - IDS, IPS, 도커  (1) 2024.11.08
59일차 - 여러기법과 바이러스  (1) 2024.11.05
58일차 - 정보 보안  (0) 2024.11.04
57일차 - SQL Injection  (0) 2024.11.01