Linux7或Centos7以上版本系统可以使用系统自带的防火墙服务firewalld.service来对访问进行控制。本文主要说明如何使用firewall限制ssh连接访问。
实现过程如下:
1、设置firewall服务开机自启动
执行下面命令后,系统会提示创建服务,表示开机自启动设置成功,如果没有任何提示,则表示已经是开机启动状态。
-
systemctl enable firewalld
2、启动firewall服务
执行命令启动服务并查看服务运行状态,绿色字体显示running则表示服务运行正常。
-
systemctl start firewalld
-
systemctl status firewalld
3、开始配置访问策略,首先取消默认开启的没有访问限制的ssh服务,让ssh服务默认情况下拒绝连接。
执行下面的命令,系统会提示成功,表示设置完成
-
firewall-cmd --permanent --remove-service=ssh
4、配置允许访问ssh服务的控制策略
执行下面的命令,允许ip或ip段访问22端口的ssh服务,例如下面命令执行后,将允许192.168.1.0/24这个ip段允许访问ssh服务,注意端口要正确。
-
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
-
//备注:
-
//source address也可以设置为单个IP地址,例如192.168.1.1
-
//port可以为单个端口或端口范围,例如1-10000
5、重载firewall配置,使其生效
执行命令
-
firewall-cmd --reload
配置完成,可以使用下面命令查看目前防火墙生效的策略,可以看到已经有两条允许ssh连接的策略生效中~
-
firewall-cmd --zone=public --list-rich-rules
其他常用命令
删除之前的复杂规则,这里的内容需要与之前添加时的rule内容完全一致,可以复制粘贴过来
-
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
手动开放指定端口
-
firewall-cmd --permanent --add-port=3306/tcp
删除开放的端口
-
firewall-cmd --permanent --remove-port=3306/tcp
开放指定服务(系统内置的)
-
firewall-cmd --permanent --add-service=http
删除服务
-
firewall-cmd --permanent --remove-service=http
添加白名单地址(单IP)
-
firewall-cmd --permanent --add-source=192.168.1.100
-
注: 白名单中的IP可以任意访问所有服务器可用的端口 这个白名单的作用不是这样的,有待继续研究
添加白名单地址(指定网络段CIDR格式)
-
firewall-cmd --permanent --add-source=192.168.1.0/24
删除白名单地址
-
firewall-cmd --permanent --remove-source=192.168.1.100
屏蔽指定IP地址
-
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"
屏蔽IP地址段
-
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject"
手动编辑xml配置文件
除了上面的命令添加规则外,还可以直接编辑/etc/firewalld/zones/public.xml文件(改完后记得执行firewall-cmd --reload生效)
阅读(13028) | 评论(0) | 转发(1) |