liminfo

Firewall Reference

방화벽 설정 레퍼런스

25개 결과

Firewall Reference 소개

Linux 방화벽 레퍼런스는 Linux 서버 및 네트워크 보안에 필수적인 방화벽 도구와 명령어를 검색할 수 있는 치트 시트입니다. iptables(규칙 목록 조회, INPUT/OUTPUT/FORWARD 체인, IP 기반 필터링, 기본 정책, 규칙 삽입/삭제, 저장/복원, conntrack 상태 추적), nftables(테이블/체인/규칙 관리, iptables 대체), 일반 규칙 패턴(ACCEPT, DROP, REJECT, 포트 범위, 멀티포트, 속도 제한, ICMP 제어), NAT 설정(SNAT, DNAT 포트포워딩, MASQUERADE), 패킷 로깅(LOG 타겟, nflog), 방화벽 관리 도구(firewalld 영역, ufw)를 다룹니다.

리눅스 서버를 관리하는 시스템 관리자, 네트워크 엔지니어, DevOps 실무자, 보안 전문가를 위해 설계되었습니다. 각 항목에는 터미널에 바로 복사하여 사용할 수 있는 명령어 예제가 포함되어 있습니다. 레거시 iptables와 최신 nftables 구문을 모두 다룹니다.

모든 처리는 브라우저에서 로컬로 이루어지며 서버로 데이터가 전송되지 않습니다. 다크 모드를 지원하고 데스크톱, 태블릿, 모바일에서 작동합니다.

주요 기능

  • iptables 레퍼런스: 규칙 조회(-L), 체인 규칙(-A/-I/-D), IP 필터링(-s), 기본 정책(-P), 저장/복원, conntrack 상태 추적
  • nftables 레퍼런스: 테이블 생성, 체인 관리, 핸들 기반 규칙 추가/삭제
  • 일반 방화벽 규칙: ACCEPT/DROP/REJECT, 포트 범위 지정, 멀티포트 매칭, ICMP 제어
  • --limit 및 --limit-burst 파라미터를 활용한 DDoS 방어 속도 제한 규칙
  • NAT 설정: SNAT(소스 주소 변환), DNAT(포트포워딩), 동적 IP용 MASQUERADE
  • 트래픽 분석을 위한 iptables LOG 타겟 및 nftables log prefix 패킷 로깅
  • --permanent 및 --reload 명령어를 포함한 firewalld 영역 관리(CentOS/RHEL)
  • 간편 방화벽 관리를 위한 ufw(Ubuntu Uncomplicated Firewall) 명령어

자주 묻는 질문

iptables와 nftables의 차이는 무엇인가요?

iptables는 수십 년간 표준이었던 전통적인 Linux 패킷 필터링 프레임워크입니다. nftables는 IPv4, IPv6, ARP, 브리징을 통합 구문으로 제공하는 최신 대체 도구입니다(iptables, ip6tables, arptables, ebtables 대체). nftables는 새로운 커널 서브시스템으로 더 나은 성능을 제공하고, 복잡한 매칭을 위한 세트와 맵을 지원하며, 더 깔끔한 구문을 사용합니다. iptables가 여전히 널리 사용되지만, Debian 10+, RHEL 8+, Ubuntu 20.04+ 등 최신 배포판에서는 nftables가 기본입니다.

iptables로 SSH만 허용하고 나머지는 차단하려면 어떻게 하나요?

INPUT 기본 정책을 DROP으로 설정한 후 SSH와 기존 연결을 명시적으로 허용합니다: "iptables -P INPUT DROP", "iptables -P FORWARD DROP", "iptables -P OUTPUT ACCEPT", "iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT", "iptables -A INPUT -p tcp --dport 22 -j ACCEPT", "iptables -A INPUT -i lo -j ACCEPT". "iptables-save > /etc/iptables.rules"로 저장합니다. 자신이 잠기는 것을 방지하기 위해 항상 기존 연결을 먼저 허용하세요.

iptables로 포트포워딩(DNAT)은 어떻게 설정하나요?

nat 테이블의 PREROUTING 체인에서 DNAT를 사용합니다: "iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:8080". 이렇게 하면 외부 포트 80이 내부 서버 192.168.1.10의 8080 포트로 전달됩니다. 전달된 트래픽도 허용해야 합니다: "iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 8080 -j ACCEPT". "echo 1 > /proc/sys/net/ipv4/ip_forward"로 IP 포워딩을 활성화하고 /etc/sysctl.conf에서 영구 설정합니다.

iptables에서 DROP과 REJECT의 차이는 무엇인가요?

DROP은 발신자에게 어떤 응답도 보내지 않고 패킷을 조용히 폐기합니다. 발신자는 타임아웃까지 기다려야 하므로 공격자가 포트 존재 여부를 판단하기 어렵습니다. REJECT는 ICMP "port unreachable" 또는 TCP RST 응답을 보내어 연결이 거부되었음을 즉시 알립니다. DROP은 외부 방화벽에서(보안 강화) 선호되고, REJECT는 내부 네트워크에서(정상 애플리케이션의 빠른 실패) 더 적합합니다.

DDoS 공격에 대한 속도 제한은 어떻게 설정하나요?

iptables의 limit 모듈을 사용합니다: "iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/min --limit-burst 5 -j ACCEPT" 다음에 "iptables -A INPUT -p tcp --dport 22 -j DROP". 이렇게 하면 초기 5개 연결을 허용하고 이후 분당 3개로 제한합니다. connlimit 모듈로 IP당 연결 수를 제한할 수도 있습니다: "iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP". fail2ban과 함께 사용하면 종합적인 보호가 가능합니다.

conntrack 상태 기반 필터링은 어떻게 작동하나요?

conntrack(연결 추적)은 iptables가 연결 상태를 기반으로 결정할 수 있게 합니다. 주요 상태: NEW(연결의 첫 패킷), ESTABLISHED(이미 수립된 연결의 일부), RELATED(수립된 연결과 관련된 패킷, FTP 데이터 등), INVALID(연결이 식별되지 않는 패킷). 표준 패턴은 먼저 ESTABLISHED,RELATED를 수락합니다: "iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT", 그 다음 특정 포트에 대해서만 NEW 연결을 허용합니다.

CentOS/RHEL에서 firewalld 영역 설정은 어떻게 하나요?

firewalld는 영역(zone)을 사용하여 네트워크 연결의 신뢰 수준을 정의합니다. "firewall-cmd --get-active-zones"로 현재 영역을 확인합니다. "firewall-cmd --zone=public --add-port=80/tcp --permanent"로 포트를 추가합니다. "firewall-cmd --zone=public --add-service=http --permanent"로 서비스를 추가합니다. 영구 규칙은 항상 --permanent를 추가하고 "firewall-cmd --reload"로 적용합니다. "firewall-cmd --zone=public --list-all"로 모든 규칙을 확인합니다.

Linux 게이트웨이에서 MASQUERADE를 사용한 인터넷 공유는 어떻게 하나요?

MASQUERADE는 나가는 인터페이스의 IP 주소를 자동으로 사용하는 동적 SNAT입니다. 설정: "iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE". 192.168.1.0/24 내부 네트워크가 eth0을 통해 인터넷에 접근할 수 있게 합니다. IP 포워딩 활성화: "echo 1 > /proc/sys/net/ipv4/ip_forward". 포워딩 트래픽 허용: "iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT"와 "iptables -A FORWARD -i eth0 -o eth1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT". MASQUERADE는 외부 IP가 동적(DHCP)일 때 SNAT보다 선호됩니다.