iptables는 Linux 커널 방화벽 및 패킷 필터링 기능을 관리하는 도구로, 여러 가지 옵션을 사용해 규칙을 추가, 삭제, 수정할 수 있습니다. 이 도구의 주요 명령어와 옵션을 설명하자면 다음과 같습니다:
1. -A (Append)
- 설명: 지정한 체인(chain) 끝에 새로운 규칙을 추가합니다. 이 규칙은 해당 체인의 기존 규칙 뒤에 추가됩니다.
- 사용 예시: HTTP 트래픽을 허용하는 규칙을 추가하고 싶을 때 사용합니다.
- 예시 구문:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. -D (Delete)
- 설명: 지정한 체인에서 특정 규칙을 삭제합니다. 삭제할 규칙을 명시적으로 지정하거나, 규칙 번호를 이용해 삭제할 수 있습니다.
- 사용 예시: 이전에 추가한 규칙을 제거하고 싶을 때 사용합니다.
- 예시 구문:
- 규칙 번호로 삭제:
iptables -D INPUT 1 (첫 번째 규칙 삭제)
- 명시적으로 삭제:
iptables -D INPUT -p tcp --dport 80 -j ACCEPT
3. -I (Insert)
- 설명: 지정한 체인의 특정 위치에 새로운 규칙을 삽입합니다. 위치를 지정하지 않으면 체인의 맨 앞에 삽입됩니다.
- 사용 예시: 특정 규칙이 다른 규칙들보다 먼저 평가되도록 삽입하고 싶을 때 사용합니다.
- 예시 구문:
iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT (첫 번째 위치에 SSH 허용 규칙 삽입)
4. -R (Replace)
- 설명: 지정한 체인의 특정 위치의 규칙을 새로운 규칙으로 대체합니다.
- 사용 예시: 특정 위치의 규칙을 다른 규칙으로 대체하고 싶을 때 사용합니다.
- 예시 구문:
iptables -R INPUT 2 -p tcp --dport 443 -j ACCEPT (두 번째 규칙을 HTTPS 허용으로 대체)
5. -L (List)
- 설명: 지정한 체인의 규칙을 나열합니다. 체인을 지정하지 않으면 기본적으로 모든 체인의 규칙이 나열됩니다.
- 사용 예시: 현재 설정된 방화벽 규칙을 확인하고 싶을 때 사용합니다.
- 예시 구문:
iptables -L 또는 iptables -L INPUT
6. -F (Flush)
- 설명: 지정한 체인의 모든 규칙을 삭제합니다. 체인을 지정하지 않으면 모든 체인의 규칙이 삭제됩니다.
- 사용 예시: 특정 체인의 규칙을 모두 제거하고 싶을 때 사용합니다.
- 예시 구문:
iptables -F INPUT 또는 iptables -F (모든 체인 초기화)
7. -Z (Zero)
- 설명: 체인의 모든 규칙에 대한 패킷 및 바이트 카운터를 0으로 초기화합니다.
- 사용 예시: 방화벽 규칙에 대해 수집된 통계를 초기화하고 싶을 때 사용합니다.
- 예시 구문:
iptables -Z INPUT 또는 iptables -Z (모든 체인 카운터 초기화)
8. -N (New chain)
- 설명: 새로운 사용자 정의 체인을 생성합니다.
- 사용 예시: 특정 트래픽에 대한 규칙 집합을 별도의 체인으로 관리하고 싶을 때 사용합니다.
- 예시 구문:
iptables -N MY_CHAIN
9. -X (Delete chain)
- 설명: 사용자 정의 체인을 삭제합니다. 체인에 규칙이 남아 있거나 체인이 다른 체인에서 참조되고 있으면 삭제할 수 없습니다.
- 사용 예시: 더 이상 필요하지 않은 사용자 정의 체인을 삭제하고 싶을 때 사용합니다.
- 예시 구문:
iptables -X MY_CHAIN
10. -P (Policy)
- 설명: 기본 체인에 대한 정책을 설정합니다. 주로
ACCEPT 또는 DROP을 사용하여 해당 체인의 기본 동작을 정의합니다.
- 사용 예시: 기본 정책을 설정하여 체인의 기본 동작을 결정하고 싶을 때 사용합니다.
- 예시 구문:
iptables -P INPUT DROP (기본적으로 모든 입력 트래픽을 차단)
11. -E (Rename chain)
- 설명: 사용자 정의 체인의 이름을 변경합니다.
- 사용 예시: 사용자 정의 체인의 이름을 의미에 맞게 변경하고 싶을 때 사용합니다.
- 예시 구문:
iptables -E OLD_CHAIN_NAME NEW_CHAIN_NAME
이러한 iptables 명령어와 옵션들을 적절히 사용하면 네트워크 트래픽을 유연하게 관리할 수 있으며, 방화벽 규칙을 추가, 삭제, 수정, 확인할 수 있습니다.