안녕하세요! 오늘은 리눅스 시스템의 보안을 책임지는 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
주의사항 ⚠️
규칙 순서 중요
- 첫 번째로 매칭되는 규칙이 적용
- 가장 많이 사용되는 규칙을 상위에 배치
백업 필수
# 규칙 백업 iptables-save > /etc/iptables.rules
테스트 필수
- SSH 접속을 차단하지 않도록 주의
- 새로운 규칙 적용 전 반드시 테스트
성능 최적화 팁 💪
불필요한 로깅 제거
- 로깅은 시스템 부하 유발
- 중요한 이벤트만 선별적 로깅
체인 최적화
- 자주 사용되는 규칙 상위 배치
- 불필요한 규칙 제거
참고 자료 📚
Red Hat Linux Security Guide
The Netfilter/iptables Project
Linux Documentation Project
728x90
'100===Dev Ops > Iptables' 카테고리의 다른 글
라우팅(Routing): 네트워크의 길찾기 내비게이션 🗺️ (0) | 2024.11.18 |
---|---|
Iptables Introduced (0) | 2024.06.13 |