리눅스의 내부 네트워크 트래픽 처리하기 위해 iptables에 대해 알아보자
iptables는 리눅스에서 네트워크 트래픽을 관리하는 방화벽 도구로, 패킷 필터링을 통해 네트워크 접근을 제어한다. iptables는 각 패킷을 체인(chain)과 룰(rule)이라는 규칙에 따라 처리한다. 체인은 INPUT, OUTPUT, FORWARD 등으로 나뉘며, 패킷이 해당 체인에 들어올 때 정의된 룰에 따라 행동을 결정한다.
기본적인 iptables 사용법
iptables는 크게 3개의 테이블로 나뉜다:
- filter: 가장 일반적인 테이블로, 패킷을 필터링하는 데 사용된다.
- nat: 네트워크 주소 변환(NAT)에 관련된 규칙을 처리한다.
- mangle: 패킷을 수정하는 데 사용된다.
여기서는 가장 많이 쓰이는 filter 테이블을 주로 사용한다.
기본 명령어 구조
iptables -A [체인] -p [프로토콜] --dport [포트번호] -j [액션]
-A: 룰 추가 (append)-p: 프로토콜 지정 (tcp, udp 등)--dport: 포트 번호 지정-j: 패킷을 어떻게 처리할지 결정 (ACCEPT, DROP 등)
구체적 사용 예시
- SSH 접근 허용
- SSH(포트 22)를 허용하려면 다음과 같은 명령을 입력한다.
iptables -A INPUT -p tcp --dport 22 -j ACCEPT - HTTP/HTTPS 접근 허용
- 웹 서버(HTTP: 80, HTTPS: 443)를 위한 규칙 설정:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT - 특정 IP 블록
- 192.168.1.100 IP 주소에서 오는 모든 트래픽 차단:
iptables -A INPUT -s 192.168.1.100 -j DROP - Ping 차단
- ICMP 요청(ping)을 차단하려면 다음과 같이 설정한다.
iptables -A INPUT -p icmp -j DROP
규칙 관리
- 룰 삭제
- 특정 규칙을 삭제하려면, 해당 규칙의 번호를 확인한 후 삭제한다.
iptables -L --line-numbers iptables -D INPUT [번호] - 룰 전체 초기화
- 모든 iptables 규칙을 초기화하려면 아래 명령을 사용한다.
iptables -F - 저장 및 복원
- 시스템 재부팅 시 설정을 유지하기 위해 현재 iptables 설정을 저장하고 복원할 수 있다.
- 설정 저장:
sudo iptables-save > /etc/iptables/rules.v4
- 설정 복원:
bash
sudo iptables-restore < /etc/iptables/rules.v4
기본적인 iptables 사용법 요약
iptables는 네트워크 트래픽을 관리하는 강력한 도구로, 원하는 룰을 추가하고 삭제하며, 시스템 부팅 시에도 적용될 수 있도록 설정을 저장하는 것이 중요하다. 이를 통해 리눅스 서버에서 방화벽을 유연하게 구성할 수 있다.