综合架构-iptables防火墙

一、防火墙种类及使用说明

硬件: 整个企业入口

  • 三层路由: H3C 华为 Cisco(思科)
  • 防火墙: 深信服,绿盟,奇安信.....

软件: 开源软件 网站内部

  • iptables 写入到Linux内核中,以后服务docker 工作在 4层(大部分)
  • firewalld C7
  • nftalbes C8
  • ufw (ubuntu firewall)

云防火墙(公有云)

  • 安全组 (封ip,封端口)
  • NAT网关(共享上网,端口映射....)
  • waf应用防火墙(应用防火墙,处理7层的攻击) SQL注入,XSS等攻击. 书写规则(描述攻击过程,关键提示,关键操作.)

二、iptables概述

1、名词解释

容器:瓶子 罐子 存放东西

表(table): 存放链的容器,防火墙最大概念

链(chain): 存放规则的容器

规则(policy):准许或拒绝规则 ,未来书写的防火墙条件就是各种防火墙规则

2、执行过程

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

三、表和链

1、概述

表(table)是对功能的分类,防火墙功能(filter表),共享上网,端口转发(nat表)

链对数据流进行处理,需要使用不同的链(数据流入(INPUT),数据流出(OUTPUT))

iptables 是4表伍链

4表: filter 表 nat表 raw表 mangle表

伍链: INPUT OUTPUT FORWARD PREROUTING POSTROUTING

2、每个表说明

1)filter表

是iptables默认的表,filter表示过滤.

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

2)nat表

实现nat功能

实现共享上网(内网服务器上外网)

端口映射和ip映射

参考资料

四、环境准备和命令

bash 复制代码
yum install -y iptables-services
​
#防火墙相关模块 加载到内核中 
#临时 直接执行modprobe命令
#永久 写入到开机自启动 rc.local
cat >>/etc/rc.local<<EOF 
modprobe ip_tables 
modprobe iptable_filter 
modprobe iptable_nat 
modprobe ip_conntrack 
modprobe ip_conntrack_ftp 
modprobe ip_nat_ftp 
modprobe ipt_state
EOF
​
#因为firewalld与iptables有冲突,所以先关闭firewalld,在启动iptables
systemctl stop firewalld
systemctl disable firewalld
systemctl enable iptables.service --now
​
#查看filter表中的规则 ,默认查看的是filter表
iptables -nL
​
#清空filter表中的规则
iptables -F
iptables命令及其选项 指定表 指定链 ip 具体要求(端口协议) 端口 动作
iptables -t filter -I AINPUT(规则追加到开头) -s -p tcp/udp/icmp --dprot 目的端口 -j DRDP
-A (规则追加到末尾) -d --sport 源端口 -j REJECT
-j ACCEPT

案例一:禁止22端口

css 复制代码
#拒绝用户访问22端口
iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
#查看规则并加上序号
iptables -t filter -nL --line-number
#删除规则
iptables -t filter -D INPUT 1 #根据序号删除

案例二:屏蔽某一个IP

css 复制代码
iptables -I INPUT -s 10.0.0.7 -j DROP

案例三:禁止网段连入

css 复制代码
iptables -I INPUT -s 10.0.0.0/24 -p tcp --dport 8080 -j DROP

案例四:只允许指定网段连入

css 复制代码
#只准许 10.0.0.0/24 访问 言外之意 除了 10.0.0.0/24 都拒绝
iptables -I INPUT ! -s 10.0.0.0/24 -j DROP

案例五:指定多个端口

css 复制代码
iptables -I INPUT -p tcp --dport 8888 -j DROP 
iptables -I INPUT -p tcp --dport 9999 -j DROP
​
#指定多个端口 -m multiport 
iptables -A INPUT -m multiport -p tcp --dport 80,443  -j  ACCEPT
#如果是 连续的端口 可以不加上-m multiport 1:1024

案例六:防火墙规则的保存与恢复

  • iptables-save 进行备份,默认输出到屏幕
  • iptables-restore 进行恢复,加上文件
  • 写入到/etc/sysconfig/iptables
ruby 复制代码
iptables-save >/etc/sysconfig/iptables
iptables-restore /etc/sysconfig/iptables

案例七:如何使在命令行执行的iptables规则永久生效

要使iptables规则永久生效,你需要将规则保存到配置文件中。

javascript 复制代码
iptables-save > /etc/sysconfig/iptables
systemctl restart iptables

五、SNAT实现共享上网

初始:解决公网IP不足的问题。

底层原理:nat表用于实现nat功能. nat网络地址转换.

172.16.1.7 内网服务器实现通过iptables实现共享上网原理详解.

实验环境准备

1、防火墙配置

bash 复制代码
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.61
#防火墙上开启ip_forward功能(内核转发功能)
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

注意事项:公网ip不固定情况 iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE

2、web配置网卡

如果后端服务器有两张网卡,记得关闭公网网卡,只保留内网网卡。

例如:eth0 的ONBOOT=no,在把eth1的网卡网关改成防火墙地址。

记得重启网卡

复制代码
systemctl restart network

案例一:实现把访问10.0.0.3:80的请求转到172.16.1.17:80

css 复制代码
iptables -t nat -A PREROUTING -p tcp -d 10.0.0.3 --dport 80 -j DNAT --to-destination 172.16.1.17:80

案例二:实现172.16.1.0/24段所有主机通过124.32.54.26外网IP 共享上网

css 复制代码
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 124.32.54.26

六、DNAT实现端口转发

端口映射为了解决用户进来的问题. 外部的用户访问内网的某个服务器,端口

但是出于安全考虑不建议这样做,你想访问可以使用CLB端口映射实现,或者你想登录可以用虚拟机或跳板机。

也是所谓的DNAT规则。

相关推荐
摇滚侠6 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush47 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5207 小时前
Linux 11 动态监控指令top
linux
不会C语言的男孩8 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈8 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix
凡人叶枫10 小时前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
2601_9618752410 小时前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant
java_cj10 小时前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
lsyeei10 小时前
linux 系统目录详解
linux·运维·服务器
森G10 小时前
75、服务器源码解析---------云视频服务项目
linux·服务器·网络·c++·qt