1、介绍
在CentOS里有几种防火墙共存:firewalld、iptables、ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等。
firewalld跟iptables比起来至少有两大好处:
1、firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;
2、firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。
firewalld跟iptables比起来,不好的地方是每个服务都需要去设置才能放行,因为默认是拒绝。而iptables里默认是每个服务是允许,需要拒绝的才去限制。
firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和 iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。
从Cent7以后,iptables服务的启动脚本已被忽略。请使用firewalld来取代iptables服务。
2、firewalld
启动: systemctl start firewalld
查看状态: systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
3、iptables
一直用的iptables来管理规则,iptables更熟悉一些。
linux的防火墙由netfilter和iptables组成。用户空间的iptables制定防火墙规则,内核空间的netfilter实现防火墙功能。
用户空间的iptables制定相应的规则策略控制内核空间的netfilter处理相应的数据访问控制。
iptables有四表五链(其实有五表,是后来加进来的),四表分别是下图的的raw,mangle,nat,filter表。五链分别是PREROUTING,INPUT,OUTPUT,FORWARD,POSTROUTING链。表有什么用?链又有什么用呢?其实表决定了数据报文处理的方式,而链则决定了数据报文的流经哪些位置。
你可以从图中看出规则表的优先级:raw-->mangle-->nat-->filter。
5表:
命令结构: iptables [ -t 表名 ] 管理选项 [ 链名 ] [ 条件匹配 ] [ -j 目标动作或跳转 ]
不指定表名时默认是filter表,
-L, --list [chain]:列出规则;
-F:清除所有规则
-
v
, --verbose:详细信息;
-vv 更详细的信息
-n, --numeric:数字格式显示主机地址和端口号;
-x, --exact:显示计数器的精确值,而非圆整后的数据;
--line-numbers:列出规则时,显示其在链上的相应的编号;
-A, --append chain rule-specification:追加新规则于指定链的尾部;
-I, --insert chain [rulenum] rule-specification:插入新规则于指定链的指定位置,默认为首部;
-D,删除一条规则
-p 指定规则协议,tcp udp icmp all
-s 指定数据包的源地址,ip
hostname
-d 指定目的地址
-i 输入接口
-o 输出接口
! 取反
多端口,一次不能超过15个
iptables -I INPUT -d 172.16.100.7 -p tcp -m multiport --dports 22,80 -j ACCEPT
iptables -I OUTPUT -s 172.16.100.7 -p tcp -m multiport --sports 22,80 -j ACCEPT
设置ip范围
iptables -A INPUT -d 172.16.100.7 -p tcp --dport 23 -m iprange --src-range 172.16.100.1-172.16.100.100 -j ACCEPT
iptables -A OUTPUT -s 172.16.100.7 -p tcp --sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPT
设定过滤时间、对应用层数据进行正则过滤、限定速率、状态
规则设置实例
1.放行sshd服务
1 2 |
|
-
2.放行httpd/nginx服务
1 2 |
|
-
-
3.放行本机端的流入流出
1 2 3 |
|
-
4.限制ping 192.168.0.1主机的数据包数,平均2/s个,最多不能超过3个
1 |
|
iptables -D INPUT 2 根据规则编号来删除规则
禁ping:iptables -I INPUT -p icmp -j REJECT
参考链接:https://blog.51cto.com/xjsunjie/1902993
https://www.cnblogs.com/makeinchina/p/8032899.html
https://www.cnblogs.com/frankb/p/7427944.html
https://blog.51cto.com/xiaozhuang/874244