linux中的火墙策略优化

环境:三台主机,一台双网卡172网段和192网段,一台单网卡192网段,一台单网卡172网段,互相可以ping通

1、火墙介绍
netfilter:内核上有个安全插件netfilter(访问控制列表),这个列表里有许多详细的规则,当对这个规则允许或拒绝时,可以控制其他主机是否能访问,极大的提高了安全性。
iptables:管理netfilter的工具,通过iptables往netfilter表格里面写网络安全策略
iptables / firewalld:对iptables进行管理,用iptables / firewalld手段来写网络安全策略。

用iptables / firewalld这两个上层的管理工具去管理iptables,往iptables写网络安全策略时,iptables会把策略通过netfilter存在控制表格里。

2、火墙的工具切换
在rhel8中默认使用的是firewalld

iptables #用来管理内核是它的插件,只可开启一个
#可用iptables和firewalld来管理

firewalld--------->iptables #切换
systemctl disable --now firewalld
systemctl mask firewalld #锁上
在这里插入图片描述
dnf install iptables-services -y #安装iptables插件
在这里插入图片描述
systemctl enable --now iptables
在这里插入图片描述
iptables -nL #查看iptables策略
在这里插入图片描述

iptables------->firewalld
systemctl stop iptables
在这里插入图片描述
systemctl disable iptables
systemctl mask iptables
在这里插入图片描述
systemctl unmask firewalld #解锁
在这里插入图片描述
systemctl enable --now firewalld
firewall-cmd --list-all #查看firewalld策略
在这里插入图片描述

3、firewalld的使用

firewalld的开启

systemctl stop iptables
systemctl disable iptables
systemctl mask iptables

systemctl unmask firewalld
systemctl enable --now firewalld

关于firewalld的域

trusted #接受所有的网络连接
home #用于家庭网络,允许接受ssh mdns ipp-client samba-client dhcp-client
work #工作网络 ssh dhcp-client ipp-client
public #公共网络 ssh dhcp-client
dmz #军级网络 ssh
block #拒绝所有
drop #丢弃 所有数据全部丢弃无任何回复
internal #内部网络 ssh mdns ipp-client samba-client dhcp-client
external #ipv4网络地址伪装转发 sshd

关于firewalld的设定原理及数据存储

/etc/firewalld #火墙配置目录
在这里插入图片描述
/lib/firewalld #火墙模块目录

firewalld的管理命令

firewall-cmd --state #查看火墙的状态
firewall-cmd --get-active-zones #查看当前火墙中生效的域
firewall-cmd --get-default-zone #查看默认域
在这里插入图片描述
firewall-cmd --list-all-zones #查看所有的域
在这里插入图片描述
firewall-cmd --list-all #查看默认域中的火墙策略
firewall-cmd --list-all --zone=work #查看指定域中的火墙策略
firewall-cmd --set-default-zone=trusted #设定默认域
在这里插入图片描述
firewall-cmd --get-zones
在这里插入图片描述
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 #指定数据来源访问域

systemctl enable --now firewalld #开启防火墙
firewall-cmd --get-services | grep http #在防火墙所有服务中筛选http
在这里插入图片描述
firewall-cmd --permanent --remove-sercive=http #永久移除http服务
在这里插入图片描述

firewall-cmd --add-service=http #临时添加http服务,reload之后仍没有
在这里插入图片描述
在这里插入图片描述
firewall-cmd --permanent --add-service=http #永久添加http服务
在这里插入图片描述
vim /etc/httpd/conf/httpd.conf #编辑http的配置文件,将端口号改为8080
systemctl restart httpd #重启
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
firewall-cmd --permanent --add-port=8080/tcp #永久增加8080端口的开放
在这里插入图片描述
此时才可通过8080端口访问到apache界面

firewall-cmd --permanent --remove-port=8080/tcp #永久移除8080端口的开放
在这里插入图片描述
firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=block #将172网段的主机加入黑名单
在这里插入图片描述
在这里插入图片描述

执行完毕之后,172网段的主机将无法访问双网卡主机的172,但192网段的主机可以访问双网卡主机的192
在这里插入图片描述
在这里插入图片描述
firewall-cmd --permanent --remove-source=172.25.254.0/24 --zone=block #在黑名单中将172网段的主机移除
firewall-cmd --reload
firewall-cmd --list-all --zone=block #展示block域的所有内容
在这里插入图片描述
执行完毕之后,172网段的主机将可以访问双网卡主机的172
在这里插入图片描述

firewall-cmd --permanent --remove-service=http
在这里插入图片描述
firewall-cmd --permanent --remove-interface=ens192 --zone=public #将网卡ens192移除public域
在这里插入图片描述
在这里插入图片描述
firewall-cmd --permanent --add-interface=ens192 --zone=trusted #将网卡ens192添加到trusted域
在这里插入图片描述
firewall-cmd --reload
firewall-cmd --list-all --zone=trusted #展示trusted域中所有的内容
在这里插入图片描述
此时,apache虽然已经关闭,但172网段的主机将可以访问双网卡主机的172
在这里插入图片描述
firewall-cmd --permanent --change-interface=ens192 --zone=public #更改ens192的域为public
在这里插入图片描述
firewall高级规则

目的:让172.25.254.216主机无法访问
服务端(双网卡主机端):
firewall-cmd --permanent --add-service=http #开启apache服务
在这里插入图片描述
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 172.25.254.216 -j REJECT
#添加防火墙规则:input 指定操作
-p 协议
-d 端口
-s ip
-j 拒绝
firewall-cmd --reload
firewall-cmd --direct --get-all-rules #查看所有防火墙规则
在这里插入图片描述
测试:
单网卡172网段的主机ip为172.25.254.216时无法访问
在这里插入图片描述
在这里插入图片描述
firewalld中的NAT转换
在这里插入图片描述
在这里插入图片描述

服务端(双网卡主机):
SNAT(源地址转换)
IP为172.25.254.113和192.168.1.116
在这里插入图片描述
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
在这里插入图片描述
sysctl -a | grep ip_forward #可观察到net.ipv4.ip_forward = 1,若没有,vim /etc/sysctl.conf,在最后一行添加net.ipv4.ip_forward=1(1前后无空格)
在这里插入图片描述
客户端:
单网卡主机,ip为172.25.254.213
在这里插入图片描述
ip route add default via 172.25.254.113 #临时添加网关
在这里插入图片描述
ssh root@192.168.1.113
在这里插入图片描述
w -i #此时可以观察到进入主机192.168.1.113的是192.168.1.116
在这里插入图片描述
服务端(双网卡主机):
DNAT(目的地地址转换)
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toport=22:toaddr=192.168.1.113
#将连接此主机的客户机直接转接到192.168.1.113中
firewall-cmd --reload
在这里插入图片描述
客户端(单网卡网段为172的主机):
ssh root@192.168.1.116 #此时可观察到虽然连接的是116,但最终连接到的是113
在这里插入图片描述
4、iptables的使用
systemctl disable --now firewalld
systemctl mask firewalld
dnf install iptables-services
systemctl enable --now iptables
在这里插入图片描述
iptables的策略记录文件:
/etc/sysconfig/iptables

永久保存策略
iptables -F #刷新
iptables-save > /etc/sysconfig/iptables
service iptables save
在这里插入图片描述
systemctl restart iptables.service
在这里插入图片描述

火墙的默认策略

默认策略中的五条链
input #输入
output #输出
forward #转发
postrouting #路由之后
prerouting #路由之前

默认的三张表
filter #经过本机内核的数据(input\output\forward)
nat #不经过内核的数据(postrouting\prerouting\input\output)
mangle #当filter和nat表不够使用时(input\output\forward\postrouting\prerouting)

iptables命令

-t	#指定表名称
-n	#不做解析
-L	#查看
-A	#添加策略
-P	#协议
--dport	#目的地端口
-s	#来源
-j      	#动作
	ACCEPT	#允许
	DROP	#丢弃
	REJECT	#拒绝
	SNAT	#源地址转换
	DNAT	#目的地地址转换
-N	#新建链
-E	#更改链名称
-X	#删除链
-D	#删除规则
-I	#插入规则
-R	#更改规则
-P	#更改默认规则

iptables -t nat -nL
iptables -t filter -nL
iptables -t mangle -nL
在这里插入图片描述
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
在这里插入图片描述
iptables -A INPUT -p tcp --dport 22 -j REJECT #策略每增加一个,下面多一个
在这里插入图片描述
##注意:火墙策略是一个匹配规则,如果第一项匹配到了就不读下面的了

iptables -I INPUT 2 -s 172.25.254.225 -p tcp --dport 22 -j REJECT
#在第二行插入
在这里插入图片描述
iptables -N WESTS #新建
在这里插入图片描述
iptables -E WESTS WESTOS #修改
在这里插入图片描述
iptables -X WESTOS #删除
在这里插入图片描述
iptables -D INPUT 3 #删除第三行策略
在这里插入图片描述
iptables -R INPUT 2 -s 172.25.254.100 -p tcp --dport 22 -j REJECT
#修改第二行策略
在这里插入图片描述
iptables -P INPUT DROP #修改默认为DROP
在这里插入图片描述

tcp 端口
80 #httpd
3260 #iSCSI
139 #smb
445 #smb
22 #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 3260 -j ACCEPT #iscsi允许
iptables -A INPUT -m state --state NEW -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 445 -j ACCEPT #smb允许
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT #sshd允许
iptables -A INPUT -m state --state NEW -j REJECT #其余的都拒绝
在这里插入图片描述
在这里插入图片描述
iptables中的NAT
在这里插入图片描述
服务端(双网卡):
SNAT(源地址转换)
iptables -t nat -A POSTROUTING -o ens192 -j SNAT --to-source 192.168.1.113
#将这块网卡出去的ip都伪装成192.168.1.113上出去的
DNAT(目的地地址转化)
iptables -t nat -A PRSTROUTING -i ens192 -j DNAT --to-dest 172.25.254.213
#访问这块网卡的所有数据都转到172.25.254.213
在这里插入图片描述
客户端(172网段主机):
在这里插入图片描述
(192网段主机)
在这里插入图片描述
iptables -t nat -D PREROUTING 1 #删除PRSTROUTING的第一行

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值