关键词:
在Linux中,iptables为我们提供了批量备份与恢复规则的命令,防火墙脚本实际上是一个shell脚本程序,便于使用shell变量、程序控制逻辑,在需要重用、移植使用时会非常方便,只需修改下变量值就可使用iptables的备份及还原
防火墙规则的批量备份、还原用到两个命令,即iptables-save和iptables-restore,分别用来保存和恢复
1. iptables-save命令
用来批量导出防火墙规则,直接执行命令时,将显示当前启用的所有规则
[[email protected] ~]# iptables-save # Generated by iptables-save v1.4.7 on Sun Jan 7 06:07:58 2018 //注释 *filter //所在的表 :INPUT ACCEPT [0:0] //链名,默认策略 :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [41:5449] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //规则,省略了iptables -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT //提交前面的规则设置 # Completed on Sun Jan 7 06:07:58 2018 [[email protected] ~]# iptables-save > /opt/iptables.txt //备份所有表的规则 [[email protected] ~]# iptables-save > /etc/sysconfig/iptables //每次开机后,根据保存的规则内容进行重建
2. iptables-restore命令
用来批量导入Linux防火墙规则,如果已经使用iptables-save命令导出的备份文件,则恢复的过程一瞬间就能完成
[[email protected] ~]# iptables-restore /opt/iptables.txt //从备份文件中恢复规则
使用防火墙脚本
1. 定义基本变量
可以在防火墙规则较多时,定义以下变量,一旦网络环境发生变化,只需改下变量值就可使用
[[email protected] ~]# vim /opt/iptables.sh //创建脚本文件 #!/bin/bash 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.6" //网站服务器的内部地址 IPT="/sbin/iptables" //iptables命令路径 MOD="/sbin/modprobe" //modprobe命令路径 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 //支持FTP匹配 $MOD ip_conntrack_ftp //支持FTP连接跟踪
3. 调整/proc参数
在文件夹/proc/sys下存放着与系统相关的一些可控参数,可以直接用来改变内核的行为,通常作为Linux内核调优的实时入口,下面列出几个常用的/proc参数
$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. 设置具体的iptables规则
iptables的nat表主要用在Linux网关服务器,一般的主机型防火墙很少用到nat表
iptables的filter表主要用来过滤各种数据包,无论是Linux网关还是一般的Linux服务器都可能用的。主机型的防火墙主要使用INPUT、OUTPUT链,而对于网络型防火墙主要使用FORWARD链
$IPT -t filter -X //删除各表中自定义的链 $IPT -t nat -X $IPT -t filter -F //清空各表中已有的规则 $IPT -t nat -F $IPT -P INPUT DROP //设置规则链的默认策略 $IPT -P FORWARD DROP $IPT -P OUTPUT ACCEPT $IPT -t nat -A POSTROUTING -s $LAN_NET -o $INET_IF -j SNAT --to-source $INET_IP //SNAT策略,局域网共享上网 $IPT -t nat -A PREROUTING -i $INET_IF -d $INET_IP -p tcp --dport 80 -j DNAT --to-destination $LAN_WWW_IP //DNAT策略,发布内部Web服务器 $IPT -A FORWARD -s $LAN_NET -o $INET_IF -p tcp --dport 80 -j ACCEPT //允许内网与Internet中DNS、FTP、Web服务通信 $IPT -A FORWARD -s $LAN_NET -o $INET_IF -p tcp --dport 20:21 -j ACCEPT $IPT -A FORWARD -s $LAN_NET -o $INET_IF -p udp --dport 53 -j ACCEPT
5. 执行脚本
在实际应用中,不要生硬的照搬他人脚本内容,应根据情况进行针对型的设计,并做好整天规划,避免产生通信故障
[[email protected] ~]# chmod +x /opt/iptables.sh //添加执行权限 [[email protected] ~]# /opt/iptables.sh //执行脚本文件 [[email protected] ~]# vim /etc/rc.local //设置为开机自动执行 /opt/iptables.sh
对于大多数应用服务器,防火墙只针对本机进行防护,因此filter表中的INPUT、OUTPUT链用到的最多,特别是前者
案例:某公司的Web服务器采用RHEL6操作系统,为了加强网络访问的安全性,要求管理员熟悉iptables防火墙规则的编写,以便制定有效、可行的主机防护策略
需求描述:
(1)调整TCP相关参数,提高抵抗DoS攻击的能力
(2)只允许访问本机的Web服务,禁止其他任何形式的入站访问数据
(3)允许响应本机访问请求的数据包
实验步骤:
[[email protected] ~]# vim /opt/iptables_web.sh #!/bin/bash # 1. 定义基本变量 IPT="/sbin/iptables" CTL="/sbin/sysctl" # 2. 调整/proc参数 $CTL -w net.ipv4.tcp_syncookies=1 $CTL -w net.ipv4.tcp_syn_retries=3 $CTL -w net.ipv4.tcp_synack_retries=3 $CTL -w net.ipv4.tcp_fin_timeout=60 $CTL -w net.ipv4.tcp_max_syn_backlog=3200 # 3. 删除自定义的链、清空已有规则 $IPT -t filter -X $IPT -t nat -X $IPT -t mangle -X $IPT -t raw -X $IPT -t filter -F $IPT -t nat -F $IPT -t mangle -F $IPT -t raw -F # 4. 定义默认策略 $IPT -P INPUT DROP $IPT -P FORWARD DROP $IPT -P OUTPUT ACCEPT # 5. 设置filter表中的规则 $IPT -A INPUT -s $LAN_NET -o $INET_IF -p tcp --dport 80 -j ACCEPT $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables的常用命令及作用
iptables-save >文件 备份 通常是备份到除了/etc/sysconfig/iptables的其他文件iptables-restore<文件 恢复 从文件恢复到/etc/sysconfig/iptables文件中/etc/rc.d/init.d/iptables sa 查看详情
自动安装squid+iptables上网代理及上网行为管理脚本。
...行,所以勉强写了几句。本脚本是为了实现自动安装squid,iptables,并实现上网行为管理的第一份脚本。后续再将iptables的规则写出来.如有错误,或更好的实现方法,请大家一起讨论,研究。script:#!/bin/bash#Thisscriptautoconfigureip 查看详情
llinux防火墙(selinux防火墙firewalldnetfilter(iptables))及iptables规则备份和恢复(代码片段)
selinux防火墙getenforce查看防火墙状态setenforce0临时关闭(0关闭1开启)#状态enforcing:强制模式,代表SELinux运作中,且已经正确的开始限制domain/type了;permissive:宽容模式:代表SELinux运作中,不过仅会有警告讯息并不会实际限制dom... 查看详情
racrman定期备份及删除脚本
oraclerman备份及删除脚本、1.环境说明:os--linuxoracle--11.2.03一台服务器上两个库orclprodRAC双节点环境,采用节点1执行定制备份及删除脚本2.备份策略说明:1)周1周4周6执行全库备份,加上备份产生的归档,周2周3周日执行归档日志备... 查看详情
【mysql】xtrabackup备份及恢复脚本
参考技术A简介:此备份脚本的策略是每周日和周三进去全备其余每天增量备份。 查看详情
备份脚本及定时自动执行
...入bak目录下)→mkdirbakmysql(新建名为bakmysql的文件夹)2、写备份脚本#!/bin/bash##定义变量back_dir=/root/bak/bakmysqldate=$(date+ 查看详情
自动安装squid+iptables上网代理及上网行为管理脚本。
#本节内容为配置iptables 与 squid ,并以文件来获取规则,以方便管理规则。#接上一个脚本内容,此部分内容需根据需求更改部分内容。#停止squid服务systemctl enable squid &> /dev/nullsystemctl stop squid#... 查看详情
sqlserver2008数据库自动备份的sql脚本及使用bat命令执行脚本
-----sql脚本declare@fileNamevarchar(255),--定义备份文件名变量 @dbnamevarchar(255)--定义备份数据库名变量declaremycursorcursorfast_forwardforselectnamefrommaster..sysDatabasesorderbyname-- 查看详情
iptables自动添加规则脚本
#!/bin/bash#BY:http://sadoc.blog.51cto.com/#DATE:2015-12-24#IptablesForCentos#备份源配置文件/bin/cp/etc/sysconfig/iptables/etc/sysconfig/iptables.$(date+%F)#定义变量IPS=/sbin/iptables#清空默认规则$IPS-F$IPS-X$IPS-Z#先配 查看详情
iptables规则的保存备份恢复
1.规则保存编辑完iptables的规则使用命令:serviceiptablessave把规则保存在iptables的配置文件里面:/etc/sysconfig/iptables2.备份规则想把此刻的规则备份一下,一般情况是拷贝一个iptables的配置文件,也可以对规则进行备份。可以直接查... 查看详情
简单的全网备份脚本样板(代码片段)
web服务器每天定时推送的脚本#!/bin/baship=`hostname-I`[-d/backup]||mkdir-p/backup[-d/cup]||mkdir-p/cup[-d/cup/a]||mkdir-p/cup/a##开始打包并移动cp/var/spool/cron/root/cup/a/cp/etc/rc.local/cup/a/cp/etc/sysconfig/iptabl 查看详情
mysql自动备份脚本及异地定时ftp
分享个自己写的mysql自动备份脚本、定时执行设置及windows自动FTP,请大家指教。前提环境:mysql数据库服务器开启vsftpd,并配置合适帐号以便能被内网存储服务器FTP第一步:编写mysql自动执行脚本 #!/bin/sh #mysql_db_backup.... 查看详情
mysql自动备份脚本及异地定时ftp
分享个自己写的mysql自动备份脚本、定时执行设置及windows自动FTP,请大家指教。前提环境:mysql数据库服务器开启vsftpd,并配置合适帐号以便能被内网存储服务器FTP第一步:编写mysql自动执行脚本 #!/bin/sh #mysql_db_backup.... 查看详情
(3.2)mysqldump之备份单个表及脚本批量备份
单库单表备份通用格式 mysqldump-uroot-p123456test1char_1>/opt/mysql_test1_char1.sql 分析:这里test1是库名,char_1是表名 单库多表备份通用格式 如果要一次性备份多个表,则语法如下 演示如下: ... 查看详情
(3.2)mysqldump之备份单个表及脚本批量备份
单库单表备份通用格式 mysqldump-uroot-p123456test1char_1>/opt/mysql_test1_char1.sql 分析:这里test1是库名,char_1是表名 单库多表备份通用格式 如果要一次性备份多个表,则语法如下 演示如下: ... 查看详情
mongo数据备份及恢复脚本
#!/bin/bashtime="$(date+"%Y.%m.%d")"id=`echo"showdbs;"|/usr/local/mongod3.2/bin/mongo10.124.156.251:27018--shell|grep‘A[0-9]{13}‘|awk-F‘‘‘{print$1}‘`foriin$iddo/usr/local/mongod3.2/bin/mongodump--ho 查看详情
nginx--基于crond定时服务+shell脚本实现nginx日志自动清理及备份(代码片段)
...大家都用过nginx,关于nginx日志自动清理、自动分割及备份压缩,方案有很多但是不论哪一种,核心原理都是使用kill-USR1+nginx的PID进程文件来实现本文主要介绍自定义shell脚本+crond定时任务实现。二、shell脚本2.1... 查看详情
iptables规则备份和恢复|firewalld
10.19iptables规则备份和恢复备份(另存为)命令:iptables-save[[email protected]~]#iptables-save>/tmp/ipt.txt恢复[[email protected]~]#iptables-restore</tmp/ipt.txt10.20firewalld的9个zone先执行以下操作切换至firewalld防火 查看详情