iptables
iptables는 시스템 관리자가 리눅스 커널 방화벽(다른 넷필터 모듈로 구현됨)이 제공하는 테이블들과 그것을 저장하는 체인, 규칙들을 구성할 수 있게 해주는 사용자 공간 응용 프로그램이다. 각기 다른 커널 모듈과 프로그램들은 현재 다른 프로토콜을 위해 사용되는데, iptables는 IPv4에, ip6tables는 IPv6에, arptables는 ARP에, ebtables는 이더넷 프레임에 적용된다.
사용법
iptables [-t table] action chain match [-j target]
주요 액션
Action | 설명 |
-N | 새로운 사용자 정의 사슬을 만든다.(--new-chain) |
-X | 비어있는 사슬을 제거한다. 단 기본 사슬은 제거할 수 없다.(--delete-chain) |
-P | 사슬의 기본 정책을 설정한다.(-policy) |
-L | 현재 사슬의 규칙을 나열한다.(--list) |
-F | 사슬로부터 규칙을 제거한다.(flush) |
-Z | 사슬내의 모든 규칙들의 패킷과 바이트의 카운트를 0으로 만든다.(--zero) |
-A | 사슬에 새로운 규칙을 추가한다. 해당 사슬에 맨 마지막 규칙으로 등록된다.(--append) |
-I | 사슬에 규칙을 맨 첫 부분에 삽입한다. 룰 넘버를 사용하여 특정 부분에 삽입할 수도 있다.(一insert) |
-R | 사슬의 규칙을 교환한다.(--replace) |
-D | 사슬의 규칙을 제거한다.(--delete) |
주요 매치
Match | 설명 |
-s | 출발지 IP 주소나 네트워크와 매칭. 도메인, IP 주소, 넷마스크값을 이용하여 표기(--source, --src) |
-d | 목적지 IP 주소나 네트워크와 매칭. 도메인, IP 주소, 넷마스크값을 이용하여 표기(--destination, --dst) |
-p | 특정 프로토콜과 매칭. TCP, UDP, ICMP와 같은 이름을 사용하고 대소문자는 구분하지 않음 이 옵션을 사용하지 않으면 모든 프로토콜이 대상이 됨(--protocol) |
-i | 입력 인터페이스와 매칭(--in-interface) |
-o | 출력 인터페이스와 매칭(--out-interface) |
! | 아닌(NOT)의 의미로 사용하는데, 특정 매칭을 제외할 때 사용 |
-m | 좀 더 세밀하게 제어할 때 사용하는 매칭 옵션(--match) |
--state | 연결 상태와 매칭. INVALID, ESTABLISHED, NEW, RELATED를 사용 |
--string | 특정한 패턴과 매칭 |
기타 옵션
옵션 | 설명 |
-n | 다른 옵션과 같이 사용되며 출력 정보를 숫자값으로 표현(--numeric) |
-v | 다른 옵션과 같이 사용되며 패킷, 바이트 수 등을 추가하여 정보를 자세히 출력(--verbose) |
--line-number | 정책 앞에 번호를 붙여 출력하며 삭제나 삽입할 때 유용 |
주요 타깃(-j, --jump)
Target | 설명 |
ACCEPT |
패킷을 허가하는 것으로 본래 라우팅대로 진행 |
DROP |
패킷을 거부하는 것으로 더 이상 어떤 처리도 수행되지 않고 버림 |
LOG |
패킷을 syslog에 전달하여 기록. 일반적으로 /var/log/messages에 저장 |
REJECT |
패킷을 버리고 동시에 적당한 응답 패킷을 전달. 예를 들면 TCP인 경우 TCP 재설정(Reset) 패킷, UDP인 경우 ICMP 포트 도달 불가(Port Unreachable) 메시지를 전송 |
RETURN |
호출 사슬 내에서 패킷 처리를 계속 진행 |
사용 예
① 기본 테이블인 Filter의 모든 사슬에 설정된 정책 정보를 출력한다.
iptables -L
② 기본 테이블인 Filter의 모든 사슬에 설정된 정책 정보(포트, 프로토콜 등)를 숫자값으로 출력한다.
iptables -nL
③ 기본 테이블인 Filter의 모든 사슬에 설정된 정책 정보를 패킷, 바이트 등을 추가하여 자세히 출력한다.
iptables -vL
④ 기본 테이블인 Filter의 INPUT 사슬에 설정된 정책 정보를 출력한다.
iptables -L INPUT
⑤ NAT 테이블의 모든 사슬에 설정된 정책 정보를 출력한다.
iptables -t nat -L
⑥ 기본 테이블인 Filter의 모든 사슬에 설정된 정책을 모두 제거한다.
iptables -F
⑦ 기본 테이블인 Filter의 INPUT 사슬에 설정된 정책을 모두 제거한다.
iptables -F INPUT
⑧ INPUT 사슬에 발신지가 192.168.12.22이고, 도착지가 localhost인 패킷을 거부(DROP) 시키는 정책을
추가한다.
iptables -A INPUT -s 192.168.12.22 -d localhost -j DROP
⑨ INPUT 사슬에 발신지가 192.168.1.0 네트워크 대역에 속한 호스트들을 허가하는 정책을 추가한다.
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
⑩ INPUT 사슬에 발신지가 192.168.5.13으로부터 들어오는 ICMP 패킷을 거부한다.
iptables -A INPUT -s 192.168.5.13 -p icmp -j DROP
⑪ INPUT 사슬에 발신지가 192.168.5.13으로부터 패킷 중에 ICMP 프로토콜을 제외한 모든 프로토콜을
거부한다.
iptables -A INPUT -s 192.168.5.13 ! -picmp -j DROP
참고자료
CentOS 7으로 리눅스마스터 1급 정복하기
'Linux' 카테고리의 다른 글
Linux - ssh 서버 설정 (0) | 2022.10.24 |
---|---|
Linux - Proxy 서버 프로그램 : Squid (0) | 2022.10.14 |
Linux - 백업 관련 명령어 : cpio (0) | 2022.10.13 |
Linux - 로그 관련 명령어 : lastb (0) | 2022.10.12 |
Linux - 로그 관련 명령어 : lastlog (0) | 2022.10.12 |