방화벽 규칙 생성기
iptables 및 UFW 방화벽 규칙을 UI로 간편하게 생성합니다.
필수 규칙 알림
- 기존 연결 허용: ESTABLISHED, RELATED 상태의 패킷을 허용해야 기존 세션이 유지됩니다.
- 루프백(lo) 허용: 로컬 프로세스 간 통신을 위해 루프백 인터페이스를 반드시 허용하세요.
- SSH 우선: 원격 서버라면 SSH 포트를 먼저 허용하세요. 그렇지 않으면 서버에 접속할 수 없게 됩니다.
위 필수 규칙은 생성된 스크립트에 자동으로 포함됩니다.
#!/bin/bash # 방화벽 규칙 스크립트 # 생성일: 2026. 4. 18. # UFW 초기화 ufw --force reset # 기본 정책 설정 ufw default deny incoming ufw default allow outgoing # 필수 규칙: 루프백 허용 (UFW 자동 처리) # 필수 규칙: 기존 연결 허용 (UFW 자동 처리) # 사용자 규칙 # UFW 활성화 ufw --force enable # 상태 확인 ufw status verbose
방화벽 규칙 생성기 — 서버 보안의 첫 번째 방어선
방화벽은 네트워크 트래픽을 사전 정의된 규칙에 따라 필터링하는 보안 시스템입니다. 리눅스에서는 커널의 netfilter 프레임워크를 기반으로 iptables(레거시)와nftables(차세대)가 패킷 필터링을 담당하며,UFW(Uncomplicated Firewall)는 Ubuntu/Debian 계열에서 iptables를 쉽게 제어하기 위한 프론트엔드입니다. firewalld는 RHEL/CentOS 계열에서 zone 기반 방화벽 관리를 제공합니다. 이 도구는 UFW와 iptables 두 형식 모두 GUI로 간편하게 생성합니다.
iptables vs nftables vs UFW vs firewalld 비교
| 도구 | 대상 배포판 | 특성 |
|---|---|---|
| iptables | 전 배포판 | 레거시, 광범위 호환성 |
| nftables | 커널 3.13+ | 차세대, 통합 문법, 성능 향상 |
| UFW | Ubuntu/Debian | iptables 프론트엔드, 간단한 문법 |
| firewalld | RHEL/CentOS/Fedora | zone 기반, 런타임/영구 규칙 분리 |
기본 보안 구성 — iptables
# 기본 정책: 모든 인바운드 차단, 아웃바운드 허용 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # 루프백 허용 iptables -A INPUT -i lo -j ACCEPT # 기존 연결 허용 iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # SSH (소스 IP 제한) iptables -A INPUT -p tcp -s 203.0.113.0/24 --dport 22 -j ACCEPT # HTTP/HTTPS iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT
동일 구성 — UFW
ufw default deny incoming ufw default allow outgoing # SSH 접속 속도 제한 (30초 내 6회 초과 시 차단) ufw limit ssh # 특정 IP에서만 SSH 허용 ufw allow from 203.0.113.0/24 to any port 22 # 웹 서버 ufw allow 80/tcp ufw allow 443/tcp ufw --force enable
데이터베이스 접근 제한
# MySQL — 앱 서버 서브넷에서만 허용 iptables -A INPUT -p tcp -s 10.0.10.0/24 --dport 3306 -j ACCEPT iptables -A INPUT -p tcp --dport 3306 -j DROP # PostgreSQL — 동일 패턴 iptables -A INPUT -p tcp -s 10.0.10.0/24 --dport 5432 -j ACCEPT iptables -A INPUT -p tcp --dport 5432 -j DROP
인프라 규모별 방화벽 전략
소규모(1~3대): UFW로 호스트 방화벽을 구성합니다. 기본 DENY + SSH/HTTP/HTTPS 허용이면 충분합니다. ufw limit ssh로 브루트포스 공격을 완화합니다.
중규모(10~30대): 호스트 방화벽 + 클라우드 Security Group을 이중으로 적용합니다. Ansible/Terraform으로 방화벽 규칙을 코드로 관리(IaC)하여 일관성을 확보합니다.
대규모(100대 이상): 네트워크 방화벽(AWS Network Firewall, GCP Cloud Firewall)을 VPC 경계에 배치하고, Suricata/Snort 기반 IDS/IPS를 연동합니다. 모든 규칙 변경은 변경 관리 프로세스를 거치고 감사 로그를 SIEM에 전송합니다.
자주 사용하는 포트 레퍼런스
- 22 — SSH (IANA 할당, 인바운드 소스 IP 제한 필수)
- 80/443 — HTTP/HTTPS
- 3306 — MySQL, 5432 — PostgreSQL
- 6379 — Redis (인증 없이 공개 금지), 27017 — MongoDB
- 2375/2376 — Docker API (TLS 없는 2375는 반드시 차단)
- 9090/9100 — Prometheus/Node Exporter (모니터링 서브넷만 허용)
보안 베스트 프랙티스
- 기본 정책은 반드시 DENY(DROP)로 설정하세요 — 화이트리스트 방식이 블랙리스트보다 안전합니다.
- SSH 포트를 변경하거나 fail2ban을 설치하여 자동 스캔 공격을 줄이세요.
- 규칙 순서가 중요합니다 — iptables는 위에서 아래로 순차 평가하므로 구체적인 규칙을 먼저 배치하세요.
- Docker는 iptables 규칙을 자동으로 수정합니다 —
DOCKER-USER체인에 규칙을 추가하세요. - 방화벽 변경 전 현재 규칙을
iptables-save로 백업하세요.
관련 도구
서브넷 설계에는 서브넷 계산기를, SSH 접속 관리에는 SSH Config 생성기를, 웹 서버 보안에는 Nginx 설정 생성기를 활용하세요.
참고 자료
- netfilter/iptables 프로젝트 — netfilter.org
- UFW 공식 문서 — Ubuntu Community Wiki
- NIST SP 800-41 Rev.1 — Guidelines on Firewalls and Firewall Policy
- CIS Benchmarks — Linux Firewall Configuration