یک نمونه اسکریپت iptables
اکنون اطلاعات کافی برای ایجاد یک اسکریپت iptables ساده را دارید که محافظت اصلی از یک سیستم متصل به اینترنت را فراهم می کند. اسکریپت زیر ، یک عمل فیلتر کردن جداول IP را ارائه می کند تا یک شبکه محلی و یک سایت وب را از حملات خارجی حفظ نماید و یک فایروال ساده برای یک شبکه خصوصی ، پیکربندی می کند ( برای مثال قسمت HOWTO در iptables را بررسی نمایید ). اگر یک شبکه محلی دارید ، می توانید این اسکریپت را طبق آن وفق دهید. در این پیکربندی ، تمام دسترسی های راه دور که از خارج برقرار می شود ،مسدود گشته است ، اما ارتباط دو طرفه برای تماسهایی که کاربران شبکه با سیستم های خارجی برقرار می کنند که آدرس شبکه آن 192.168.0.0 می باشد ( شکل 1 را ببینید ). آدرس اینترنت در مورد این مثال 10.0.0.1 است. سیستم دارای دو دستگاه اترنت است : یکی برای شبکه خصوصی ( eth1 ) و دیگری برای اینترنت ( eth0 ) ، سیستم فایروال دروازه ، همچنین یک سرویس دهنده وب در آدرس 10.0.02 را پشتیبانی می کند. گزینه هایی که در این مثال ، در یک خط جا نمی شده اند، در خط بعدی با یک بک اسلش توضیحی آمده اند.
قوانین اصلی که به قسمتهای مختلف شبکه اعمال می شوند ، در شکل 2 نشان داده شده است.
myfilter
# Firewall Gateway system IP address is 10.0.0.1 using Ethernet device eth0
# Firewall network address is 192.168.0.0 using Ethernet device eth1
# Web site address is 10.0.03
# turn off IP forwarding
echo 0 > /proc/sys/net/ipv4/ip_forward
# Flush chain rules
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
# Set default (policy) rules
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# IP spoofing, deny any packets on the internal network that have an external source address.
iptables -A INPUT -j LOG -i eth1 \! -s 192.168.0.0/24
iptables -A INPUT -j DROP -i eth1 \! -s 192.168.0.0/24
iptables -A FORWARD -j DROP -i eth1 \! -s 192.168.0.0/24
# IP spoofing, deny any outside packets (any not on eth1) that have the source address of the internal network.
iptables -A INPUT -j DROP \! -i eth1 -s 192.168.0.0/24
iptables -A FORWARD -j DROP \! -i eth1 -s 192.168.0.0/24
# IP spoofing, deny any outside packets with localhost address
# (packets not on the lo interface (any i=on eth0 or eth1) that have the aource address of localhost)
iptables -A INPUT -j DROP -i /! lo -s 127.0.0.1/255.0.0.0
iptables -A FORWARD -j DROP -i /! lo -s 127.0.0.1/255.0.0.0
# allow all incoming messages for users on your firewall system
iptables -A INPUT -j ACCEPT -i lo
# allow communication to the Web server (address 10.0.02), port www
iptables -A INPUT -j ACCEPT -p tcp -i eth0 --dport www -s 10.0.0.2
#allow established connections from Web server to internal network
iptables -A INPUT -m state --state ESTABLISHED,RELATED -i eth0 -p tcp --sport www -s 10.0.02 -d 192.168.0.0/24 -j ACCEPT
# Prevent new connection from web server to internal network
iptables -A OUTPUT -m state --state NEW -o eth0 -p --sport www -d 192.168.0.0/24 -j DROP
# allow established and related outside communication to your system
#allow outside communication to the firewall, expect for ICMP packets
iptables -A INPUT -m state --state ESTABLISHED,RELATED -i eth0 -p \! icmp -j ACCEPT
# prevent outside initiated connections
iptables _A INPUT -m state --state NEW -i eth0 -j DROP
iptables -A FORWARD -m state --state NEW -i eth0 -j DROP
# allow all local communication to the from firewall on eth1 from the local network
iptables -A INPUT -j ACCEPT-p all -i eth1 -s 192.168.0.0./24
# Set up masquerading to allow internal machine access to outside network
iptables -t nat -h POSTROUTING -o eth0 -j MASQUERAED
# Accept ICMP Ping (0 and 8) and Destination unreachable (3) messages
# Others will be rejected by INPUT and OUTPUT DROP policy
iptables -A INPUT -j ACCEPT -p icmp -i eth0 --icmp-type echo-reply -d 10.0.0.1
iptables -A INPUT -j ACCEPT -p icmp -i eth0 --icmp-type echo-request -d 10.0.0.1
iptables -A INPUT -j ACCEPT -p icmp -i eth0 --icmp-type destination-unreachable -d 10.0.0.1
# Turn on IP Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
ابتدا در اسکریپت، iptable های فعلی را با سوئیچ پاک کردن ( -F ) حذف می کنید و سپس خط مشی ها (هدفهای پیش فرض)برایقوانین غیر تعریف شده توسط کاربر را تنظیم می کنید. انتقال IP نیز باید هنگام تنظیم قوانین زنجیر، خاموش باشد :
echo 0 > /proc/sys/net/ipv4/ip_foreard