iptables相关脚本


用了iptables一段时间,把自己的。一个iptables脚本献给大家,供大家参考!

#!/bin/bash

#

# ========================================================

# 脚本说明:

# 欢迎使用iptables.rule这个script来建立您的防火墙

# 这个script还需要您自己根据您的环境设定后,方可工作

# 基本规则定义为::[拒绝所有,开放特定]

#

# 强烈建议

# 不了解Linux防火墙机制iptables的朋友使用这个script

# 可能会不太了解每个命令的意义,如果这样

# 欢迎您参考以下几个网页:

# http://www.study-area.org/linux/servers/linux_nat.htm

# http://linux.vbird.org/linux_server/0240network-secure-1.php

# http://linux.vbird.org/linux_server/0250simple_firewall.php

# 使用说明

# 请先将这个脚本权限更改为可执行:

# chmod 755 iptables.rule

# 将此脚本放置在 /usr/local/firewall 下

# mkdir -p /usr/local/firewall

# mv /您的完整的路径/iptables.rule /usr/local/firewall

# 执行测试:

# /usr/local/firewall.rule

# iptables -L -n (这个动作检查防火墙规则)

# 将下面一行加入 /etc/rc.d/rc.local 中

# /usr/local/firewall.rule

# 取消防火墙

# iptables -F

# iptables -X

# iptables -t nat -F

# iptables -t nat -X

# ========================================================

# 版权提示:

# 此脚本为 GPL 授权,任何人都可以使用

# 使用此 scripts 发生任何问题时

# 本人不负任何责任

# VBird

# ========================================================

# 历史纪录:

# 2002/08/20 VBird 首次

# 2003/04/26 VBird 加入砍站软体的相关执行文件

# 2003/08/25 VBird 修改 INPUT 的 Policy 为 DROP

# ========================================================

# 0.0 Please key in your parameters

# 这个EXTIF后面接的为[对外的网卡"WAN"]

# 一般来说,如果是ADSL/FTTH等,就是"ppp0"

# 如果是固定IP,那么就是"eth0"

# The interface that connect Internet

EXTIF="ppp0"

# 下面的INIF为对内网卡(Lan)

# 如果您的Linux没有对内网卡,请留空

# INIF=""

# 

# the inside interface. if you don't have this one

# and you must let this be black ex> INIF=""

INIF="eth1"

INNET="192.168.1.0/24" # This is for NAT's network

# 1.0 测试您的Linux内核版本及防火墙模组

#kver=`uname -r | cut -c 1-3`

#if [ "$kver" != "2.4" ] && [ "$kver" != "2.5" ]; then

#echo "Your Linux Kernel Version may not be suported by this script!"

#echo "This scripts will not be runing"

#exit

# fi

# ipchains=`lsmod | grep ipchains`

# if [ "$ipchains" != "" ]; then

#echo "unload ipchains in your system"

#rmmod ipchains 2> /dev/null

# fi

# 2.0 载入模组

  1. PATH=/sbin:/bin:/usr/sbin:/usr/bin  
  2.  
  3. export PATH EXTIF INIF INNET  
  4.  
  5. modprobe ip_tables > /dev/null 2>&1  
  6.  
  7. modprobe iptable_nat > /dev/null 2>&1  
  8.  
  9. modprobe ip_nat_ftp > /dev/null 2>&1  
  10.  
  11. modprobe ip_nat_irc > /dev/null 2>&1  
  12.  
  13. modprobe ip_conntrack > /dev/null 2>&1  
  14.  
  15. modprobe ip_conntrack_ftp > /dev/null 2>&1  
  16.  
  17. modprobe ip_conntrack_irc > /dev/null 2>&1  
  18.  

# 3.0 清除所有的防火墙规则

  1. /sbin/iptables -F  
  2.  
  3. /sbin/iptables -X  
  4.  
  5. /sbin/iptables -Z  
  6.  
  7. /sbin/iptables -F -t nat  
  8.  
  9. /sbin/iptables -X -t nat  
  10.  
  11. /sbin/iptables -Z -t nat  
  12.  
  13. /sbin/iptables -P INPUT DROP  
  14.  
  15. /sbin/iptables -P OUTPUT ACCEPT  
  16.  
  17. /sbin/iptables -P FORWARD ACCEPT  
  18.  
  19. /sbin/iptables -t nat -P PREROUTING ACCEPT  
  20.  
  21. /sbin/iptables -t nat -P POSTROUTING ACCEPT  
  22.  
  23. /sbin/iptables -t nat -P OUTPUT ACCEPT  
  24.  

# 4.0 先允许任何网络,包括lo这个界面

# 以及刚才指定的内部界面(LAN)

# 当然,重点是启动您的Linux为NAT服务器功能

/sbin/iptables -A INPUT -i lo -j ACCEPT

if [ "$INIF" != "" ]; then

/sbin/iptables -A INPUT -i $INIF -j ACCEPT

echo "1" > /proc/sys/net/ipv4/ip_forward

/sbin/iptables -t nat -A POSTROUTING -s $INNET -o $EXTIF -j MASQUERADE

fi

# 5.0 开始载入任何可以拒绝的网络设定的文件

# 下面2个文件可以自行建立

if [ -f /usr/local/firewall.deny ]; then

sh /usr/local/firewall.deny

fi

if [ -f /usr/local/firewall.allow ]; then

sh /usr/local/firewall.allow

fi

# 6.0 下面这个文件如果存在,则执行!!

# 请注意::这个文件与防止砍站的软件有关

if [ -f /usr/local/firewall/httpd-err/iptables.http ]; then

sh /usr/local/firewall/httpd-err/iptables.http

fi

# 7.0 允许ICMP封包,允许已建立的连接通过

/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

AICMP="0 3 3/4 4 11 12 14 16 18"

for tyicmp in $AICMP

do

/sbin/iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT

done

# 8.0 Allow services,请关闭您的服务器没有开放的服务..在行前加"#"..

  1. # /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 22 -j ACCEPT # SSH  
  2.  
  3. #/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 25 -j ACCEPT # SMTP  
  4.  
  5. /sbin/iptables -A INPUT -p UDP -i $EXTIF --dport 53 -j ACCEPT # DNS  
  6.  
  7. /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 53 -j ACCEPT # DNS  
  8.  
  9. /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 80 -j ACCEPT # WWW  
  10.  
  11. /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 21 -j ACCEPT # FTP  
  12.  
  13. # /sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 20000:30000 -j ACCEPT # PASV_PORTS FTP USE  
  14.  
  15. # /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 110 -j ACCEPT # POP3  
  16.  
  17. # /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 113 -j ACCEPT # auth  
  18.  
  19. # /sbin/iptables -A INPUT -p tcp -i eth1 -s 192.168.1.0/24 --dport 137:139  
  20.  

通过一个iptables相关脚本,想必大家都认识了iptables,希望对大家有所帮助!

  1. 如何使用 IPTables
  2. 如何用iptables实现NAT
  3. iptables配置工具
  4. iptables与stun
  5. iptables 添加模块HOWTO
  6. netfilter/iptables模块功能介绍
  7. iptables 源码分析
  8. iptables 总结与应用心得

相关内容

    暂无相关文章