Linux 방화벽 설정: iptables 기초 및 확장 기능

iptables 기본 구조 및 사용법

iptables는 Linux 시스템에서 네트워크 트래픽을 제어하는 핵심 도구입니다. 기본 명령 구조는 다음과 같습니다:

iptables -t 테이블명 옵션 체인 이름 조건 동작

설치 및 시작

  • 패키지 설치: yum install iptables*
  • 서비스 시작: systemctl start iptables
  • firewalld 비활성화: systemctl disable --now firewalld

주요 옵션 설명

옵션설명
-t사용할 테이블 지정 (filter, nat, mangle 등)
-L현재 규칙 목록 출력
-v패킷 수 및 크기 정보 표시
-nIP 주소를 해석하지 않고 그대로 표시
-A체인의 끝에 규칙 추가
-I체인의 처음에 규칙 삽입
-F모든 규칙 삭제
-Z패킷 카운터 초기화

동작 유형

동작설명
ACCEPT패킷 허용, 이후 규칙 검사 중단
REJECT거부하고 상대방에게 거부 메시지 전송
DROP패킷 무시, 후속 처리 없음
REDIRECT다른 포트로 리디렉션, 다음 규칙 검사 계속

네트워크 조건 매칭

  • -s: 소스 주소 (발신자)
  • -d: 목적지 주소 (수신자)
  • --sport: 소스 포트
  • --dport: 목적지 포트
  • -i: 들어오는 네트워크 인터페이스
  • -o: 나가는 네트워크 인터페이스
  • -p: 프로토콜 지정 (TCP, UDP, ICMP 등)
  • -m: 모듈 사용 (확장 기능 활성화)
  • -j: 적용할 동작 지정

실습 사례

  1. SSH만 허용
    iptables -t filter -A INPUT -p TCP --dport 22 -j ACCEPT
    iptables -t filter -A INPUT -p TCP -j DROP
  2. SSH, HTTP, HTTPS만 허용
    iptables -t filter -A INPUT -p TCP --dport 22 -j ACCEPT
    iptables -t filter -A INPUT -p TCP --dport 80 -j ACCEPT
    iptables -t filter -A INPUT -p TCP --dport 443 -j ACCEPT
    iptables -t filter -A INPUT -p TCP -j DROP
  3. 특정 서브넷 접근 제한
    iptables -t filter -A INPUT -p TCP -s 192.168.15.71 -d 192.168.15.81 --dport 22 -j ACCEPT
    iptables -t filter -A INPUT -p TCP -j DROP
  4. 외부 통신 차단 (특정 인터페이스)
    iptables -t filter -A INPUT -p TCP -i eth0 -j DROP
  5. 포트 리디렉션 (8080 → 80)
    iptables -t nat -A PREROUTING -p TCP --dport 8080 -j REDIRECT --to-port 80
  6. 특정 시간대 서비스 제한
    iptables -t filter -A INPUT -p TCP -m time --timestart 12:00 --timestop 13:00 -j DROP
    ※ UTC 기준 시간 사용

확장 모듈 활용

multiport: 다중 포트 일괄 처리

iptables -t filter -A INPUT -p TCP -m multiport --dports 22,80,443,30000:50000 -j ACCEPT

iprange: IP 범위 지정

iptables -t filter -A INPUT -p TCP -m iprange --src-range 192.168.15.1-192.168.15.10 -j ACCEPT

string: 문자열 패턴 매칭

iptables -t filter -A INPUT -p TCP -m string --string "HelloWorld" --algo kmp -j DROP

time: 시간 기반 필터링

iptables -t filter -A INPUT -p TCP -m time --timestart 12:00 --timestop 13:00 -j DROP

icmp: ICMP 제어

iptables -t filter -A INPUT -p ICMP -m icmp --icmp-type echo-request -j DROP

connlimit: 동시 연결 수 제한

iptables -t filter -A INPUT -p TCP --dport 22 -m connlimit --connlimit-above 2 -j DROP

limit: 속도 제한

iptables -t filter -A INPUT -p TCP -m limit --limit 333/s --limit-burst 5 -j ACCEPT

시스템 확인 명령어

  • 포트 사용 현황 확인: netstat -nutlp
  • 웹 요청 테스트: curl http://example.com

태그: iptables Linux networking firewall rules packet filtering port forwarding

7월 13일 19:45에 게시됨