#!/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
|