상단

Linux IPv4 환경에서 방화벽 서비스를 제공하는 iptables를 정리한다.

 

설치 가이드


  • iptables 설치

    • Ubuntu에 root로 로그인한다.

    • sudo apt-get install iptables

     
  • 설치 정보

    • 설치 폴더 :

    • 환경 폴더 :

    • 데이터 폴더 :

    • 기동 종료 :

    • 서비스 확인 :

    • 로그 정보 :

 
 

CentOS용 설치 가이드


  • CentOS에 iptables 설치

    • Linux는 기본적으로 iptables를 방화벽으로 사용 한다.

 
 yum list | grep iptables
 yum install iptables
 
 service iptables on
 chkconfig iptables on
 chkconfig --list | grep tables
 
  • 설치 정보

    • 설치 폴더 :

    • 실행 파일 : /sbin/

    • 환경 파일 : /etc/sysconfig/iptables

    • 기동 종료 : service iptables start, stop, restart

 
 

사용자 가이드


iptables -L
iptables --append INPUT --source 175.115.92.0/24 --match tcp --protocol tcp --dport 22 --jump ACCEPT
iptables --append INPUT --source 175.115.92.0/24 --match tcp --protocol tcp --dport 22 --jump REJECT
  
iptables --delete INPUT --source 175.115.92.0/24 --match tcp --protocol tcp --dport 22 --jump ACCEPT
iptables --delete INPUT --source 175.115.92.0/24 --match tcp --protocol tcp --dport 22 --jump REJECT

참고 문헌

 
 
 
 setup
 system-config-securitylevel
 
  • iptables 정책

    • 설정된 정책은 위에서부터 차례로 적용이 되기 때문에 순서에 주의 하여야 한다.

 
 
 Chain INPUT   : 서버로 들어오는 정책
 Chain FORWARD : 서버에서 포워딩 하는 정책
 Chain OUTPUT  : 서버에서 나가는 정책
 Chain RH-Firewall-1-INPUT : 방화벽 설정이 적용되는 정책
 
  • iptables 명령

 
 
 iptables -L            #--- 설정된 정책 확인
 #--- 정책 추가(ACCEPT), 차단(DROP)
 iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
 iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
 
  • 특정 IP의 서버 접근 차단 방법

 
 
 iptables -A INPUT -s 61.247.209.81 -j DROP
 iptables -A INPUT -s 61.247.209.0/24 -j DROP
 
 
 

관리자 가이드


 

규칙 설정

 

SNAT (Source NAT) : 내부에서 외부 접속시 Source를 Private IP를 Public IP로 변환
MASQUERADE : 게이트웨이 장치가 패킷의 출발지 IP주소를 사설IP 주소에서 자신에게 할당된 공인IP 주소로 바꿔서 인터넷으로 보내는 과정

 

DNAT (Destination NAT) : 외부에서 내부 접속시 Destination을 Public IP에서 Private IP로 변환

 
  • tables (-t ~) : 특정한 정책에 따라 Chain을 모아 놓은 것

  • *filter : 허가된 접근을 허용하고 허가되지 않은 접근을 차단

  • *nat : Packet의 주소 변환 규칙을 정의

  • **PREROUTING

  • **POSTROUTING

  • *mangle

  • *raw

  • chain (사슬) : 제어 규칙을 정의하는 기본 단위

    • INPUT : Host로 들어오는 패킷

    • OUTPUT : Host에서 나가는 패킷

    • FORWARD : Host를 지나가는 패킷

     
  • match : 패킷을 처리할 때 만족해야 하는 조건

    • --source (-s) : 출발지 IP

    • --sport : 출발지 Port

    • --destination (-d) : 목적지 IP

    • --dport : 목적지 Port

    • --protocol (-p) : 프로토콜 (tcp, udp)

    • --in-interface (-i) : 입력 인터페이스 (eth0, eth1)

    • --out-interface (-o) : 출력 인터페이스 (eth0, eth1)

    • --state : 연결 상태 (NEW, ESTABLISHED, RELATED, INVALID)

    • --string : 애플리케이션 계층의 데이터 바이트 순서와 매핑

    • --comment : 주석 (최대 256 바이트)

    • --syn (-y) : SYN 패킷을 허용하지 않음

    • --fragment (-f) : 두번째 조각부터 적용하는 규칙

    • --table (-t) : 처리할 테이블

    • --jump (-j) : 패킷 처리 방식 정의 (ACCEPT, DROP, REJECT, LOG, RETURN, MASQUERADE)

    • --match (-m) : 특정 모듈과 매핑 (state, tcp, multiport)

     
  • target : ACCEPT (허용), DROP (삭제), REJECT (거부), LOG (syslog 기록), RETURN (패킷 처리 계속)

  • Connection Tracking : 연결 추적

    • NEW (새 연결 요청), ESTABLISHED (기존 연결), RELATED (기존 연결내 새 연결), INVALID

     
  • command

    • --append (-A) : 규칙 추가

    • --delete (-D) : 규칙 삭제

    • --check (-C) : 패킷 테스트

    • --replace (-R) : 새로운 규칙으로 교체

    • --insert (-I) : 규칙 삽입

    • --list (-L) : 규칙 조회

    • --flush (-F) : chain의 모든 규칙 삭제

    • --zero (-Z) : 패킷과 바이트 카운트 값을 0으로 초기화

    • --new (-N) : 새로운 chain 생성

    • --delete-chain (-X) : chain 삭제

    • --policy (-P) : 기본 정책 변경

 
 
 iptables -t nat -L                                    #--- nat 테이블에 정의되어 있는 규칙을 조회
 iptables -t -A POSTROUTING -o eth0 -j MASQUERADE
 iptables -P INPUT DROP                                #--- INPUT 기본 정책을 DROP으로 변경
 iptables -A INPUT -i eth1 -j ACCEPT                   #--- INPUT에 규칙 추가
 iptables -L
 iptables -nL
 iptables -nL --line-numbers
 iptables -L -v
 
 
 

백업과 복구

#--- 백업
1. --- /etc/sysconfig/iptables 파일에 저장 된다.  
service iptables save
1.  iptables-save > /etc/iptables.rules
  
  1. --- 룰 초기화

  2. --- 룰 초기화시 서버에 접속이 되지 않습니다.

 
 

iptables -F

 
  1. --- 복구

 
 

     cat /etc/sysconfig/iptables | iptables-restore

 
  1. iptables-restore /etc/iptables.rules

 
 

참고 문헌


 
최종 수정일: 2024-09-30 12:26:18

이전글 :
다음글 :