블로그 내의 모든 예시와 실습은 VMware workstation16.2.3, centos7,Moboxterm,window xp을 활용 합니다.


Netfilter

  • Linux Kernel 내부의 네트워크 관련 프레임워크
  • 네트워크 패킷을 제어할 수 있는 기능을 제공 함
  • IPchain, IPtables 등과 결합되어 Linux의 방화벽 기능을 지원 함

iptables

  • Netfilter 프로젝트의 일부로서 사용자 영역에서 동작하는 도구
  • ipfw → ipfwadm → ipchain → iptables

iptables 지원 기능

  • 기본 기능 → filtering, Logging, NAT
  • 확장 모듈 → Stateful Inspection, String Filtering, Limit, Logging

iptables 실행

selinux확인1

방화벽 확인

iptables확인2

Table

  • iptables를 통해 패킷을 제어할 기능

tables3

filter Table(기본값)

기본값1

nat Table

nat5

mangle Table

mangle6

Chain

  • iptables에서 패킷을 제어하는 위치(시점)
  • Table마다 사용할 수 있는 chain이 정해져 있음
  • Built-in Chain
    • Netfilter에서 정의한 패킷을 제어할 수 있는 위치
    • 5개로 정의되어 있음
      • INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING
  • 사용자 정의 Chain
    • Command 옵션으로 사용자가 직접 생성하는 chain
    • 연관 정책들에 대한 그룹지정 용도로 사용
      • 예 1) WEB 데이터를 제어하기 위한 정책 목록 구성
      • 예 2) DOS 차단 정책을 위한 목록 구성

Table 별 Built-in chain(filter table)

input,output,forward7

input,output,forward8

Table 별 Built-in chain(nat table)

prerouting,output,postrouting8

prerouting,output,postrouting9

Table 별 Built-in chain(mangle table)

mangletable

mangletable1

iptables -t filter -L : 방화벽 적용 목록 확인

  • -L 은 설정한 방화벽의 목록을 보여준다.

설정된 방화벽 목록

iptables -t filter -F : 방화벽 적용 목록 초기화

  • -F 는 설정된 방화벽들을 초기화 시켜준다.

iptable 명령어 Command

  • 지정된 테이블의 지정된 chain에서 실행할 작업
  • 정책 생성, 수정, 삭제 등 …
  • Command 옵션은 대문자로 지정해야 함

command부분

command 종류

command 종류2

command예시

iptables 명령어 Chain

  • Chain
    • 패킷을 제어하는 위치(시점) 지정
    • chain 이름은 대문자로 명시
    • 선택된 table마다 사용할 수 있는 chain이 정해져 있음

chain사용

chain예시

iptables 명령어 Parameters

  • 정책의 조건
    • protocol , src /dst ip주소 , …
        • 제어할 데이터를 필터링 할 조건을 정의 함
      • Parameter 옵션은 소문자로 지정해야 함
      • m : 확장 module의 추가하여 상세 동작, 추가 정보를 이용하여 정의할 수 있음
      • ! 연산자(지정한 값을 제외한 나머지와 일치)를 사용 가능

parameter사용

parameter명령어1

parameter명령어2

parameter명령어3

parameter부분

Target

  • Target
    • 조건에 매치되는 패킷을 처리할 방식을 지정 함
    • 선택된 테이블마다 지정 가능한 target이 정의되어 있음
    • 각 target들은 정의되어 있는 명령을 수행하여 조건에 매치되는 패킷을 처리 함
    • 옵션 → -j [target 옵션] -target 종류는 대문자로 지정해야 함
    • 사용자 정의 chain을 target으로 지정할 수 있음
      • 조건에 일치하는 패킷을 사용자 정의 chain으로 전달하여 정의되어 있는 정책대로 수행되게 함

target사용

target명령어1

target명령어2

target부분

확장 모듈

  • IPtables의 기본 기능 외의 Netfilter에서 지원하는 추가 기능을 이용하여 조건을 정의 함
  • 확장 모듈 종류 지정 옵션 → -m
  • 확장 모듈 종류 → multiport, limit, state, string …

확장모듈 사용

확장모듈 명령어

Multiport 확장 모듈

  • Multiport 확장 모듈
    • 기본 조건으로 지정하는 –dport, –sport는 하나의 port, 또는 port 범위만 지정 가능 함
    • 각각 떨어져 있는 포트를 한꺼번에 묶어서 정책을 구성할 때 multiport 모듈을 사용해야 함

multiport 사용법

multiport예시

limit 확장 모듈

  • limit 확장 모듈
    • 패킷의 조건 매칭 주기를 제한하기 위해 사용 됨
    • 사용 영역
      • LOG → LOG를 남기는 주기 설정
      • DOS/DDOS 차단 정책 → 정상적인 패킷의 전달주기 이상이 될 때 차단

limit사용법

limit명령어

state 확장 모듈

  • state 확장 모듈
    • 상태 추적 기능을 지원하는 모듈
      • TCP → TCP flag를 이용
      • UDP → Timer를 이용
    • 4가지의 상태 추적 기능을 지원 함
    • 상태추적 종류는 대문자로 지정해야 함, 여러 종류를 한번에 지정할 수 있음

state사용법

state명령어

  • state 확장 모듈
    • 상태 추적 테이블 정보 확인

state 예시

string 확장 모듈

  • string 확장 모듈
    • Application Layer의 Text 필터링 기능을 지원하는 모듈
    • WEB Log등을 필터링 하여 특정 주소로 접근하는 패킷을 필터링 할 수 있음

string사용법

string명령어

iptables 규칙 저장

  • iptables로 구성된 정책은 메모리에 저장됨 → 서비스를 재 시작하면 삭제 됨
  • 차후 정책을 재 사용하기 위해 현재 구성된 정책을 파일 형태로 백업 함
  • /etc/sysconfig/iptables 파일에 저장됨

규칙저장

다른 파일로 BACKUP

  • iptables-save명령으로 정책을 호출한 후 redirection하여 파일에 저장 함
    • iptables-save → iptables의 현재 구성된 정책을 메모리에서 불러 옴

다른파일로저장

지정한 파일로 RESTORE

  • Backup된 iptables 정책을 메모리에 로드 함

RESTORE

iptbles 설정파일

  • cat /etc/sysconfig/iptables 파일

설정파일

정책 시작 서비스로 등록

  • iptables는 서비스 재 구동 시 /etc/sysconfig/iptables 파일 내용으로 정책을 초기화 함
  • 서비스를 시작할 때 다른 파일의 정책으로 초기화 할 경우 Booting Script로 등록 함
    • iptables에서 Backup파일을 Restore 함
    • iptables 정책 상위에 방화벽 동작에 필요한 설정을 추가로 설정 함

정책시작명령어0

정책시작명령어0-1

정책시작명령어1

정책시작명령어2

정책시작명령어2