Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2270604
  • 博文数量: 168
  • 博客积分: 6641
  • 博客等级: 准将
  • 技术积分: 1996
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-02 11:49
文章存档

2020年(4)

2019年(6)

2017年(1)

2016年(3)

2015年(3)

2014年(8)

2013年(2)

2012年(12)

2011年(19)

2010年(10)

2009年(3)

2008年(17)

2007年(80)

分类: LINUX

2010-07-10 23:46:22

Linux单服务器防火墙脚本框架
 
2010-06-01 TsengYia#126.com
 
####################################################################
#!/bin/bash
#### 2010.06.01 By TsengYia#126.com ####
#### 1.Define Varibles        #// 定义相关变量,便于脚本的复用
INET_IF='eth0'
INET_IP='x.x.x.x'
LLAN_IF='eth1'
LLAN_IP='y.y.y.y'
IPT="/sbin/iptables"
LMD="/sbin/modprobe"
CTL="/sbin/sysctl"
IP_WLIST="/opt/ipfw/ipfw.wlist"        #// IP地址白名单
IP_BLIST="/opt/ipfw/ipfw.blist"        #// IP地址黑名单
#
#### 2.Load Modules        #// 加载必要的内核模块
$LMD ip_conntrack
$LMD ip_conntrack_ftp
$LMD ip_conntrack_irc
# ......
#
#### 3.Proc Optimize        #// 调整内核proc参数
$CTL -w net.ipv4.tcp_max_syn_backlog=3200 &> /dev/null
$CTL -w net.ipv4.tcp_syn_retries=3 &> /dev/null
$CTL -w net.ipv4.tcp_synack_retries=3 &> /dev/null
$CTL -w net.ipv4.tcp_syncookies=1 &> /dev/null
$CTL -w net.ipv4.tcp_fin_timeout=60 &> /dev/null
$CTL -w net.ipv4.icmp_echo_ignore_broadcasts=1 &> /dev/null
$CTL -w net.ipv4.ip_default_ttl=128 &> /dev/null
$CTL -w net.ipv4.icmp_ignore_bogus_error_responses=1 &> /dev/null
$CTL -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=86400 &> /dev/null
#$CTL -w net.ipv4.conf.all.log_martians=1 &> /dev/null
#$CTL -w net.ipv4.conf.all.accept_source_route=0 &> /dev/null
#$CTL -w net.ipv4.conf.all.accept_redirects=0 &> /dev/null
#$CTL -w net.ipv4.conf.default.accept_redirects=0 &> /dev/null
#$CTL -w net.ipv4.conf.$INET_IF.accept_redirects=0 &> /dev/null
#$CTL -w net.ipv4.conf.$LO_IF.accept_redirects=0 &> /dev/null
#
#### 4.Setup Default Policy
$IPT -t filter -F       #// 清空原有的防火墙策略,去除干扰
$IPT -t nat -F
$IPT -t mangle -F
$IPT -t raw -F
$IPT -X
$IPT -Z
$IPT -P INPUT DROP       #// 设置默认策略
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
#
#### 5.White List & Black List        #// 检查启用黑名单
[ -r $IP_WLIST ] && for i in `grep -v "^#" $IP_WLIST`
do
  $IPT -A INPUT -s $i -j ACCEPT
  $IPT -A OUTPUT -d $i -j ACCEPT
done
[ -r $IP_BLIST ] && for i in `grep -v "^#" $IP_BLIST`        #// 检查启用白名单
do
  $IPT -I INPUT -s $i -j DROP
  $IPT -I OUTPUT -d $i -j DROP
done
#
#### 6.Other Firewall Rules        #// 设置适用于本机的具体防火墙策略
$IPT -A INPUT -p udp --sport 53 -j ACCEPT
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -p tcp -i $LLAN_IF -m multiport --dport 80,2128:2151,8080 -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p icmp -m limit --limit 2/m --limit-burst 4 -j LOG --log-prefix "ICMP Packet
IN:"
$IPT -A INPUT -p icmp -m limit --limit 2/s --limit-burst 4 -j ACCEPT
$IPT -A OUTPUT -p udp --dport 53 -j ACCEPT
$IPT -A OUTPUT -p tcp -o $INET_IF -m multiport --dport 25,80,443 -j ACCEPT
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# ......
#
echo "Firewall Rule Setup ... Finished. "
 
阅读(1218) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~