软件防火墙
Linux提供的软件防火墙,名为iptables,它可以理解为是一个客户端代理,通过iptables的代理,将用户配置的安全策略执行到对应的安全框架中,这个安全框架称之为netfilter。
iptables是一个命令行的工具,位于用户空间,我们用这个工具操作真正的框架,也就是netfilter
真正实现流量过滤的防火墙框架是netfilter,位于内核空间,它俩共同组成了Linux的软件防火墙,一般用来代替昂贵的硬件防火墙,实现数据包过滤,网络地址转换等。
在Centos7发行版本下,firewalld防火墙又取代了iptables防火墙
iptables是将配置好的规则交给内核层的netfilter网络过滤器来处理 filrewalld服务是将配置好的防火墙规则交给内核层的nftables网络过滤器处理 这俩工具二选一即可,都只是命令行工具,
iptables是什么
iptables是开源的基于数据包过滤的防火墙工具。
Iptables使用场景
1、主机防火墙(filter表的INPUT链)。 2、局域网共享上网(nat表的POSTROUTING链)。半个路由器,NAT功能。 3、端口及IP映射(nat表的PREROUTING链),硬防的NAT功能。 4、IP一对一映射。
netfilter 中五个勾子函数和报文流向
Netfilter在内核中选取五个位置放了五个hook(勾子) function(INPUT、OUTPUT、FORWARD、 PREROUTING、POSTROUTING),而这五个hook function向用户开放,用户可以通过一个命令工具 (iptables)向其写入规则 由信息过滤表(table)组成,包含控制IP包处理的规则集(rules),规则被分组放在链(chain)上
三种报文流向
1)流入本机:PREROUTING--> INPUT --> 用户空间进程 2)流出本机:用户空间进程--> OUTPUT --> POSTROUTING 3)转发:PREROUTING -->FORWARD -->POSTROUTING
iptables组成
五表五链以及一些规则组成
链chain: 1)内置链:每个内置链对应于一个钩子函数 2)自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;只有HOOK钩子调用自定义链时,才生效 五个内置链chain INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING 五个表 table:filter,nat,mangle,raw,security 1)filter:过滤规则表,根据预定义的规则过滤符号条件的数据包,默认表 2)nat:network address translation地址转换规则表 3)mangle:修改数据标记位规则表 4)raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度 5)security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELINUX)实现
它们的优先级由高到低的顺序为:
security---> raw---> mangle---> nat---> filter
内核中数据包的传输过程
1)当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去 2)如果数据包是进入本机的,数据包就会沿着图向下移动,到达INPUT链。数据包到达INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包经过OUTPUT链,然后到达POSTROUTING链输出 3)如果数据包是要转发出去的,且内核允许转发,数据包就会向右移动,经过FORWARD链,然后到达POSTROUTING链输出
范例,查看默认的表
[root@localhost ~]# iptables -vnL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination [root@localhost ~]# iptables -vnL -t filter Chain INPUT (policy ACCEPT 24 packets, 1600 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 14 packets, 1784 bytes) pkts bytes target prot opt in out source destination
iptables规则添加时考量点
1)要实现哪种功能:判断添加在哪张表上 2)报文流经的路径:判断添加在哪个链上 3)报文的流向:判断源和目的 4)匹配规则:业务需要
iptables常见的处理动作:
1)内建处理动作:ACCEPT,DROP,REJECT,SNAT,DNAT,MASQUERADE,MARK,LOG...;其中最常用的只有,允许:ACCEPT,抛弃:DROP,拒绝:REJECT 2)自定义处理动作:自定义chain,利用分类管理复杂情形;规则要添加在链上,才生效;添加在自定义链上不会自动生效。 3)白名单:只有指定的特定主机可以访问,其它全拒绝 4)黑名单:只有指定的特定主机拒绝访问,其它全允许,默认方式
因为CentOS7,8都是Firewalls防火墙,所以需要关闭才能更好的使用iptables我们定义的防火墙规则
[root@localhost ~]# systemctl disable --now firewalld
iptables 用法说明
帮助:man 8 iptables
格式:
iptables [-t table] {-A|-C|-D} chain rule-specification iptables [-t table] -I chain [rulenum] rule-specification iptables [-t table] -R chain rulenum rule-specification iptables [-t table] -D chain rulenum iptables [-t table] -S [chain [rulenum]] iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...] iptables [-t table] -N chain iptables [-t table] -X [chain] iptables [-t table] -P chain target iptables [-t table] -E old-chain-name new-chain-name rule-specification = [matches...] [target] match = -m matchname [per-match-options] target = -j targetname [per-target-options]
iptables命令格式详解:
iptables [-t table] SUBCOMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]
1、-t table:指定表
raw, mangle, nat, [filter]默认
2、SUBCOMMAND:子命令
链管理类:
-N:new, 自定义一条新的规则链 -E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除 -X:delete,删除自定义的空的规则链 -P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:ACCEPT:接受, DROP:丢弃
查看类:
-L:list,列出指定链上的所有规则,本选项需置后 -n:numberic,以数字格式显示地址和端口号 -v:verbose,详细信息 -vv:更详细 -x:exactly,显示计数器结果的精确值,而非单位转换后的易读值 --line-numbers:显示规则的序号 -S selected,以iptables-save命令格式显示链上规则
规则管理类:
-A:append,追加 -I:insert,插入,要指明插入至的规则编号,默认为第一条 -D:delete,删除 1)指明规则序号 2)指明规则本身 -R:replace,替换指定链上的指定规则编号 -F:flush,清空指定的规则链 -Z:zero,置零 iptables的每条规则都有两个计数器 1)匹配到的报文的个数 2)匹配到的所有报文的大小之和
范例:
[root@localhost ~]# iptables -F OUTPUT
常用组合
-vnL -vvnxL --line-numbers
范例
[root@localhost ~]# iptables -vnL Chain INPUT (policy ACCEPT 177 packets, 12622 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 106 packets, 9596 bytes) pkts bytes target prot opt in out source destination [root@localhost ~]# iptables -vnL --line-numbers Chain INPUT (policy ACCEPT 1606 packets, 3268K bytes) num pkts bytes target prot opt in out source destination 1 22 1824 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 2 2 120 REJECT all -- * * 172.31.0.18 0.0.0.0/0 reject-with icmp-port-unreachable 3 1 60 REJECT all -- * * 172.31.0.7 0.0.0.0/0 reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 1338 packets, 98490 bytes) num pkts bytes target prot opt in out source destination
匹配条件
1)基本:通用的,PARAMETERS 2)扩展:需加载模块,MATCH EXTENTIONS
扩展动作:
REJECT:--reject-with:icmp-port-unreachable默认 RETURN:返回调用链 REDIRECT:端口重定向 LOG:记录日志,dmesg MARK:做防火墙标记 DNAT:目标地址转换 SNAT:源地址转换 MASQUERADE:地址伪装 自定义链
iptables基本匹配条件
基本匹配条件:无需加载模块,由iptables/netfilter自行提供
[!] -s, --source address[/mask][,...]:源IP地址或者不连续的IP地址 [!] -d, --destination address[/mask][,...]:目标IP地址或者不连续的IP地址 [!] -p, --protocol protocol:指定协议,可使用数字如0(all) protocol: tcp, udp, icmp, icmpv6, udplite,esp, ah, sctp, mh or“all“ 参看:/etc/protocols [!] -i, --in-interface name:报文流入的接口;只能应用于数据报文流入环节,只应用于INPUT、 FORWARD、PREROUTING链 [!] -o, --out-interface name:报文流出的接口;只能应用于数据报文流出的环节,只应用于 FORWARD、OUTPUT、POSTROUTING链
范例:
准备好一个可以访问的网站页面 [root@localhost ~]# yum install -y httpd;echo 172.31.0.17 > /var/www/html/index.html;systemctl start httpd 没有添加iptables规则时其他机器可以访问 [root@localhost ~]# curl 172.31.0.17 172.31.0.17 iptables设置 [root@localhost ~]# iptables -vnL Chain INPUT (policy ACCEPT 365 packets, 25579 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 215 packets, 23508 bytes) pkts bytes target prot opt in out source destination [root@localhost ~]# iptables -A INPUT -s 172.31.0.18,172.31.0.7 -j REJECT [root@localhost ~]# iptables -I INPUT -i lo -j ACCEPT 添加完iptables规则后,只有本机可以访问,被规则限制的ip不能访问 [root@localhost ~]# curl 127.0.0.1 172.31.0.17 [root@localhost ~]# curl 172.31.0.17 curl: (7) Failed connect to 172.31.0.17:80; Connection refused [root@sz-kx-centos8 ~]# curl 172.31.0.17 curl: (7) Failed to connect to 172.31.0.17 port 80: Connection refused
范例:添加某个固定ip并允许
[root@localhost ~]# iptables -A INPUT -s 172.31.0.1 -j ACCEPT
范例:添加某个固定ip并丢弃
[root@localhost ~]# iptables -A INPUT 1 -s 172.31.0.18 -j DROP
范例:添加整个网段并拒绝连接(谨慎使用)
[root@localhost ~]# iptables -A INPUT -s 172.31.0.0/16 -j REJECT
范例:在序号3插入
[root@localhost ~]# iptables -I INPUT 3 -s 172.31.0.100 -j ACCEPT [root@localhost ~]# iptables -vnL --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 22 1824 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 2 405 32145 ACCEPT all -- * * 172.31.0.1 0.0.0.0/0 3 0 0 ACCEPT all -- * * 172.31.0.100 0.0.0.0/0 4 2 120 REJECT all -- * * 172.31.0.18 0.0.0.0/0 reject-with icmp-port-unreachable 5 1 60 REJECT all -- * * 172.31.0.7 0.0.0.0/0 reject-with icmp-port-unreachable 6 40 2473 REJECT all -- * * 172.31.0.0/16 0.0.0.0/0 reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 51 packets, 5936 bytes) num pkts bytes target prot opt in out source destination
范例:删除序号3这条规则
[root@localhost ~]# iptables -D INPUT 3
范例:替换序号4的规则把拒绝替换成允许
[root@localhost ~]# iptables -R INPUT 4 -s 172.31.0.7 -j ACCEPT
范例:清空所有规则
[root@localhost ~]# iptables -F
范例:iptables默认是黑名单,改成白名单
[root@localhost ~]# iptables -P INPUT DROP # 实现效果如下: [root@localhost ~]# iptables -vnL Chain INPUT (policy ACCEPT 48 packets, 4965 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 40 packets, 5824 bytes) pkts bytes target prot opt in out source destination [root@localhost ~]# iptables -A INPUT -i lo -j ACCEPT [root@localhost ~]# iptables -A INPUT -s 172.31.0.17 -j ACCEPT [root@localhost ~]# iptables -A INPUT -s 172.31.0.1 -j ACCEPT [root@localhost ~]# iptables -A INPUT -s 172.31.0.1 -j REJECT [root@localhost ~]# iptables -P INPUT DROP [root@localhost ~]# iptables -vnL Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- * * 172.31.0.17 0.0.0.0/0 103 6840 ACCEPT all -- * * 172.31.0.1 0.0.0.0/0 0 0 REJECT all -- * * 172.31.0.1 0.0.0.0/0 reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 21 packets, 2152 bytes) pkts bytes target prot opt in out source destination
规则优化最佳实践
1. 安全放行所有入站和出站的状态为ESTABLISHED状态连接,建议放在第一条,效率更高 2. 谨慎放行入站的新请求 3. 有特殊目的限制访问功能,要在放行规则之前加以拒绝 4. 同类规则(访问同一应用,比如:http ),匹配范围小的放在前面,用于特殊处理 5. 不同类的规则(访问不同应用,一个是http,另一个是mysql ),匹配范围大的放在前面,效率更 高 6. 应该将那些可由一条规则能够描述的多个规则合并为一条,减少规则数量,提高检查效率 7. 设置默认策略,建议白名单(只放行特定连接) iptables -P,不建议,容易出现“自杀现象” 规则的最后定义规则做为默认策略,推荐使用,放在最后一条
iptables保存规则
以上命令都是临时生效,持久保存规则需要如下操作:
方法一:
# 保存规则 [root@localhost ~]# iptables-save > /home/iptables.ruls # 执行导入保存的规则 [root@localhost ~]# iptables-restore < /home/iptables.ruls 写入开机启动配置 [root@localhost ~]# vim /etc/rc.d/rc.local iptables-restore < /home/iptables.ruls # 加执行权限 [root@localhost ~]# chmod +x /etc/rc.d/rc.local
方法二:(CentOS7,8)
# 安装 [root@localhost ~]# yum install iptables-services 添加到配置文件里面 [root@localhost ~]# iptables-save > /etc/sysconfig/iptables 启动 [root@localhost ~]# systemctl start iptables 设置开机启动 [root@localhost ~]# systemctl enable --now iptables
扩展模块的使用帮助:
CentOS 7,8: man iptables-extensions CentOS 6: man iptables
iptables 在使用-p选项指明了特定的协议时,无需再用-m选项指明扩展模块的扩展机制,不需要手动加
载扩展模块
tcp 协议的扩展选项
[!] --source-port, --sport port[:port]:匹配报文源端口,可为端口连续范围 [!] --destination-port,--dport port[:port]:匹配报文目标端口,可为连续范围 [!] --tcp-flags mask comp mask 需检查的标志位列表,用,分隔 , 例如 SYN,ACK,FIN,RST comp 在mask列表中必须为1的标志位列表,无指定则必须为0,用,分隔tcp协议的扩展选项
范例:
--tcp-flags SYN,ACK,FIN,RST SYN 表示要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必 须为1,余下的必须为0,第一次握手 --tcp-flags SYN,ACK,FIN,RST SYN,ACK 第二次握手 #错误包 --tcp-flags ALL ALL --tcp_flags ALL NONE
[!] --syn:用于匹配第一次握手, 相当于:--tcp-flags SYN,ACK,FIN,RST SYN
udp 协议的扩展选项
[!] --source-port, --sport port[:port]:匹配报文的源端口或端口范围 [!] --destination-port,--dport port[:port]:匹配报文的目标端口或端口范围
icmp 协议的扩展选项
[!] --icmp-type {type[/code]|typename} type/code 0/0 echo-reply icmp应答 8/0 echo-request icmp请求
范例:限制某个固定IP不能ssh端口远程连接,21:23是区间
[root@localhost ~]# iptables -A INPUT -s 172.31.0.7 -p tcp --dport 21:23 -j REJECT
范例:限制某个固定IP,icmp请求就拒绝
[root@localhost ~]# iptables -A INPUT -s 172.31.0.7 -p icmp --icmp-type 8 -j REJECT
隐式扩展
# 在序号3插入一条允许固定ip访问80端口 [root@localhost ~]# iptables -I INPUT 3 -s 172.31.0.7 -p tcp --dport 80 -j ACCEPT
范例:实现了本机能ping通某个ip,但是对方不能ping通本机
[root@localhost ~]# iptables -A INPUT -s 172.31.0.18 -p icmp --icmp-type 8 -j REJECT
multiport扩展
以离散方式定义多端口匹配,最多指定15个端口
#指定多个源端口 [!] --source-ports,--sports port[,port|,port:port]... # 指定多个目标端口 [!] --destination-ports,--dports port[,port|,port:port]... #多个源或目标端 [!] --ports port[,port|,port:port]...
范例:使用multiport模块拒绝访问多个不连续的端口号
[root@localhost ~]# iptables -A INPUT -s 172.31.0.18 -p tcp -m multiport --dports 80,22,21 -j REJECT
iprange扩展
指明连续的(但一般不是整个网络)ip地址范围
[!] --src-range from[-to] 源IP地址范围 [!] --dst-range from[-to] 目标IP地址范围
范例:拒绝某个网段的IP地址范围
[root@localhost ~]# iptables -A INPUT -m iprange --src-range 172.31.0.1-172.31.0.7 -j REJECT
mac扩展
mac 模块可以指明源MAC地址,,适用于:PREROUTING, FORWARD,INPUT chains
[!] --mac-source XXXXXX:XX
范例:通过某台机器的mac拒绝
[root@localhost ~]# iptables -A INPUT -m mac --mac-source 00:0c:29:43:04:9b -j REJECT
string扩展
对报文中的应用层数据做字符串模式匹配检测
--algo {bm|kmp} 字符串匹配检测算法 bm:Boyer-Moore kmp:Knuth-Pratt-Morris --from offset 开始偏移 --to offset 结束偏移 [!] --string pattern 要检测的字符串模式 [!] --hex-string pattern要检测字符串模式,16进制格式
范例:规则遇到相对应的字符串就拒绝
[root@localhost ~]# iptables -A OUTPUT -p tcp --sport 80 -m string --algo bm --from 62 --string "google" -j REJECT
time扩展
注意:CentOS 8 此模块有问题
根据将报文到达的时间与指定的时间范围进行匹配
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 日期 --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]] --timestart hh:mm[:ss] 时间 --timestop hh:mm[:ss] [!] --monthdays day[,day...] 每个月的几号 [!] --weekdays day[,day...] 星期几,1 – 7 分别表示星期一到星期日 --kerneltz:内核时区(当地时间),不建议使用,CentOS 7版本以上系统默认为 UTC 注意: centos6 不支持kerneltz ,--localtz指定本地时区(默认)
范例:某个网段IP不能在某个时间拒绝访问主机80端口
[root@localhost ~]# iptables -A INPUT -s 172.31.0.0/16 -d 172.31.0.17 -p tcp --dport 80 -m time --timestart 16:00 --timestop 16:10 -j REJECT
connlimit扩展
根据每客户端IP做并发连接数数量匹配
可防止Dos(Denial of Service,拒绝服务)攻击
--connlimit-upto N #连接的数量小于等于N时匹配 --connlimit-above N #连接的数量大于N时匹配
范例:连接数超过2个就拒绝
[root@localhost ~]# iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 2 -j REJECT
limit扩展
基于收发报文的速率做匹配 , 令牌桶过滤器
--limit-burst number #前多少个包不限制 --limit #[/second|/minute|/hour|/day]
范例:前5个请求包不限制,后续每1分钟10个,其他不符合规则执行下面的
[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 5 -j ACCEPT [root@localhost ~]# iptables -A INPUT -p icmp -j REJECT
state扩展
state 扩展模块,可以根据”连接追踪机制“去检查连接的状态,较耗资源
conntrack机制:追踪本机上的请求和响应之间的关系
状态类型:
NEW:新发出请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发 出的请求 ESTABLISHED:NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信 状态 RELATED:新发起的但与已有连接相关联的连接,如:ftp协议中的数据连接与命令连接之间的关 系 INVALID:无效的连接,如flag标记不正确 UNTRACKED:未进行追踪的连接,如:raw表中关闭追踪
记录旧信息路径
[root@localhost ~]# cat /proc/net/nf_conntrack
范例:老用户允许连接,新用户拒绝连接
[root@localhost ~]# iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT [root@localhost ~]# iptables -A INPUT -m state --state NEW -j REJECT
范例:本机可以访问172.31.0.18,但是172.31.0.18不能访问本机
[root@localhost ~]# iptables -A INPUT -s 172.31.0.18 -m state --state NEW -j REJECT
连接数测试案例:
# 连接数给一个最少的数值 [root@localhost ~]# echo 1 > /proc/sys/net/netfilter/nf_conntrack_max # 查看日志 [root@localhost ~]# tail -f /var/log/messages May 8 16:34:27 localhost kernel: nf_conntrack: table full, dropping packet May 8 16:34:28 localhost kernel: nf_conntrack: table full, dropping packet ... # 建议修改适当加大连接数 [root@localhost ~]# echo 655350 > /proc/sys/net/netfilter/nf_conntrack_max
Target
target 包括以下类型
自定义链, ACCEPT, DROP, REJECT,RETURN,LOG,SNAT,DNAT,REDIRECT,MASQUERADE LOG:非中断target,本身不拒绝和允许,放在拒绝和允许规则前,并将日志记录在/var/log/messages系 统日志中 --log-level level 级别: debug,info,notice, warning, error, crit, alert,emerg --log-prefix prefix 日志前缀,用于区别不同的日志,最多29个字符
范例:某个网段访问80,21:23端口的在日志重新生成日志并打印出来到系统日志,提示语句开头new connections:
[root@localhost ~]# iptables -A INPUT -s 172.31.0.0/16 -p tcp -m multiport --dports 80,21:23 -m state --state NEW -j LOG --log-prefix "new connections: " 查看日志 [root@localhost ~]# tail -f /var/log/messages May 8 15:34:30 localhost systemd: Started Vsftpd ftp daemon. May 8 16:01:01 localhost systemd: Started Session 470 of user root. full, dropping packet May 8 16:55:20 localhost kernel: new connections: IN=eth0 OUT= MAC=00:0c:29:51:7200:0c:29:43:04:9b:08:00 SRC=172.31.0.18 DST=172.31.0.17 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=60599 DF PROTO=TCP SPT=35722 DPT=80 WINDOW=29200 RES=0x00 SYN URGP=0
规则优化最佳实践
1. 安全放行所有入站和出站的状态为ESTABLISHED状态连接,建议放在第一条,效率更高 2. 谨慎放行入站的新请求 3. 有特殊目的限制访问功能,要在放行规则之前加以拒绝 4. 同类规则(访问同一应用,比如:http ),匹配范围小的放在前面,用于特殊处理 5. 不同类的规则(访问不同应用,一个是http,另一个是mysql ),匹配范围大的放在前面,效率更 高 6. 应该将那些可由一条规则能够描述的多个规则合并为一条,减少规则数量,提高检查效率 7. 设置默认策略,建议白名单(只放行特定连接) iptables -P,不建议,容易出现“自杀现象” 规则的最后定义规则做为默认策略,推荐使用,放在最后一条
iptables保存规则
以上命令都是临时生效,持久保存规则需要如下操作:
方法一:
# 保存规则 [root@localhost ~]# iptables-save > /home/iptables.ruls # 执行导入保存的规则 [root@localhost ~]# iptables-restore < /home/iptables.ruls 写入开机启动配置 [root@localhost ~]# vim /etc/rc.d/rc.local iptables-restore < /home/iptables.ruls # 加执行权限 [root@localhost ~]# chmod +x /etc/rc.d/rc.local
方法二:(CentOS7,8)
# 安装 [root@localhost ~]# yum install iptables-services 添加到配置文件里面 [root@localhost ~]# iptables-save > /etc/sysconfig/iptables 启动 [root@localhost ~]# systemctl start iptables 设置开机启动 [root@localhost ~]# systemctl enable --now iptables
链接:https://www.cnblogs.com/xuanlv-0413/p/14748275.html
全部0条评论
快来发表一下你的评论吧 !