리눅스 iptables

IT 위키
Itwiki (토론 | 기여)님의 2018년 5월 3일 (목) 23:44 판

개요

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

체인(Chain)

  • INPUT
  • OUTPUT
  • FORWARD

정책 확인

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

정책 변경 옵션

  • -A : ADD : 정책 추가
  • -D : DELETE : 정책 삭제
  • -R : REPLACE : 규칙 교체
  • -F : FLUSH : 모든 규칙 삭제

  • 예제 : 192.168.10.22로 부터 들어오는 패킷들은 차단하는 정책을 추가[1]
http://q.fran.kr/문제/2748

정책 저장·반영

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

예제

  • 예제 조건[2]
    • 패킷은 거부 메시지 없이 무조건 거절한다. (DROP)
    • 두 번째 이더넷카드(eth1)로 들어오는 패킷인 경우에만 포워딩을 허가한다.
    • 어떠한 방화벽도 설정되어 있지 않고 커널에서 포워딩을 허가한 상태이다.
# iptables -P FORWARD DROP
# iptables -A FORWARD -i eth1 -j ACCEPT
  • 예제 조건[3]
    • 해당 시스템에는 이더넷 카드가 두 개가 장착되어 있는데, 첫 번째 이더넷 카드에서 나가는 패킷에 대해 공인 IP 주소인 203.247.40.100을 할당한다.
# iptables –t nat –A POSTROUTING -o eth0 –j SNAT --to 203.247.40.100
  • 예제 조건[4]
    • 첫 번째로 기존에 설정된 정책을 전부 삭제한다.
    • 두 번째로 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
  • 예제 조건[5]
    • 서버에서 외부로는 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/문제/2748 리눅스마스터 1급 1501 필기 기출문제
  2. http://q.fran.kr/문제/6515 리눅스마스터 1급 1501 실기 기출문제
  3. http://q.fran.kr/문제/6483 리눅스마스터 1급 1602 실기 기출문제
  4. http://q.fran.kr/문제/6547 리눅스마스터 1급 1701 실시 기출문제
  5. http://q.fran.kr/문제/6499 리눅스마스터 1급 1502 실시 기출문제