← Back to list

IP Tables & Configuration

IP tables is a firewall administration tool for Linux systems that allows you to define rules for filtering and manipulating network…

Saoni Deb · 2023-07-06 08:04 · 0 claps · 2.1 min read
#iptables #networking #manage-linux-iptables
Open on Medium ↗
Wiki topics: CRY · Crypto & Web3 🔒 · Cybersecurity 🔓 · Open Source

IP Tables & Configuration

IP tables is a firewall administration tool for Linux systems that allows you to define rules for filtering and manipulating network traffic. It provides a powerful and flexible way to control incoming, outgoing, and forwarded network packets based on various criteria.

Here’s an overview of the key aspects and concepts related to IP tables:

  1. Tables: IP tables organizes rules into different tables, each serving a specific purpose. The main tables are:
  • filter: The default table for filtering packets. It is used for basic packet filtering, such as allowing or blocking traffic.
  • nat: Used for Network Address Translation (NAT), which modifies source or destination IP addresses or ports.
  • mangle: Provides advanced packet alteration capabilities, such as altering packet headers.
  • raw: Allows you to bypass connection tracking for certain packets.
  • security: Implements Linux Security Modules (LSM) for additional access control.
  1. Chains: Each table consists of chains, which are ordered lists of rules that are applied to packets. The three built-in chains in the filter table are:
  • INPUT: Applied to incoming packets destined for the local system.
  • OUTPUT: Applied to outgoing packets originating from the local system.
  • FORWARD: Applied to packets being forwarded through the system.
  1. Rules: Rules define conditions and actions to be taken on packets. They are evaluated in sequential order within a chain until a match is found. Commonly used match criteria include source/destination IP addresses, port numbers, protocols, and more. Actions can be to accept, drop, reject, or modify packets, among others.

  2. Targets: Targets define the action to be taken if a packet matches a rule. Some common targets include:

  • ACCEPT: Allows the packet to continue its normal flow.
  • DROP: Silently discards the packet.
  • REJECT: Discards the packet and sends a response back to the sender indicating rejection.
  • LOG: Logs the packet and continues processing.
  1. Network Address Translation (NAT): IP tables’ nat table allows you to perform Network Address Translation, enabling masquerading, port forwarding, and other forms of address translation.

  2. Connection Tracking: IP tables has the ability to track the state of network connections. It maintains information about established, related, and new connections, which allows for more advanced filtering based on connection state.

  3. Management and Configuration: IP tables rules are managed using the iptables command-line tool. Rules can be added, modified, or deleted manually using specific commands. Additionally, rules can be saved to persistent configuration files and loaded during system startup.

Remember that proper understanding and caution are necessary when working with IP tables, as misconfigured rules can lead to unintended consequences or network connectivity issues. It is recommended to thoroughly test and verify rules before applying them to production environments.

Below is a code snippet to configure the same using Python:

import subprocess

def configure_iptables():
    # Define the IP tables rules as a list of commands
    iptables_rules = [
        "iptables -P INPUT DROP",  # Set default policy to DROP for incoming traffic
        "iptables -A INPUT -i lo -j ACCEPT",  # Allow loopback interface
        "iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT",  # Allow related/established connections
        "iptables -A INPUT -p tcp --dport 22 -j ACCEPT",  # Allow SSH traffic
        # Add more rules as needed
    ]

    # Execute each IP tables command
    for rule in iptables_rules:
        subprocess.run(rule, shell=True, check=True)

    print("IP tables configuration completed.")

# Call the function to configure IP tables
configure_iptables()

메타데이터
post_id
5fe6ba5c5a7d
slug
ip-tables-5fe6ba5c5a7d
url
https://medium.com/@saonideb/ip-tables-5fe6ba5c5a7d
canonical_url
https://medium.com/@saonideb/ip-tables-5fe6ba5c5a7d
author_url
https://medium.com/@saonideb
status
ok
fetched_at
2026-07-16 15:20:23