개발 창고/Server

[Linux] How to use iptables

로이제로 2023. 11. 12. 22:00
반응형

 

How to use iptables

 리눅스 운영 체제에서 사용되는 방화벽 관리 도구입니다. 이 도구를 사용하여 네트워크 트래픽을 제어하고 보안 정책을 설정할 수 있습니다. iptables는 패킷 필터링, 패킷 수정, 패킷 로깅 등 다양한 기능을 제공합니다. 이를 통해 시스템의 보안을 강화하고 네트워크 통신을 제어할 수 있습니다. iptables는 명령줄 인터페이스(CLI, Command-Line Interface)를 통해 구성되며, 사용자가 정의한 규칙에 따라 패킷을 처리합니다. 시스템 관리자는 iptables를 사용하여 원하는 대상과 포트에 대한 액세스 규칙을 설정하고, 불필요한 트래픽을 차단하여 시스템의 안전성을 높일 수 있습니다.

IPTABLES Chains

 

NAT (Network Address Translation)

네트워크 주소 변환 서비스

  • SNAT(Source NAT) : 내부 사설IP에서 외부로 나갈 때 공인IP로 변환
  • DNAT(Destination NAT) : 외부에서 방화벽(외부IP)으로 요청되는 주소로 내부 사설 IP로 변환

 

iptables

iptables --help 결과

기본 명령어 내용
-A --append 새로운 정책을 마지막에 추가합니다.
-C --check 패킷을 테스트합니다.
-D --delete 기존 정책을 삭제합니다.
-I --insert 새로운 정책을 특정 번호로 지정합니다.
(지정되지 않은 경우 맨 처음에 추가됩니다.)
-R --replace 새로운 규칙을 교체합니다.
-L --list 적용되어 있는 정책 목록을 출력합니다.
-F --flush 적용된 모든 정책을 삭제합니다.
-N --new 새로운 사용자 정의 체인을 생성합니다.
-X --delete-chain 사용자 정의 체인을 삭제합니다.
-P --policy 대상 체인의 기본 정책을 설정합니다.
ACCEPT, DROP, REJECT 등의 정책을 설정 할 수 있습니다.
제어 옵션 명령어 내용
-p --protocol 프로토콜을 지정합니다.
tcp, udp, icmp 등의 프로토콜을 지정할 수 있습니다.
-s --source 특정 IP 주소 또는 네트워크 범위의 소스를 지정합니다.
-d --destination 특정 IP 주소 또는 네트워크 범위의 목적지를 지정합니다.
-i --in-interface 패킷이 들어오는 네트워크 인터페이스 (inbound interface)
-j --jump 방화벽을 지난 후 패킷의 상태 제어
-o --out-interface 패킷이 나가는 네트워크 인터페이스 (outbound interface)

 

사용 예시

▶︎ 적용 시킨 정책 목록을 출력합니다.

$> iptables -L

iptables -L 결과

 

▶︎ 현재 iptables 규칙을 초기화합니다.

$> iptables -F

 

▶︎ 192.168.100.150에서 모든 패킷을 차단합니다.

$> iptables -A INPUT -s 192.168.100.150 -j DROP

 

▶︎ TCP 프로토콜 패킷을 모두 허용합니다.

$> iptables -A INPUT -p TCP -j ACCEPT

 

▶︎ 20~30번 포트로 가는 모든 패킷을 허용합니다.

$> iptables -A INPUT -p TCP --dport 22:30 -j ACCEPT

 

▶︎ 80번 포트로 1초에 10번 이상 SYN이 들어오면 응답하지 않도록 합니다.

$> iptables -A INPUT -p TCP --dport 80 -m recent --update --seconds 1 --hitcount 10 --name HTTP -j DROP

 

▶︎ 수신지 포트 번호가 1000보다 작은 모든 포트 번호의 TCP 프로토콜의 경우 차단합니다.

$> iptables -A INPUT -p TCP --dport :1000 -j DROP
반응형