Linux的安全管理机制Firewall和iptables

本文深入探讨了防火墙和iptables的工作原理与应用,包括firewall的域策略、服务管理、地址转换,以及iptables的规则设置、表结构和地址转换功能。通过实际操作,展示了如何在Linux环境下配置和管理网络流量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Firewall
防火墙也称防护墙,是一种位于内部网络与外部网络之间的网络安全系统,是一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。
firewall与iptabels对比
redhat6之前包括6使用的是iptables,redhat7之后使用的是firewall
firewall 能够允许哪些服务可用,那些端口可用…属于更高一层的防火墙。
作为内核的管理软件 firewall-cmd,通过使用这个软件来间接管理 Linux 内核的开启与关闭及其它功能,而 firewall-cmd 软件本身支持 firewall-cmd(命令)和 firewall-config (图形管理工具) 两种管理模式来管理 kernel netfilter

firewalld所有的域
home(家庭):用于家庭网络,仅接受dhcpv6-client、ipp-client、mdns、 samba-client、ssh服务
internal(内部):用于内部网络,仅接受dhcpv6-client、ipp-client、mdns、samba-client、ssh服务
public(公共):用于公共区域使用,仅接受dhcpv6-client、ssh服务
trusted(信任):接受所有网络连接
work(工作):用于工作区,仅接受dhcpv6-client、ipp-client、ssh服务
block(限制):拒绝所有网络连接
dmz(非军事区):仅接受ssh服务连接
drop(丢弃):任何接收的网络数据包都被丢弃,没有任何回复
external(外部):出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接
实验环境:
三台主机:一台物理机 两台虚拟机分别为server,desktop
物理主机配置ip为172.25.254.32
server 设置为双网卡主机 网卡eth0 ip为172.25.254.232 ; eth1 ip为192.168.0.232
在这里插入图片描述
desktop设置ip为192.168.0.232
在这里插入图片描述
并测试同一网段的主机互相能ping同

在主机server上部署firewall服务
安装firewalld软件,一般情况下Linux系统7.0版本以上的会默认安装好,如果没有就自行安装
yum install firewalld -y
yum install firewall-cmd -y

安装Apache服务
yum install httpd -y
在这里插入图片描述
在这里插入图片描述
systemctl start firewalld
systemctl enable firewalld
systemctl status firewalld
在这里插入图片描述

firewalld-config 调用firewalld图形管理界面

在这里插入图片描述
firewall-cmd --state 防火墙状态查询在这里插入图片描述

firewall-cmd --get-active-zones 查看火墙活跃的域,即正在使用的域。
在这里插入图片描述
firewall-cmd --get-default-zone 查看火墙默认的域
在这里插入图片描述
firewall-cmd --get-zones 查看火墙所有的域
在这里插入图片描述
firewall-cmd --zone=public --list-all 查看指定域的策略
在这里插入图片描述
firewall-cmd --list-all 查看默认域的策略
在这里插入图片描述
firewall-cmd --get-services 查看火墙可以添加的服务
在这里插入图片描述
firewall-cmd -list-all-zones 查看所有的域的策略信息
在这里插入图片描述
firewall-cmd --set-default-zone=home 更改火墙使用的默认的域
在这里插入图片描述

在物理机上测试防火墙
使用浏览器访问Apache服务
浏览器输入 172.25.254.232
在这里插入图片描述
Apache 已开启,无法访问,服务端的火墙未添加可以访问Apache 服务的策略
server主机上设置
firewall-cmd --permanent --add-source=172.25.254.32 --zone=trusted 永久添加源地址为172.25.254.32这台主机为信任域的成员
在这里插入图片描述
物理机再次访问: 浏览器输入 172.25.254.232 成功
在这里插入图片描述
server主机上
firewall-cmd --permanent --remove-source=172.25.254.30 --zone=trusted 永久移除源地址为172.25.254.32这台主机为信任域的成员
物理机再次访问: 浏览器输入 172.25.254.232 失败
在这里插入图片描述
server主机上查询网卡信息
ifconfig eth0
172.25.254.232
ifconfig eth1
192.168.0.232
在这里插入图片描述
firewall-cmd --list-all 查看默认域的信息时接口信息显示为 eth0 eth1 两个接口都在public域中
在这里插入图片描述
firewall-cmd --remove-interface=eth1 --zone=public 将public域中的eth1接口移除
firewall-cmd --add-interface=eth1 --zone=trusted 添加接口eth1至trusted信任域中
在这里插入图片描述
在desktop主机192.168.0.132
浏览器输入 192.168.0.232正常访问
在这里插入图片描述
在server上
firewall-cmd --list-all --zone=trusted 查询信任域trusted 的策略
firewall-cmd change-interface=eth1 --zone=public 修改接口eth1到public域中

在desktop主机192.168.0.132
浏览器输入 192.168.0.232访问拒绝
在这里插入图片描述

reload 和 complate-reload
防火墙加载策略时reload 加载完成时对正在使用的服务不生效,只在服务断开后重新发起请求时生效
complate-reload 加载时直接断开服务加载完成后按照策略重新连接服务

火墙策略之禁止ssh服务登陆设置
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.32 -p tcp --dport 22 -j REJECT
策略设置172.25.254.250主机 禁止通过 ssh 22 端口 远程连接本机
firewall-cmd --reload 加载策略使其生效

地址转换
server虚拟机上
sysctl -a | grep net.ipv4.ip_forward 查看主机内核路由功能是否开启
net.ipv4.ip_forward=1 表示已经开启
未开启在配置文件vim /etc/sysctl.conf 中写入net.ipv4.ip_forward=1
并sysctl -p 使其生效
在这里插入图片描述
在这里插入图片描述

firewall-cmd --permanent --add-masquerade 开启火墙的地址转换功能
firewall-cmd --reload
在这里插入图片描述

测试在desktop网卡上设置网关为 server主机上的同网段地址
并在物理机上设置和sever同网段的地址为网关
desktop 和物理机 能互相ping同
在这里插入图片描述
在这里插入图片描述
地址伪装
在server上设置
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.32 设置将所有访问本机22端口服务的请求转换发送给172.25.254.32主机
使用户无法登陆本机。
在这里插入图片描述
在这里插入图片描述

Iptables
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易
规则(rules):预定义的条件
链(chains): 是数据包传播的路径
表(tables):内置3个表filter表,nat表,mangle表分别用于实现包过滤网络地址转换和包重构的功能

filter表
是系统默认的,INPUT(进入的包),FORWORD(转发的包),OUTPUT(处理本地生成的包),filter表只能对包进行授受和丢弃的操作
nat表
网络地址转换,PREROUTING(修改即将到来的数据包),OUTPUT(修改在路由之前本地生成的数据包),POSTROUTING(修改即将出去的数据包)
mangle表 为附加表 在上面两个表不够用时才使用
PREROUTING,OUTPUT,FORWORD,POSTROUTING,INPUT

关闭server上的firewall程序
systemctl stop firewalld 关闭firewalld程序
systemctl distable firewalld 设置firewalld程序开机时不启动
systemctl mask firewalld 锁定firewalld程序
在这里插入图片描述
安装iptables服务
yum install iptables-services -y
systemctl start iptables 启动iptables服务
systemctl enable iptables 设置开机启动
在这里插入图片描述

在这里插入图片描述
Filter 表
iptables -t filter -nL 查看filter表中的规则
在这里插入图片描述
iptables -F 清空规则
service iptables save 保存规则,使服务重启后仍能生效
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT ###在filter表的INPUT链中添加一条规则使所有用户访问本机的22端口时都被放行
在这里插入图片描述
iptables -t filter -A INPUT -s 172.25.254.32 -p tcp --dport 22 -j REJECT 在filter表的INPUT链中添加一条规则只对源地址为172.25.254.32的主机提供22端口的访问服务
在这里插入图片描述
iptables -D INPUT 2 删除INPUT链中的第二条规则
在这里插入图片描述
iptables -nL 查看filter表中的规则

在这里插入图片描述

iptables -t filter -R INPUT 1 -s 172.25.254.30 -p tcp --dport 22 -j DROP 修改规则
在这里插入图片描述
iptables -t filter -I INPUT -s 172.25.254.30 -p tcp --dport 22 -j REJECT 插入规则
在这里插入图片描述
iptables -S INPUT 查看INPUT链中的规则
在这里插入图片描述
在这里插入图片描述
iptables -N redhat 新建表
iptables -E redhat WESTOS 修改表的名称
iptables -X WESTOS 删除表
在这里插入图片描述
将规则导入文件中使其重启服务后还可以生效的两种方法
1、iptables-save > /etc/sysconfig/iptables
在这里插入图片描述
iptabls -F
在这里插入图片描述
systemctl restart iptables.service
iptables -nL
在这里插入图片描述
2、service iptables save

Nat 表
地址转换
iptables -t net A POSTROUTING -o eth0 -j SNAT --to-surce 172.25.254.232 在nat表中的postrouting链中添加一条规则 凡是output数据为接口eth0去往主机172.25.254.232的主机全做源地址转换
在这里插入图片描述
iptables -t net A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest 192.168.0.23:22
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值