一、关于火墙的基础知识
1.火墙介绍
定义:火墙是指一种将内部网和公众访问网(如Internet)分开的方法,它实际上是一种隔离技术。火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的非授权用户来访问你的网络。
- netfilter #它是内核上的一个插件,是一套防火墙系统,用户可以通过运行在用户空间的工具把相关配置下发给netfilter,
- iptanles #可以用来管理netfilter,方面用户给netfilter里的表格里写火墙策略
- iptables | firewalld ##linux系统中,可以用这两种命令对火墙进行操作。iptables的特点是,直接操作三个表五条链,而firewalld的使用更为简单的添加或关闭相关端口及服务名称。
2.火墙管理工具切换
在rhel8中默认使用的是firewalld,iptables与firewalld相互切换时必须有要对关闭的那个进行masl操作,以防止有与其相依赖的其他程序在启动时将其唤醒。
firewalld切换为iptables
dnf install iptables-services -y
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld ##锁定,防止有其他与其相依赖的程序在启动时将其唤醒
systemctl unmask iptables ##解除锁定
systemctl enable --now iptables
iptales 切换为 fiewalld
dnf install firewalld -y
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl enable --now firewalld
二、iptables
1. iptables 的使用
在系统中永久保存火墙策略:
vim /etc/sysconfig/iptables ##iptables 策略记录文件
永久保存的方法:
iptales-save > /etc/sysconfig/iptables
service iptables save
2.火墙默认策略
默认策略中的5条链
input | 输入 |
output | 输出 |
forward | 转发 |
postrouting | 路由之后 |
prerouting | 路由之前 |
默认的3张表
表名 | 定义说明 | |
---|---|---|
filter | 经过本机内核的数据(input output forward) | |
nat | 不经过内核的数据(postrouting,prerouting,input,output) | |
mangle | 当filter和nat表不够用时使用(input output forward postrouting,prerouting,) |
iptables命令
iptables
参数 | 释义 | ||
---|---|---|---|
-t | 指定表名称 | ||
-n | 不做解析 | ||
-L | 查看 | ||
-A | 添加策略 | ||
-p | 协议 | ||
–dport | 目的地端口 | ||
-s | 来源 | ||
-j | (类型) 动作 | ||
ACCEPT | 允许 | ||
DROP | 丢弃 | ||
REJECT | 拒绝 | ||
SNAT | 源地址转换 | ||
DNAT | 目的地地址转换 | ||
-N | 新建链 | ||
-E | 更改链名称 | ||
-X | 删除链 | ||
-D | 删除规则 | ||
-I | 插入规则 | ||
-R | 更改规则 | ||
-P | 更改默认规则 |
数据包状态 | 释义 |
---|---|
RELATED | 建立过连接的 |
ESTABLISHED | 正在连接的 |
NEW | 新的 |
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -m state --state NEW ! -s 192.168.0.10 -p tcp --dport 22 -j ACCEPT
ptables -A INPUT -m state --state NEW -j REJECT
service iptables save
nat表中的 dnat 和 snat 使用方法
- snat
iptable -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.0.20
- dnat
iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 172.25.254.30
三、firewalld
1.关于firewalld的域
域名 | 释义 |
---|---|
trusted | 接受所有的网络连接 |
home | 用于家庭网络,允许接受ssh mdns ipp-client samba-client dhcp-client |
work | 工作网络 ssh ipp-client dhcp-client |
public | 公共网络 ssh dhcp-client |
dmz | 军级网络 ssh |
block | 拒绝所有 |
drop | 丢弃所有数据全部丢弃无任何回复 |
internal | 内部网络 ssh mdns ipp-client samba-client dhcp-client |
external | ipv4网络地址伪装转发 sshd |
2.关于firewalld的设定原理及数据存储
/etc/firewalld 火墙配置目录,用来编写设定配置参数
/lib/firewalld 火墙模块目录,用来存储火墙数据
3. firewalld的管理命令
firewall-cmd --state ##查看火墙状态
firewall-cmd --get-active-zones ##查看当前火墙中生效的域
firewall-cmd --get-default-zone ##查看默认域
firewall-cmd --list-all ##查看默认域中的火墙策略
firewall-cmd --list-all --zone=work ##查看指定域的火墙策略
firewall-cmd --set-default-zone=trusted ##设定默认域
firewall-cmd --get-services ##查看所有可以设定的服务
firewall-cmd --permanent --remove-service=cockpit ##移除服务
firewall-cmd --reload
firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block ##指定数据来源访问指定域
firewall-cmd --reload
firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block ##删除自定域中的数据来源
firewall-cmd --permanent --remove-interface=ens224 --zone=public ##删除指定域的网络接口
firewall-cmd --permanent --add-interface=ens224 --zone=block ##添加指定域的网络接口
firewall-cmd --permanent --change-interface=ens224 --zone=public ##更改网络接口到指定域
4. firewalld的高级规则
firewall-cmd --direct --get-all-rules ##查看高级规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 ! -s 172.25.254.250 -p tcp --dport 22 -j REJECT
5.firewalld中的NAT
SNAT
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
DNAT
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=172.25.254.30
firewall-cmd --reload