블로그 내의 모든 예시와 실습은 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 실행
방화벽 확인
Table
- iptables를 통해 패킷을 제어할 기능
filter Table(기본값)
nat Table
mangle Table
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)
Table 별 Built-in chain(nat table)
Table 별 Built-in chain(mangle table)
iptables -t filter -L : 방화벽 적용 목록 확인
- -L 은 설정한 방화벽의 목록을 보여준다.
iptables -t filter -F : 방화벽 적용 목록 초기화
- -F 는 설정된 방화벽들을 초기화 시켜준다.
iptable 명령어 Command
- 지정된 테이블의 지정된 chain에서 실행할 작업
- 정책 생성, 수정, 삭제 등 …
- Command 옵션은 대문자로 지정해야 함
iptables 명령어 Chain
- Chain
- 패킷을 제어하는 위치(시점) 지정
- chain 이름은 대문자로 명시
- 선택된 table마다 사용할 수 있는 chain이 정해져 있음
iptables 명령어 Parameters
- 정책의 조건
- protocol , src /dst ip주소 , …
-
- 제어할 데이터를 필터링 할 조건을 정의 함
- Parameter 옵션은 소문자로 지정해야 함
- m : 확장 module의 추가하여 상세 동작, 추가 정보를 이용하여 정의할 수 있음
- ! 연산자(지정한 값을 제외한 나머지와 일치)를 사용 가능
-
- protocol , src /dst ip주소 , …
Target
- Target
- 조건에 매치되는 패킷을 처리할 방식을 지정 함
- 선택된 테이블마다 지정 가능한 target이 정의되어 있음
- 각 target들은 정의되어 있는 명령을 수행하여 조건에 매치되는 패킷을 처리 함
- 옵션 → -j
[target 옵션] -target 종류는 대문자로 지정해야 함 - 사용자 정의 chain을 target으로 지정할 수 있음
- 조건에 일치하는 패킷을 사용자 정의 chain으로 전달하여 정의되어 있는 정책대로 수행되게 함
확장 모듈
- IPtables의 기본 기능 외의 Netfilter에서 지원하는 추가 기능을 이용하여 조건을 정의 함
- 확장 모듈 종류 지정 옵션 → -m
- 확장 모듈 종류 → multiport, limit, state, string …
Multiport 확장 모듈
- Multiport 확장 모듈
- 기본 조건으로 지정하는 –dport, –sport는 하나의 port, 또는 port 범위만 지정 가능 함
- 각각 떨어져 있는 포트를 한꺼번에 묶어서 정책을 구성할 때 multiport 모듈을 사용해야 함
limit 확장 모듈
- limit 확장 모듈
- 패킷의 조건 매칭 주기를 제한하기 위해 사용 됨
- 사용 영역
- LOG → LOG를 남기는 주기 설정
- DOS/DDOS 차단 정책 → 정상적인 패킷의 전달주기 이상이 될 때 차단
state 확장 모듈
- state 확장 모듈
- 상태 추적 기능을 지원하는 모듈
- TCP → TCP flag를 이용
- UDP → Timer를 이용
- 4가지의 상태 추적 기능을 지원 함
- 상태추적 종류는 대문자로 지정해야 함, 여러 종류를 한번에 지정할 수 있음
- 상태 추적 기능을 지원하는 모듈
- state 확장 모듈
- 상태 추적 테이블 정보 확인
string 확장 모듈
- string 확장 모듈
- Application Layer의 Text 필터링 기능을 지원하는 모듈
- WEB Log등을 필터링 하여 특정 주소로 접근하는 패킷을 필터링 할 수 있음
iptables 규칙 저장
- iptables로 구성된 정책은 메모리에 저장됨 → 서비스를 재 시작하면 삭제 됨
- 차후 정책을 재 사용하기 위해 현재 구성된 정책을 파일 형태로 백업 함
- /etc/sysconfig/iptables 파일에 저장됨
다른 파일로 BACKUP
- iptables-save명령으로 정책을 호출한 후 redirection하여 파일에 저장 함
- iptables-save → iptables의 현재 구성된 정책을 메모리에서 불러 옴
지정한 파일로 RESTORE
- Backup된 iptables 정책을 메모리에 로드 함
iptbles 설정파일
- cat /etc/sysconfig/iptables 파일
정책 시작 서비스로 등록
- iptables는 서비스 재 구동 시 /etc/sysconfig/iptables 파일 내용으로 정책을 초기화 함
- 서비스를 시작할 때 다른 파일의 정책으로 초기화 할 경우 Booting Script로 등록 함
- iptables에서 Backup파일을 Restore 함
- iptables 정책 상위에 방화벽 동작에 필요한 설정을 추가로 설정 함