Linux防火墙工具之firewall

CentOS7 的防火墙配置跟以前版本有很大区别,CentOS7这个版本的防火墙默认使用的是firewall,与之前的版本Centos 6.x使用iptables不一样

一、iptables防火墙
1、基本操作

# 查看防火墙状态

service iptables status

# 停止防火墙

service iptables stop

# 启动防火墙

service iptables start

# 重启防火墙

service iptables restart

# 永久关闭防火墙

chkconfig iptables off

# 永久关闭后重启

chkconfig iptables on 

 

 

2、开启80端口

vim /etc/sysconfig/iptables
# 加入如下代码
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
保存退出后重启防火墙

service iptables restart

 

二、firewall防火墙
1、查看firewall服务状态

systemctl status firewalld

 

出现Active: active (running)切高亮显示则表示是启动状态。

出现 Active: inactive (dead)灰色表示停止,看单词也行。
2、查看firewall的状态

firewall-cmd --state

 


3、开启、重启、关闭、firewalld.service服务

# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop

 


4、查看防火墙规则

firewall-cmd --list-all 

 


5、查询、开放、关闭端口

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

 

批量开房或限制端口

#批量开放端口,如从9002到9005这之间的端口我们全部要打开

## 开放
firewall-cmd --zone-public --add-port=9002-9005/tcp --permanent
firewall-cmd --reload

## 限制
firewall-cmd --zone=public --remove-port=9002-9005/tcp --permanent
firewall-cmd --reload

 

 

 

# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;

 

CentOS7 默认使用firewalld防火墙,如果想换回iptables防火墙,可关闭firewalld并安装iptables。

1、关闭firewall:

停止firewall
systemctl stop firewalld.service

禁止firewall开机启动
systemctl disable firewalld.service

查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
firewall-cmd --state

 

2.安装iptables-services

yum install iptables-services

 

3.修改防火墙配置文件

vi /etc/sysconfig/iptables

默认的文件为:

 

在修改之前使用telnet命令查看端口是否开放。

1.启动telnet。控制面板-->程序和功能-->打开或关闭windows功能-->勾选Telnet的两个选项。
2.打开cmd窗口,输入telnet,如果端口关闭或者无法连接,则显示不能打开到主机的链接,链接失败;端口打开的情况下,链接成功,则进入telnet页面(全黑的),证明端口可用。

(1)telnet IP 端口。

(2)telnet 域名 端口。

 

 

如果成功连接会进入的界面

 

连接失败

添加端口80、8080、3306、3690端口:

 

esc :wq! 退出保存修改。

注意:添加在端口22上面或者下面,不要放在最后,不然不起作用。

4.重启防火墙使配置生效

systemctl restart iptables.service

 

刚刚yum install iptables.service之后系统如果没有重启,iptables.service是找不到的,会报unit not fount。耽误时间的小坑!

设置防火墙开机启动:

systemctl enable iptables.service

 

 

需求:

1.需要指定的ip地址可以访问指定端口

#允许ip192.168.0.1访问9001端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.1" port protocol="tcp" port="9001" accept"
#重新载入一下防火墙设置,使设置生效
firewall-cmd --reload
#查看已设置规则 firewall
-cmd --zone=public --list-rich-rules

 

 

2.

#限制IP为192.168.0.0的地址禁止访问9001端口即禁止访问机器
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0" port protocol="tcp" port="9001" reject"
firewall-cmd --reload

3.

#删除已设置规则
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address=" 192.168.0.0" port protocol="tcp" port="9001" accept"
firewall-cmd --reload

 

rich规则详解
--add-rich-rule选项,将该规则描述为其参数。规则以rule关键字开头。
family:我们指定该规则仅应用于IPv4数据包:如果未提供此关键字,则该规则将同时应用于IPv4和IPv6。
source address:我们提供数据包必须具有的源地址,才能使用源地址触发规则。
service,我们指定了规则的服务类型,在本例中为ssh。
reject/drop/accept,我们提供了数据包与规则匹配时要执行的操作,在本例中为reject.

 

 

 

 

 

 

注意点:

1.添加或删除端口规则之后,  需要重载防火墙使之生效

firewadd-cmd --reload

 

2.如设置未生效,可尝试直接编辑规则文件,删掉原来的设置规则,重新载入一下防火墙即可

vi /etc/firewalld/zones/public.xml

 

posted @ 2022-06-15 10:39  X-Wolf  阅读(571)  评论(0编辑  收藏  举报