文章目录
防火墙对于企业安全意义重大,本节重点学习iptables及firewalld的管理,从而提高管理企业信息的安全;
netfilter:①Netfilter是新一代的Linux防火墙机制,是linux内核的一个子系统。其重要工具模块IPTables从用户态的iptables连接到内核态的Netfilter的架构中,Netfilter与IP协议栈是无缝契合的,并允许使用者对数据报进行过滤、地址转换、处理等操作,他是一种表格;②iptables:往netfilter 中写内容的工具;③管理 iptable 策略的方式A.iptablesB.firewalld
实验环境:
Windows: IP为192.168.0网段
主机一:双网卡主机:192.168.0网段和172.25.254网段
主机二:单网卡:172.25.254网段
一、火墙介绍
1.netfilter ##插件,是新一代的Linux防火墙机制,是linux内核的一个子系统。其重要工具模块IPTables从用户态的iptables连接到内核态的Netfilter的架构中,Netfilter与IP协议栈是无缝契合的,并允许使用者对数据报进行过滤、地址转换、处理等操作,他是一种表格;
2.iptables ##往netfilter 中写内容的工具,有iptables及firewalld两种方式
3.iptables | firewalld
netfilter包含:
三张表:filter、nat、mangle
5条链:input、output、forward、postrouting、prerouting
二、火墙管理工具切换和对比
在rhel8中默认使用的是firewalld
firewalld----->iptables
dnf install iptables-services -y
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld
systemctl enable --now iptables
iptales -------> fiewalld
dnf install firewalld -y
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl enable --now firewalld
firewalld与iptables的区别
firewalld 与 iptables 的区别有以下四点:
- iptables 主要是基于接口,来设置规则,从而判断网络的安全性。firewalld 是基于区域,根据不同的区域来设置不同的规则,从而保证网络的安全,与硬件防火墙的设置相类似。
- iptables 防火墙类型为静态防火墙。firewalld 防火墙类型为动态防火墙。
- 使用 iptables 每一个单独更改意味着清除所有旧有的规则从 /etc/sysconfig/iptables 里读取所有新的规则。使用 firewalld 却不会再创建任何新的规则,仅仅运行规则中的不同之处。因此 firewalld 可以在运行时间内,改变设置而不丢失现行连接
- iptables 在 /etc/sysconfig/iptables 中储存配置。firewalld 将配置储存在 /etc/firewalld/ (优先加载) 和 /usr/lib/ firewalld/ ( 默认的配置文件) 中的各种 XML 文件里。
三、iptables
1.火墙策略的永久保存
/etc/sysconfig/iptables ##iptables 策略记录文件
永久保存策略
iptales-save > /etc/sysconfig/iptables
service iptables save
2.火墙默认策略
(1)iptables命令
默认策略中的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 ##更改默认规则
106 iptables -F ##清除策略
107 iptables -nL ##不做解析的查看
108 systemctl restart iptables.service ##重启火墙
109 iptables -nL
110 iptables -F
111 service iptables save ##保存当前状态,
112 iptables -nL
113 systemctl restart iptables.service ##重启火墙,状态会被保存
114 iptables -nL
115 iptables -t nat -nL ##查看nat表
116 iptables -t mangle -nL ##查看mangle表
117 iptables -t fileter -nL ##查看fileter表,若什么都不加,默认是fileter表
118 iptables -t filter -nL
119 iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
##在INPUT中添加22端口允许
120 iptables -nL
121 iptables -t filter -A INPUT -s 192.168.0.100 -p tcp --sport 80 -j REJECT
##-s 来源主机
122 iptables -t filter -A INPUT ! -s 192.168.0.100 -p tcp --sport 80 -j REJECT
##“!”表示除了
123 iptables -nL
124 iptables -t filter -D INPUT 3 ##删除INPUT中第三条
125 iptables -nL
126 iptables -R INPUT 2 -s 192.168.0.100 -p tcp --sport 80 -j REJECT ##更改
127 iptables -nL
128 iptables -A INPUT -j REJECT ##拒绝所有:火墙策略是从上至下,依次读
129 iptables -nL
129 iptables -I INPUT 2 tcp --dport 53 -j ACCEPT ##插入式添加
130 iptables -P INPUT ACCEPT ##改变默认规则
131 iptables -nL
132 iptables -N westos ##新建链
133 iptables -nL
134 iptables -E westos WESTOS ##更改链名称
135 iptables -nL
136 iptables -X WESTOS ##删除链
137 iptables -nL
(2)filter 表
数据包状态
(数据跟踪:例子:sshd服务第一次认证时按照顺序从上至下,第二次仅仅读第一条就可认证)
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 ##接受:80端口
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT ##接受:443端口
iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT ##接受:53端口
iptables -A INPUT -m state --state NEW ! -s 192.168.0.10 -p tcp --dport 22 -j ACCEPT ##拒接该主机的22端口
iptables -A INPUT -m state --state NEW -j REJECT ##其他均拒绝
service iptables save ##保存策略
(3)nat表
实验:172.25.254网段的虚拟机访问192.168.0网段的Windows
双网卡主机功能类似于路由器
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
snat:内网访问外网
dnat:外网访问内网
注意:双网卡主机的内核路由功能必须开启!!
四、firewalld
1. firewalld的开启
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl unmask firewalld
systemctl enable --now firewalld
2.关于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
3.关于firewalld的设定原理及数据存储
/etc/firewalld ##火墙配置目录
/lib/firewalld ##火墙模块目录
4. firewalld的管理命令
图形管理
命令管理
域:
firewall-cmd --state ##查看火墙状态
firewall-cmd --get-active-zones ##查看当前火墙中生效的域
firewall-cmd --get-default-zone ##查看默认域
firewall-cmd --set-default-zone=trusted ##设定默认域
firewall-cmd --list-all ##查看默认域中的火墙策略
firewall-cmd --list-all --zone=work ##查看指定域的火墙策略
服务:
firewall-cmd --get-services ##查看所有可以设定的服务
firewall-cmd --permanent --add-service=cockpit ##添加服务
firewall-cmd --reload
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 --reload
接口:
firewall-cmd --permanent --remove-interface=ens192 --zone=public ##删除指定域的网络接口
firewall-cmd --permanent --add-interface=ens192 --zone=block ##添加指定域的网络接口
firewall-cmd --permanent --change-interface=ens192 --zone=public ##更改网络接口到指定域
5. 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
##除了172.25.254.250主机,其他主机均拒绝访问
6.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
SNAT:内网访问外网
打开地址伪装功能
DNAT:外网访问内网
数据转发