
이미지 제안:[외부 네트워크 -> PREROUTING -> INPUT -> 서버 내부 -> OUTPUT -> POSTROUTING -> 외부 네트워크로 이어지는 패킷 흐름 다이어그램]
# !/bin/bash
# 1. 기존에 설정된 모든 규칙을 초기화(Flush)합니다.
sudo iptables -F
# 2. 들어오는 패킷(INPUT)의 기본 정책을 모두 버림(DROP)으로 설정합니다.
sudo iptables -P INPUT DROP
# 3. 통과하는 패킷(FORWARD)의 기본 정책도 버림으로 설정합니다.
sudo iptables -P FORWARD DROP
# 4. 나가는 패킷(OUTPUT)은 편의를 위해 보통 허용(ACCEPT)으로 둡니다.
sudo iptables -P OUTPUT ACCEPT#!/bin/bash
# [상황 1] 로컬 루프백(localhost) 통신은 무조건 허용합니다.
# 시스템 내부 프로세스 간의 통신을 위해 필수입니다. (-i: input interface)
sudo iptables -A INPUT -i lo -j ACCEPT
# [상황 2] 웹 서비스(HTTP: 80, HTTPS: 443) 포트를 외부로 개방합니다.
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# [상황 3] 관리자 접속을 위한 SSH(22) 포트를 허용합니다.
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# [상황 4] 침해 사고가 발생했던 특정 해커의 IP(203.0.113.50)를 영구 차단합니다.
# -s 옵션으로 출발지를 지정하고 DROP 처리합니다.
sudo iptables -A INPUT -s 203.0.113.50 -j DROP