文档库 最新最全的文档下载
当前位置:文档库 › 一个简单的redhatlinux防火墙脚本

一个简单的redhatlinux防火墙脚本

[原创]一个简单的redhatlinux防火墙脚本
文章标题:[原创]一个简单的redhatlinux防火墙脚本顶部 goldberg 发布于:2006-09-2520:39 [楼主][原创]一个简单的redhatlinux防火墙脚本
文章作者:Goldberg[安全矩阵](https://www.wendangku.net/doc/4a8210982.html,)
信息来源:邪恶八进制信息安全团队(https://www.wendangku.net/doc/4a8210982.html,)

注意:此文首发于邪恶八进制(https://www.wendangku.net/doc/4a8210982.html,)

今天下午给自己的工作机器(redhatlinux9内核2.4.20-8)编写了一个简单的防火墙脚本,我的机器双网卡(eth0联内网eth1联外网)并有个固定的IP:221.226.x.x
WWW,DNS,DHCP,MIAL等服务都做起来了于是组了个小局域网带几台机器
防火墙脚本在/etc/rc.d/init.d/firewall
边编写防火墙脚本边听这个歌曲:那些花儿,嘿,感觉真好,一会就写好了,嘎嘎.
规则写的比较少也比较简单让各位大牛们见笑了有兴趣的可以跟帖讨论一下
具体脚本如下:

echo"firewallstart!letusgo!"
echo1>/proc/sys/net/ipv4/ip_forward
echo1>/proc/sys/net/ipv4/ip_dynaddr
echo0>/proc/sys/net/ipv4/tcp_ecn
echo1>/proc/sys/net/ipv4/tcp_syncookies
echo1>/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

#startkernelmodules
/sbin/modprobeip_tables
/sbin/modprobeiptable_nat
/sbin/modprobeiptable_filter
/sbin/modprobeip_conntrack
/sbin/modprobeip_conntrack_ftp
/sbin/modprobeip_nat_ftp
/sbin/modprobeipt_MASQUERADE
/sbin/modprobeipt_state
/sbin/modprobeipt_multiport

#clearchainsrules
/sbin/iptables-F
/sbin/iptables-tnat-F

#clearpacketscounts
/sbin/iptables-Z
/sbin/iptables-tnat-Z

#setdefaultmethods:DROP
#/sbin/iptables-PINPUTDROP
#/sbin/iptables-PFORWARDDROP
#/sbin/iptables-POUTPUTDROP

#allowlocalconnect
/sbin/iptables-AINPUT-ilo-jACCEPT
/sbin/iptables-AOUTPUT-olo-jACCEPT

#allowoutgoing
/sbin/iptables-AOUTPUT-oeth1-ptcp-mstate--stateESTABLISHED,NEW,RELATED-jACCEPT

#允许来自防火墙的包传到专用网
/sbin/iptables-AOUTPUT-oeth0-d$PRIV-jACCEPT

#接受来自专用网络到达专用网络接口的所有流量
/sbin/iptables-AINUPUT-ieth0-ptcp-s$PRIV-jACCEPT

#检查到达外部网络接口的每个包的状态,属于已经存在的TCP连接的包都允许通过
iptables-AINPUT-ieth1-ptcp-mstate--stateESTABLISHED,RELATED-jACCEPT

#allowpingproxy
/sbin/iptables-AINPUT-picmp--icmp-tyeecho-request-mlimit--limit1/s--limit-burst10-jACCEPT
/sbin/iptables-AOUTPUT-picmp--icmp-typeecho-reply-jACCEPT

#allowDNS
/sbin/iptables-AOUTPUT--dport53-jACCEPT
/sbin/iptables-AINPUT--sport53-jACCEPT

#letusbeginforwardrules
/sbin/iptables-AFORWARD-ptcp-mmultiport--dport135,137,138,139,445-jACCEPT
/sbin/iptables-AFORWARD-ieth0-jACCEPT
/sbin/iptables-AFORWARD-ieth1-mstate--stateESTABLISHED,RELATED-jACCEPT
/sbin/iptables-AFORWARD-mstate--stateESTABLISHED,RELATED-jACCEPT
/sbin/iptables-AFORWARD-f-mlimit--limit100/s--limit-burst120-jLOG--log-levelDEBUG

#letusbeginNATrules
#NATforHTTP
/sbin/iptables-tnat-APREROUTING-ptcp-ieth1-d221.226.x.x-

-dport80-jDNAT--to-destination192.168.5.16:80
/sbin/iptables-tnat-APOSTROUTING-ptcp-oeth1-s192.168.5.16--sport80-jSNAT--to-source221.226.x.x

#NATforFTP
/sbin/iptables-tnat-APREROUTING-ptcp-ieth1-d221.226.x.x--dport21-jDNAT--to-destination192.168.5.16:21
/sbin/iptables-tnat-APOSTROUTING-ptcp-oeth1-s192.168.5.16--sport21-jSNAT--to-source221.226.x.x:21
/sbin/iptables-tnat-APREROUTING-ptcp-ieth1-d221.226.x.x--dport20-jDNAT--to-destination192.168.5.16:20
/sbin/iptables-tnat-APOSTROUTING-ptcp-oeth1-s192.168.5.16--sport20-jSNAT--to-source221.226.x.x:20

#NATforHTTPS
/sbin/iptables-tnat-APREROUTING-ptcp-ieth1-d221.226.x.x--dport443-jDNAT--to-destination192.168.5.16:443
/sbin/iptables-tnat-APOSTROUTING-ptcp-oeth1-s192.168.5.16--dport443-jSNAT--to-source221.226.x.x:443

#NATforSMTPandPOP3
/sbin/iptables-tnat-APREROUTING-ptcp-ieth1-d221.226.x.x--dport25-j--to-destination192.168.5.16:25
/sbin/iptables-tnat-APOSTROUTING-ptcp-oeth1-s192.168.5.16--sport25-j--to-source221.226.x.x:25
/sbin/iptables-tnat-APREROUTING-ptcp-ieth1-d221.226.x.x--dport110-j--to-destination192.168.5.16:110
/sbin/iptables-tnat-APOSTROUTING-ptcp-oeth1-s192.168.5.16--sport110-j--to-source221.226.x.x:110
/sbin/iptables-tnat-APREROUTING-ptcp-ieth1-d221.226.x.x--dport143-j--to-destination192.168.5.16:143
/sbin/iptables-tnat-APOSTROUTING-ptcp-oeth1-s192.168.5.16--sport143-j--to-source221.226.x.x:143

#NATforTELNET
/sbin/iptables-tnat-APREROUTING-ptcp-ieth1-d221.226.x.x--dport23-j--to-destination192.168.5.16:23
/sbin/iptables-tnat-APOSTROUTING-ptcp-oeth1-s192.168.5.16--sport23-j--to-source221.226.x.x:23

#NATforSSH
/sbin/iptables-tnat-APREROUTING-ptcp-ieth1-d221.226.x.x--dport22-j--to-destination192.168.5.16:22
/sbin/iptables-tnat-APOSTROUTING-ptcp-oeth1-s192.168.5.16--sport22-j--to-source221.226.x.x:22

#IPMASQUERADE
/sbin/iptables-tnat-APOSTROUTING-oeth1-jMASQUERADE
------------------------------------------------------------------------------
对防火墙脚本的改进
使用自己定义链
/sbin/iptables-Npriv
/sbin/iptables-Apriv-mstate--stateESTABLISHED,RELATED-jACCEPT
#允许进入防火墙的SSH包
/sbin/iptables-Apriv-ptcp-s$PRIV--dport22-d192.168.5.16-jACCEPT
#允许发往外网的FTPSSHHTTP包
/sbin/iptables-Apriv-ptcp-d0/0--dport21-jACCEPT
/sbin/iptables-Apriv-ptcp-d0/0--dport22-jACCEPT
/sbin/iptables-Apriv-ptcp-d0/0--dport80-jACCEPT
/sbin/iptables-Apriv-ptcp-d0/0--dport8080-jACCEPT

如果有DMZ的话,可以定义一个链丢弃来自专用网(IP欺骗)和DMZ源地址的所有的包
/sbin/iptables-Next
/sbin/iptables-Aext-s192.168.5.0/24-jDROP
/sbin/iptables-Aext-sDMZ的IP/24-jDROP
#接受发到外网的包
/sbin/iptables-Aext-s0/0--dport1024:65535-jACCEPT
#接受来自自己已有的连接
/sbin/iptables-Aext-s0/0-d221.226.x.x-jACCEPT

/sbin/iptables-AINPUT-ieth0-jpriv
/sbin/iptables-AINPUT-ieth1-jext




,


[此贴被goldberg在2006-10-2019:39重新编辑]顶部 goldberg 发布于:2006-09-2520:59 [1楼]
另外再

小提示一下,如果你编写过防火墙脚本并启动后发现无法用浏览器浏览网页的话那么就干脆将filter表中的INPUT
OUTPUTFORWARD三项以及nat表中的PREROUTINGPOSTROUTINGOUTPUT三项全设置为默认的ACCEPT
这样虽然不安全但省得麻烦了顶部 小胖 发布于:2006-09-2608:48 [2楼]
弱弱的问一句:如何让linux开机就可以运行你的脚本呢?这样设置的话开机是不会默认启动的需要开机后servicefirewallstart手动启动顶部 n3tl04d 发布于:2006-09-2610:42 [3楼]
有/etc/rc.d/rc.local
加上/etc/rc.d/init.d/firewall就可以了!顶部 goldberg 发布于:2006-09-2610:50 [4楼]

Quote:
这里是引用第[3楼]的n3tl04d于2006-09-2610:42发表的:
有/etc/rc.d/rc.local
加上/etc/rc.d/init.d/firewall就可以了!
恩是的这样是可以
也可以用iptables脚本来控制防火墙
iptables-save>/etc/sysconfig/iptables
这样就控制防火墙了
比如/etc/init.d/iptablesstart/restart/stop/status


[此贴被goldberg在2006-10-2018:59重新编辑]顶部 only_over 发布于:2006-09-2612:26 [5楼]

Copycode

#!/bin/bash
#StartupscriptfortheRHfirewall
#包含函数库
./etc/rc.d/init.d/functions
#获取网络配置
./etc/sysconfig/network
#检测NETWORKING是否为"yes"
["${NETWORKING}"="no"]&exit0
#firewall目录
firewall=/root/security
#启动防火墙脚本函数
start(){
echo$"Startingfirewall:"
$firewall/firewall
RETVAL=$?
echo
}
#关闭防火墙脚本函数
stop(){
echo$"Stoppingfirewall:"
$firewall/firewallstop
RETVAL=$?
echo
}
#根据参数选择调用
case"$1"in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo$"Usage:$0start|stop|restart"
exit1
esac
exit0



貌似goldberg的脚本自身没stopstart的功能..顶部 goldberg 发布于:2006-09-2612:36 [6楼]

Quote:
这里是引用第[5楼]的only_over于2006-09-2612:26发表的:
[貌似goldberg的脚本自身没stopstart的功能..
.......
嘿嘿俺水平太菜
这个脚本算是个非常简单和初级的脚本
对于个人的机器来说基本够用了
况且直接将/etc/rc.d/init.d/firewall插入到/etc/rc.d/rc.local就完事了,省点事
回头在俺那的代理服务器上俺好好的编写一个完善的脚本顶部 only_over 发布于:2006-09-2612:47 [7楼]
#chmod700/etc/rc.d/rc.firewall(PS:你们都不用设置文件权限的吗?如果我的umask默认值为777.不就访问不了这文件)
#vi/etc/rc.d/init.d/firewall
/etc/rc.d/rc.firewall


[此贴被only_over在2006-09-2612:54重新编辑]顶部 goldberg 发布于:2006-09-2613:06 [8楼]

Quote:
这里是引用第[7楼]的only_over于2006-09-2612:47发表的:
#chmod700/etc/rc.d/rc.firewall(PS:你们都不用设置文件权限的吗?如果我的umask默认值为777.不就访问不了这文件)
#vi/etc/rc.d/init.d/firewall
/etc/rc.d/rc.firewall
巨汗..................................
我还没傻到那种程度吧
我设置的是:chmod755/

etc/rc.d/init.d/firewall
我不是说明了吗我只是把firewall脚本的内容帖出来
相关的设置就没说
比如还要
routeadd-net192.168.5.0netmask255.255.255.0deveth0defaultgw192.168.5.16
这些东西要是都写上去那还有个完?那干脆写成了架构防火墙的论文了
顺便BS一下你顶部 yjd 发布于:2006-09-2620:53 [9楼]

Quote:
这里是引用第[1楼]的goldberg于2006-09-2520:59发表的:
另外再小提示一下,如果你编写过防火墙脚本并启动后发现无法用浏览器浏览网页的话那么就干脆将filter表中的INPUT
OUTPUTFORWARD三项以及nat表中的PREROUTINGPOSTROUTINGOUTPUT三项全设置为默认的ACCEPT
这样虽然不安全但省得麻烦了
直接serviceiptablesstop更快

-----------
貌似这些没必要写在脚本上哦?
#startkernelmodules
/sbin/modprobeip_tables
/sbin/modprobeiptable_nat
/sbin/modprobeiptable_filter
/sbin/modprobeip_conntrack
/sbin/modprobeip_conntrack_ftp
/sbin/modprobeip_nat_ftp
/sbin/modprobeipt_MASQUERADE
/sbin/modprobeipt_state
/sbin/modprobeipt_multiport

---------------------------------

#!/bin/bash
#
#
#chkconfig:3455525

ntsysv,setup


[此贴被yjd在2006-09-2621:12重新编辑](c)Copyleft2003-2007,EvilOctalSecurityTeam.
ThisfileisdecompiledbyanunregisteredversionofChmDecompiler.
Regsiteredversiondoesnotshowthismessage.
YoucandownloadChmDecompilerat:https://www.wendangku.net/doc/4a8210982.html,/


相关文档