리눅스 iptables 편집하기
IT위키
편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
==개요== | ==개요== | ||
리눅스의 패킷 필터링(Packet Filtering) 도구로서 방화벽 구성이나 NAT(Network Address Translation)에 사용된다. | 리눅스의 패킷 필터링(Packet Filtering) 도구로서 방화벽 구성이나 NAT(Network Address Translation)에 사용된다. | ||
5번째 줄: | 4번째 줄: | ||
==사용법== | ==사용법== | ||
<pre class='shell'> | <pre class='shell'> | ||
# iptables | # iptables [-t table] action chain match [-j target] | ||
</pre> | </pre> | ||
==체인(Chain)== | |||
* INPUT | * INPUT | ||
* OUTPUT | * OUTPUT | ||
* FORWARD | * FORWARD | ||
== 정책 | == 정책 확인 == | ||
<pre class='shell'> | <pre class='shell'> | ||
# iptables -L | # iptables -L | ||
</pre> | </pre> | ||
* | * 정책파일 직접 열기 | ||
<pre class= | <pre class='shell'> | ||
# iptables | # cat /etc/sysconfig/iptables | ||
</pre> | </pre> | ||
* | == 정책 변경 옵션 == | ||
<pre class= | * -A : ADD : 정책 추가 | ||
* -D : DELETE : 정책 삭제 | |||
* -R : REPLACE : 규칙 교체 | |||
# iptables- | * -F : FLUSH : 모든 규칙 삭제 | ||
---- | |||
* 예제 : 192.168.10.22로 부터 들어오는 패킷들은 차단하는 정책을 추가<ref>http://q.fran.kr/문제/2748 리눅스마스터 1급 1501 필기 기출문제</ref> | |||
<pre class='shell'> | |||
# iptables -A INPUT 192.168.10.22 -j DROP | |||
</pre> | </pre> | ||
== 정책 저장·반영 == | |||
* 저장 & 불러오기 | * 저장 & 불러오기 | ||
<pre class='shell'> | <pre class='shell'> | ||
72번째 줄: | 39번째 줄: | ||
# iptables-restore < firewall.sh | # iptables-restore < firewall.sh | ||
</pre> | </pre> | ||
* 저장 | |||
<pre class='shell'> | |||
# service iptables save | |||
</pre> | |||
== 예제 == | == 예제 == | ||
* '''예제 조건'''<ref>http://q.fran.kr/문제/6515 리눅스마스터 1급 1501 실기 기출문제</ref> | * '''예제 조건'''<ref>http://q.fran.kr/문제/6515 리눅스마스터 1급 1501 실기 기출문제</ref> | ||
** 패킷은 거부 메시지 없이 무조건 거절한다. (DROP) | ** 패킷은 거부 메시지 없이 무조건 거절한다. (DROP) | ||
137번째 줄: | 69번째 줄: | ||
# iptables -A INPUT -i lo -j ACCEPT | # iptables -A INPUT -i lo -j ACCEPT | ||
# iptables -A INPUT -p tcp --dport 22:23 -j ACCEPT | # iptables -A INPUT -p tcp --dport 22:23 -j ACCEPT | ||
# iptables -P INPUT | # iptables -P INPUT -P | ||
</pre> | </pre> | ||
143번째 줄: | 75번째 줄: | ||
** 서버에서 외부로는 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 패킷에 대해서 허용한다. | ||
151번째 줄: | 83번째 줄: | ||
# 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 | ||
</pre> | </pre> | ||