100===Dev Ops/Iptables

리눅스 방화벽의 핵심, iptables 완벽 가이드 🛡️

블로글러 2024. 11. 18. 19:51

안녕하세요! 오늘은 리눅스 시스템의 보안을 책임지는 iptables에 대해 상세히 알아보겠습니다.

iptables가 뭔가요? 🤔

iptables는 마치 건물의 보안 게이트와 같습니다!

  • 리눅스 커널의 netfilter 프레임워크를 사용하는 방화벽 도구
  • 네트워크 트래픽을 필터링하고 제어하는 시스템
  • 패킷의 입장부터 퇴장까지 모든 과정을 통제

iptables의 기본 구조 📊

1. 테이블 (Tables)

# 주요 테이블 종류
1. filter (기본): 패킷 필터링
2. nat: 네트워크 주소 변환
3. mangle: 패킷 변조
4. raw: 연결 추적 설정

2. 체인 (Chains)

# 기본 체인
INPUT: 호스트로 들어오는 패킷
OUTPUT: 호스트에서 나가는 패킷
FORWARD: 호스트를 통과하는 패킷
PREROUTING: 라우팅 결정 전 패킷
POSTROUTING: 라우팅 결정 후 패킷

주요 명령어 실전 가이드 💡

1. 기본 규칙 확인

# 현재 규칙 조회
iptables -L

# 상세 정보 조회
iptables -L -v

2. 규칙 추가하기

# SSH 접속 허용 (포트 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 웹 서버 접속 허용 (포트 80, 443)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

3. 특정 IP 차단하기

# 특정 IP 차단
iptables -A INPUT -s 192.168.1.100 -j DROP

# IP 대역 차단
iptables -A INPUT -s 192.168.1.0/24 -j DROP

정책 설정 전략 🎯

1. 기본 정책 설정

# 기본적으로 모든 것을 차단
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 로컬호스트 통신 허용
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

2. 상태 기반 필터링

# 기존 연결에 대한 패킷 허용
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

실전 활용 예시 🌟

1. 웹 서버 보안 설정

# HTTP/HTTPS 허용
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 특정 국가 IP 차단 (예: 중국)
iptables -A INPUT -s 1.0.0.0/8 -j DROP

2. DOS 공격 방어

# 연결 수 제한
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j DROP

주의사항 ⚠️

  1. 규칙 순서 중요

    • 첫 번째로 매칭되는 규칙이 적용
    • 가장 많이 사용되는 규칙을 상위에 배치
  2. 백업 필수

    # 규칙 백업
    iptables-save > /etc/iptables.rules
  3. 테스트 필수

    • SSH 접속을 차단하지 않도록 주의
    • 새로운 규칙 적용 전 반드시 테스트

성능 최적화 팁 💪

  1. 불필요한 로깅 제거

    • 로깅은 시스템 부하 유발
    • 중요한 이벤트만 선별적 로깅
  2. 체인 최적화

    • 자주 사용되는 규칙 상위 배치
    • 불필요한 규칙 제거

참고 자료 📚

  1. Red Hat Linux Security Guide

  2. The Netfilter/iptables Project

  3. Linux Documentation Project

728x90