리눅스 iptables 편집하기
IT위키
편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
13번째 줄: | 13번째 줄: | ||
===액션(Action)=== | ===액션(Action)=== | ||
* -A: APPEND: 정책 추가 | * -A : APPEND : 정책 추가 | ||
* -I: INSERT: 정책 삽입 | * -I : INSERT : 정책 삽입 | ||
* -D: DELETE: 정책 삭제 | * -D : DELETE : 정책 삭제 | ||
* -R: REPLACE: 정책 교체 | * -R : REPLACE : 정책 교체 | ||
* -F: FLUSH: 모든 정책 삭제 | * -F : FLUSH : 모든 정책 삭제 | ||
* -P: POLICY: 기본 정책을 설정 | * -P : POLICY : 기본 정책을 설정 | ||
* -L: LIST: 정책 나열 | * -L : LIST : 정책 나열 | ||
===체인(Chain)=== | ===체인(Chain)=== | ||
29번째 줄: | 29번째 줄: | ||
=== 매치(Match) === | === 매치(Match) === | ||
* -s: 출발지 매칭. 도메인, IP 주소, 넷마스크 값을 이용하여 표기(––source, ––src) | * -s : 출발지 매칭. 도메인, IP 주소, 넷마스크 값을 이용하여 표기(––source, ––src) | ||
* -d: 목적지 매칭. 도메인, IP 주소, 넷마스크 값을 이용하여 표기(––destination, ––dst) | * -d : 목적지 매칭. 도메인, IP 주소, 넷마스크 값을 이용하여 표기(––destination, ––dst) | ||
* -p: 프로토콜과 매칭. TCP, UDP, ICMP 와 같은 이름을 사용하고 대소문자는 구분하지 않음 | * -p : 프로토콜과 매칭. TCP, UDP, ICMP 와 같은 이름을 사용하고 대소문자는 구분하지 않음 | ||
* -i: 입력 인터페이스와 매칭(––in-interface) | * -i : 입력 인터페이스와 매칭(––in-interface) | ||
* -o: 출력 인터페이스와 매칭(––out-interface) | * -o : 출력 인터페이스와 매칭(––out-interface) | ||
* -j: 매치되는 패킷을 어떻게 처리할지 지정 (--jump) | * -j : 매치되는 패킷을 어떻게 처리할지 지정 (--jump) | ||
== | == 타겟(target) == | ||
패킷이 규칙과 일치할 때 취하는 동작을 지정한다. | 패킷이 규칙과 일치할 때 취하는 동작을 지정한다. | ||
* ACCEPT: 패킷을 허용한다. | * ACCEPT : 패킷을 허용한다. | ||
* DROP: 패킷을 버린다(패킷이 전송된 적이 없던 것처럼) | * DROP : 패킷을 버린다(패킷이 전송된 적이 없던 것처럼) | ||
* REJECT: 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송한다.(icmp-port-unreachable) | * REJECT : 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송한다.(icmp-port-unreachable) | ||
* LOG: 패킷을 syslog에 기록한다. | * LOG : 패킷을 syslog에 기록한다. | ||
* SNAT --to [주소]: 소스 IP를 [변환(NAT)|NAT]한다. | * SNAT --to [주소] : 소스 IP를 [변환(NAT)|NAT]한다. | ||
* DNAT --to [주소]: 목적지 IP를 변환(NAT)한다. | * DNAT --to [주소] : 목적지 IP를 변환(NAT)한다. | ||
* RETURN: 호출 체인 내에서 패킷 처리를 계속한다. | * RETURN : 호출 체인 내에서 패킷 처리를 계속한다. | ||
== 정책 열람·저장·반영 == | == 정책 열람·저장·반영 == | ||
53번째 줄: | 53번째 줄: | ||
또는 | 또는 | ||
# cat /etc/sysconfig/iptables | # cat /etc/sysconfig/iptables | ||
</pre> | </pre> | ||
74번째 줄: | 69번째 줄: | ||
== 예제 == | == 예제 == | ||
* 192.168.10. | * 192.168.10.22로 부터 들어오는 패킷들은 차단하는 정책을 추가<ref>http://q.fran.kr/문제/2748 리눅스마스터 1급 1501 필기 기출문제</ref> | ||
<pre class='shell'> | <pre class='shell'> | ||
# iptables -A INPUT 192.168.10.22 -j DROP | # iptables -A INPUT 192.168.10.22 -j DROP | ||
81번째 줄: | 76번째 줄: | ||
</pre> | </pre> | ||
* 192.168.10. | * 192.168.10. 대역으로 부터 들어오는 패킷들은 차단하는 정책을 추가 | ||
<pre class='shell'> | <pre class='shell'> | ||
# iptables -A INPUT 192.168.10.0/24 -j DROP | # iptables -A INPUT 192.168.10.0/24 -j DROP | ||
118번째 줄: | 113번째 줄: | ||
** 서버에서 외부로는 ping 테스트가 되고 외부에서 서버쪽으로는 ping 테스트가 되지 않도록 한다. | ** 서버에서 외부로는 ping 테스트가 되고 외부에서 서버쪽으로는 ping 테스트가 되지 않도록 한다. | ||
** iptables 명령어를 수행하는 서버의 IP는 192.168.10.1이다. | ** iptables 명령어를 수행하는 서버의 IP는 192.168.10.1이다. | ||
** INPUT 체인의 기본 정책은 | ** INPUT 체인의 기본 정책은 DROP 이다. | ||
**# 프로토콜은 icmp이며 icmp echo request 패킷이 외부로 나가는 것에 대해 허용한다. | **# 프로토콜은 icmp이며 icmp echo request 패킷이 외부로 나가는 것에 대해 허용한다. | ||
**# 프로토콜은 icmp이며 외부에서 들어오는 icmp echo reply 패킷에 대해서 허용한다. | **# 프로토콜은 icmp이며 외부에서 들어오는 icmp echo reply 패킷에 대해서 허용한다. | ||
126번째 줄: | 121번째 줄: | ||
# iptables –A INPUT -p icmp --icmp-type echo-reply -s 0/0 –d 192.168.10.1 -j ACCEPT | # iptables –A INPUT -p icmp --icmp-type echo-reply -s 0/0 –d 192.168.10.1 -j ACCEPT | ||
# iptables –A INPUT -p icmp --icmp-type destination-unreachable -s 0/0 –d 192.168.10.1 -j ACCEPT | # iptables –A INPUT -p icmp --icmp-type destination-unreachable -s 0/0 –d 192.168.10.1 -j ACCEPT | ||
</pre> | </pre> | ||
* '''예제 조건'''<ref>http://q.fran.kr/문제/2963 리눅스마스터 1급 1601 필기 기출문제</ref> | * '''예제 조건'''<ref>http://q.fran.kr/문제/2963 리눅스마스터 1급 1601 필기 기출문제</ref> | ||
** 대상 프로토콜 SSH | ** 대상 프로토콜 SSH | ||
** 같은 IP 주소에서 60초 동안에 15번 이상 접속을 시도하면 | ** 같은 IP 주소에서 60초 동안에 15번 이상 접속을 시도하면 DROP 시키는 정책을 추가 | ||
<pre class='shell'> | <pre class='shell'> | ||
# iptables -A SSH -p udp --dport 22 -m recent --update--seconds 60 --hitcount 15 -j drop | # iptables -A SSH -p udp --dport 22 -m recent --update--seconds 60 --hitcount 15 -j drop | ||
151번째 줄: | 139번째 줄: | ||
iptables -D INPUT [번호] | iptables -D INPUT [번호] | ||
</pre> | </pre> | ||