Journey to Security/Linux OS 39

[방화벽] iptables Conntrack (1) 상태 기반 룰 설정

방화벽이 연결 상태 추적을 못하면 패킷이 새로운 연결 요청인지, 이미 허가된 세션의 일부인지, 아니면 아무 연결도 없는 상태에서 날아온 비정상 패킷인지 구분할 수 없다.iptables의 conntrack 모듈은 이러한 문제를 해결하는 상태 추적 엔진이다. 1. conntrack이란?conntrack(Connection Tracking)은 Linux 커널의 netfilter 프레임워크 안에 있는 상태 추적 모듈이다.커널은 이 모듈을 통해 모든 네트워크 연결의 상태를 테이블에 기록하고, iptables 룰이 각 패킷의 "상태"를 기준으로 허용 / 차단 여부를 결정할 수 있도록 만든다.iptables에서 상태 기반 필터링을 사용하려면 -m state 또는 -m conntrack 매칭 모듈을 지정한다. # -m..

[방화벽] iptables - DNS 룰 설정

이전 포스팅에서 iptables의 기본 구조와 주요 명령어를 살펴봤다.이번에는 실제로 방화벽 룰을 적용한 상태에서 의도치 않게 발생하는 문제를 해결해 보자.1. SSH, HTTP, HTTPS 트래픽만 허용먼저 filter table의 INPUT/OUTPUT 체인에 아래와 같이 룰을 추가한다.# INPUT — 외부에서 서버로 들어오는 트래픽iptables -A INPUT -p tcp --dport 443 -j ACCEPTiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A INPUT -j DROP# OUTPUT — 서버에서 외부로 나가는 트래픽iptables -A OUTPUT..

[방화벽] iptables 저장/복구 방법

1. iptables 룰의 기본 특징1️⃣ iptables 룰은 왜 저장이 필요한가iptables 룰은 커널 메모리에 적재된다.직접 iptables -A 나 iptables -I로 추가한 룰은 현재 실행 중인 시스템에서는 작동하지만, 재부팅하면 전부 사라진다.영구적으로 유지하려면 룰을 파일로 덤프하고, 부팅 시 복원하는 별도 프로세스가 필요하다. 상태 저장 위치 재부팅 후 iptables -A 직후커널 메모리❌ 사라짐iptables-save > 이후파일(/etc/sysconfig/iptables)✅ 복구 가능 2️⃣ 핵심 명령어 3개 (root 사용자 기준) 🔵 iptables-saveiptables-save > /etc/sysconfig/iptables 현재 커널 메모리에 적재된 모든 테이블(f..

[방화벽] 리눅스 호스트 방화벽 iptables에 대해 알아보자

iptables는 리눅스 서버 운영에서 매우 중요하다.클라우드 환경과 컨테이너 오케스트레이션 도구들이 내부적으로 iptables 규칙을 생성하기 때문에 iptables를 잘 다루어야 네트워크 디버깅을 할 수 있다. 참고로 리눅스 커널 3.13부터 iptables의 후속 기술인 nftables가 도입되었고, 최신 배포판들은 nftables를 기본으로 채택하고 있다.그럼에도 도커와 쿠버네티스는 여전히 내부적으로 iptables 규칙을 대량 생성하고, 많은 운영 환경의 기존 스크립트가 iptables 문법으로 작성되어 있기 때문에 iptables를 이해하는 것이 중요하다.1. iptables의 특징1️⃣ 호스트 기반 방화벽방화벽은 위치에 따라 크게 두 가지로 나뉜다.네트워크 방화벽은 네트워크 경계에서 트래픽을..

파이썬으로 소켓 통신 연결 구현하기

네트워크 프로그래밍이란 결국 프로세스 간의 통신을 의미하며, 이를 가능하게 하는 핵심 도구가 바로 소켓(Socket)이다.파이썬 socket 모듈을 활용하면 리눅스 환경에서 서버와 클라이언트를 직접 구현하고 데이터를 주고받는 과정을 명확히 이해할 수 있다. 1. 소켓 통신의 기본 개념소켓은 네트워크상의 두 프로그램이 서로 데이터를 주고받을 수 있도록 연결해 주는 통신 종착점(Endpoint)을 의미한다.서버와 클라이언트는 각각 역할에 맞는 소켓을 생성하여 통신에 참여한다.🟢 서버와 클라이언트의 역할서버(Server): 클라이언트의 연결 요청을 기다리다가 요청이 오면 수락하여 통신용 소켓을 생성한다. 연결을 기다리는 소켓을 리스닝 소켓, 연결된 클라이언트와 통신하는 소켓을 커넥션 소켓이라고 한다.클라이언..

구형 노트북에 Rocky Linux 9 서버 설치하기 (+wifi 연결)

노트북에 리눅스 설치를 시도한 것은 사실 이번이 두번째다. 첫 설치 시도 중 노트북에 내장된 m-SATA가 죽어버렸기 때문이다...😅 SSD가 죽었다는 사실을 확인한 과정도 정말 지난했는데, 굳이 글로 기록하진 않겠지만 사진 한 장으로 요약이 가능할 것 같다. 그렇다고 이것 때문에 SSD를 사기에는... SSD가 생각보다 너무 비쌌다.이 상태로 설치를 중단하고 두어달 방치하고 있었는데, 이번에 동생에게 안 쓰는 노트북을 하나 달라고 해서 그 노트북 안에 있던 HDD를 하나 뜯어냈다. 요즘 아무리 옛날 노트북이라도 HDD는 보기 힘든데, 진짜 옛날 노트북이긴 한가보다.안타깝게도 SSD와 규격이 맞질 않으니 노트북 안에 넣을 수는 없고, 그냥 리더기를 하나 사서 외장으로 쓰기로 했다. 어쨌든 다시 한 번..

OpenSSL로 Apache HTTPS 인증서 생성하기 (2) 루트 인증서 등록

지난 포스팅에서는 자가 서명 인증 방식으로 단일 도메인 인증서와 멀티 도메인 인증서를 생성하는 방법을 알아보았다.자가 서명 인증서는 스스로 CA(Certificate Authority) 역할을 하기 때문에 기본적으로 클라이언트 사이드에 신뢰할 수 있는 루트 인증기관(CA) 인증서로 등록되어 있지 않다. 따라서 클라이언트 브라우저에서 '안전하다'고 인식하지 않아 다음과 같은 경고가 뜬다. 이러한 자가 서명 인증서도 '신뢰할 수 있는 루트 인증 기관'으로 수동 등록하면 브라우저에서 안전한 인증으로 인식할 수 있다. 5. 신뢰할 수 있는 루트 CA 인증서로 등록하기 1️⃣ 인증서 복사 (서버)클라이언트에서 서버의 인증서를 웹 경로로 다운받을 수 있도록 웹 디렉터리에 복사한다.cp /etc/pki/tls/ce..

OpenSSL로 Apache HTTPS 인증서 생성하기 (1) SAN, 와일드카드 인증서

웹 서비스를 운영할 때 HTTPS(HyperText Transfer Protocol Secure)는 필수다.HTTP는 데이터를 평문으로 전송하기 때문에 스니핑(Sniffing) 위협에 노출되어 있지만, HTTPS는 SSL/TLS 프로토콜을 통해 데이터를 암호화하여 보안성을 확보한다. Rocky Linux 9 환경에서 Apache 웹 서버를 이용해 단일 도메인, 멀티 도메인(SAN), 그리고 와일드카드(*) 인증서를 생성하고 적용하는 과정을 실습하고, 실무에서 인증서가 어떤 과정을 거쳐 발급되는지, 그리고 그 과정에서 핵심 역할을 하는 CSR(Certificate Signing Request)이 무엇인지도 살펴보자. 1. SSL/TLS 인증서의 기본 개념 및 체계인증서는 클라이언트(브라우저)와 서버 간의 ..

[시스템] C 프로그램으로 이해하는 멀티쓰레드

1. 쓰레드(Thread)란 무엇인가?쓰레드는 프로세스 내부에서 실제로 작업을 수행하는 실행 흐름의 단위다.프로세스가 운영체제로부터 자원을 할당받는 작업의 단위라면, 쓰레드는 그 자원을 이용하여 실제로 코드를 실행하는 주체다.멀티쓰레드의 필요성하나의 프로그램 안에서 다음과 같은 작업들을 동시에 수행해야 할 때 멀티쓰레드 구조를 사용한다.키보드 입력 대기화면 인터페이스(UI) 갱신네트워크 데이터 송수신대용량 파일 읽기/쓰기프로세스 vs 쓰레드구분프로세스 (Process)쓰레드 (Thread)정의실행 중인 프로그램의 인스턴스프로세스 내의 실행 흐름메모리독립된 메모리 공간을 가짐프로세스 내 메모리를 공유 (Stack 제외)자원 공유IPC(Inter-Process Communication) 필요직접 공유 가능 ..

1 2 3 4