<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://devhrxoobm.itwiki.kr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%EA%B2%BD%EB%AF%BC</id>
	<title>IT 위키 - 사용자 기여 [ko]</title>
	<link rel="self" type="application/atom+xml" href="https://devhrxoobm.itwiki.kr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%EA%B2%BD%EB%AF%BC"/>
	<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/w/%ED%8A%B9%EC%88%98:%EA%B8%B0%EC%97%AC/%EA%B2%BD%EB%AF%BC"/>
	<updated>2026-09-18T19:21:09Z</updated>
	<subtitle>사용자 기여</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%EB%A6%AC%EB%88%85%EC%8A%A4_iptables&amp;diff=38656</id>
		<title>리눅스 iptables</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%EB%A6%AC%EB%88%85%EC%8A%A4_iptables&amp;diff=38656"/>
		<updated>2023-10-17T03:31:43Z</updated>

		<summary type="html">&lt;p&gt;경민: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[분류:리눅스]][[분류:리눅스 프로그램]]&lt;br /&gt;
==개요==&lt;br /&gt;
리눅스의 패킷 필터링(Packet Filtering) 도구로서 방화벽 구성이나 NAT(Network Address Translation)에 사용된다.&lt;br /&gt;
&lt;br /&gt;
==사용법==&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables  [-t 테이블] [액션] [체인] [매치] [-j 타겟]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===테이블(Table)===&lt;br /&gt;
* filter, nat, mangle, raw&lt;br /&gt;
* 명시하지 않으면 기본적으로 filter이다.&lt;br /&gt;
&lt;br /&gt;
===액션(Action)===&lt;br /&gt;
* -A: APPEND: 정책 추가&lt;br /&gt;
* -I: INSERT: 정책 삽입&lt;br /&gt;
* -D: DELETE: 정책 삭제&lt;br /&gt;
* -R: REPLACE: 정책 교체&lt;br /&gt;
* -F: FLUSH: 모든 정책 삭제&lt;br /&gt;
* -P: POLICY: 기본 정책을 설정&lt;br /&gt;
* -L: LIST: 정책 나열&lt;br /&gt;
&lt;br /&gt;
===체인(Chain)===&lt;br /&gt;
* INPUT&lt;br /&gt;
* OUTPUT&lt;br /&gt;
* FORWARD&lt;br /&gt;
* PREROUTING&lt;br /&gt;
* POSTROUTING&lt;br /&gt;
&lt;br /&gt;
=== 매치(Match) ===&lt;br /&gt;
* -s: 출발지 매칭. 도메인, IP 주소, 넷마스크 값을 이용하여 표기(––source, ––src)&lt;br /&gt;
* -d: 목적지 매칭. 도메인, IP 주소, 넷마스크 값을 이용하여 표기(––destination, ––dst)&lt;br /&gt;
* -p: 프로토콜과 매칭. TCP, UDP, ICMP 와 같은 이름을 사용하고 대소문자는 구분하지 않음&lt;br /&gt;
* -i: 입력 인터페이스와 매칭(––in-interface)&lt;br /&gt;
* -o: 출력 인터페이스와 매칭(––out-interface)&lt;br /&gt;
* -j: 매치되는 패킷을 어떻게 처리할지 지정 (--jump)&lt;br /&gt;
&lt;br /&gt;
== 타깃(target) ==&lt;br /&gt;
패킷이 규칙과 일치할 때 취하는 동작을 지정한다.&lt;br /&gt;
&lt;br /&gt;
* ACCEPT: 패킷을 허용한다.&lt;br /&gt;
* DROP: 패킷을 버린다(패킷이 전송된 적이 없던 것처럼)&lt;br /&gt;
* REJECT: 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송한다.(icmp-port-unreachable)&lt;br /&gt;
* LOG: 패킷을 syslog에 기록한다.&lt;br /&gt;
* SNAT --to [주소]: 소스 IP를 [변환(NAT)|NAT]한다.&lt;br /&gt;
* DNAT --to [주소]: 목적지 IP를 변환(NAT)한다.&lt;br /&gt;
* RETURN: 호출 체인 내에서 패킷 처리를 계속한다.&lt;br /&gt;
&lt;br /&gt;
== 정책 열람·저장·반영 ==&lt;br /&gt;
* 보기&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables -L&lt;br /&gt;
 또는&lt;br /&gt;
# cat /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 차단 횟수 및 byte 수 포함하여 보기&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
# iptables -L -nvx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 저장&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# service iptables save&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 저장 &amp;amp; 불러오기&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables-save &amp;gt; firewall.sh&lt;br /&gt;
# iptables-restore &amp;lt; firewall.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;정책을 추가한 다음 재시작이나 다른 조치를 하지 않아도 바로 적용된다.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 예제 ==&lt;br /&gt;
* 192.168.10.22로부터 들어오는 패킷들은 차단하는 정책을 추가&amp;lt;ref&amp;gt;http://q.fran.kr/문제/2748 리눅스마스터 1급 1501 필기 기출문제&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables -A INPUT 192.168.10.22 -j DROP&lt;br /&gt;
또는&lt;br /&gt;
# iptables -I INPUT 192.168.10.22 -j DROP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 192.168.10. 대역으로부터 들어오는 패킷들은 차단하는 정책을 추가&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables -A INPUT 192.168.10.0/24 -j DROP&lt;br /&gt;
또는&lt;br /&gt;
# iptables -I INPUT 192.168.10.0/24 -j DROP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;예제 조건&#039;&#039;&#039;&amp;lt;ref&amp;gt;http://q.fran.kr/문제/6515 리눅스마스터 1급 1501 실기 기출문제&amp;lt;/ref&amp;gt;&lt;br /&gt;
** 패킷은 거부 메시지 없이 무조건 거절한다. (DROP)&lt;br /&gt;
** 두 번째 이더넷카드(eth1)로 들어오는 패킷인 경우에만 포워딩을 허가한다.&lt;br /&gt;
** 어떠한 방화벽도 설정되어 있지 않고 커널에서 포워딩을 허가한 상태이다.&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables -P FORWARD DROP&lt;br /&gt;
# iptables -A FORWARD -i eth1 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;예제 조건&#039;&#039;&#039;&amp;lt;ref&amp;gt;http://q.fran.kr/문제/6483 리눅스마스터 1급 1602 실기 기출문제&amp;lt;/ref&amp;gt;&lt;br /&gt;
** 해당 시스템에는 이더넷 카드가 두 개가 장착되어 있는데, 첫 번째 이더넷 카드에서 나가는 패킷에 대해 공인 IP 주소인 203.247.40.100을 할당한다.&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables –t nat –A POSTROUTING -o eth0 –j SNAT --to 203.247.40.100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;예제 조건&#039;&#039;&#039;&amp;lt;ref&amp;gt;http://q.fran.kr/문제/6547 리눅스마스터 1급 1701 실시 기출문제&amp;lt;/ref&amp;gt;&lt;br /&gt;
** 첫 번째로 기존에 설정된 정책을 전부 삭제한다.&lt;br /&gt;
** 두 번째로 INPUT 체인에 loopback 인터페이스에 들어오는 모든 패킷에 대해 허용 정책을 추가 한다.&lt;br /&gt;
** 세 번째로 INPUT 체인에 프로토콜이 tcp이며 목적지포트가 22번부터 23번 포트인 패킷에 대해 허용 정책을 추가 한다.&lt;br /&gt;
** 마지막으로 INPUT 체인에 대한 기본 정책을 거부 메시지 없이 거절로 변경한다.&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables -F INPUT&lt;br /&gt;
# iptables -A INPUT -i lo -j ACCEPT&lt;br /&gt;
# iptables -A INPUT -p tcp --dport 22:23 -j ACCEPT&lt;br /&gt;
# iptables -P INPUT DROP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;예제 조건&#039;&#039;&#039;&amp;lt;ref&amp;gt;http://q.fran.kr/문제/6499 리눅스마스터 1급 1502 실시 기출문제&amp;lt;/ref&amp;gt;&lt;br /&gt;
** 서버에서 외부로는 ping 테스트가 되고 외부에서 서버쪽으로는 ping 테스트가 되지 않도록 한다.&lt;br /&gt;
** iptables 명령어를 수행하는 서버의 IP는 192.168.10.1이다.&lt;br /&gt;
** INPUT 체인의 기본 정책은 DROP이다.&lt;br /&gt;
**# 프로토콜은 icmp이며 icmp echo request 패킷이 외부로 나가는 것에 대해 허용한다.&lt;br /&gt;
**# 프로토콜은 icmp이며 외부에서 들어오는 icmp echo reply 패킷에 대해서 허용한다.&lt;br /&gt;
**# 프로토콜은 icmp이며 외부에서 들어오는 icmp destination-unreachable 패킷에 대해서 허용한다.&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables –A INPUT -p icmp --icmp-type echo-request -s 192.168.10.1 –d 0/0 -j ACCEPT&lt;br /&gt;
# iptables –A INPUT -p icmp --icmp-type echo-reply -s 0/0 –d 192.168.10.1 -j ACCEPT&lt;br /&gt;
# iptables –A INPUT -p icmp --icmp-type destination-unreachable -s 0/0 –d 192.168.10.1 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;예제 조건&#039;&#039;&#039;&lt;br /&gt;
** 로드 밸런서나 프록시 등을 통해 들어온 경우X-Forwarded-For을 사용하여 차단&lt;br /&gt;
** String을 기반으로 차단 규칙 설정&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
# iptables -I INPUT -p tcp --dport 80 -m string --string &amp;quot;X-Forwarded-For: 111.222.111.222&amp;quot; --algo bm -j DROP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;예제 조건&#039;&#039;&#039;&amp;lt;ref&amp;gt;http://q.fran.kr/문제/2963 리눅스마스터 1급 1601 필기 기출문제&amp;lt;/ref&amp;gt;&lt;br /&gt;
** 대상 프로토콜 SSH&lt;br /&gt;
** 같은 IP 주소에서 60초 동안에 15번 이상 접속을 시도하면 DROP시키는 정책을 추가&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables -A SSH -p udp --dport 22 -m recent --update--seconds 60 --hitcount 15 -j drop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;삭제&#039;&#039;&#039;&lt;br /&gt;
** --line-number 옵션을 통해 정책의 번호를 확인한다.&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
iptables -L --line-numbers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** -D 옵션을 지정하여 특정 번호의 정책을 삭제한다.&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
iptables -D INPUT [번호]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;/div&gt;</summary>
		<author><name>경민</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%EB%A6%AC%EB%88%85%EC%8A%A4_iptables&amp;diff=38655</id>
		<title>리눅스 iptables</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%EB%A6%AC%EB%88%85%EC%8A%A4_iptables&amp;diff=38655"/>
		<updated>2023-10-17T03:28:12Z</updated>

		<summary type="html">&lt;p&gt;경민: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[분류:리눅스]][[분류:리눅스 프로그램]]&lt;br /&gt;
==개요==&lt;br /&gt;
리눅스의 패킷 필터링(Packet Filtering) 도구로서 방화벽 구성이나 NAT(Network Address Translation)에 사용된다.&lt;br /&gt;
&lt;br /&gt;
==사용법==&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables  [-t 테이블] [액션] [체인] [매치] [-j 타겟]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===테이블(Table)===&lt;br /&gt;
* filter, nat, mangle, raw&lt;br /&gt;
* 명시하지 않으면 기본적으로 filter이다.&lt;br /&gt;
&lt;br /&gt;
===액션(Action)===&lt;br /&gt;
* -A: APPEND: 정책 추가&lt;br /&gt;
* -I: INSERT: 정책 삽입&lt;br /&gt;
* -D: DELETE: 정책 삭제&lt;br /&gt;
* -R: REPLACE: 정책 교체&lt;br /&gt;
* -F: FLUSH: 모든 정책 삭제&lt;br /&gt;
* -P: POLICY: 기본 정책을 설정&lt;br /&gt;
* -L: LIST: 정책 나열&lt;br /&gt;
&lt;br /&gt;
===체인(Chain)===&lt;br /&gt;
* INPUT&lt;br /&gt;
* OUTPUT&lt;br /&gt;
* FORWARD&lt;br /&gt;
* PREROUTING&lt;br /&gt;
* POSTROUTING&lt;br /&gt;
&lt;br /&gt;
=== 매치(Match) ===&lt;br /&gt;
* -s: 출발지 매칭. 도메인, IP 주소, 넷마스크 값을 이용하여 표기(––source, ––src)&lt;br /&gt;
* -d: 목적지 매칭. 도메인, IP 주소, 넷마스크 값을 이용하여 표기(––destination, ––dst)&lt;br /&gt;
* -p: 프로토콜과 매칭. TCP, UDP, ICMP 와 같은 이름을 사용하고 대소문자는 구분하지 않음&lt;br /&gt;
* -i: 입력 인터페이스와 매칭(––in-interface)&lt;br /&gt;
* -o: 출력 인터페이스와 매칭(––out-interface)&lt;br /&gt;
* -j: 매치되는 패킷을 어떻게 처리할지 지정 (--jump)&lt;br /&gt;
&lt;br /&gt;
== 타깃(target) ==&lt;br /&gt;
패킷이 규칙과 일치할 때 취하는 동작을 지정한다.&lt;br /&gt;
&lt;br /&gt;
* ACCEPT: 패킷을 허용한다.&lt;br /&gt;
* DROP: 패킷을 버린다(패킷이 전송된 적이 없던 것처럼)&lt;br /&gt;
* REJECT: 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송한다.(icmp-port-unreachable)&lt;br /&gt;
* LOG: 패킷을 syslog에 기록한다.&lt;br /&gt;
* SNAT --to [주소]: 소스 IP를 [변환(NAT)|NAT]한다.&lt;br /&gt;
* DNAT --to [주소]: 목적지 IP를 변환(NAT)한다.&lt;br /&gt;
* RETURN: 호출 체인 내에서 패킷 처리를 계속한다.&lt;br /&gt;
&lt;br /&gt;
== 정책 열람·저장·반영 ==&lt;br /&gt;
* 보기&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables -L&lt;br /&gt;
 또는&lt;br /&gt;
# cat /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 저장&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# service iptables save&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 저장 &amp;amp; 불러오기&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables-save &amp;gt; firewall.sh&lt;br /&gt;
# iptables-restore &amp;lt; firewall.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;정책을 추가한 다음 재시작이나 다른 조치를 하지 않아도 바로 적용된다.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 예제 ==&lt;br /&gt;
* 192.168.10.22로부터 들어오는 패킷들은 차단하는 정책을 추가&amp;lt;ref&amp;gt;http://q.fran.kr/문제/2748 리눅스마스터 1급 1501 필기 기출문제&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables -A INPUT 192.168.10.22 -j DROP&lt;br /&gt;
또는&lt;br /&gt;
# iptables -I INPUT 192.168.10.22 -j DROP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 192.168.10. 대역으로부터 들어오는 패킷들은 차단하는 정책을 추가&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables -A INPUT 192.168.10.0/24 -j DROP&lt;br /&gt;
또는&lt;br /&gt;
# iptables -I INPUT 192.168.10.0/24 -j DROP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;예제 조건&#039;&#039;&#039;&amp;lt;ref&amp;gt;http://q.fran.kr/문제/6515 리눅스마스터 1급 1501 실기 기출문제&amp;lt;/ref&amp;gt;&lt;br /&gt;
** 패킷은 거부 메시지 없이 무조건 거절한다. (DROP)&lt;br /&gt;
** 두 번째 이더넷카드(eth1)로 들어오는 패킷인 경우에만 포워딩을 허가한다.&lt;br /&gt;
** 어떠한 방화벽도 설정되어 있지 않고 커널에서 포워딩을 허가한 상태이다.&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables -P FORWARD DROP&lt;br /&gt;
# iptables -A FORWARD -i eth1 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;예제 조건&#039;&#039;&#039;&amp;lt;ref&amp;gt;http://q.fran.kr/문제/6483 리눅스마스터 1급 1602 실기 기출문제&amp;lt;/ref&amp;gt;&lt;br /&gt;
** 해당 시스템에는 이더넷 카드가 두 개가 장착되어 있는데, 첫 번째 이더넷 카드에서 나가는 패킷에 대해 공인 IP 주소인 203.247.40.100을 할당한다.&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables –t nat –A POSTROUTING -o eth0 –j SNAT --to 203.247.40.100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;예제 조건&#039;&#039;&#039;&amp;lt;ref&amp;gt;http://q.fran.kr/문제/6547 리눅스마스터 1급 1701 실시 기출문제&amp;lt;/ref&amp;gt;&lt;br /&gt;
** 첫 번째로 기존에 설정된 정책을 전부 삭제한다.&lt;br /&gt;
** 두 번째로 INPUT 체인에 loopback 인터페이스에 들어오는 모든 패킷에 대해 허용 정책을 추가 한다.&lt;br /&gt;
** 세 번째로 INPUT 체인에 프로토콜이 tcp이며 목적지포트가 22번부터 23번 포트인 패킷에 대해 허용 정책을 추가 한다.&lt;br /&gt;
** 마지막으로 INPUT 체인에 대한 기본 정책을 거부 메시지 없이 거절로 변경한다.&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables -F INPUT&lt;br /&gt;
# iptables -A INPUT -i lo -j ACCEPT&lt;br /&gt;
# iptables -A INPUT -p tcp --dport 22:23 -j ACCEPT&lt;br /&gt;
# iptables -P INPUT DROP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;예제 조건&#039;&#039;&#039;&amp;lt;ref&amp;gt;http://q.fran.kr/문제/6499 리눅스마스터 1급 1502 실시 기출문제&amp;lt;/ref&amp;gt;&lt;br /&gt;
** 서버에서 외부로는 ping 테스트가 되고 외부에서 서버쪽으로는 ping 테스트가 되지 않도록 한다.&lt;br /&gt;
** iptables 명령어를 수행하는 서버의 IP는 192.168.10.1이다.&lt;br /&gt;
** INPUT 체인의 기본 정책은 DROP이다.&lt;br /&gt;
**# 프로토콜은 icmp이며 icmp echo request 패킷이 외부로 나가는 것에 대해 허용한다.&lt;br /&gt;
**# 프로토콜은 icmp이며 외부에서 들어오는 icmp echo reply 패킷에 대해서 허용한다.&lt;br /&gt;
**# 프로토콜은 icmp이며 외부에서 들어오는 icmp destination-unreachable 패킷에 대해서 허용한다.&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables –A INPUT -p icmp --icmp-type echo-request -s 192.168.10.1 –d 0/0 -j ACCEPT&lt;br /&gt;
# iptables –A INPUT -p icmp --icmp-type echo-reply -s 0/0 –d 192.168.10.1 -j ACCEPT&lt;br /&gt;
# iptables –A INPUT -p icmp --icmp-type destination-unreachable -s 0/0 –d 192.168.10.1 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;예제 조건&#039;&#039;&#039;&lt;br /&gt;
** 로드 밸런서나 프록시 등을 통해 들어온 경우X-Forwarded-For을 사용하여 차단&lt;br /&gt;
** String을 기반으로 차단 규칙 설정&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
# iptables -I INPUT -p tcp --dport 80 -m string --string &amp;quot;X-Forwarded-For: 111.222.111.222&amp;quot; --algo bm -j DROP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;예제 조건&#039;&#039;&#039;&amp;lt;ref&amp;gt;http://q.fran.kr/문제/2963 리눅스마스터 1급 1601 필기 기출문제&amp;lt;/ref&amp;gt;&lt;br /&gt;
** 대상 프로토콜 SSH&lt;br /&gt;
** 같은 IP 주소에서 60초 동안에 15번 이상 접속을 시도하면 DROP시키는 정책을 추가&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
# iptables -A SSH -p udp --dport 22 -m recent --update--seconds 60 --hitcount 15 -j drop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;삭제&#039;&#039;&#039;&lt;br /&gt;
** --line-number 옵션을 통해 정책의 번호를 확인한다.&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
iptables -L --line-numbers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
** -D 옵션을 지정하여 특정 번호의 정책을 삭제한다.&lt;br /&gt;
&amp;lt;pre class=&#039;shell&#039;&amp;gt;&lt;br /&gt;
iptables -D INPUT [번호]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 참고 문헌 ==&lt;/div&gt;</summary>
		<author><name>경민</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%EB%A6%AC%EB%88%85%EC%8A%A4_tcpdump&amp;diff=38654</id>
		<title>리눅스 tcpdump</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%EB%A6%AC%EB%88%85%EC%8A%A4_tcpdump&amp;diff=38654"/>
		<updated>2023-10-17T02:20:58Z</updated>

		<summary type="html">&lt;p&gt;경민: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[분류:리눅스]]&lt;br /&gt;
[[분류:리눅스 명령어]]&lt;br /&gt;
[[분류:보안 도구]]&lt;br /&gt;
[[분류:정보보안기사]]&lt;br /&gt;
&lt;br /&gt;
;네트워크 인터페이스를 거치는 패킷을 캡처해주는 도구(패킷 스니퍼)&lt;br /&gt;
&lt;br /&gt;
==사용법==&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
# tcpdump [옵션] [BPF]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==주요 옵션 및 사용법==&lt;br /&gt;
&lt;br /&gt;
*-i: 인터페이스를 지정&lt;br /&gt;
*-nn: 출력시 호스트/서비스명이 아닌 IP주소와 Port번호로 출력&lt;br /&gt;
*-v, -vv, -vvv: 패킷을 헤더부까지 자세하게, 더 자세하게 출력&lt;br /&gt;
*IP주소는 192.168.0.1/24와 같이 CIDR 포맷으로 지정 가능&lt;br /&gt;
&lt;br /&gt;
==BPF==&lt;br /&gt;
&lt;br /&gt;
;Berkely Packet Filter&lt;br /&gt;
&lt;br /&gt;
*원하는 패킷만을 스니핑하기 위한 룰 지정부&lt;br /&gt;
*대부분의 패킷 스니퍼에서 표준으로 지원되는 형식&lt;br /&gt;
&lt;br /&gt;
==사용 예시==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -i eth0&#039;&#039;&#039;: 인터페이스 eth0을 보여줌&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -i eth0 -c 10&#039;&#039;&#039;: 10개만 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -i eth0 tcp port 80&#039;&#039;&#039;: TCP 80 포트로 통신하는 패킷 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -i eth0 src 192.168.0.1:&#039;&#039;&#039; 출발지 IP가 192.168.0.1인 패킷 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -i eth0 dst 192.168.0.1&#039;&#039;&#039;: 목적지 IP가 192.168.0.1인 패킷 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -i eth0 src 192.168.0.1 and tcp port 80&#039;&#039;&#039;: 목적지 IP가 192.168.0.1이면서 TCP 80 포트인 패킷 보여줌&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -i eth0 dst 192.168.0.1&#039;&#039;&#039;: 목적지IP가 192.168.0.1인 패킷 보여줌&lt;br /&gt;
*&#039;&#039;&#039;tcpdump host 192.168.0.1&#039;&#039;&#039;: 특정 호스트 IP로 들어오거가 나가는 양방향 패킷 모두 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump src 192.168.0.1&#039;&#039;&#039;: 특정 호스트 중에서 출발지가 192.168.0.1인 것만 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump dst 192.168.0.1&#039;&#039;&#039;: 특정 호스트 중에서 목적지가 192.168.0.1인 것만 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump port 3389&#039;&#039;&#039;: 포트 양뱡항으로 3389이면 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump src port 3389&#039;&#039;&#039;: 출발지 포트가 3389인 것만 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump dst port 3389&#039;&#039;&#039;: 목적지 포트가 3389인 것만 덤프&lt;br /&gt;
*t&#039;&#039;&#039;cpdump udp and src port 53&#039;&#039;&#039;: UDP이고 출발지 포트가 53이면 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump src 192.168.0.1 and not dst port 22&#039;&#039;&#039;: 출발지 IP가 192.168.0.1이고 목적지 포트가 22 가 아닌 패킷 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -w tcpdump.log&#039;&#039;&#039;: 결과를 파일로 저장(텍스트가 아닌 바이너리 형식으로 저장)&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -r tcpdump.log&#039;&#039;&#039;: 저장한 파일을 읽음&lt;br /&gt;
&lt;br /&gt;
== 실무 예제 ==&lt;br /&gt;
X-Forwarded-For 조회&lt;br /&gt;
&lt;br /&gt;
결과 예시&amp;lt;blockquote&amp;gt;GET /api/files/file/name/History%20EX-Guide.docx/properties?aewgaweg.com&amp;amp;siteName=asgsd.com&amp;amp;folderName=1231212 HTTP/1.1&lt;br /&gt;
&lt;br /&gt;
Host: mydlb.lb.anypointdns.net&lt;br /&gt;
&lt;br /&gt;
X-Real-IP: 1.1.1.1&lt;br /&gt;
&lt;br /&gt;
X-Forwarded-For: 1.1.1.1&lt;br /&gt;
&lt;br /&gt;
User-Agent: curl/7.64.1&lt;br /&gt;
&lt;br /&gt;
Accept: */*&lt;br /&gt;
&lt;br /&gt;
Authorization: bearer 23423&amp;lt;/blockquote&amp;gt;조회 방법&amp;lt;blockquote&amp;gt;tcpdump -A -s 10240 &#039;tcp port 8091 and (((ip[2: 2] - ((ip[0]&amp;amp;0xf)&amp;lt;&amp;lt;2)) - ((tcp[12]&amp;amp;0xf0)&amp;gt;&amp;gt;2)) != 0)&#039; | egrep --line-buffered &amp;quot;^ ........(GET |HTTP\/|POST |HEAD )|^[A-Za-z0-9-]+: &amp;quot; | sed -r &#039;s/^........(GET | HTTP\/|POST |HEAD )/\n\1/g&#039;&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>경민</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=%EB%A6%AC%EB%88%85%EC%8A%A4_tcpdump&amp;diff=38653</id>
		<title>리눅스 tcpdump</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=%EB%A6%AC%EB%88%85%EC%8A%A4_tcpdump&amp;diff=38653"/>
		<updated>2023-10-17T02:18:24Z</updated>

		<summary type="html">&lt;p&gt;경민: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[분류:리눅스]]&lt;br /&gt;
[[분류:리눅스 명령어]]&lt;br /&gt;
[[분류:보안 도구]]&lt;br /&gt;
[[분류:정보보안기사]]&lt;br /&gt;
&lt;br /&gt;
;네트워크 인터페이스를 거치는 패킷을 캡처해주는 도구(패킷 스니퍼)&lt;br /&gt;
&lt;br /&gt;
==사용법==&lt;br /&gt;
&amp;lt;pre class=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
# tcpdump [옵션] [BPF]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==주요 옵션 및 사용법==&lt;br /&gt;
&lt;br /&gt;
*-i: 인터페이스를 지정&lt;br /&gt;
*-nn: 출력시 호스트/서비스명이 아닌 IP주소와 Port번호로 출력&lt;br /&gt;
*-v, -vv, -vvv: 패킷을 헤더부까지 자세하게, 더 자세하게 출력&lt;br /&gt;
*IP주소는 192.168.0.1/24와 같이 CIDR 포맷으로 지정 가능&lt;br /&gt;
&lt;br /&gt;
==BPF==&lt;br /&gt;
&lt;br /&gt;
;Berkely Packet Filter&lt;br /&gt;
&lt;br /&gt;
*원하는 패킷만을 스니핑하기 위한 룰 지정부&lt;br /&gt;
*대부분의 패킷 스니퍼에서 표준으로 지원되는 형식&lt;br /&gt;
&lt;br /&gt;
==사용 예시==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -i eth0&#039;&#039;&#039;: 인터페이스 eth0을 보여줌&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -i eth0 -c 10&#039;&#039;&#039;: 10개만 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -i eth0 tcp port 80&#039;&#039;&#039;: TCP 80 포트로 통신하는 패킷 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -i eth0 src 192.168.0.1:&#039;&#039;&#039; 출발지 IP가 192.168.0.1인 패킷 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -i eth0 dst 192.168.0.1&#039;&#039;&#039;: 목적지 IP가 192.168.0.1인 패킷 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -i eth0 src 192.168.0.1 and tcp port 80&#039;&#039;&#039;: 목적지 IP가 192.168.0.1이면서 TCP 80 포트인 패킷 보여줌&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -i eth0 dst 192.168.0.1&#039;&#039;&#039;: 목적지IP가 192.168.0.1인 패킷 보여줌&lt;br /&gt;
*&#039;&#039;&#039;tcpdump host 192.168.0.1&#039;&#039;&#039;: 특정 호스트 IP로 들어오거가 나가는 양방향 패킷 모두 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump src 192.168.0.1&#039;&#039;&#039;: 특정 호스트 중에서 출발지가 192.168.0.1인 것만 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump dst 192.168.0.1&#039;&#039;&#039;: 특정 호스트 중에서 목적지가 192.168.0.1인 것만 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump port 3389&#039;&#039;&#039;: 포트 양뱡항으로 3389이면 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump src port 3389&#039;&#039;&#039;: 출발지 포트가 3389인 것만 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump dst port 3389&#039;&#039;&#039;: 목적지 포트가 3389인 것만 덤프&lt;br /&gt;
*t&#039;&#039;&#039;cpdump udp and src port 53&#039;&#039;&#039;: UDP이고 출발지 포트가 53이면 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump src 192.168.0.1 and not dst port 22&#039;&#039;&#039;: 출발지 IP가 192.168.0.1이고 목적지 포트가 22 가 아닌 패킷 덤프&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -w tcpdump.log&#039;&#039;&#039;: 결과를 파일로 저장(텍스트가 아닌 바이너리 형식으로 저장)&lt;br /&gt;
*&#039;&#039;&#039;tcpdump -r tcpdump.log&#039;&#039;&#039;: 저장한 파일을 읽음&lt;br /&gt;
&lt;br /&gt;
== 실무 예제 ==&lt;br /&gt;
tcpdump -A -s 10240 &#039;tcp port 8091 and (((ip[2: 2] - ((ip[0]&amp;amp;0xf)&amp;lt;&amp;lt;2)) - ((tcp[12]&amp;amp;0xf0)&amp;gt;&amp;gt;2)) != 0)&#039; | egrep --line-buffered &amp;quot;^ ........(GET |HTTP\/|POST |HEAD )|^[A-Za-z0-9-]+: &amp;quot; | sed -r &#039;s/^........(GET | HTTP\/|POST |HEAD )/\n\1/g&#039;&lt;/div&gt;</summary>
		<author><name>경민</name></author>
	</entry>
</feed>