[CS Study] Network - Network security

Frye 'de Bacon·2023년 11월 8일
0

Computer Science(CS)

목록 보기
8/40

보안과 해킹

보안의 3요소

보안의 3요소는 기밀성과 무결성, 가용성이 있다.

  • 기밀성(Confidentiality) : 공개, 노출에 대한 보안
    - 통신 당사자만이 아는 비밀
    • 데이터가 인가된 당사자만이 접근 가능함을 보장하는 것
    • 대표적인 관련 공격 : 스니핑(Sniffing) - 네트워크 트래핑을 도청하여 제3자간의 패킷 교환을 엿듣는 것
    • 관련 보안 기술 : 암호화, 네트워크 트래픽 통제
  • 무결성(Intergrity) : 변조, 파괴에 대한 보안
    - 데이터가 인가된 당사자에 의해, 인가된 방법으로만 변경 가능한 것
    • 데이터의 완전성 및 정확성을 보장
    • 대표적인 관련 공격 : 스푸핑(Spoofing) - 공격 대상의 패킷을 변조하거나 코드를 삽입하는 것
    • 관련 보안 기술 : 전자서명, 바이러스 백신, 해시 함수를 이용한 공개 키
  • 가용성(Availability) : 지체, 재난에 대한 보안
    - 데이터가 적절한 시간에 인가된 당사자에게 접근 가능해야 하는 것
    • 대표적인 관련 공격 : DoS/DDos - 공격 대상의 자원을 소모시켜 정상적인 서비스를 하지 못하도록 하는 것
    • 관련 보안 기술 : 백업, 결함 허용 시스템, 클러스터링

웹 해킹

웹 해킹이란 웹 애플리케이션 발생 가능한 모든 보안 허점(Security hole)을 이용해 악의적인 행위를 하는 것이다. 일반적으로 웹 서비스를 주요 대상으로 삼지만, 프레임워크나 웹 어플리케이션 서버를 대상으로 하기도 한다.
여기서 악의적인 행위란 최근에는 개인정보 탈취 등을 통해 금전적인 이득을 얻고자 하는 행위나 기업 내의 데이터를 탈취하는 행위 등을 말한다.

웹 해킹이 주목받기 시작한 것은 '방화벽'의 도입부터이다. IP와 Port, Protocol을 기반으로 패킷 필터링을 하는 방화벽이 도입되면서 대외 서비스가 불필요한 포트에 대하여 방화벽을 이용한 차단이 시작되었고, 이에 따라 '외부에서 접근 가능한 유일한 통로'인 웹 서비스에 대한 공격이 증가하게 된 것이다.

웹 해킹은 일반적으로 '공격 대상 지정 → 정보 수집 → 취약점 분석 → 공격 → 결과 도출'이라는 절차를 거치며, 이 중 가장 중요한 것이 '정보 수집' 절차이다.



IPSec(Internet Protocol Security)

IPSec의 개요

IPSec은 네트워크에서의 안전한 연결을 설정하기 위한 통신 규칙 또는 프로토콜 세트이다. IPSec은 IP에 대하여 암호화와 인증을 추가함으로써 프로토콜을 더욱 안전하게 만든다.

TCP/IP와 같은 네트워킹 프로토콜은 연결 및 전달에만 관여할 뿐 전송하는 메시지에 대한 보안에는 관여하지 않는다. 따라서 중간에서 제3자가 전달된 메시지를 보는 것이 가능하다. IPSec은 이런 데이터를 둘러싸는 봉투를 씌움으로써 보안을 유지하는 것이다.

IPSec의 동작 단계

IPSec은 다음과 같은 단계를 통해 데이터를 교환한다.

  1. 키 교환
    암호화에는 키(메시지를 암호화하거나 해독하는 데 사용할 수 있는 임의의 문자열)가 필요하며, IPSec은 연결된 장치 간 키를 교환함으로써 각 장치가 다른 장치의 메시지를 해독할 수 있도록 한다.
  2. 패킷 헤더 및 트레일러
    네트워크를 통해 전송되는 모든 데이터는 패킷이라는 작은 조각으로 나누어지는데, IPSec은 이 데이터 패킷에 인증 및 암호화 정보를 포함하는 여러 헤더를 추가한다. 동시에 각 패킷의 페이로드를 따르는 트레일러도 추가한다.
  • 헤더 : 데이터 패킷이 올바르게 수신자에게 도착하도록 하기 위한 지침 정보와 암호화 정보 등을 포함
  • 페이로드 : 데이터 패킷에 포함된 실제 정보
  • 트레일러 : 패킷의 끝을 나타내는 데이터
  1. 인증
    IPSec은 각 패킷에 대하여 진위 확인 스탬프와 같은 인증을 제공한다. 이를 통해 해당 패킷들이 공격자가 아닌 신뢰할 수 있는 소스로부터 전송되었는지를 확인할 수 있다.
  2. 암호화
    IPSec은 각 패킷 내의 페이로드와 패킷의 IP 헤더 등을 암호화한다. 이로써 IPSec을 통해 전송되는 데이터는 비공개로 유지된다.
  3. 전송
    암호화된 IPSec 패킷은 전송 프로토콜을 사용하여 목적지까지 이동한다. 이때 일반적으로 사용되는 TCP가 아닌 UDP를 주로 사용한다는 점에서 일반 IP 트래픽과 차이가 있는데, TCP와 달리 UDP는 장치 간 전용 연결을 설정하지 않으며, 방화벽을 통과할 수 있는 IPSec 패킷을 사용하기 때문에 UDP를 주로 이용한다.
  4. 암호 해독
    통신의 다른 쪽 끝에서 패킷이 복호화되고, 애플리케이션(브라우저와 같은)이 제공된 데이터를 사용할 수 있게 된다.

IPSec의 프로토콜 구성

  1. 인증 헤더(Authentication Header, AH)
    AH 프로토콜은 데이터 패킷이 신뢰할 수 있는 소스로부터 왔으며 데이터가 변조되지 않았는지를 확인한다. 단, 암호화는 제공하지 않으므로 공격자로부터 데이터를 숨기는 데는 도움이 되지 않는다.
  2. 보안 프로토콜 캡슐화(Encapsulating Security Payload, ESP)
    터널 모드에서는 각 패킷에 대한 헤더 및 페이로드를, 전송 모드에서는 페이로드만을 암호화한다. 각 데이터 패킷에 자체 헤더와 트레일러를 추가하기도 한다.
  3. 보안 연결(Security Association)
    암호화 키 및 알고리즘을 협상하는 데 사용되는 여러 프로토콜을 나타낸다. 이 중 가장 일반적인 프로토콜은 인터넷 키 교환(Internet Key Exchange, IKE)이다.

IPSec의 동작 모드

  1. 터널 모드
    터널 모드에서는 전체 원본 IP 패킷이 캡슐화되어 새 IP 패킷의 페이로드가 된다. 이는 권한이 없는 당사자로부터의 데이터 보호를 강화하므로 공개된 네트워크에서 데이터를 전송하는 데 더 적합하다. 컴퓨터는 페이로드와 헤더를 포함한 모든 데이터를 암호화하고, 암호화된 데이터에 새 헤더를 추가한다.
  2. 전송 모드
    전송 모드에서는 데이터 패킷의 페이로드만 암호화하고, IP 헤더는 원래의 형태로 유지한다. 암호화되지 않은 패킷 헤더를 통해 라우터는 각 데이터 패킷의 대상 주소를 식별한다. 따라서 전송 모드는 두 컴퓨터 간의 직접 연결을 보호하는 경우와 같이 가깝고 신뢰할 수 있는 네트워크에서 사용된다.


SSL(Secure Sockets Layer)와 TLS(Transport Layer Security)

SSL/TLS

SSL은 암호화 기반 인터넷 보안 프로토콜로, 전달되는 모든 데이터를 암호화하고 특정한 유형의 사이버 공격도 차단한다. 다만 모든 버전에서 취약점이 발견되어 사용 중단되었으며, 3.0 이후 업데이트도 없어 점차 사라져 가고 있다.
SSL의 보안 취약점을 보완하여 나타난 것이 TLS이다.

TLS는 기존 SSL 취약성을 수정하는 업그레이드된 SSL 버전으로, 기본적으로는 SSL 3.0을 약간 변형시킨 버전이다. 더 효율적으로 인증하고 암호화된 통신 채널을 지원한다.

SSL/TLS는 개인정보의 보호를 제공하기 위해 웹에서 전송되는 데이터를 암호화한다. 그리고 클라이언트와 서버 간의 핸드셰이크를 통해 인증이 이루어지며, 데이터에 디지털 서명을 함으로써 데이터의 무결성을 확보한다.

SSL/TLS 핸드셰이크

핸드셰이크는 클라이언트와 서버 간의 메시지 교환으로, HTTPS 웹에 처음 연결할 때 진행되는 단계이다. 세부 단계는 클라이언트와 서버에서 지원하는 암호화 알고리즘이나 키 교환 알고리즘에 따라 달라지지만, 가장 일반적으로는 RSA 키 교환 알고리즘이 사용된다.
1. 클라이언트 → 서버 메시지 전송 : 핸드셰이크가 시작되는 지점으로, 이 메시지에는 TLS 버전, 암호화 알고리즘, 무작위의 바이트 문자열 등이 포함된다.
2. 서버 → 클라이언트 메시지 전송 : 클라이언트의 메시지에 대한 응답으로서 서버의 SSL 인증서, 선택한 암호화 알고리즘, 서버에서 생성한 무작위 바이트 문자열 등을 포함한 메시지를 전송한다.
3. 인증 : 클라이언트가 서버의 SSL 인증서를 발행 기관에 검증한다.
4. 예비 마스터 암호 : 클라이언트는 무작위 바이트 문자열을 공개 키로 암호화한 premater secret 키를 서버로 전송한다.
5. 개인 키 사용 : 서버는 premater secret 키를 개인 키를 통해 복호화한다.
6. 세션 키 생성 : 클라이언트와 서버는 클라이언트가 생성한 무작위 키, 서버가 생성한 무작위 키, premater secret 키를 통해 세션 키를 생성하며, 이때 양쪽의 키는 동일해야 한다.
7. 클라이언트 완료 전송 : 클라이언트는 세션 키로 암호화된 완료 메시지를 전송한다.
8. 서버 완료 전송 : 서버도 세션 키로 암호화된 완료 메시지를 전송한다.
9. 핸드셰이크 완료 : 핸드셰이크가 완료되고, 세션 키를 이용해 통신을 진행한다.



방화벽(Firewall)

개요

방화벽은 일련의 보안 규칙을 기반으로 네트워크 트래픽을 모니터링하고 제어하는 보안 시스템이다. 일반적으로 신뢰할 수 없는 네트워크(대표적으로 인터넷)과 신뢰할 수 있는 네트워크(내부 네트워크) 사이에 위치하여 온라인 공격으로부터 네트워크를 보호한다.

방화벽에서는 수신 혹은 발신 트래픽의 통과 허용 여부를 결정한다. 이는 하드웨어나 소프트웨어, 혹은 둘 모두를 결합하여 구축할 수 있다.

방화벽의 주요 기능

  1. 접근 통제(Access control)
    허용된 서비스나 전자우편 서버, 웹 서버 등과 같은 특정 호스트를 제외하고 외부에서 내부 네트워크로의 접근을 통제한다(패킷 필터링 혹은 프록시 방식 등을 사용).
  2. 인증
    • 메시지 인증 : VPN 등 신뢰할 수 있는 네트워크를 통해 전송되는 메시지의 신뢰성을 보장
    • 사용자 인증 : 방화벽을 통과하는 트래픽에 대하여 사용자가 누군지를 인증하는 기능(OTP, Token, Password 등)
    • 클라이언트 인증 : 특수한 경우 접속을 요구하는 호스트에 대하여 인가된 호스트인지를 확인
  3. 감사 및 로그 기능(Auditing/Logging)
    정책 설정 및 변경, 관리자 접근, 네트워크 트래픽 허용 또는 차단과 관련된 사항 등 접속 정보를 로그로 남김
  4. 프라이버시 보호(Privacy protection)
    이중 DNS, 프록시 기능, NAT 기능 등을 제공함으로써 내부 네트워크와 외부 내트워크 간 중개자 역할을 하고 내부 네트워크의 정보 유출을 방지함
  5. 서비스 통제(Service control)
    안전하지 않거나 위험성이 있는 서비스를 필터링함으로써 내부 네트워크를 보호함
  6. 데이터 암호화(Data encryption)
    방화벽에서 다른 방화벽까지 전송되는 데이터를 암호화

방화벽 동작 방식

  1. 패킷 필터링(Packet filtering)
    • 데이터 링크 계층(OSI Layer 2)에서 네트워크 계층(OSI Layer 3)으로 전달되는 패킷에 대하여 패킷 내의 주소와 서비스 포트를 검색하고 정의된 보안 규칙에 따라 서비스의 접근근 허용 여부를 결정
    • 가장 기초적인 방식으로 다른 방식에 비해 빠른 속도를 보이나 강력한 로깅 기능이나 사용자 인증은 불가하며, 패킷 내의 데이터를 이용한 공격은 차단이 불가능함
  2. 상태 추적(Stateful inspection)
    • 2세대 방화벽으로서 패킷 필터링 방식의 취약성(내부 데이터를 이용한 공격에 취약한 점)을 보완
    • 기존 패킷 필터링 기능에 Session 추적 기능을 추가하여 일련의 네트워크 서비스의 순서를 추적하고 순서에 위배되는 패킷은 모두 차단함
    • DoS나 DDos 공격으로 상태 목록에 거짓 정보가 가득 차면 방화벽이 일시적으로 다운될 수 있으며, 방화벽 재구동 시 현재 연결에 대한 모든 정보가 상실되어 정당한 패킷에 대해서도 액세스 거부가 발생할 수 있음
  3. 애플리케이션 게이트웨이(Application gateway)
    • 3세대 방화벽으로서 애플리케이션 계층(OSI Layer 7)까지 동작하여 통과하는 패킷의 헤더 내 데이터 영역까지 체크가 가능
    • 패킷 필터링 방식보다 높은 보안 설정이 가능하며, 일회용 패스어드를 이용한 강력한 사용자 인증이 가능
    • Session에 대한 정보 추적이 가능하며 content security가 가능함
    • 네트워크 부하가 크고 하드웨어에 의존적이며, 미리 정의된 어플리케이션만 수용 가능하여 빠르게 변화하는 인터넷 어플리케이션에는 대응하지 못함
  4. 서킷 게이트웨이(Circuit gateway)
    • 세션 계층(OSI Layer 5)과 어플리케이션 계층 사이에서 접근 제어를 실시하는 방화벽
    • 사용자 측 PC에 방화벽의 대표 프록시와 통신하기 위한 '수정된 클라이언트 프로그램'이 필요함
    • 수정된 클라이언트 프로그램이 설치된 사용자에 대해서는 별도의 인증 절차 없이 서비스를 제공
  5. 하이브리드(Hybrid)
    • 패킷 필터링 방식과 어플리케이션 방식을 혼합
    • 어플리케이션 방식의 최대 단점인 '다양한 응용 서비스의 수용'을 패킷 필터링 방식으로 제공
    • 여러 유형의 방화벽 특징을 보유하여 커버리지가 넓음
    • 관리가 복잡하며, 설치 시 전문적인 네트워크 컨설팅이 필요함

웹 애플리케이션 방화벽(Web Application Firewall, WAF)

기존 방화벽이 악의적 웹 애플리케이션으로부터 사설 네트워크를 보호하는 데 도움을 제공하는 반면, WAF는 악의적 사용자로부터 웹 애플리케이션을 보호하는 역할을 한다. WAF는 웹 애플리케이션과 인터넷 간의 HTTP 트래픽을 모니터링하고 필터링하여 교차 사이트 스크립팅(XSS), SQL Injection 등의 공격으로부터 웹 애플리케이션을 보호한다.

WAF는 웹 애플리케이션의 앞단에 배치되어 인터넷으로부터 서버를 보호하는 역방향 프록시 서버의 역할을 한다.



참고 자료

profile
AI, NLP, Data analysis로 나아가고자 하는 개발자 지망생

0개의 댓글