iptables网络安全服务详细使用

news2024/11/23 19:54:23

iptables防火墙概念说明

开源的基于数据包过滤的网络安全策略控制工具。

centos6.9  --- 默认防火墙工具软件iptables

centos7    --- 默认防火墙工具软件firewalld(zone)

iptables主要工作在OSI七层的二、三、四层,如果重新编译内核,iptables也可以支持7层控制(squid代理+iptables)。

iptables工作流程(规则匹配流程)

iptables是采用数据包过滤机制工作的,所以它会对请求的数据包的包头数据进行分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机。

iptables工作流程小结

1、防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。

2、如果匹配上了规则,即明确表明是阻止还是通过,此时数据包就不在向下匹配新规则了。

3、如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。

4、防火墙的默认规则是对应链的所有的规则执行完以后才会执行的(最后执行的规则)。

 iptables四表五链概念

表(tables)

链(chains)

Filter

This is the default table (if no -t option is passed) 这是默认表

INPUT

for packets destined to local sockets

对于指定到本地套接字的包,即到达本地防火墙服务器的数据包

FORWARD

for packets being routed through the box

路由穿过的数据包,即经过本地防火墙服务器的数据包

OUTPUT

for locally-generated packets

本地创建的数据包

NAT

This table is consulted when a packet that creates a new connection is encountered 当遇到新创建的数据包连接时将参考这个表

PREROUTING

for altering packets as soon as they come in

一进来就对数据包进行改变

OUTPUT

or altering locally-generated packets before routing

本地创建的数据包在路由之前进行改变

POSTROUTING

for altering packets as they are about to go out

在数据包即将出去时改变数据包信息

Managle

This table is used for specialized packet alteration

这个表专门用于改变数据包

INPUT

for packets coming into the box itself

进入到设备本身的包

FORWARD

for altering packets being routed through the box

对路由后的数据包信息进行修改

PREROUTING

for altering incoming packets before routing

在路由之前更改传入的包

OUTPUT

for altering locally-generated packets before routing

本地创建的数据包在路由之前进行改变

POSTROUTING

for altering packets as they are about to go out

在数据包即将离开时更改数据包信息

raw

此表用处较少,可以忽略不计

 四表

filter    (作用:主机防火墙) 默认的表。*****
nat        (作用:端口或IP映射或共享上网)*****
mangle    (配置路由标记 ttl tos mark)
raw        (忽略)

iptables的几个表以及每个表对应链的作用

filter表(默认的表,作用:主机防火墙)
    INPUT:进入主机的数据包
    OUTPUT:本地创建的数据包
    FORWARD:路由穿过的数据包,即经过本地防火墙服务器的数据包

NAT表(作用:端口或IP映射或共享上网)
    PREROUTING:一进来就对数据包进行改变
    OUTPUT:本地创建的数据包在路由之前进行改变
    POSTROUTING:在数据包即将出去时改变数据包信息
    
mangle表(配置路由标记 ttl tos mark)
    INPUT:进入到设备本身的包
    FORWARD:对路由后的数据包信息进行修改
    PREROUTING:在路由之前更改传入的包
    OUTPUT:本地创建的数据包在路由之前进行改变
    POSTROUTING:在数据包即将离开时更改数据包信息

filter表信息详细介绍

filter表

强调:主要和主机自身相关,真正负责主机防火墙功能的(过滤流入流出,流经主机的数据包)filter表示iptables默认使用的表,这个表定义了三个链(chains )

企业工作场景:主机防火墙

INPUT

负责过滤所有目标地址是本机地址的数据包

通俗来说:就是过滤进入主机的数据包

FORWARD

负责转发流经主机的数据包。起转发的作用,和NAT关系很大,后面会详细介绍 LVS NAT 模式,net ipv4.ip_forward=l

OUTPUT

处理所有源地址是本机地址的数据包

通俗的讲:就是处理从主机发出去的数据包

 NAT表信息详细介绍

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端□上

POSTROUTING

在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址,源端口等。

写好发件人的地址,要让家人回信时能够有地址可回。

例如。默认笔记本和虚拟机都是局域网地址,在出网的时候被路甶器将源地址改为了公网地址。

生产应用:局域网共享上网。

iptanles企业应用场景

1、主机防火墙(filter表的INPUT链)。

2、局域网共享上网(nat表的POSTROUTING链)。半个路由器,NAT功能。

3、端口及IP映射(nat表的PREROUTING链),硬防的NAT功能。

4、IP一对一映射。

iptables工作原理

iptables基本语法

-I(大写i  插入) -A(追加) -R(替换) -D(删除) -L(列表显示)

-I将会把规则放在第一行,-A将会放在最后一行。

例子:

iptables –t filter  -A INPUT  -p  tcp  --dport  22  -j DROP    
iptables –t filter  -A INPUT  -p  tcp  --dport  3306  -j DROP
iptables –t filter  -I  INPUT  -p  tcp  --dport  80  -j DROP   
说明:前两句就算是先执行,第三句也会是第一行  
查看防火墙规则

-L         查看iptables控制策略列表信息

-n              查看iptables控制策略列表里面的ip地址和端口信息,不翻译,以数字表示

--line-number       查看iptables策略信息时,显示每条规则序号信息

-v             查看iptables策略详细信息(进出口)

[root@iptables ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination  
清除防火墙规则

-F             清除所有规则,不会处理默认的规则

-X             删除用户自定义的链

-Z             清除链的计数器(数据包计数器与数据包字节计数器)

其余参数

-A            向指定链添加相应规则,默认从规则号结尾进行添加(添加最后)

-I             向指定链中插入规则,默认插入到第一条规则之上

-p              指定访问数据的协议类型(tcp、udp、icmp)

--dport      指定目标端口信息

--sport       指定源端口信息

-j               执行操作的动作(ACCEPT、DROP(丢弃)、REJECT(拒绝))

-D             删除指定链里面的规则策略

-i               指定数据流量进入接口信息(只能配置在INPUT链)

-o              指定数据流量流出接口信息(只能配置在OUTPUT链)

-s              指定数据流量源地址或网段信息

-d              指定数据流量目标地址或网段信息

!               表示控制策略取反

-m            表示增加扩展匹配功能

参数说明

禁止10.0.0.0网段连入:

iptables -t filter -A INPUT -i eth0 -s 10.0.0.0/24 -j DROP 
可以不指定 -t filter 因为默认就是filter表

-i:流量进入的接口(从eth0进入)

-s:源地址

源地址不是10.0.0.150的单个IP的禁止连接:

iptables -t filter -A INPUT -i eth0 !-s 10.0.0.150 -j DROP

禁用icmp协议:

iptables -t filter -A INPUT -p icmp --icmp-type 8 -i eth0 -s 10.0.0.0/24 -j DROP

禁止访问响应服务端口:

     以22端口为例

iptables -A INPUT -p tcp --dport 22 -j DROP       在默认表中的INPUT链中追加策略:禁止22端口访问

删除某规则:

iptables -D INPUT -p tcp --dport 22 -j ACCEPT   --- 删除指定规则
iptables -D INPUT 2     --- 根据规则行号,删除相应的规则

禁止网段连入:

    例子:禁止192.168.17.0网段访问10.0.0.7主机

iptables -A INPUT  -s 192.168.17.0/24 -d 10.0.0.7 -j DROP 

   例子:禁止某个192.168.17.0网段不能访问服务器主机的22端口

iptables -A INPUT -s 192.168.17.0/24 -d 10.0.0.7 -p tcp --dport 22 -j DROP

匹配指定协议以外的所有协议:

    ! 表示取反

iptables -A INPUT ! –p tcp –s 10.0.0.0/24 -j DROP     centos6写法
-p ! tcp      centos5写法

设置连续多端口控制策略:

iptables -A INPUT -p tcp --dport 22:80 -j DROP

设置不连续多端口控制策略:

iptables -A INPUT -p tcp -m multiport  --dport 22,80 -j DROP 

-m      --- 表示增加扩展匹配功能  multiport   实现不连续多端口扩展匹配

对网络数据传输进行限速:

iptables -I INPUT -s 10.0.0.7 -p icmp --icmp-type 8 -m limit --limit 6/min --limit-burst 5 -j ACCEPT
iptables -I INPUT -s 10.0.0.7 -p icmp --icmp-type 8 -j DROP

--limit n/{second/minute/hour}:
解释:指定时间内的请求速率”n”为速率,后面为时间分别为:秒 分 时

--limit-burst [n]
解释:在同一时间内允许通过的请求”n”为数字,不指定默认为5

企业级防火墙部署案例

两种思想:对于默认策略为允许状态,防火墙规则就相当于黑名单;对于默认策略为禁止状态,防火墙规则就相当于白名单。

首先清空默认规则,然后设置远程连接规则,防止自己被踢出,更改默认规则

iptables -F
iptables -X
iptables -Z
iptables -A INPUT -p tcp --dport 22 -j ACCEPT   --- 防止被踢出门外
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

被指安全白名单策略

iptables -A INPUT -i lo -j ACCEPT     --- 让自己可以ping自己
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT    --- 允许哪些网站服务可以访问
iptables -A INPUT -s 172.16.1.0/24 -j ACCEPT     --- 允许架构内部服务进行访问
iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT       --- 允许一些合作企业的外网服务器进行访问

这几条就是最简单的企业防火墙部署

防火墙配置永久生效方法

第一种方式
[root@iptables ~]# /etc/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[root@iptables ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Wed Jan 17 16:12:23 2018
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [82:9632]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT 
-A INPUT -s 172.16.1.0/24 -j ACCEPT 
COMMIT
# Completed on Wed Jan 17 16:12:23 2018
第二种方式
iptables-save >/etc/sysconfig/iptables

状态机制配置

# 允许关联的状态包通过(web服务不要使用FTP服务)

NEW

new说明这个包是我们看到的第一个包,意思就是,这是conntrack模块看到的某个连接的第一个包,它即将被匹配了。比如,我们看到一个SYN包,是我们所留意的连接的第一个包,就要匹配它。

表示新建立连接的数据包状态

ESTABLISHED

ESTABLISHED已经注意到两个方向上的数据传输,而且会继续匹配这个连接的包。处于ESTABLISHED状态的连接是非常容易理解的。只要发送并接到应答,连接就是ESTABLISHED的了。一个连接要从new变为ESTABLISHED,只需要接到应答包即可,不管这个包是发往防火墙的,还是要由防火墙转发的。ICMP的错误和重定向信息包也被看作是ESTABLISHED,只要他们是我们所发出的信息的应答。

表示新建立连接数据包发送之后,回复响应的数据包状态

RELATED

RELATED是个比较麻烦的状态,当一个连接和某个已处于ESTABLISHED状态的连接有关系时,就会被认为是RELATED的了。换句话说,一个连接要想是RELATED的,首先要有一个ESTABLISHED的连接。这个ESTABLISHED连接再产生一个主连接之外的连接,这个新的连接就是RELATED的了,当然前提是conntarck模块要能理解RELATED。

表示借助已经建立的链路,发送新的连接数据包

INVALID

INVALID说明数据包不能被识别属于哪个连接或没有任何状态。有几个原因可以产生这种情况,比如,内存溢出,收到不知属于哪个连接的ICMP错误信息。一般地,我们DROP这个状态的任何东西,因为防火墙任务这是不安全的东西。

无效无法识别的数据包

 

防火墙服务配置在FTP服务器上时,需要配置以下策略

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables NAT实践过程

配置内网服务器利用iptables服务器外网网卡上网

route add default gw 172.16.1.200    --- 首先在内网服务器设置网关(网关为拥有外网网卡的防火墙服务器内网地址)

在防火墙服务器开启路由转发功能

[root@iptables ~]# vim /etc/sysctl.conf
[root@iptables ~]# sysctl -p
net.ipv4.ip_forward = 1

实现内网访问外网的NAT映射

iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.200
-s 172.16.1.0/24            --- 指定将哪些内网网段进行映射转换
-o eth0                     --- 指定在共享上网哪个网卡接口上做NAT地址转换
-j SNAT                     --- 将源地址进行转换变更
-j DNAT                     --- 将目标地址进行转换变更
--to-source ip地址           --- 将源地址映射为什么IP地址
--to-destination ip地址      --- 将目标地址映射为什么IP地址

iptables实现外网IP的端口映射到内网IP的端口

需求:将网关的IP和9000端口映射到内网服务器的22端口

端口映射 10.0.0.88:9000 -->172.16.1.8:22

实现命令:

iptables -t nat -A PREROUTING -d 10.0.0.88 -p tcp --dport 9000 -i eth0 -j DNAT --to-destination 172.16.1.8:22
-d 10.0.0.8目标地址
-j DNAT 目的地址改写

效果:连接88服务器的9000端口,会自动跳转连接到8服务器的22端口

[e:\~]$ ssh 10.0.0.88 9000

Connecting to 10.0.0.88:9000...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Wed Jan 17 09:48:56 2018 from 172.16.1.88
[root@web01 ~]#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2246214.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《DAMA 数据管理知识体系指南》读书笔记 - 第 2 章 数据处理伦理

文章目录 1. 章节概述2. 核心概念与定义3. 重要方法与实践步骤4. 理论与实际结合5. 重点6. 理解与记忆要点7. 复习思考题标题图——书籍图片 WPS AI生成的XMind链接(不用要源文件,下载不了): 【金山文档 | WPS云文档】 第2章 数据…

《线性代数的本质》

之前收藏的一门课,刚好期末复习,顺便看一看哈哈 课程链接:【线性代数的本质】合集-转载于3Blue1Brown官方双语】 向量究竟是什么 线性代数中最基础、最根源的组成部分就是向量,需要先明白什么是向量 不同专业对向量的看法 物理专…

AI 大模型如何重塑软件开发流程?——技术革新与未来展望

人工智能的蓬勃发展为许多领域注入了强劲动力,而在软件开发这一关键技术领域,AI 大模型的应用正在彻底改变传统流程。从代码自动生成到智能测试,再到协同开发和流程优化,AI 正逐步成为软件开发者的得力助手,也推动企业…

三季度业绩亮点多元,宝尊全域经营走向破茧成蝶

电商行业的变革从未停止,始终反映着网络消费和品牌发展的趋势,以及未来的想象空间,因此令赛道上的相关公司备受关注。 那么,当前赛道正在发生哪些变化?11月21日,行业龙头宝尊电商发布截至2024年9月30日的2…

机器学习day7-线性回归3、逻辑回归、聚类、SVC

7欠拟合与过拟合 1.欠拟合 模型在训练数据上表现不佳,在新的数据上也表现不佳,常发生在模型过于简单无法处理数据中的复杂模式时。 特征: 训练误差较高 测试误差也高 模型过于简化,不能充分学习训练数据中的模式 2.过拟合 …

【云计算】腾讯云架构高级工程师认证TCP--考纲例题,知识点总结

【云计算】腾讯云架构高级工程师认证TCCP–知识点总结,排版整理 文章目录 1、云计算架构概论1.1 五大版块知识点(架构设计,基础服务,高阶技术,安全,上云)1.2 课程详细目录1.3 云基础架构设计1.4…

proto3语法详解

proto3语法详解 字段规则消息类型的定义与使⽤定义使用 enum类型定义与使用定义规则定义时注意事项 Any类型Any类型介绍Any类型使用 oneof类型oneof类型的介绍oneof类型的使用 map类型map类型的介绍map类型的使用 默认值更新消息更新规则保留字段reserved 未知字段未知字段获取…

【STM32】在 STM32 USB 设备库添加新的设备类

说实话,我非常想吐槽 STM32 的 USB device library,总感觉很混乱。 USB Device library architecture 根据架构图: Adding a custom class 如果你想添加新的设备类,必须修改的文件有 usbd_desc.cusbd_conf.cusb_device.c 需要…

怎么编译OpenWrt镜像?-基于Widora开发板

1.准备相应的环境,我使用的环境是VMware16ubuntu20.04,如图1所示安装编译所需的依赖包; sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-…

神经网络问题之一:梯度消失(Vanishing Gradient)

梯度消失(Vanishing Gradient)问题是深度神经网络训练中的一个关键问题,它主要发生在反向传播过程中,导致靠近输入层的权重更新变得非常缓慢甚至几乎停滞,严重影响网络的训练效果和性能。 图1 在深度神经网络中容易出现…

JavaWeb之综合案例

前言 这一节讲一个案例 1. 环境搭建 然后就是把这些数据全部用到sql语句中执行 2.查询所有-后台&前台 我们先写后台代码 2.1 后台 2.2 Dao BrandMapper: 注意因为数据库里面的名称是下划线分割的,我们类里面是驼峰的,所以要映射 …

PLC与PLC跨网段通讯的几种方法:厂区组网实践

PLC通常通过以太网或其他工业网络协议(如PROFINET、Modbus TCP等)进行通信。当PLC位于不同的网段时,它们不能直接通信,需要特殊的配置或设备来实现通信,不同网段的PLC通讯变得尤为重要。 随着工业网络的发展和工业4.0概…

原生openGauss与Oracle数据库函数兼容性对比验证测试

———————————————— 一、测试目的 近期在进行调研去O,为此研究了下原生openGauss和Oracle数据库兼容性,特整理测试了Oracle常用函数和openGauss数据库的对比测试。 二、创建DUAL虚拟表 openGauss 数据库不提供DUAL虚拟表,需要通过如下方…

创建HTTPS网站

每天,我们都会听到网络上发生身份盗窃和数据侵权的案例,这导致用户对自己访问的网站更加怀疑。他们开始更加了解自己将个人信息放在哪里以及信任哪些类型的网站。了解如何使网站使用HTTPS变得比以往任何时候都更加重要。 解读缩略词:HTTP与HT…

Bokeh实现大规模数据可视化的最佳实践

目录 引言 一、Bokeh简介 二、安装Bokeh 三、数据准备 四、性能优化 五、创建图表 六、添加交互功能 七、应用案例 八、高级技巧 九、总结 引言 在数据科学领域,数据可视化是一个至关重要的环节。通过可视化,我们可以直观地理解数据的特征和趋势,为数据分析和决策…

数据结构-8.Java. 七大排序算法(上篇)

本篇博客给大家带来的是排序的知识点, 由于时间有限, 分两天来写, 上篇主要实现 前四种排序算法: 直接插入, 希尔, 选择, 堆排。 文章专栏: Java-数据结构 若有问题 评论区见 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 …

HARCT 2025 新增分论坛7:机器人和自动化的新趋势

会议名称:机电液一体化与先进机器人控制技术国际会议 会议简称:HARCT 2025 大会时间:2025年1月3日-6日 大会地点:中国桂林 主办单位:桂林航天工业学院、广西大学、桂林电子科技大学、桂林理工大学 协办单位&#…

海洋通信船舶组网工业4G路由器应用

船舶是浩瀚海洋中探索与贸易的载体,更是船员们生活与工作的家园。为了在广阔的水域中搭建起稳定、高效的网络桥梁,工业4G路由器以卓越的通信组网能力,为船舶组网提供网络支持。 工业4G路由器以其强大的信号发射能力,确保船舶内部…

《Vue零基础入门教程》第三课:起步案例

往期内容 《Vue零基础入门教程》第一课:Vue简介 《Vue零基础入门教程》第二课:搭建开发环境 做为第一个案例, 主要给大家介绍vue的最基本使用. vue使用的3步曲(重点) 引入vue.js编写页面(视图)创建App实例并挂载 1) 引入vue.js 在html的头部, 通过…

【unity小技巧】一些unity3D灯光的使用与渲染及性能优化方案

文章目录 天空盒反射配置太阳耀斑眩光烘培光照烘培光照时弹出错误,记得勾选模型下面的选择阴影项目配置光源模型模型shader的问题 全局光照混合光照模式混合照明模式减性照明模式Shadowmask照明模式间接烘焙照明模式 环境光遮罩灯光探针反射探针技术关闭反射探针可以…