# 실전 nftables 가이드: Debian에서 네트워크 보안 강화
Debian의 nftables는 서버나 워크스테이션에서 강력한 트래픽 필터링을 제공합니다. 목표는? 원치 않는 수신 연결 차단과 발신 트래픽 제어입니다. 방법은? 위협 모델링, 접근 제어 정의, 필터링 규칙 작성입니다.
Debian 11.4 netinstall VM 템플릿으로 시작하세요: 최소 설치, 불필요한 패키지 없음. 그 후 apt install mc ssh conntrack으로 SSH, Midnight Commander, conntrack 추가. QEMU-KVM이나 VirtualBox 같은 네트워크 제어 가능한 가상화 플랫폼 사용.
위협 모델링과 대응 전략
주요 위협을 파악하세요:
- T1: 서비스 취약점 — 포트/IP별 수신 트래픽 차단.
- T2: DoS 공격 — 패킷 속도 제한, 루프백 소스(127.0.0.0/8, lo 제외) 드롭.
- T3: 무차별 대입 공격 — 실패 로그인 추적 후 IP 차단.
- T4: 악성 발신 연결 — IP, 포트, 프로토콜별 필터링.
- T5: 권한 없는 포트 — 새로운 수신 연결 금지.
접근 제어 방식, 기본부터 강화까지:
- 최소 (워크스테이션): 기존 연결 외 모든 수신 차단; 발신은 모두 허용.
- 표준 (서버): SSH(22), HTTP/HTTPS(80/443), ICMP 허용; conntrack 제한.
- 강화: IP 화이트리스트, 포트 속도 제한, DoS 블랙리스트.
강화된 서버 보호 설정
실습 환경: 192.168.1.0/24 네트워크의 Debian 서버, eth0 인터페이스.
임무: 강화 보안 nftables 배포.
준비 단계:
apt update && apt install nftables
systemctl enable nftables
/etc/nftables.conf 규칙:
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0; policy drop; }
nft add chain inet filter output { type filter hook output priority 0; policy accept; }
nft add chain inet filter forward { type filter hook forward priority 0; policy drop; }
# 기존/관련 연결
nft add rule inet filter input ct state established,related accept
# 루프백
nft add rule inet filter input iifname "lo" accept
# ICMP
nft add rule inet filter input ip protocol icmp icmp type { echo-request, echo-reply } accept
# SSH 속도 제한
nft add rule inet filter input tcp dport 22 ct state new limit rate 5/minute accept
nft add rule inet filter input tcp dport 22 ct state new drop
# 루프백 소스 드롭
nft add rule inet filter input ip saddr 127.0.0.0/8 iifname != "lo" drop
nft add rule inet filter input ct state invalid drop
nft add rule inet filter input accept
적용: nft -f /etc/nftables.conf. 확인: nft list ruleset, conntrack -L.
방화벽 테스트
실습: 클라이언트(192.168.1.10), 서버(192.168.1.20).
임무: 포트 스캔, DoS 저항, 발신 흐름 확인.
단계:
nmap -p 22,80,443 192.168.1.20— SSH만 열림.hping3 --flood -S 192.168.1.20 -p 22— 속도 제한 작동.tcpdump -i eth0으로 드롭 관찰.
라우팅을 통한 네트워크 세분화
IP 포워딩 활성화: sysctl net.ipv4.ip_forward=1.
실습: 라우터(eth0: LAN1 192.168.10.0/24, eth1: LAN2 192.168.20.0/24).
임무: 사용자와 서버 영역 격리.
규칙:
nft add table inet filter
nft add chain inet filter forward { type filter hook forward priority 0; policy drop; }
# 사용자 → 서버: 주요 포트만
nft add rule inet filter forward iifname "eth0" oifname "eth1" tcp dport {22,80,443} ct state new accept
nft add rule inet filter forward iifname "eth0" oifname "eth1" ct state established,related accept
# 역방향
nft add rule inet filter forward iifname "eth1" oifname "eth0" ct state established,related accept
# 서버 → 인터넷
nft add rule inet filter forward iifname "eth1" oifname "eth2" accept
L2 세분화 (스위치 방화벽)
IP 서브넷 불필요: VLAN이나 MAC 기반 필터링 사용.
브리지 규칙:
nft add table bridge filter
nft add chain bridge filter forward { type filter hook forward priority 0; }
# MAC 그룹 간 차단
nft add rule bridge filter forward ether saddr 00:11:22:33:44:00 ether daddr 00:55:66:77:88:99 drop
OneButtonFirewall: 빠른 세그먼트 보호
빠른 배포 프로젝트: 템플릿 기반 규칙 생성 스크립트.
실습: 세그먼트 간 OBF 장치.
작동 원리: 스크립트가 JSON/YAML 설정 파싱 후 nftables 적용.
장점: 설정 제로, 자동 업데이트. 단점: 유연성 부족.
사용 사례: 보안 전문가 없는 홈 오피스, 소규모 사업체.
핵심 요약:
- 위협 모델링부터 시작.
- 명시적 허용과 기본 드롭 정책.
- 속도 제한과 conntrack 테스트.
- 보안과 사용성 균형.
- nftables 로그 모니터링(
nft log rule).
— Editorial Team
아직 댓글이 없습니다.