chapter 11. iptables (방화벽)
iptables
: 방화벽이나 NAT에 사용되는 패킷 필터링 도구
: TCP Wrapper → ipfw → ipfwadm → ipchains → iptables
: 4계층의 테이블에 사슬을 확장한 형태
iptables의 사슬
ㆍINPUT
: 패킷 필터링 및 방화벽 관련 정책 설정. 실제적인 접근통제
: 커널 내부에서 라우팅을 마친 후 로컬 소켓이 목적지인 패킷에 적용
ㆍFORWARD
: 리눅스 시스템을 통과하는 패킷 관리
: iptables 방화벽을 이용하여 두 네트워크 간 패킷이 통과되는 경우에 적용
: NAT 기반에 사용할 경우 사설 IP를 사용하는 시스템의 접근 제어 정책을 설정할 때 사용
ㆍOUTPUT
: 다른 시스템으로의 접근을 차단
: 리눅스 시스템 자체가 생성하는 패킷을 제어
ㆍPREROUTING / POSTROUTING : 커널 내부에서 IP 라우팅 계산을 수행하기 전 후 의 패킷 헤더 수정
※ INPUT_ESTABLISHED나 DMZ_NETWORK와 같은 공통태그 관련 규칙집합을 만들기 위한
사용자 정의 사슬 생성 가능
iptables의 테이블
ㆍfilter (INPUT / FORWARD / OUTPUT)
: iptables의 기본 테이블. 패킷 필터링 담당 (ipchains이전 프로그램들의 기능)
ㆍnat (INPUT / OUTPUT / PREROUTING / POSTROUTING)
: IP주소 변환 (FORWARD사슬의 역할을 확장)
ㆍmangle (INPUT / FORWARD / OUTPUT / PREROUTING / POSTROUTING)
: 패킷 데이터를 변경하는 특수 규칙 적용
: 성능향상을 위한 TOS (Type Of Service)를 설정
ㆍraw (OUTPUT / PREROUTING)
: 커널에서 필터링을 수행하는 넷 필터의 연결추적 하위 시스템과 독립적으로 동작 해야하는 규칙 설정
iptables의 응용
ㆍ패킷 필터링 및 방화벽 구성 : Filter의 3개 사슬을 이용해 설정
ㆍ다수의 서버 관리 : Filter 및 NAT 테이블을 연동하여 사용
iptables 명령어
ㆍ타겟 : 패킷이 규칙과 일치할 때 취하는 동작
ㆍ매치 : 규칙 타겟에 의해 명시되는 동작에 따라 패킷을 처리하기 위해서 만족해야 하는 조건
iptables [-t table] action chain match [-j target]
ㆍtable : 기본 값은 Filter. 다른 테이블 지정시 –t 옵션 사용
ㆍaction : 사슬의 지정, 설정, 제어
ㆍchain : 사슬 명시
ㆍmatch : 실질적인 규칙
ㆍtarget : 규칙이 일치할때의 동작
iptables action
-N : 새로운 사용자 정의 사슬 생성 (--new-chain)
-X : 비어있는 사슬 제거. 기본 사슬은 제거 불가 (--delete-chain)
-P : 사슬의 기본 정책 변경 (--policy)
-L : 현재 사슬의 규칙 나열 (--list)
-F : 사슬로부터 규칙 제거 (--flush)
-Z : 사슬 내의 모든 규칙들의 패킷과 바이트의 카운트 0 설정 (--zero)
-A : 사슬에 새로운 규칙 추가. 맨 마지막 규칙으로 등록 (--append)
-I : 사슬의 규칙을 맨 첫 부분에 삽입. 룰 넘버를 이용하여 특정 부분 삽입 가능. (--insert)
-R : 사슬의 규칙 순서 교환 (--replace)
-D : 사슬의 규칙 제거 (--delete)
iptables match
-s : 출발지 IP주소나 네트워크와 매칭. 도메인, IP주소, 넷마스크 값을 이용하여 표기 (--source, --src)
-d : 목적지 IP주소나 네트워크와 매칭. 도메인, IP주소, 넷마스크 값을 이용하여 표기 (--destination, --dst)
-p : 특정 프로토콜과 매칭. 미기재시 모든 프로토콜을 대상으로 작동 (--protocol)
-i : 입력 인터페이스와 매칭 (--in-interface)
-o : 출력 인터페이스와 매칭 (--out-interface)
! : NOT 조건
-m : 세밀한 매칭 옵션 (--match)
--state : 연결 상태와 매칭. INVALID, ESTABLISHED, NEW, RELATED
--string : 특정한 패턴과 매칭
※ 매칭 = 조건으로 삼는 것
iptables 기타옵션
-n : 다른 옵션의 출력정보를 숫자값으로 표현 (--numeric)
-v : 다른옵션의 패킷, 바이트수 등을 추가하여 자세히 출력 (--verbose)
--line-number : 정책 앞에 번호를 붙여 출력
iptables target (-j, --jump)
: ACCEPT (패킷 허가. 본래 라우팅 대로 진행)
: DROP (패킷 거부. 더 이상의 처리 수행 없음)
: LOG (패킷을 syslog에 기록. /var/log/messages에 저장)
: REJECT (패킷을 버리고 동시에 적당한 응답)
: RETURN (호출 사슬 내에서 패킷 처리 계속 진행)
ex)
iptables –A OUTPUT –p tcp –d www.comeve.com --dport 80 –o eth0 –j DROP
iptables 확장 사용 옵션
--sport : 발신지의 포트 또는 범위 지정. /etc/services에 기록된 포트이름이나 번호 지정. ‘:’을 사용하여 표기 (--source-port)
--dport : 도착지의 포트 지정. --sport와 동일
--tcp-flags : TCP flag를 지정. SYN, ACK, FIN, RST, URG, ALL, NONE
--syn : SYN, RST, ACK, FIN, SYN
iptables 확장
ㆍ-p tcp (모든옵션)
ㆍ-p udp (--sport / --dport)
ㆍ-p icmp (--icmp-type / ※ iptables –p icmp –h를 통해 옵션확인)
iptables-save [option]
: iptables로 설정한 정책을 부팅 후에도 지속적으로 반영하기 위해 저장
: 리다이렉션 ‘>’ 기호와 조합하여 파일로 저장
-t : 특정 테이블에 설정된 정책만 출력 (--table)
-c : 출력되는 정책 앞부분에 패킷수와 바이트 표시 (--counters)
iptables-restore [option] : ‘<’ 기호를 통해 저장된 정책을 반영.
-c : 기록된 패킷수와 바이트를 그대로 반영 (--counters)
-n : 현재 설정된 정책에 추가하는 형식으로 반영 (--noflush)
'Certification > 리눅스마스터' 카테고리의 다른 글
리눅스마스터 1급 2차 요약정리 - 2 (파일, 파일시스템, 프로세스 관리) (0) | 2021.11.14 |
---|---|
리눅스마스터 1급 2차 요약정리 - 1 (매뉴얼 / 유저관리 / 그룹관리) (0) | 2021.11.14 |
리눅스 마스터 1급 2차 정리 17 - VNC (원격 조종) / NTP (시간 동기화) (0) | 2021.11.02 |
리눅스 마스터 1급 2차 정리 16 - DHCP (ip 할당 서비스) (0) | 2021.11.02 |
리눅스 마스터 1급 2차 정리 15 - 프록시 서버 (0) | 2021.11.02 |