一个经典实用的iptables shell脚本

分类:shell编程 阅读:90074 次

先解释一下iptables里的参数意思:
A:添加(跟链)
-I:插入
-p:跟协议
-s:源IP
-d:目标IP
-j:操作行为
-t:加表
--to-source:SNAT用,表示改成的SNAT源地址
--to-destination:DNAT用,表示改成的DANT目标地址

ACCEPT通过

DROP不通过

-s 210.22.23.0/24 表示来源的IP地址的是:210.22.23.0到210.22.23.255 这个段

封IP段的命令是
iptables-IINPUT-s124.115.0.0/16-jDROP
iptables-IINPUT-s124.115.3.0/16-jDROP
iptables-IINPUT-s124.115.4.0/16-jDROP



#!/bin/sh
#
modprobeipt_MASQUERADE
modprobeip_conntrack_ftp
modprobeip_nat_ftp
iptables-F
iptables-tnat-F
iptables-X
iptables-tnat-X
###########################INPUT键###################################

iptables-PINPUTDROP
iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT
iptables-AINPUT-ptcp-mmultiport--dports110,80,25-jACCEPT
iptables-AINPUT-ptcp-s192.168.0.0/24--dport139-jACCEPT
#允许内网samba,smtp,pop3,连接
iptables-AINPUT-ieth1-pudp-mmultiport--dports53-jACCEPT
#允许dns连接
iptables-AINPUT-ptcp--dport1723-jACCEPT
iptables-AINPUT-pgre-jACCEPT
#允许外网vpn连接
iptables-AINPUT-s192.186.0.0/24-ptcp-mstate--stateESTABLISHED,RELATED-jACCEPT
iptables-AINPUT-ippp0-ptcp--syn-mconnlimit--connlimit-above15-jDROP
#为了防止DOS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃
iptables-AINPUT-s192.186.0.0/24-ptcp--syn-mconnlimit--connlimit-above15-jDROP
#为了防止DOS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃
iptables-AINPUT-picmp-mlimit--limit3/s-jLOG--log-levelINFO--log-prefix"ICMPpacketIN:"
iptables-AINPUT-picmp-jDROP
#禁止icmp通信-
ping不通
iptables-tnat-APOSTROUTING-oppp0-s192.168.0.0/24-jMASQUERADE
#内网转发
iptables-Nsyn-flood
iptables-AINPUT-ptcp--syn-jsyn-flood
iptables-Isyn-flood-ptcp-mlimit--limit3/s--limit-burst6-jRETURN
iptables-Asyn-flood-jREJECT
#防止SYN攻击轻量
#######################FORWARD链###########################
iptables-PFORWARDDROP
iptables-AFORWARD-ptcp-s192.168.0.0/24-mmultiport--dports80,110,21,25,1723-jACCEPT
iptables-AFORWARD-pudp-s192.168.0.0/24--dport53-jACCEPT
iptables-AFORWARD-pgre-s192.168.0.0/24-jACCEPT
iptables-AFORWARD-picmp-s192.168.0.0/24-jACCEPT
#允许vpn客户走vpn网络连接外网
iptables-AFORWARD-mstate--stateESTABLISHED,RELATED-jACCEPT
iptables-IFORWARD-pudp--dport53-mstring--string"tencent"-mtime--timestart8:15--timestop12:30--daysMon,Tue,Wed,Thu,Fri,Sat-jDROP
#星期一到星期六的8:00-12:30禁止qq通信
iptables-IFORWARD-pudp--dport53-mstring--string"TENCENT"-mtime--timestart8:15--timestop12:30--daysMon,Tue,Wed,Thu,Fri,Sat-jDROP
#星期一到星期六的8:00-12:30禁止qq通信
iptables-IFORWARD-pudp--dport53-mstring--string"tencent"-mtime--timestart13:30--timestop20:30--daysMon,Tue,Wed,Thu,Fri,Sat-jDROP
iptables-IFORWARD-pudp--dport53-mstring--string"TENCENT"-mtime--timestart13:30--timestop20:30--daysMon,Tue,Wed,Thu,Fri,Sat-jDROP
#星期一到星期六的13:30-20:30禁止QQ通信
iptables-IFORWARD-s192.168.0.0/24-mstring--string"qq
.com"-mtime--timestart8:15--timestop12:30--daysMon,Tue,Wed,Thu,Fri,Sat-jDROP
#星期一到星期六的8:00-12:30禁止qq网页
iptables-IFORWARD-s192.168.0.0/24-mstring--string"qq.com"-mtime--timestart13:00--timestop20:30--daysMon,Tue,Wed,Thu,Fri,Sat-jDROP
#星期一到星期六的13:30-20:30禁止QQ网页
iptables-IFORWARD-s192.168.0.0/24-mstring--string"ay2000
.net"-jDROP
iptables-IFORWARD-d192.168.0.0/24-mstring--string"宽频影院"-jDROP
iptables-IFORWARD-s192.168.0.0/24-mstring--string"色情"-jDROP
iptables-IFORWARD-ptcp--sport80-mstring--string"广告"-jDROP
#禁止ay2000
.net,宽频影院,色情,广告网页连接!但中文不是很理想
iptables-AFORWARD-mipp2p--edk--kazaa--bit-jDROP
iptables-AFORWARD-ptcp-mipp2p--ares-jDROP
iptables-AFORWARD-pudp-mipp2p--kazaa-jDROP
#禁止BT连接
iptables-AFORWARD-ptcp--syn--dport80-mconnlimit--connlimit-above15--connlimit-mask24
#######################################################################
sysctl-wnet.
ipv4.ip_forward=1&>/dev/null
#打开转发
#######################################################################
sysctl-wnet.ipv4.tcp_syncookies=1&>/dev/null
#打开syncookie(轻量级预防DOS攻击)
sysctl-wnet.ipv4.
netfilter.ip_conntrack_tcp_timeout_established=3800&>/dev/null
#设置默认TCP连接痴呆时长为3800秒(此选项可以大大降低连接数)
sysctl-wnet.ipv4.ip_conntrack_max=300000&>/dev/null
#设置支持最大连接树为30W(这个根据你的内存和iptables版本来,每个connection需要300多个字节)
#######################################################################
iptables-IINPUT-s192.168.0.50-jACCEPT
iptables-IFORWARD-s192.168.0.50-jACCEPT
#192.168.0.50是我的机子,全部放行!
############################完#########################################