一、什么是防火墙
防范一些网络攻击,有软件防火墙,硬件防火墙之分
传统的防火墙规则:
拒绝所有端口访问
允许部分端口访问
二、Linux中的防火墙分类
CentOS5/6 防火墙 iptables防火墙
CentOS7 防火墙 firewalld 防火墙
三、firewalld防火墙
firewalld 增加了区域zone概念,区域是指预先准备了几套防火墙策略的集合
用户可以根据需求选择
--------------------------------------
区域 默认策略
trusted 允许所有数据包
home 拒绝流入的流量,除非与流出的流量相关,允许ssh,mdns,ippclient,amba-client,dhcpv6-client服务通过internal 等同于home
work 拒绝流入的流量,除非与流出的流量相关,允许ssh,ipp-client,dhcpv6-client服务通过
public 拒绝流入的流量,除非与流出的流量相关,允许ssh,dhcpv6-client服务通过
external 拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过
dmz 拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过
block 拒绝流入的流量,除非与流出的流量相关,非法流量采取拒绝操作
drop 拒绝流入的流量,除非与流出的流量相关,非法流量采取丢弃操作
--------------------------------------
linux系统中的httpd服务 占用计算机的80端口
# yum install httpd -y # systemctl start httpd
安装完成后,在浏览器中,输入http://服务器ip地址进行访问
运行模式和永久模式:
运行模式:配置的防火墙策略立即生效,但是不写入配置文件
永久模式:配置到防火墙策略写入配置文件,但是需要reload重载才能生效
默认采用运行模式
四、firewalld查看停止与启动操作
1、查看、开启、停止firewalld防火墙
# systemctl status firewalld # systemctl start firewalld
在生产环境下,不要随便停止防火墙,非常危险
# systemctl stop firewalld
防火墙一旦停止,设置的全部规则全部失效
2、重启、重载firewalld防火墙
# systemctl restart firewalld
重载操作:对防火墙配置文件作了更改,需要立即生效,并没有停止防火墙
# systemctl reload firewalld
3、开机自启与开机不自启
# systemctl enable firewalld # systemctl disable firewalld
五、firewalld防火墙规则
1、firewalld管理工具
firewall-cmd 命令,管理firewall具体配置
语法:
firewall-cmd [选项1] [选项2] [...N]
选项:
** firewall-cmd + 2次tab键
** 查看防火墙默认区域
[root@c7 ~]# firewall-cmd --get-default-zone public
** 查看所有可用区域
[root@c7 ~]# firewall-cmd --get-zones block dmz drop external home internal public trusted work
2、为什么有区域的概念
不同的区域就是不同的规则
3、查看当前区域的规则设置
[root@c7 ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: dhcpv6-client ssh ports: 22/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
4、查看默认的防火墙区域
[root@c7 ~]# firewall-cmd --get-default-zone public
5、查看所有区域规则的设置
[root@c7 ~]# firewall-cmd --list-all-zones
6、添加允许通过的服务或端口 (重点)
方式1:通过服务的名称添加规则
firewall-cmd --zone=public --add-port=服务名称
例如:把http服务添加到防火墙规则中,允许通过防火墙
[root@c7 ~]# firewall-cmd --zone=public --add-service=http success [root@c7 ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: dhcpv6-client http ssh ports: 22/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
服务名称必须存在/usr/lib/firewalld/servcies目录中
扩展:把http服务从防火墙规则中移除,不允许其通过防火墙
firewall-cmd --zone=public --remove-service=服务的名称
[root@c7 ~]# firewall-cmd --zone=public --remove-service=http
success
方式2:通过服务的端口号添加规则
firewall-cmd --zone=public --add-port=端口号/tcp
案例:把80/tcp添加到防火墙规则中,允许通过防火墙
# firewall-cmd --zone=public --add-port=80/tcp
案例:从firewalld防火墙中吧80端口的规则移除掉
# firewall-cmd --zone=public --remove-port=80/tcp
7、防火墙规则(永久模式) permanent
在linux的新版防火墙firewalld中,模式分为2大类:
运行模式(临时模式)+永久模式
运行模式:不会把规则保存到防火墙的配置文件中,设置完成后立即生效
永久模式:会把规则写入防火墙的配置文件中,但是需要reload重载配置文件后生效
** 根据服务名称添加规则(永久)
firewall-cmd --zone=public --add-service=服务名称 --permanent
firewall-cmd --reload
** 根据端口号添加规则(永久)
firewall-cmd --zone=public --add-port=服务占用的端口号 --permanent
firewall-cmd --reload
案例:把80端口添加到firewalld防火墙规则中,要求永久生效
[root@c7 ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent success
[root@c7 ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: dhcpv6-client ssh ports: 22/tcp 80/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: