基础

Linux防火墙主要工作在网络层,属于典型的包过滤防火墙。

  • redhat 6 使用的是iptables
  • redhat 7 使用的是firewalld
    • iptables服务会把配置好的防火墙策略交由内核层面的 netfilter 网络过滤器来处理
    • firewalld服务则是把配置好的防火墙策略交由内核层面的 nftables 包过滤框架来处理

iptables和firewalld都是Linux配置内核防火墙的工具

systemctl 和 service 区别

  • systemctl命令:是一个systemd工具,主要负责控制systemd系统和服务管理器。
  • service命令:可以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。
  • chkconfig命令:是管理系统服务(service)的命令行工具。所谓系统服务(service),就是随系统启动而启动,随系统关闭而关闭的程序。

    systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。 systemctl是RHEL 7 的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。可以使用它永久性或只在当前会话中启用/禁用服务。 所以systemctl命令是service命令和chkconfig命令的集合和代替。

firewalld

相较于传统的防火墙管理配置工具,firewalld 支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是 firewalld 预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。 firewalld跟iptables比起来至少有两大好处:

  1. firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;
  2. firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。

注:firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。

**

区域管理

一个重要的概念:区域管理
firewalld将网卡对应到不同的区域(zone),zone 默认共有9个:
都保存在/usr/lib/firewalld/zones/目录下。

区域 默认规则
阻塞区域(block) 任何传入的网络数据包都将被阻止。
工作区域(work) 相信网络上的其他计算机,不会损害你的计算机。
家庭区域(home) 相信网络上的其他计算机,不会损害你的计算机。
公共区域(public) 不相信网络上的任何计算机,只有选择接受传入的网络连接。
隔离区域(DMZ) 隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接。
信任区域(trusted) 所有的网络连接都可以接受。
丢弃区域(drop) 任何传入的网络连接都被拒绝。
内部区域(internal) 信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。
外部区域(external) 不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。

命令

目的 命令
查看firewall服务状态 systemctl status firewalld
查看firewall的状态 firewall-cmd —state
开启防火墙,启动 firewall 服务 systemctl start firewalld
重启防火墙,重启 firewall 服务 systemctl restart firewalld
关闭防火墙,停止 firewall 服务 systemctl stop firewalld
开机启动服务 systemctl enable firewalld.service
查看防火墙规则 firewall-cmd —list-all
查询端口是否开放 firewall-cmd —query-port=8080/tcp
开放80端口 firewall-cmd —permanent —add-port=80/tcp
移除端口 firewall-cmd —permanent —remove-port=8080/tcp
重启防火墙(修改配置后要重启防火墙) firewall-cmd —reload

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

参数 作用
—get-default-zone 查询默认的区域名称
—set-default-zone=<区域名称> 设置默认的区域,使其永久生效
—get-zones 显示可用的区域
—get-services 显示预先定义的服务
—get-active-zones 显示当前正在使用的区域与网卡名称
—add-source= 将源自此 IP 或子网的流量导向指定的区域
—remove-source= 不再将源自此 IP 或子网的流量导向某个指定区域
—add-interface=<网卡名称> 将源自该网卡的所有流量都导向某个指定区域
—change-interface=<网卡名称> 将某个网卡与区域进行关联
—list-all 显示当前区域的网卡配置参数、资源、端口以及服务等信息
—list-all-zones 显示所有区域的网卡配置参数、资源、端口以及服务等信息
—add-service=<服务名> 设置默认区域允许该服务的流量
—add-port=<端口号/协议> 设置默认区域允许该端口的流量
—remove-service=<服务名> 设置默认区域不再允许该服务的流量
—remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量
—reload 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
—panic-on 开启应急状况模式
—panic-off 关闭应急状况模式


linux 系统中各种服务运行的概念

1. 运行级别概念的区分

System V init 运行级别 systemd 目标名称 作用
0 runlevel0.target, poweroff.target 关机
1 runlevel1.target, rescue.target 单用户模式
2 runlevel2.target, multi-user.target 等同于级别 3
3 runlevel3.target, multi-user.target 多用户的文本界面
4 runlevel4.target, multi-user.target 等同于级别 3
5 runlevel5.target, graphical.target 多用户的图形界面
6 runlevel6.target, reboot.target 重启
emergency emergency.target 紧急 Shell

2. 管理服务的启动、重启、停止、重载、查看状态等常用命令区分

foo 表示各种具体服务名称,这里用foo当作替换符

作用 System V init 命令(RHEL 6) systemctl 命令(RHEL 7)
启动服务 service foo start systemctl start foo.service
重启服务 service foo restart systemctl restart foo.service
停止服务 service foo stop systemctl stop foo.service
重新加载配置文件(不终止服务) service foo reload systemctl reload foo.service
查看服务状态 service foo status systemctl status foo.service

3. 设置服务开机启动、不启动、查看各级别下服务启动状态等常用命令

foo 表示各种具体服务名称,这里用foo当作替换符

作用 System V init 命令(RHEL 6) systemctl 命令(RHEL 7)
开机自动启动 chkconfig foo on systemctl enable foo.service
开机不自动启动 chkconfig foo off systemctl disable foo.service
查看特定服务是否为开机自动启动 chkconfig foo systemctl is-enabled foo.service
查看各个级别下服务的启动与禁用情况 chkconfig —list systemctl list-unit-files —type=service