Software Workshop

작성 중

소개

iptables는 리눅스의 방화벽이나 proxy 기능을 제공하는 패킷필터링 도구로서 커널 2.4부터 도입되었고 netfilter라고 부르기도 함

iptables로 패킷 검사 조건과 조건에 일치했을 때 수행할 처리방법을 규칙으로 등록할 수 있음

주요 개념

명령의 구조

iptables [-t 테이블명] 체인옵션 체인명 일치조건... 타깃옵션 타깃명

테이블명

체인옵션

체인명

일치조건

타깃 옵션과 타깃명

명령 조합의 예

iptables -L
iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
iptables -D 체인명 행번호
iptables -D INPUT -s 출발지주소 --sport 출발지포트번호 -d 목적지주소 --dport 목적지포트번호 -j 처리방법(target)
iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP
iptables -A INPUT -p tcp -s 192.168.1.3 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
service iptables save
iptables -A INPUT -p TCP --tcp-flags SYN,RST,ACK SYN -j DROP

방화벽 응용 사례

iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 1 --hitcount 100 -j DROP

패킷 변조 응용 사례

apt install libfilter-queue-dev
sysctl -w net.ipv4.ipforward=1 # /etc/sysctl.conf에 적어둬야 영구 반영됨
iptables -A INPUT -j NFQUEUE --queue-num 0

유저공간 소프트웨어는 패킷에 대한 평결(verdict)을 내림
들어온 순서와 상관없이 평결 순서를 임의로 정할 수 있음

참조

https://home.regit.org/netfilter-en/using-nfqueue-and-libnetfilter_queue/