리눅스 iptables: Difference between revisions

From IT Wiki
No edit summary
Line 24: Line 24:


== 예제 ==
== 예제 ==
* '''조건'''<ref>http://q.fran.kr/문제/6515 리눅스마스터 1급 1501 실기 기출문제</ref>
* '''예제 조건'''<ref>http://q.fran.kr/문제/6515 리눅스마스터 1급 1501 실기 기출문제</ref>
** 패킷은 거부 메시지 없이 무조건 거절한다. (DROP)
** 패킷은 거부 메시지 없이 무조건 거절한다. (DROP)
** 두 번째 이더넷카드(eth1)로 들어오는 패킷인 경우에만 포워딩을 허가한다.
** 두 번째 이더넷카드(eth1)로 들어오는 패킷인 경우에만 포워딩을 허가한다.
Line 33: Line 33:
</pre>
</pre>


* '''조건'''<ref>http://q.fran.kr/문제/6483 리눅스마스터 1급 1602 실기 기출문제</ref>
* '''예제 조건'''<ref>http://q.fran.kr/문제/6483 리눅스마스터 1급 1602 실기 기출문제</ref>
** 해당 시스템에는 이더넷 카드가 두 개가 장착되어 있는데, 첫 번째 이더넷 카드에서 나가는 패킷에 대해 공인 IP 주소인 203.247.40.100을 할당한다.
** 해당 시스템에는 이더넷 카드가 두 개가 장착되어 있는데, 첫 번째 이더넷 카드에서 나가는 패킷에 대해 공인 IP 주소인 203.247.40.100을 할당한다.
<pre class='shell'>
<pre class='shell'>
Line 39: Line 39:
</pre>
</pre>


* '''조건'''<ref>http://q.fran.kr/문제/6547 리눅스마스터 1급 1701 실시 기출문제</ref>
* '''예제 조건'''<ref>http://q.fran.kr/문제/6547 리눅스마스터 1급 1701 실시 기출문제</ref>
** 첫 번째로 기존에 설정된 정책을 전부 삭제한다.
** 첫 번째로 기존에 설정된 정책을 전부 삭제한다.
** 두 번째로 INPUT 체인에 loopback 인터페이스에 들어오는 모든 패킷에 대해 허용 정책을 추가 한다.
** 두 번째로 INPUT 체인에 loopback 인터페이스에 들어오는 모든 패킷에 대해 허용 정책을 추가 한다.
Line 49: Line 49:
# iptables -A INPUT -p tcp --dport 22:23 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22:23 -j ACCEPT
# iptables -P INPUT -P
# iptables -P INPUT -P
</pre>
* '''예제 조건'''<ref>http://q.fran.kr/문제/6499 리눅스마스터 1급 1502 실시 기출문제</ref>
** 서버에서 외부로는 ping 테스트가 되고 외부에서 서버쪽으로는 ping 테스트가 되지 않도록 한다.
** iptables 명령어를 수행하는 서버의 IP는 192.168.10.1이다.
** INPUT 체인의 기본 정책은 DROP 이다.
**# 프로토콜은 icmp이며 icmp echo request 패킷이 외부로 나가는 것에 대해 허용한다.
**# 프로토콜은 icmp이며 외부에서 들어오는 icmp echo reply 패킷에 대해서 허용한다.
**# 프로토콜은 icmp이며 외부에서 들어오는 icmp destination-unreachable 패킷에 대해서 허용한다.
<pre class='shell'>
# iptables –A INPUT -p icmp --icmp-type echo-request -s 192.168.10.1 –d 0/0 -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
</pre>
</pre>

Revision as of 22:57, 3 May 2018

개요

리눅스의 패킷 필터링(Packet Filtering) 도구로서 방화벽 구성이나 NAT(Network Address Translation)에 사용된다.

정책 확인

# iptables -L
  • 정책파일 직접 열기
# cat /etc/sysconfig/iptables

정책 저장·반영

  • 저장 & 불러오기
# iptables-save > firewall.sh
# iptables-restore < firewall.sh
  • 저장
# service iptables save

예제

  • 예제 조건[1]
    • 패킷은 거부 메시지 없이 무조건 거절한다. (DROP)
    • 두 번째 이더넷카드(eth1)로 들어오는 패킷인 경우에만 포워딩을 허가한다.
    • 어떠한 방화벽도 설정되어 있지 않고 커널에서 포워딩을 허가한 상태이다.
# iptables -P FORWARD DROP
# iptables -A FORWARD -i eth1 -j ACCEPT
  • 예제 조건[2]
    • 해당 시스템에는 이더넷 카드가 두 개가 장착되어 있는데, 첫 번째 이더넷 카드에서 나가는 패킷에 대해 공인 IP 주소인 203.247.40.100을 할당한다.
# iptables –t nat –A POSTROUTING -o eth0 –j SNAT --to 203.247.40.100
  • 예제 조건[3]
    • 첫 번째로 기존에 설정된 정책을 전부 삭제한다.
    • 두 번째로 INPUT 체인에 loopback 인터페이스에 들어오는 모든 패킷에 대해 허용 정책을 추가 한다.
    • 세 번째로 INPUT 체인에 프로토콜이 tcp이며 목적지포트가 22번부터 23번 포트인 패킷에 대해 허용 정책을 추가 한다.
    • 마지막으로 INPUT 체인에 대한 기본 정책을 거부 메시지 없이 거절로 변경한다.
# iptables -F INPUT
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A INPUT -p tcp --dport 22:23 -j ACCEPT
# iptables -P INPUT -P
  • 예제 조건[4]
    • 서버에서 외부로는 ping 테스트가 되고 외부에서 서버쪽으로는 ping 테스트가 되지 않도록 한다.
    • iptables 명령어를 수행하는 서버의 IP는 192.168.10.1이다.
    • INPUT 체인의 기본 정책은 DROP 이다.
      1. 프로토콜은 icmp이며 icmp echo request 패킷이 외부로 나가는 것에 대해 허용한다.
      2. 프로토콜은 icmp이며 외부에서 들어오는 icmp echo reply 패킷에 대해서 허용한다.
      3. 프로토콜은 icmp이며 외부에서 들어오는 icmp destination-unreachable 패킷에 대해서 허용한다.
# iptables –A INPUT -p icmp --icmp-type echo-request -s 192.168.10.1 –d 0/0 -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
  1. http://q.fran.kr/문제/6515 리눅스마스터 1급 1501 실기 기출문제
  2. http://q.fran.kr/문제/6483 리눅스마스터 1급 1602 실기 기출문제
  3. http://q.fran.kr/문제/6547 리눅스마스터 1급 1701 실시 기출문제
  4. http://q.fran.kr/문제/6499 리눅스마스터 1급 1502 실시 기출문제