#!/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
#l連接Internet的外網網卡接口
#外網網卡的IP地址,這里請自行設置
EXTIFIPADDR=”219.150.46.98”
|
#連接局域網的內網網卡接口
#內網所在網段
#打開系統內核的IP轉發功能,使Linux變成路由器。
echo "1" >/proc/sys/net/ipv4/ip_forward
|
#防止syn flood攻擊
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
|
#整理內核所支持的模塊清單
#加載所支持的模塊清單
modprobe ip_tables
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
|
#清除已設規則,還原到不設防火墻的狀態
iptables -F
iptables -X
iptables –Z
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
|
#下面將對主機的安全性進行設置
#允許本地環回設備上的通訊
iptables –A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT
|
#讓已經建立或者是與我們主機有關的回應封包通過
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
|
#允許SSH遠程管理主機
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
|
#對IP碎片數量進行限制,以防止IP碎片攻擊
iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
|
#設置icmp協議,允許主機執行ping操作,以便對網絡進行測試,但不允許其他主機ping該主機。
iptables –A OUTPUT-p icmp --icmp-type echo-request –j ACCEPT
iptables –A INPUT –p icmp --icmp-type echo-reply –j ACCEPT
|
#下面將進行NAT方面的設置
#如果希望內網能夠訪問外網,必須進行SNAT設置
iptables -t nat -A POSTROUTING –p all -s $INNET -o $EXTIF -j SNAT --to $EXTIFIPADDR
|
#如果你在內網架設了web服務器(IP:192.168.1.10),希望外網能夠訪問,則必須進行DNAT設置
iptables –t nat –A PREROUTING –p tcp –i $EXTIF --dport 80 –j DNAT --to 192.168.1.10:80
|