iptables防火墙详解(三)规则的导出、导入以及编写防火墙脚本-阿里云开发者社区

开发者社区> 科技小先锋> 正文

iptables防火墙详解(三)规则的导出、导入以及编写防火墙脚本

简介:
+关注继续查看

在前面的文章中我们已经学习了如何编写一些简单的防火墙规则了,但是这些规则只是临时生效的,当防火墙关闭或者服务器关机,重启之后所有的规则将会清空。因此我需要将编写好的防火墙规则保存下来,以便在防火墙关闭或重新启动系统后,防火墙规则还可以使用,而不需要再次编写。

iptables规则的导出、导人

防火墙规则的批量备份,还原需要用到两个命令iptables-save、iptables-restore,分别用来保存和恢复。

1、备份iptables规则

iptables-save命令用来批量导出iptables防火墙规则,直接执行iptables-save时,将显示出当前启用的所有规则,按照raw、mangle、nat、filter表的顺序依次列出;若只希望显示出某一个表,应添加“-t表名”作为命令选项,然后结合重定向输入“>”将输出内容重定向到某个文件中。

列如:备份所有表的规则,操作如下:

[root@localhost /]#iptables-save > /opt/iprules_all.txt

或者

[root@localhost /]#service iptables save

后者默认将所有规则保存到“/etc/sysconfig/iptables”文件中。

2、恢复iptables规则

iptables-retore命令用来批量导入Linux防火墙规则,如果已经有使用iptable-save命令导出的备份文件,则恢复规则的过程也就是一瞬间的事。与iptables-save命令相对的,iptables-restore命令应结合重定向输入来指定备份文件的位置。

列如:将上所备份的规则恢复到iptables中,操作如下:

[root@localhost /]#iptables-restore < /opt/iprules_all.txt

或者

[root@localhost /]#service iptables start

后者默认将“/etc/sysconfig/iptables”文件中的内容加载到iptables中,也就是说,如果备份使用的是“service iptables save”那么恢复的时候就应该使用“service iptables start”。


使用iptables服务

开启或关闭iptables服务使用以下命令

[root@localhost /]#service iptables start //开启iptables服务

[root@localhost /]#service iptables stop  //关闭iptables服务

前者开启iptables服务,默认加载“/etc/sysconfig/iptables”中的规则,后者关闭iptables服务,默认将会清空所有的iptables规则。


编写防火墙脚本

在生产环境中,我很少会一条一条的去编写iptables规则,最普遍的做法就是,将其写到shell脚本,进行一次性处理。常见的防火墙脚本中,通常包括变量定义、模块加载、/proc调整、规则设置等多个部分,某些简单的防火墙脚本可能只包括规则设置部分。下面我们通过一个“网络型”防火墙脚本实例来了解如何编写防火墙脚本。

[root@loaclhost /]#vim /opt/myipfw.sh

#!/bin/bash

# 1.定义基本变量

INET_IF="eth0"                 //外网接口

INET_IP="218.29.30.31"         //外网接口地址

LAN_IF="eth1"                  //内网接口

LAN_IP="192.168.1.1"           //内网接口地址

LAN_NET="192.168.1.0/24"       //内网网段

LAN_WWW_IP="192.168.1.7"       //网站服务器的内部地址

IPT="/sbin/iptables"           //iptables命令的路径

MOD="/sbin/modprobe"           //modprode命令的路径

CTL="/sbin/sysctl"             //sysctl命令的路径

# 2.加载内核模块

$MOD ip_tables              //iptables基本模块

$MOD ip_conntrack           //连接跟踪模块

$MOD ipt_REJECT             //拒绝操作模块

$MOD ipt_LOG                //日志记录模块

$MOD ipt_iprange            //支持IP范围匹配

$MOD xt_tcpudp              //支持tcp、udp协议

$MOD xt_state               //支持状态匹配

$MOD xt_multiport           //支持多端口匹配

$MOD xt_mac                 //支持MAC地址匹配

$MOD ip_nat_ftp             //支持TFP地址转换

$MOD ip_conntrack_ftp       //支持TFP连接跟踪  

# 3.调整/porc参数

$CTL -w net.ipv4.ip_forward=1                      //打开路由转发功能

$CTL -w net.ipv4.ip_default_ttl=128                //修改ICMP响应超时

$CTL -w net.ipv4.icmp_echo_ignore_all=1            //拒绝响应ICMP请求

$CTL -w net.ipv4.icmp_echo_ignore_broadcasts       //拒绝响应ICMP广播

$CTL -w net.ipv4.tcp_syncookies=1                  //启用SYN Cookie机制

$CTL -w net.ipv4.tcp_syn_retries=3                 //最大SYN请求重试次数

$CTL -w net.ipv4.tcp_synack_retries=3              //最大ACK确认重试次数

$CTL -w net.ipv4.tcp_fin_timeout=60                //TCP连接等待超时

$CTL -w net.ipv4.tcp_max_syn_backlog=3200          //SYN请求的队列长度

# 4.设置具体的防火墙规则

# 4.1删除自定义链、清空已有规则

$IPT -t filter -X       //清空各表中定义的链

$IPT -t nat -X

$IPT -t mangel -X

$IPT -t raw -X

$IPT -t filter -F       //清空各表中已有的规则

$IPT -t nat -F

$IPT -t mangel -F

$IPT -t raw -F

# 4.2定义默认规则

$IPT -P INPUT DROP

$IPT -P FORWARD DROP

$IPT -P OUTPUT ACCETP

# 4.3设置nat表中的各种策略

$IPT -t nat -A POSTROUTING -s $LAN_NAT -o $INET_IF -j SNAT --to-source $INET_IP

$IPT -t nat -A PREROUTING -i $INET_IF -d $INET_IP -p tcp --dport 80 -j DNAT --to-destination $LAN_WWW_IP

# 4.4设置filter表中的各种规则

$IPT -A INPUT -m state ESTABLISHED,RELATED -j ACCEPT

$IPT -A FORWARD -s $LAN_NET -o $INET_IF -p udp --dport 53 -j ACCEPT

$IPT -A FORWARD -s $LAN_NET -o $INET_IF -p tcp -m multiport --dport 20,21,25,80,110,143,443 -j ACCEPT

$IPT -A FORWARD -d $LAN_NET -i $INET_IF -m state ESTABLISHED,RELATED -j ACCEPT

$IPT -A FORWARD -d $LAN_WWW_IP -p tcp --dport 80 -j ACCEPT

$IPT -A FORWARD -d $LAN_WWW_IP -p tcp --sport 80 -j ACCEPT


上述防火墙脚本实例中,仅列出其中最基础的一些规则。更多具体的规则设置取决于实际的应用需求,还有待大家在生产环境中慢慢去体会,逐渐融会贯通。




本文转自yun5277 51CTO博客,原文链接:http://blog.51cto.com/dengqi/1265624,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
DataTable 导出到Excel
代码如下:   #region DataTable 导出到Excel/// Author: jy Wang/// Date: 2008-7-28/// /// DataTable 导出到Excel/// /// 列名数组/// 列宽数组/// 报表标题/// 导出文件名/// 图标的位置...
824 0
搭建基于netfilter/iptables的防火墙实验环境
 防火墙作为一种网络或系统之间强制实行访问控制的机制,是确保网络安全的重要手段。针对不同的需求和应用环境,可以量身定制出不同的防火墙系统。防火墙大到可由若干路由器和堡垒主机构成,也可小到仅仅是网络操作系统上一个防火墙软件包所提供的包过滤功能。
927 0
linux crontab执行脚本中文乱码问题
在linux中写了个定时脚本,其中包含中文字符。脚本手动运行一切正常,但是使用crontab运行后发现日志中应该出现中文的地方全是???等乱码。 分析出原因肯定是环境变量的问题。
919 0
linux平台下防火墙iptables原理(转)
原文地址:http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646466.html iptables简介     netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
896 0
6967
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载