0


网络安全 Day29-运维安全项目-iptables防火墙

iptables防火墙

1. 防火墙概述

  • 目标: - 封或开启端口- 封或开启ip

2. 防火墙

2.1 防火墙种类及使用说明

  • 硬件: 整个企业入口 - 三层路由: H3C 华为 Cisco(思科)- 硬件防火墙: 深信服,绿盟,奇安信…- 棱镜门 0day. 勒索病毒。 国内互联网企业去IOE运动。- Juniper
  • 软件: 开源软件 网站内部 封ip 封ip - iptables 写入到Linux内核中 以后服务docker 工作在 4层(大部分)- firewalld C7 底层也是iptables.- nftalbes C8- ufw (ubuntu firewall) Ubuntu
  • 云防火墙(公有云) - 阿里云: - 安全组 (封ip,封端口)- NAT网关(共享上网,端口映射…)- waf应用防火墙
  • waf防火墙(应用防火墙,处理7层的攻击) SQL注入,等攻击. - 书写规则(描述攻击过程,关键提示,关键操作.)

企业选型建议:

中小企业: 使用公有云,安全组,waf防火墙,态势感知.

访问量巨大: 使用硬件防火墙,waf防火墙,硬件服务器+云服务器

2.2 必须熟悉的名词

  • 容器: 瓶子 罐子 存放东西
  • 表(table): 存放====的容器,防火墙最大概念
  • 链(chain): 存放==规则==的容器
  • 规则(policy): 准许或拒绝规则 ,未来书写的防火墙条件就是各种防火墙规则

掌握表和链之间联系即可。

在这里插入图片描述
Netfilter表(tables)链(chains)****规则(Policy)一栋楼楼里的房子房子里的柜子柜子里衣服,摆放规则

2.3 iptables 执行过程※※※※※

工作流程小结:※※※※※

  1. 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
  2. 如果匹配成功规则,即明确表示是拒绝(DROP)还是接收(ACCEPT)数据包就不再向下匹配新的规则
  3. 如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
  4. 防火墙的默认规则所有规则都匹配完才会匹配的

2.4 表与链※※※※※

2.4.1 简介

  • 表(table)是对功能的分类,防火墙功能(filter表),共享上网,端口转发(nat表)
  • 链对数据流进行处理,需要使用不同的链(数据流入(INPUT),数据流出(OUTPUT))
  • iptables 是4表5链
  • 4表: filter 表 nat表 raw表 mangle表
  • 伍链: INPUT OUTPUT FORWARD PREROUTING POSTROUTING

2.4.2 每个表说明

2.4.2.1 filter表 ⭐️⭐️⭐️⭐️⭐️

  • 是iptables默认的表,filter表示过滤.
  • 实现防火墙功能:(对数据包的filter过滤)屏蔽或准许,端口,ip.

filter****表强调:主要和主机自身相关,真正负责主机防火墙功能的(过滤流入流出主机的数据包) filter表示iptables默认使用的表,这个表定义了三个链(chains) 企业工作场景:主机防火墙****INPUT ⭐️⭐️⭐️⭐️⭐️负责过滤所有目标地址是本机地址的数据包 通俗来说:就是过滤进入主机的数据包 (能否让数据包进入服务器)FORWARD路过: 负责转发流经主机的数据包。起转发的作用,和NAT关系很大,后面会详细介绍 LVS NAT模式,net.ipv4.ip_forward=0OUTPUT处理所有源地址是本机地址的数据包 通俗的讲:就是处理从主机发出去的数据包

2.4.2.2 nat表

  • 实现nat功能 - 实现共享上网(内网服务器上外网)- 端口映射和ip映射
    nat负责网络地址转换的,即来源与目的IP地址和port的转换。
    应用:和主机本身无关,一般用于局域网共享上网或者特殊的端口转换服务相关。
    工作场景:
  1. 用于企业路由(zebra)或网关(iptables),共享上网POSTROUTING
  2. 做内部外部IP地址一对一映射(dmz),硬件防火墙映射IP到内部服务器,ftp服务(PREROUTING
  3. WEB,单个端口的映射,直接映射80端口(PREROUTING) 这个表定义了3个链,nat功能相当于网络的acl控制。和网络交换机acl类似。OUTPUT和主机放出去的数据包有关,改变主机发出数据包的目的地址。PREROUTING在数据包到达防火墙时,进行路由判断之前执行的规则,作用是改变数据包的目的地址、目的端口等
    就是收信时,根据规则重写收件人的地址。
    例如:把公网IP:xxx.xxx.xxx.xxx映射到局域网的xx.xx.xx.xx服务器上。
    如果是web服务,可以报80转换为局域网的服务器9000端口上

10.0.0.61 8080(目标端口) ----nat—à 10.0.0.7 22POSTROUTING在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址,源端口等。
写好发件人的地址,要让家人回信时能够有地址可回。
例如。默认笔记本和虚拟机都是局域网地址,在出网的时候被路由器将源地址改为了公网地址。
生产应用:局域网共享上网

课外了解: 官方最全超级详解传送门

2.5 环境准备及命令

iptables iptables启动或关闭的命令

oldboy-bao 10.0.0.61 172.16.1.61

  1. 为了使用systemctl管理安装的软件:yum install -y iptables-services
  2. 检查结果[root@oldboy-bao ~]rpm-qa|grep iptables iptables-services-1.4.21-35.el7.x86_64 #我们安装的。iptables-1.4.21-35.el7.x86_64 #系统自带
  3. 启动iptables 内核模块手动加载iptables内核模块(直接复制到虚拟机上就好了)modprobe ip_tablesmodprobe iptable_filtermodprobe iptable_natmodprobe ip_conntrackmodprobe ip_conntrack_ftpmodprobe ip_nat_ftpmodprobe ipt_state
  4. 让配置永久生效chmod +x /etc/rc.d/rc.localcat >>/etc/rc.local<<EOFmodprobe ip_tablesmodprobe iptable_filtermodprobe iptable_natmodprobe ip_conntrackmodprobe ip_conntrack_ftpmodprobe ip_nat_ftpmodprobe ipt_state EOF
  5. 检查是否加载防火墙iptables 模块[root@oldboy-bao ~] lsmod |egrep'filter|nat|ipt'nf_nat_ftp 128090 nf_conntrack_ftp 184781 nf_nat_ftpiptable_nat 128750 nf_nat_ipv4 141151 iptable_natnf_nat 265832 nf_nat_ftp,nf_nat_ipv4nf_conntrack 1392646 nf_nat_ftp,nf_nat,xt_state,nf_nat_ipv4,nf_conntrack_ftp,nf_conntrack_ipv4iptable_filter 128100 ip_tables 271262 iptable_filter,iptable_natlibcrc32c 126443 xfs,nf_nat,nf_conntrack[root@oldboy-bao ~] lsmod |egrep'filter|nat|ipt'|wc-l9
  6. 关闭已有的firewalld防火墙:systemctl stop firewalld +systemctl disable firewalld
  7. 清空iptables自带规则1. 查看规则:iptables -t filter -nL2. 清空规则iptables -t filter -F #flush清空规则iptables -X #删除定义的链。iptables -Z #清空计数器。

2.6 案例01:⭐️⭐️⭐️⭐️⭐️禁止访问22端口

  • 在filter表的INPUT连上新加1条拒绝规则,拒绝所有目标端口是22的请求。iptables -t filter -I INPUT -p tcp --dport22-j DROPiptables -t filter -nL --line-number #显示规则并添加序号iptables -t filter -D INPUT 1#删除filter表INPUT链的第1个规则

2.7 案例02: ⭐️⭐️⭐️⭐️⭐️屏蔽对应的ip

  • DOS拒绝式服务攻击。特点就是某几个ip不断访问。
  • 在filter表的INPUT链上添加拒绝规则,拒绝源ip是10.0.0.1的访问。
屏蔽来自于10.0.0.1的访问
iptables -I INPUT -s10.0.0.1  -j DROP
iptables -t filter -nL --line-number #显示规则并添加序号
iptables -t filter -D INPUT 1#删除filter表INPUT链的第1个规则

2.8 案例03:⭐️⭐️⭐️⭐️⭐️禁ping

  • 我们需要禁止任何人ping ip,让用户无法ping通。
  • ping背后是使用icmp协议(数据包)。
  • 实现方法: - 🅰️ ✅ 通过Iptables实现。- 🅱️通过Linux内核参数实现。iptables -I INPUT -p icmp -j DROP开启另一个机器ping。

2.9 案例04:⭐️⭐️⭐️禁止10.0.0.0/24内网访问22端口

  • 实现22端口只能通过堡垒机访问或只能通过内网访问。

  • 未来可以改为只通过内网访问,准许172.16.1.0/24访问22端口。

  • 翻译:添加filter表INPUT链接拒绝规则,禁止源ip是10.0.0.0/24网段访问目标端口是22,协议tcp.

  • 环境准备 - 双网卡 eth0 10, eth1 172(lan区段)
    环境准备需求细节oldboy-bao双网卡eth0 10(外网) eth1 172(内网)oldboy-docker双网卡eth0 10(外网) eth1 172(内网)

  • 添加网卡设置lan区段:添加到和堡垒机相同的区段

  • 书写网卡配置文件oldboy-docker[root@oldboy-docker ~]cat /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1NAME=eth1BOOTPROTO=noneONBOOT=yesIPADDR=172.16.1.62PREFIX=24[root@oldboy-docker ~] systemctl restart network

  • 配置规则之前测试ssh-p2210.0.0.61 #ctrl + d 退出ssh-p22172.16.1.61都可以链接与访问。

  • 进行配置翻译:添加filter表INPUT链接拒绝规则,禁止源ip是10.0.0.0/24网段访问目标端口是22,协议tcp.iptables -I INPUT -s10.0.0.0/24 -p tcp --dport22-j DROP

  • 配置规则之后测试ssh-p2210.0.0.61 访问失败ssh-p22172.16.1.61 访问成功都可以链接与访问。

经过漫长等待,10网段访问失败。

2.10 案例05: ⭐️ 指定多个端口屏蔽

  • 禁止80,443访问。--dport默认只能指定1个端口或指定端口范文 通过:(冒号)实现。iptables -I INPUT -p tcp --dport1:1024 -j DROP使用multiport模块,就可以指定多个端口iptables -I INPUT -p tcp -m multiport --dport80,443-j DROP

2.11 案例06:⭐️⭐️⭐️⭐️⭐️ 防火墙规则的保存生效与备份恢复

  1. 配置的防火墙规则重启Linux或iptables服务后是否仍然生效iptables -I INPUT -s10.0.0.1 -j ACCEPT iptables -I INPUT -p icmp -j DROPiptables -I INPUT -s10.0.0.0/24 -p tcp --dport22-j ACCEPTiptables -I INPUT -p tcp -m multiport --dport80,443-j ACCEPT
  2. 通过iptables-save输出/etc/sysconfig/iptables文件备份原有的cp /etc/sysconfig/iptables{,.bak}iptables-save >/etc/sysconfig/iptables
  3. 恢复默认配置: 读取/etc/sysconfig/iptables文件并加载防火墙配置systemctl restart iptables

2.12 案例07:⭐️⭐️ 收尾设置链的默认规则

⭐️⚠️ 修改默认规则之前,要测试之前的准许的规则。

iptables -t filter -P INPUT DROP
修改之后一点点添加放行规则
iptables -I INPUT -s10.0.0.1  -j ACCEPT 
iptables -I INPUT    -p icmp    -j DROP
iptables -I INPUT -s10.0.0.0/24  -p tcp   --dport22-j ACCEPT
iptables -I INPUT  -p tcp  -m multiport --dport80,443-j ACCEPT

# -i 数据进入的时候
iptables -A INPUT -i lo -j ACCEPT
# -o 数据流出的时候
iptables -A OUTPUT -o lo -j ACCEPT

#匹配连接状态
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #放行tcp连接状态
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@oldboy-bao ~] iptables-save  
# Generated by iptables-save v1.4.21 on Thu Aug 10 12:00:05 2023
*nat
:PREROUTING ACCEPT [2:458]
:INPUT ACCEPT [2:458]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Thu Aug 10 12:00:05 2023# Generated by iptables-save v1.4.21 on Thu Aug 10 12:00:05 2023
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]-A INPUT -p tcp -m multiport --dports80,443-j ACCEPT
-A INPUT -s10.0.0.0/24 -p tcp -m tcp --dport22-j ACCEPT
-A INPUT -p icmp -j DROP
-A INPUT -s10.0.0.1/32 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Thu Aug 10 12:00:05 2023
标签: 安全 运维

本文转载自: https://blog.csdn.net/m0_73293867/article/details/132210531
版权归原作者 七百~~~汪汪汪 所有, 如有侵权,请联系我们删除。

“网络安全 Day29-运维安全项目-iptables防火墙”的评论:

还没有评论