[구름 k8s] TIL 1-1-4

Peppie·2022년 8월 4일
0

1. 네트워크 이해

네트워크 패킷 분석

Wireshark 프로그램

  • 오픈소스 방식의 패킷 분석 프로그램
  • Windows, Linux, MacOS에서 제약없이 사용가능
  • 네트워크로 송수신되는 패킷에 대한 분석을 통한 보안이슈 / 트러블슈팅 분석

오픈소스 (Open Source) 프로그램

= 공개 프로그램
기본적으로 무료사용 가능, 프로그램 소스코드 공개가 일반적

장점

  • 무료로 프로그램 사용 가능
  • 프로그램 소스 제공; 필요에 따른 기능 수정으로 나만의 프로그램 작성

단점

  • 무료 & 명확한 관리 주체 부재 -> 보안이슈 취약 및 기능 업그레이드 수월하지 못함
  • 사용 중 문제점 발생 시 직접 도움 받기 어려움

네트워크 연결장치 관련 용어

네트워크 어댑터(adapter)

네트워크 연결장치에 대한 용어

네트워크 장치 드라이버(driver)

네트워크 연결장치를 실제로 제어하는 프로그램 ; OS 내에 설치 및 사용

필터링

Filter toolbar를 이용하여 원하는 패킷 필터링 가능

  • icmp : icmp 패킷만 필터링
  • tcp : tcp 프로토콜 패킷만 필터링
  • tcp.port == 80 : tcp 포트 중 80번 포트(HTTP)로 송수신되는 패킷만 필터링
  • ip.addr == [IP 주소] : 특정 IP 주소로 송수신되는 패킷만 필터링
  • ip.src == [IP 주소] : source (송신측) IP 주소로부터 수신되는 패킷만 필터링

암호화 방식 (보안기능)

대칭 키 (비밀 키) 암호

  • 암호화 (encoding)와 복호화 (decoding)을 하나의 키로 수행
  • 관리 편하고 속도 빠르나 공개 키에 비해 상대적으로 보안 취약
  • 링크 참조

공개 키 암호화

  • 개인 키 (비밀 키)와 공개 키로 구성된 암호화 방법
  • 공개 키는 위부로 공개, 개인 키는 별도로 보관 -> 실제 암호화 내용이 유출되어도 안전하게 관리
  • 속도 떨어지더라도 성능 확실, 현재 일반적으로 사용하는 암호화 방식
  • 링크 참조

보안 프로토콜

인터넷이란 환경은 누구나 마음대로 사용가능
=> 패킷의 내용을 마음대로 열어볼 수 있으므로 데이터 송수신 시 데이터 보안 적용 필요

HTTPS

  • HTTP는 기본적으로 암호화되지 않은 데이터 송수신
    => HTTPS (HTTP Secure)는 HTTP 프로토콜에 암호화 적용한 프로토콜, 기본 포트번호는 443번

  • HTTP(S)는 연결을 계속적으로 유지하지 않는 프로토콜 => 항상 연결되어 있지 않음!
    만약 클라이언트에 대한 정보를 유지하려면 이전엔 쿠키(cookie, 클라이언트 쪽)를 많이 썼으나,
    보안 이슈(쿠키가 텍스트라서 누구나 접근가능)로 인해 요즘은 서버의 session에서 정보 관리 중
    (크롬 등의 브라우저에서는 아예 주소창에 https로만 접속하게끔 설정됨)

*쿠키 접속번호는 서버가 가지지만 쿠키 정보자체는 클라이언트에서 가짐
**보안관점에선 아예 공개 자체를 안하는게 불편해도 가장 확실함 (로그인 시 2차인증이 대세)

HTTPS가 사용하는 보안기능 (암호화 방식)

  • SSL ( Secure Sockets Layers ) : 현재 SSL 3.0까지 출시, 향후 업데이트 X
  • TLS ( Transport Layer Security )
    현재 TLS 1.0까지 출시
    SSL의 업그레이드 버전이지만 SSL 제작사와는 다른 회사에서 제작 및 관리
    통상 SSL이라는 보안기능은 사실상 TLS를 의미
  • HTTPS-SSL, HTTPS-TLS, HTTPS-SSL/TLS 등의 여러가지 형태로 표기

SSL/TLS 인증서

  • 클라이언트-서버 간 통신을 제3자가 보증해주는 문서
  • 클라이언트가 서버에 접속하면 -> 서버는 클라이언트에게 인증서 전송
    -> 클라이언트는 전달받은 인증서를 보고 신뢰할 수 있는 대상인지 확인 후
    -> 데이터를 보내는 절차 수행

SSL(TLS) 통신과정


1. 클라이언트에서 서버에 접속
1.1 클라이언트는 랜덤한 데이터와 현재 지원 가능한 암호화 방식 전달

2. 서버가 응답
2.1 인증서의 공개 키
2.2 서버에서 생성한 랜덤한 데이터
2.3 가장 안전한 암호화 수단

3. 클라이언트는 내장 인증 리스트에서 서버가 보낸 인증서 복호화
3.1 인증서가 내장 인증서에 없는 경우 사용자에게 경고
3.2 내장 인증서에 포함된 경우 서버를 신뢰할 수 있고 클라이언트가 전송한 랜덤한 데이터와 서버가 전송해준 랜덤한 데이터를 이용하여 Pre Master Secret 키 생성

4. 서버로부터 전송받은 공개 키로 Pre Master Secret 키를 암호화 후 서버에 전송 ->
서버는 개인 키로 Pre Master Secret 키 복호화 후 클라이언트와 Pre Master 키 공유

5. 서버와 클라이언트는 Pre Master Secret 키를 이용하여 Master Secret 키 값을 만든 후 해당 값으로 Session 키 생성

6. 서버와 클라이언트의 세션 생성, Session 키를 이용하여 암호화한 데이터를 주고받으며 통신
=> 대칭 키 암호화

대칭 키는 공개 키에 비해 빠르지만 키 전송에 문제 발생 여지 가능
=> SSL 핸드쉐이킹 과정에서 Key를 공유하기 위해 공개 키 암호화 방식을 이용, 이후 세션키를 사용할 때대칭 키 암호화 방식을 사용

2. Linux 개요

운영체제

컴퓨터 시스템을 운영할 수 있도록 환경을 구성하는 System SW

운영체제 구성

Kernel

HW (CPU / Memory / IO Device) 제어, 별도 UI 제공 X

  • 프로그램 (프로세스) 실행 관리
  • 파일 시스템 관리
  • Device 제어

Shell

사용자 - kernel 간 상호작용 수행 프로그램, CLI / GUI 두 방식 모두 채택

Linux

오픈소스 방식의 OS

  • Linux Kernel / Shell / Linux에서 사용하는 명령어 및 Application 모두 소스 공개됨
    예시) https://kernel.org

다중 사용자 (multi user) 지원 : 여러 사용자의 동시접속 허용
다중처리 (multi-processing / multitasking) 가능 : 동시에 여러 프로그램 실행 가능
주로 서버 목적으로 컴퓨터 운영시 사용

Linux 개발 과정

Linux Kernel 개발자: 리누스 토르발스 (Linus Torvalds)

git

리누스 토르발스가 소스 관리 목적으로 개발

git 기능

  • document (프로그램 소스, 파일 등) 이력 관리 (= 형상관리)
  • 여러 사용자의 협업 기능
  • repository (저장소) 기능

Linux Shell 개발: FSF (자유 소프트웨어 연합)

GNU (그누) 정신

"누구나 소프트웨어를 자유롭게 사용/복제/수정/배포 할 수 있어야 한다."

GNU / Linux 개발

  • Linux Kernel
  • GNU Shell 및 Application

Linux 구분

Linux

Linux Kernel을 의미

Linux 배포판

  • Linux Kernel
  • Shell
  • Desktop UI
  • 배보판 특화 Application
  • Utilities

=> 원칙적으로 Linux라고 하면 Linux Kernel을 의미하지만, 현재는 주로 Linux 배포판을 통칭함

Linux 배포판 종류

RedHat 계열

서버 운영체제로써 많이 사용, 특히 네트워크 운영에 강점

  • 유료: RHEL ( RedHat Enterprise Linux ) - 리눅스 자체는 유료가 아니나 기술지원 비용이 유료
  • 무료: CentOS (RHEL의 오픈소스, 2022년부터 별도 업데이트/업그레이드 중단), Fedora (공개 커뮤니티에 의해 제공)

Debian 계열

FSF의 GNU 프로젝트의 지원을 받은 배포판
Desktop 목적 사용에 강점

  • Debian
  • Ubuntu
    짝수년도 4월 버전은 LTS (Long Term Support, 업데이트 지원기간 10년) 버전

Slackware 계열

안정적인 동작, 주로 유럽/미국서 많이 사용 (국내 사용빈도 낮음)

배포판은 기본적으로 같은 Linux Kernel을 사용하더라도 설치방법, Application 지원 정도에 차이 존재

0개의 댓글