Linux下的防火墙(firewalld和iptables,地址伪装,地址转发)

一、防火墙的基本知识

1、防火墙的定义

  • 防火墙,也称防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网,防火墙是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的边界上构造的保护屏障,它按照系统管理员预先定义好的规则来控制数据包的进出,防火墙是系统的第一道防线,主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,其作用是防止非法用户的进入。保障内网的安全性、保证内外网之间数据的流通性。
  • 在网络中,所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方法,它实际上是一种隔离技术,防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络,换句话说,如果不通过防火墙,公司内部的人就无法访问Internet,Internet上的人也无法和公司内部的人进行通信,也就是说,如果没有防火墙,内网和外网之间就没办法进行交流。

2、防火墙的分类

  • 防火墙从诞生开始,已经历了四个发展阶段:基于路由器的防火墙、用户化的防火墙工具套、建立在通用操作系统上的防火墙、具有安全操作系统的防火墙。常见的防火墙属于具有安全操作系统的防火墙。
  • 从结构上来分,防火墙有两种:代理主机结构和路由器+过滤器结构;内部网络过滤器(Filter)路由器(Router)Internet
  • 从原理上来分,防火墙则可以分成4种类型:特殊设计的硬件防火墙、数据包过滤型、电路层网关和应用级网关。

3、防火墙的工作机制(三表五链)

  • 链: 链就是位置,共有五个 : 数据包进路由之前(PREROUTING)、目的地址为本机,进系统(INPUT) 、转发(FORWARD)、原地址为本机,向外发送,出系统(OUTPUT)、发送到网卡之前,出路由(POSTROUTING); 数据包到了该链处,会去对应表中查询设置的规则,然后决定是否放行、丢弃、转发还是修改等等操作。每个链都是一个规则列表,对对应的包进行匹配。
  • 表:具有相同功能的规则的集合叫做表。filter表:负责过滤功能,经过内核的; nat表:网络地址转换,不经过内核的 ,实现数据包转发,修改源地址 端口 目标地址 端口,实现地址转换;mangle表:拆解报文,作出修改,封装报文;raw表: 关闭nat表上启用的链接追踪机制。
  • 表链关系: 我们所有自定义的规则都是这四种分类中的规则,或者说,所有的规则都存在于这4张表中。
  • filter表格:放的是经过内核的ip input output forward
  • nat表格:放的不是经过内核的服务 input output postrouting prerouting
  • 备用表格mangle: input output forward postrouting prerouting

二、Firewalld的图形化管理和命令管理

1、firewalld中的区域

  • 通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流,例如,互联网是不可信任的区域,而内部网络是高度信任的区域,网络安全模型可以在安装,初次启动和首次建立网络连接时选择初始化该模型描述了主机所连接的整个网络环境的可信级别,并定义了新连接的处理方式。
  • firewalld的默认区域是public
    在这里插入图片描述

2、 图形界面管理firewalld防火墙和命令管理

(1)打开firewalld,且开机自启动
systemctl start firewalld
systemctl enable firewalld

(2)firewall-config 输入这个命令,firewalld图形化管理

在这里插入图片描述

(3) firewall-cmd --state 查看防火墙的状态

在这里插入图片描述

(4)firewall-cmd --get-active-zones 查看正在使用的域在这里插入图片描述

(5)firewall-cmd --get-default-zones 查看系统默认使用的域

在这里插入图片描述

(6)firewall-cmd --get-zones 查看域在这里插入图片描述

(7)firewall-cmd --zone=public --list-all 列出公共域里面所有可以支持添加的服务

在这里插入图片描述

在这里插入图片描述

(8)firewall-cmd --get-services 列出所有的服务

在这里插入图片描述
(9)firewall-cmd --set-defaults-zone=dmz 更改默认的域

在这里插入图片描述
(10)firewall-cmd --list-all-zones 列出所有的域

在这里插入图片描述

2、更改防火墙中设置对sshd服务的影响

条件desktop虚拟机双网卡: 172.25.254.125 / 192.168.0.125
server虚拟机 :192.168.0.225
真机: 172.25.254.25
在这里插入图片描述

2.1 reload与complete reload的区别
  • firewall-cmd --reload 不改变现有状态
  • firewall-cmd --complete-reload 清除状态信息

(1) firewall-cmd --permanent --add-service=ssh 在desktop虚拟机添加ssh服务到public域中, firewall-cmd --reload

在这里插入图片描述

(2)此时,ssh root@172.25.254.125 -X 真机可以登录desktop虚拟机

在这里插入图片描述
(3)firewall-cmd --permanent --remove-service=ssh 在desktop虚拟机移除ssh服务到public域中, firewall-cmd --reload 不改变状态

在这里插入图片描述

但是,此时正在连接的真机仍没有断开,还可以建立文件 touch123

在这里插入图片描述

在虚拟机查看,

在这里插入图片描述

(4) firewall-cmd --complete-reload 清除状态信息,完全断开所有服务,此时真机连接虚拟接的shell就会卡了,已经无法输入字符。

在这里插入图片描述

2.2 防火墙中的服务
  • /lib/firewalld/ 函数库

(1)在 /lib/firewalld/services/中,都是防火墙中可以添加的服务
能列出来的服务和端口是集成在一块的

在这里插入图片描述
(2)vim ssh.xml 发现服务和端口是捆绑在一块的
22—>23改端口

在这里插入图片描述
(3)systemctl restart firewalld 重启防火墙,使其加载生效

在这里插入图片描述

(4)在真机上面: ssh root@172.25.254.125 连接不上
因为ssh连接默认会找desktop的22端口,此时desktop的ssh服务是23端口,因此连接不上

在这里插入图片描述

2.3 服务端指定用户访问服务
   firewall-cmd --direct --add-rule ipv4 filter(规则表) INPUT(链) 1(写在第一条) -s(源ip) 172.25.254.25 -p(协议类型) tcp --dport(目的端口) 22 -j(动作)REJECT(动作)

(1) firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.25 -p tcp --dport 22 -j REJECT 设置规则真机不可以连接虚拟机

在这里插入图片描述

(2)在真机上面: ssh root@172.25.254.125 连接不上在这里插入图片描述

(3)
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 172.25.254.25 -p tcp --dport 22 -j REJECT 移除规则

(4)firewall-cmd --direct --get-all-rules 查看规则
在这里插入图片描述
(5)在真机上面: ssh root@172.25.254.125 可以连接了

在这里插入图片描述

3、防火墙中设置对httpd服务的影响(待补充、双网卡)

4、firewalld的地址伪装和端口转发

4.1 地址伪装
  • 通过地址伪装,NAT设备将经过设备的包转发到指定的接收方,同时将通过的数据包
    源地址更改为其NAT设备自己的接口地址。当返回的数据包到达时,会将目的地址修改
    为原始主机的地址并做路由。地址伪装可以实现局域网多个地址共享单一公网地址上网。

  • IP地址伪装仅支持ipv4,不支持ipv6。

想用 server虚拟机 ip = 192.168.0.225 ping通 desktop虚拟机 ip = 172.25.254.125
因为二者不在一个网段,因此不通。

(1)在server上面:
route -n 查看一下网关,若没有添加
在这里插入图片描述

(2)在desktop上面:
**firewall-cmd --list-all**看地址伪装功能是否开启
**firewall-cmd --permanent --add-masquerade**添加伪装功能
firewall-cmd --reload
firewall-cmd --list-all
sysctl -a | grep ip_forward (如果为0,则在/etc/sysctrol.conf 下添加这一行net.ipv4.ip_forward= 1)
在这里插入图片描述

在这里插入图片描述

(3)在server上面: **ping 172.25.254.125**可以

在这里插入图片描述

4.2 端口转发
  • 也可以称之为目的地址转换或端口映射。通过端口转发,将指定IP地址及端口的流量转发到相同计算机上的不同端口,或不同计算机上的端口。一般公司内网的服务器都采用私网地址,然后通过端口转发将使用私网地址的服务器发布到公网上。
  • 如果去掉网关,就不能实现端口转发功能
    (1)在desktop上面:
    firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=192.168.0.225
    firewall-cmd --list-all

在这里插入图片描述

(2)在真机上面**ssh root@172.25.254.225**,输入server的密码,直接连上192.168.0.125,ifconfig查看一下ip

在这里插入图片描述

五、iptables防火墙

1、iptables的参数

参数含义
-t指定表名称
-n不作解析
-L列出指定表中的策略
-A增加策略
-p网络协议
–dport端口
-s数据来源
-j动作:ACCEPT允许;REJECT拒绝;DROP丢弃
-N增加链
-E修改链名称
-X删除链
-D删除指定策略
-I插入
-R修改策略
-P修改默认策略

(1)关闭firewalld,开启iptables,不可以同时打开

systemctl stop firewalld 关闭firewalld
systemctl mask firewalld 锁住
systemctl start iptables 开启iptables

(2)man iptables
在这里插入图片描述

(3)iptables -t filter -nL 不作解析 查看filter表格里面的链( 不跟-t,默认为filter表格)

在这里插入图片描述
(4)iptables -t filter - L ** 作解析** 查看filter表格里面的链
在这里插入图片描述

(5)=iptables -F== 清除所有策略

在这里插入图片描述
(6)service iptables save 保存,

在这里插入图片描述
还可以通过 iptables-save > /etc/sysconfig/iptables 保存
在这里插入图片描述
(7)iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT 接受所有访问22端口的

在这里插入图片描述
(8)iptables -t filter -A INPUT -s 172.25.254.25 -p tcp --dport 22 -j REJECT 拒绝172.25.254.25 访问22端口

在这里插入图片描述
在真机25连接虚拟机125,发现可以连接,策略未生效。这是因为 防火墙匹配从上往下读取策略,匹配之后就执行,不再读取。

在这里插入图片描述

(9)iptables -D INPUT 2 删除第二条

在这里插入图片描述

(10)iptables -t filter -I INPUT 1 -s 172.25.254.25 -p tcp --dport 22 -j REJECT 插入策略默认插入到第一条。
插入策略默认插入到第一条。

(11)iptables -t filter -R INPUT 1 -s 172.25.254.25 -p tcp --dport 22 -j DROP
修改策略的动作 REJECT–> DROP 从有拒绝提示到没有提示
在这里插入图片描述

在真机25连接虚拟机125,发现没有提示
在这里插入图片描述

(12)iptables -S INPUT 显示所有已添加策略

在这里插入图片描述

(13) iptables -N redhat 新建链

在这里插入图片描述

(14) iptables -E redhat RANRAN 修改链的名称

在这里插入图片描述

(15) iptables -X RANRAN 删除链

在这里插入图片描述

(16)iptables -P INPUT DROP 修改链的默认策略

在这里插入图片描述
默认策略只可以修改为DROP和ACCET
在这里插入图片描述

在这里插入图片描述

2、iptables的地址伪装和端口转发

2.1地址伪装(SNAT)

在这里插入图片描述

(1)iptables -t nat -A POSTROUTING -o(output) eth0 -j SNAT --to-source 172.25.254.125(在172.25.254.125上面进行伪装)开启地址伪装功能

在这里插入图片描述
(2)
在server192.168.0.225上面(需要设置网关192.168.0.125)
ping 172.25.254.125通
ping 172.25.254.25通
在这里插入图片描述

2.2端口转发(DNAT)

在这里插入图片描述

需求: 想让真机172.25.254.25 ssh root@172.25.254.125desktop直接连上192.168.0.225server

(1)iptables -t nat -A PREROUTING -i(input) eth0 -p tcp --dport 22 -j DNAT --to-dest 192.168.0.225:22 添加地址转发功能,从172.25.254.125的22端口进入的都转到192.168.0.225的22端口上去
在这里插入图片描述

(2)在真机上面 ,连接172.25.254.125desktop ssh root@172.25.254.125
ifconfig 发现是server192.168.0.225 , 实现了地址转发的功能

在这里插入图片描述

3、设置只允许httpd、sshd、squid服务通过的防火墙策略

(1)iptables -A INPUT-m state --state ESTABLISHED,RELATED -j ACCEPT
允许当前正在运行的程序
(2)iptables -A INPUT-m state --state NEW -I lo -j ACCEPT 接受从内部lo口发出的信息
(3)iptables -A INPUT-m state --state NEW -p tcp --dport 22 -j ACCEPT 接受所有访问22端口(sshd)
(4)iptables -A INPUT-m state --state NEW -p tcp --dport 53 -j ACCEPT 接受所有访问53端口(httpd)
(5)iptables -A INPUT-m state --state NEW -p tcp --dport 3128 -j ACCEPT 接受所有访问3128端口(squid)

(6)iptables -A INPUT -j REJECT 拒绝其他所有访问

在这里插入图片描述

(7)iptables-save > /etc/sysconfig/iptables 保存,防止刷新策略

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值