전체 글 211

IPsec - 3계층 암호화 통신의 구조와 원리

1. IPsec이란?IPsec(Internet Protocol Security)은 IP 레이어(L3)에서 동작하는 보안 프로토콜 모음이다.상위 레이어 애플리케이션의 수정 없이 패킷 단위로 암호화·인증·무결성을 보장할 수 있다는 것이 특징이다.IPsec이 보장하는 네 가지 목표는 다음과 같다.기밀성데이터 암호화 — 도청 방지무결성데이터 변조 감지인증통신 상대방 신원 확인재전송 방지Replay Attack 차단 2. IPsec의 두 프로토콜: AH vs ESP1️⃣ AH (Authentication Header) — Protocol 51AH는 인증과 무결성만 제공한다.암호화 기능은 없으며, IP 헤더를 포함한 패킷 전체를 인증 범위에 포함시킨다.NAT 환경에서는 IP 헤더가 변조되기 때문에 AH 검증이 실패..

포워드 프록시(forward proxy) vs 리버스 프록시(reverse proxy)

네트워크 보안이나 인프라를 공부하게 되면 "프록시"라는 개념을 두 가지 맥락에서 알아야 한다.방화벽 정책을 짤 때도, Nginx 설정을 볼 때도 포워드 프록시와 리버스 프록시는 사실상 방향부터 목적까지 별개의 개념으로 이해해야 한다.두 프록시의 차이를 트래픽 방향과 보호 대상 기준으로 알아보자. 1. 포워드 프록시 (Forward Proxy)1️⃣ 정의와 위치포워드 프록시는 클라이언트 집단을 대신해 외부 인터넷으로 나가는 요청을 중계하는 중간자다.클라이언트는 직접 인터넷에 나가지 않고, 반드시 프록시를 거친다.[사내 PC들] → [프록시 서버] → 인터넷클라이언트 입장에서 프록시는 "나 대신 심부름해주는 대리인"이다.서버 입장에서는 실제 클라이언트가 누구인지 모른다 — 프록시의 IP만 보인다. 2️⃣ ..

[방화벽] iptables LOG target- 패킷 모니터링

iptables로 트래픽을 차단하는 것만큼 중요한 것이 어떤 패킷이 들어오고 나가는지 기록하는 것이다.1. LOG 타깃의 동작 원리1️⃣ Non-terminating targetiptables의 타깃은 크게 두 종류로 나뉜다.Target예시동작Terminating targetACCEPT, DROP, REJECT패킷을 처리하고 체인 순회를 종료Non-terminating targetLOG, MARK, CONNMARK처리 없이 다음 룰로 계속 진행여기서 살펴볼 LOG는 non-terminating target이다.패킷을 커널 로그에 기록하고, 체인 순회를 그대로 이어간다.즉, LOG 룰에 매칭된 패킷은 반드시 그 뒤의 룰에서 최종 처리된다.2️⃣ LOG 단독으로는 패킷을 막을 수 없다아래 구성은 의도와 다르..

[방화벽] iptables Conntrack (2) INVALID 패킷 탐지

iptables의 상태 추적(stateful inspection) 기능은 단순히 포트를 열고 닫는 수준을 넘어, 패킷이 현재 TCP 연결 상태와 맞지 않을 때 이를 INVALID로 분류해 자동으로 차단한다.이번에는 hping3로 비정상 패킷을 직접 만들어 INVALID 동작을 검증하고, LOG 타깃을 활용해 실시간 패킷 로깅 체계를 구축하는 방법을 알아보자. 1. INVALID 패킷이란?iptables의 -m state 모듈은 각 패킷을 NEW, ESTABLISHED, RELATED, INVALID 중 하나의 상태로 분류한다.이 중 INVALID는 기존 연결 테이블에 존재하지 않는 세션에 대해 연결 종료/리셋 신호가 들어올 때 붙는 레이블이다.TCP 플래그와 연결 상태의 관계를 정리하면 다음과 같다. T..

[방화벽] 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️⃣ 호스트 기반 방화벽방화벽은 위치에 따라 크게 두 가지로 나뉜다.네트워크 방화벽은 네트워크 경계에서 트래픽을..

DVWA 문제풀이: Command Injection

1. Command Injection 개념Command Injection은 사용자 입력값이 서버 측 OS 명령어 실행 함수(shell_exec, system, exec 등)에 그대로 전달될 때 발생하는 취약점이다.공격자는 ;, &&, | 같은 명령어 구분자(separator)를 이용해 의도하지 않은 명령어를 추가 실행시킨다. 구분자 동작 방식 ;앞 명령 결과와 무관하게 순차 실행&&앞 명령이 성공해야 뒤 명령 실행||앞 명령이 실패해야 뒤 명령 실행|앞 명령의 출력을 뒤 명령의 입력으로 전달 🔵 DVWA 실습 조건 : ping 기능 DVWA의 Command Injection 실습 화면을 보면 단순한 입력창 하나만 있다.IP 주소를 입력하면 서버가 해당 IP로 ping을 실행하고 결과를 브라우저에 출..

DVWA 문제풀이: Netcat을 이용한 Reverse Shell 공격

1. Reverse Shell이란?일반적인 원격 접속(Normal Shell)은 공격자가 피해 서버에 접속을 시도하는 방향이다.반면 Reverse Shell은 방향이 반대다.피해 서버가 공격자 쪽으로 먼저 연결을 맺는다. 이 방향 역전이 중요한 이유는 방화벽 정책 때문이다.대부분의 서버는 외부에서 들어오는 연결(Inbound)을 엄격하게 차단하지만, 서버가 외부로 나가는 연결(Outbound)은 상대적으로 허용하는 경우가 많다. Reverse Shell은 이 비대칭성을 이용한다. 2. Reverse Shell 실습Step 1️⃣ 공격자 PC(kali)에서 리스너 열기nc는 Netcat의 줄임말로, TCP/UDP 연결을 자유롭게 열고 닫을 수 있는 네트워크 유틸리티다.stdin/stdout을 네트워크 소켓..