服务器如果没有恰当地设置防火墙,就会留下极大的安全隐患。现在的网络环境很复杂,一不小心就会成为别人的肉鸡,或者造成数据泄露,这里介绍了防火墙规则的一些简单配置方法。
前言
CentOS7/RHEL7
系统默认的iptables
管理工具是firewalld,它有图形界面和命令行两种管理方式,这里主要介绍命令行操作。
注意:如果使用的是云服务器,先要在云后台开放端口,然后关闭centos防火墙或者开放centos的对应端口,防止所有端口关闭后ssh登录不上!
基本概念
系统配置目录(
/usr/lib/firewalld/services
):存放定义好的网络服务和端口参数,系统参数,不能修改。用户配置目录(
/etc/firewalld/
):可以通过修改配置文件的方式添加端口,也可以通过命令的方式添加端口,修改的内容会在本目录下的配置文件中体现。命令的方式添加端口
1
firewall-cmd --permanent --add-port=9527/tcp
参数介绍:
1
2
31. firewall-cmd:是Linux提供的操作firewall的一个工具
2. --permanent:表示设置为持久
3. --add-port:标识添加的端口另外,firewall中有Zone的概念,可以将具体的端口指定到具体的zone配置文件中。
例如:添加
8010
端口1
2
3firewall-cmd --zone=public --permanent --add-port=8010/tcp
# --zone=public:指定的zone为public如果
-–zone=tom
这样设置的话,会在tom.xml
文件中新增一条。修改配置文件的方式添加端口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<zone>
<short>Public</short>
<description>For use in public areas.</description>
<rule family="ipv4">
<source address="122.10.70.234"/>
<port protocol="udp" port="514"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="123.60.255.14"/>
<port protocol="tcp" port="10050-10051"/>
<accept/>
</rule>
<rule family="ipv4">
<!-- 允许指定ip、指定端口和协议 -->
<source address="192.249.87.114"/>
<port protocol="tcp" port="80"/>
<accept/>
</rule>
<rule family="ipv4">
<!-- 允许任意ip访问服务器的9527端口 -->
<port protocol="tcp" port="9527"/>
<accept/>
</rule>
</zone>上述配置文件可以看出:
- 添加需要的规则,开放源ip为
122.10.70.234
,端口514
,协议tcp
。 - 开放源ip为
123.60.255.14
,端口10050-10051
,协议tcp
。 - 开放源ip为任意,端口
9527
,协议tcp
。
- 添加需要的规则,开放源ip为
常用命令
1 | systemctl start/stop firewalld #启动/关闭服务 |
如果系统中没有firewalld
服务,可以通过以下命令安装:
1 | yum -y install firewalld |
设置规则
查看状态
1
firewall-cmd --state
获取活动的区域
1
firewall-cmd --get-active-zones
获取所有支持的服务
1
firewall-cmd --get-service
应急模式(阻断所有的网络连接)
1
2
3
4
5firewall-cmd --panic-on #开启应急模式
firewall-cmd --panic-off #关闭应急模式
firewall-cmd --query-panic #查询应急模式修改配置文件后,使用命令重新加载
1
firewall-cmd --reload
启用某个服务/端口
1
2
3
4
5
6
7firewall-cmd --zone=public --add-service=https #临时
firewall-cmd --permanent --zone=public --add-service=https #永久
firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp #永久
firewall-cmd --zone=public --add-port=8080-8081/tcp #临时如果是要删除,直接修改成
remove-service
或者remove-port
。查看开启的端口和服务
1
2
3firewall-cmd --permanent --zone=public --list-services #服务空格隔开,例如:dhcpv6-client https ss
firewall-cmd --permanent --zone=public --list-ports #端口空格隔开,例如:8080-8081在每次修改 端口和服务后
/etc/firewalld/zones/public.xml
文件就会被修改。设置某个ip访问某个服务
1
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.122.0/24" service name="http" accept" #ip 192.168.122.0/24 访问 http
其他命令
1
2
3
4
5
6
7
8
9
10
11
12firewall-cmd -–list-all #查看防火墙规则
firewall-cmd --state #查看防火墙状态,是否是running
firewall-cmd --reload #重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones #列出支持的zone
firewall-cmd --get-services #列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp #查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp #临时开放ftp服务
firewall-cmd --add-service=ftp --permanent #永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent #永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent #永久添加80端口
iptables -L -n #查看规则,这个命令是和iptables的相同的
man firewall-cmd #查看帮助
切换为iptables防火墙
切换到iptables首先应该关掉默认的firewalld,然后安装iptables服务。
关闭firewall
1
2systemctl stop firewalld # 关闭服务
systemctl disable firewalld # 取消开机启动安装iptables防火墙
1
yum install iptables-services #安装
具体操作方法,请查看另外一篇笔记
iptables防火墙规则配置.md