Firewalld(防火墙)课程总结
防火墙
(1)分类:1. 从软、硬件形式上分为 软件防火墙和硬件防火墙以及芯片级防火墙。
2.从防火墙技术分为 “包过滤型”和“应用代理型”两大类。
3.从防火墙结构分为 < 单一主机防火墙、路由器集成式防火墙和分布式防火墙三种。
4. 按防火墙的应用部署位置分为 边界防火墙、个人防火墙和混合防火墙三大类。
5. 按防火墙性能分为 百兆级防火墙和千兆级防火墙两类。
(2)linux防火墙的核心是数据报文过滤工作在主机或者网络的边缘,对进出的数据报文进行检查,监控,并且能够根据事先定义的匹配条件和规则做出相应的动作的组件,机制或者系统。
linux内核集成了网络控制功能,通过netfilter模块实现网络访问控制功能在用户层我们可以通过iptables程序对netfilter进行控制管理。iptables 是一个应用层的应用程序,它通过 Netfilter 放出的接口来对存放在内核内存中的 XXtables(Netfilter的配置表)进行修改。这个XXtables由表tables、链chains、规则rules组成,iptables在应用层负责修改这个规则文件。类似的应用程序还有 firewalld。
iptables service 首先对旧的防火墙规则进行了清空,然后重新完整地加载所有新的防火墙规则,而如果配置了需要 reload 内核模块的话,过程背后还会包含卸载和重新加载内核模块的动作,很可能对运行中的系统产生额外的不良影响,特别是在网络非常繁忙的系统中。如果我们把这种哪怕只修改一条规则也要进行所有规则的重新载入的模式称为静态防火墙的话,那么 firewalld 所提供的模式就叫做动态防火墙,任何规则的变更都不需要对整个防火墙规则列表进行重新加载,只需要将变更部分保存并更新到运行中的 iptables 即可,它具备对 IP v4 和 IP v6 防火墙设置的支持。
(3)netfilter可以对数据进行允许(ACCEPT)、丢弃(DROP)、拒绝(REJECT)netfilter支持通过以下方式对数据包进行分类:源ip地址、目标ip地址、接口、协议(TCP UDP ICMP)、端口号、连接状态(new established related invalid
(4)、 规则:就是指网络管理员预定义的条件,规则一般的定义为“如果数据包投符合这样的条件,就这样处理这个数据包“。
链:数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或者数条规则。
五个位置的钩子函数:
INPUT链:入站 mangle、filter
OUTPUT链:出站 raw、 mangle、nat、filter
FORWARD链:转发 mangle、filter
PREROUTING链:路由选择之前 raw、mangle、nat
POSTROUTING链:路由选择之后 raw、mangle、nat表:提供特定的功能,iptables内置了4个表。
filter表:数据包过滤主要用于对数据包进行过滤,根据具体的规则决定是否放行该数据包(如DROP、ACCEPT、REJECT)。
nat表(地址转换):主要用于修改数据包的IP地址、端口号等信息(网络地址转换SNAT、DNAT)。
mangle表(报文重构 ):拆解报文,作出修改并重新封装的功能Qos 。
raw表(原始报文,相关服务的包要传输可以定义raw表可以快速查询):主要用于决定数据包是否被状态跟踪机制处理。
4个表的优先级由高到低的顺序为:raw–>mangle–>nat–>filter
(5)iptables配置命令格式
· -A:新增一条规则,到该规则链列表的最后一行
· -I:插入一条规则,原本该位置上的规则会往后顺序移动,没有指定编号则为1·
· -D:从规则链中删除一条规则,要么输入完整的规则,或者指定规则编号加以删除
· -R:替换某条规则,规则替换不会改变顺序,而且必须指定编号。
· -P:设置某条规则链的默认动作
· -nL:-L、-n,查看当前运行的防火墙规则列表
· -F : 清除所有规则表
· [-i|o 网卡名称]:i是指定数据包从哪块网卡进入,o是指定数据包从哪块网卡输出
· [-p 协议类型]:可以指定规则应用的协议,包含tcp、udp和icmp等-p icmp --icmp-type 8:echo-request 请求
安装iptables
查看当前运行的防火墙规则列表
清除所有规则表
添加规则禁止当前主机ssh远程登录该服务器
添加规则允许当前主机ssh远程登录该服务器
查看规则列表
删除编号为2的规则
插入规则默认在最上面
将INPUT 默认的ACCEPT改为DROP
安装http服务
搭建web服务
开放web服务端口
能够访问web
用B主机能够ping通A主机
在A主机添加拒绝回复B主机的规则
B主机ping失败
添加规则:其他主机能连接当前主机,但新开的不可以
添加规则:SSH记录中的ip,300s内发起超过3次连接则拒绝此ip的连接
(6) Firewalld配置
预定义服务/添加端口有三种方式:
编辑配置文件/etc/firewalld/firewalld.conf、使用图形化工具firewall-config、使用firewall-cmd命令
查看所有支持的服务
添加http服务
重启后服务失效
设置服务超时时间,即服务的开启时间,单位为秒
添加永久生效的服务
重启后生效
查看紧急模式状态并启用紧急模式
命令行添加富规则(临时)
删除富规则
添加富规则实现端口转发,重载防火墙后生效
Firewalld练习题
1、配置防火墙规则
允许172.16.10.0/24 网段的用户对server和desktop进行ssh访问
禁止172.16.20.0/24 域的用户对server和desktop进行ssh
访问
重启防火墙服务
添加ssh允许规则
添加富规则拒绝172.16.20.0/24网段用户访问
重载防火墙
2、配置端口转发
在server和desktop配置端口转发,要求:
在172.24.8.0/24网段中的主机,访问server的本地端口5423将被转发到80端口此设置必须永久有效、设置开机启动防火墙
添加转发富规则
重载防火墙
二、TCP wrappers
(1)简介
TCP_Wrappers是一个工作在第四层(传输层)的安全工具,对有状态连接的特定服务进行安全检测并实现访问控制,凡是包含有libwrap.so库文件的程序就可以受TCP_Wrappers的安全控制。它的主要功能就是控制谁可以访问,常见的程序有rpcbind、vsftpd、sshd,telnet。
(2)工作原理
TCP_Wrappers有一个TCP的守护进程叫作tcpd。以ssh为例,每当有ssh的连接请求时,tcpd即会截获请求,先读取系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给真正的ssh进程,由ssh完成后续工作;如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求,拒绝提供ssh服务。
(3)配置文件
两个控制文件(配置改变,立即生效):/etc/hosts.allow 定义允许的访问/etc/hosts.deny 定义拒绝的访问tcp_wrappers的访问控制判断顺序:/etc/hosts.allow—>/etc/hosts.deny–>允许所有
(4)配置案例
案例一:
在A服务器上/etc/hosts.deny中写入如下内容:
在B服务器上通过ssh命令来远程登陆A服务器,已经没有响应
在A服务器上删除该条目后,B服务器即可正常登陆A服务器
案例二:
在A服务器上/etc/hosts.deny中写入如下内容:
通过B服务器可以正常登陆A服务器
案例三:
清空A服务器上的/etc/hosts.deny中的内容然后在/etc/hosts.allow中写入如下内容:
通过B服务器可以正常登陆A服务器
查看哪些服务支持TCP wrappers
(3) 练习:
1、拒绝haha用户登录到当前主机
锁定hah用户的密码
(2)对haha用户身份进行锁定
(3)编辑ssh默认配置文件
编辑允许登录的用户中排出haha用户
2、拒绝主机192.168.146.134 ssh远程登录到当前主机在控制文件/etc/hosts.deny添加
添加规则拒绝172.16.80.68 ssh远程登录当前主机
添加富规则拒绝172.16.80.68访问当前主机