Linux系统安全①iptables防火墙

目录

一.iptables防火墙概述

1.netfilter与iptables

(1)netfilter

(2)iptables

2.iptables防火墙默认规则表、链结构

二.iptables四表五链

1.四表

2.五链

3.总结

三.iptables的配置

1.安装

2.配置方法

(1)使用图形化来管理system-config-firewall(centos 6)

(2)使用iptables命令

3.常用控制类型

4.常用管理选项

四.管理规则

1.查看filter表中所有链:iptables -L

2.使用数字形式查看输出结果:iptables -nL

3.清空表中所有链:iptables -t filter -F

4.添加第一条规则可以用i或A来添加

(1)不允许其他主机ping本地主机,使用REJECT

(2)4.2 不允许其他主机ping本机,不给响应信息 DROP, ping所使用的协议为icmp

5.插入规则

6.删除规则

(1)按照行号删除

(2)按照内容删除

7.设置默认规则

8.修改规则

五.规则匹配

1.通用匹配

2.隐含匹配

(1)端口匹配

(2)ICMP类型匹配

3.显示匹配

(1)多端口匹配

(2)IP范围匹配

(3)MAC地址匹配

(4)状态匹配


一.iptables防火墙概述

Linux 的防火墙体系主要工作在网络层,针对 TCP/IP 数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。Linux 系统的防火墙体系基于内核编码实现, 具有非常稳定的性能和高效率,也因此获得广泛的应用。

1.netfilter与iptables

(1)netfilter
  • 位于Linux内核中的包过滤功能体系
  • 称为Linux防火墙的“内核态”(内核空间)
  • 是内核的一部分,由一些数据包过滤表组成,这些表包含内核用来控制数据包过滤处理的规则集。
(2)iptables
  • 位于/sbin/iptables
  • 用来管理防火墙规则的工具称为Linux防火墙的“用户态”
  • 它使插入、修改和删除数据包过滤表中的规则变得容易

注意:netfilter/iptables后期简称为iptablesiptables是基于内核的防火墙,其中内置了raw、mangle、 nat和filter四个规则表。

表中所有规则配置后,立即生效,不需要重启服务。

2.iptables防火墙默认规则表、链结构

数据包到达防火墙时,规则表之间的优先顺序:  raw > mangle > nat > filter

二.iptables四表五链

1.四表

raw确定是否对该数据包进行状态跟踪
mangle为数据包设置标记
nat负责网络地址转换,用来修改数据包中的源、目标IP地址或端口
filter负责过滤数据包,确定是否放行该数据包(过滤

2.五链

INPUT处理入站数据包,匹配目标IP为本机的数据包
OUTPUT处理出站数据包,一般不在此锌上,做配置
FORWARD处理转发数据包,匹配流经本机的数据包
PREROUTING链在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的工P和端口映射到路由器的外网IP和端口上
POSTROUTING链在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网工P地址上网

3.总结

规则表的作用:容纳各种规则链

规则链的作用:容纳各种防火墙策略

表里有链,链里有规则

三.iptables的配置

1.安装

Centos 7默认使用firewalld防火墙,没有安装iptables, 若想使用iptables防火墙。必须先关闭firewalld防火墙,再安装iptables。

systemctl stop firewalld. service				关闭firewalld防火墙
systemctl disable firewalld. service			取消firewalld防火墙开机自启动
yum -y install iptables iptables-services		安装iptables和iptables-services
systemctl start iptables.service				启动iptables-services

2.配置方法

(1)使用图形化来管理system-config-firewall(centos 6)
(2)使用iptables命令
命令格式:
iptables  [-t 表名]  管理选项  [链名] [匹配条件] [-j 控制类型]

注意:

不指定表名时,默认指filter表

不指定链名时,默认指表内的所有链

除非设置链的默认策略,否则必须指定匹配条件

选项、链名、控制类型使用大写字母,其余均为小写

3.常用控制类型

控制类型作用
ACCEPT允许数据包通过(默认)
DROP直接丢弃数据包,不给出任何回应信息
REJECT拒绝数据包通过,会给数据发送端一个响应信息
SNAT修改数据包的源地址
DNAT修改数据包的目的地址
MASQUERADE伪装成一个非固定公网IP地址
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。LOG只是一种辅助动作,并没有真正处理数据包

4.常用管理选项

管理选项作用
-A在指定链的末尾追加(--append)一条新的规则
-I在指定链的开头插入(--insert)一条新的规则,未指定序号时默认作为第一条规则
-R修改、替换(--replace) 指定链中的某一条规则,可指定规则序号或具体内容
-P设置指定链的默认策略(--policy)
-D删除(--delete) 指定链中的某一条规则,可指定规则序号或具体内容
-F清空(--flush)指定链中的所有规则,若未指定链名,则清空表中的所有链
-L列出(--list) 指定链中所有的规则,若未指定链名,则列出表中的所有链
-n使用数字形式(--numeric) 显示输出结果,如显示IP地址而不是主机名
-v显示详细信息,包括每条规则的匹配包数量和匹配字节数
--line-numbers查看规则时,显示规则的序号

四.管理规则

1.查看filter表中所有链:iptables -L

iptables -L 
#不指定表名默认查看filter表

2.使用数字形式查看输出结果:iptables -nL

3.清空表中所有链:iptables -t filter -F

4.添加第一条规则可以用i或A来添加

(1)不允许其他主机ping本地主机,使用REJECT
iptables -t filter -A INPUT -p icmp -j REJECT
#不允许其他主机ping本机,给响应信息REJECT,ping所使用的协议为icmp
 
iptables -nL 
#使用数字形式(fliter)表所有链

另一台主机验证

(2)4.2 不允许其他主机ping本机,不给响应信息 DROP, ping所使用的协议为icmp
iptables -F     
#清空所有链
 
iptables -nL    
#验证查看
 
iptables -t filter -A INPUT -p icmp -j DROP
#不允许其他主机ping本机,不给响应信息DROP,ping所使用的协议为icmp

5.插入规则

在指定链的末尾追加一条新的规则 -A;在指定链的开头插入一条新的规则,未指定序号时默认作为第一条规则 -I

iptables -t filter -A INPUT -p icmp -j DROP
#不允许其他主机ping本机,不给响应信息DROP,ping所使用的协议为icmp
 
iptables -nL --line-numbers
#查看规则序号
 
iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT
#在filter表中添加一条放通tcp22号端口的规则 并在第二个规则前添加此新规则

6.删除规则

(1)按照行号删除
iptables -D INPUT 2
#删除第二行规则

(2)按照内容删除
iptables -D INPUT -p icmp -j DROP
#将含有icmp协议使用DROP类型的规则删除

7.设置默认规则

iptables -P INPUT DROP
#默认规则设置为DROP

设置了-P DROP后,使用-F仅仅是清空链中的规则 并不会影响设置的默认规则

如果使用-F,那么所有的规则清除后,则使用默认策略DROP,将会使远程连接断连。

使用重启服务器解决 systemctl restart iptables 或者重启服务器。

8.修改规则

五.规则匹配

1.通用匹配

可直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件。

  • 协议匹配:-p 协议名
  • 地址匹配:-s 源地址、-d 目的地址   可以是IP、网段、域名、空(任何地址)
  • 接口匹配:-i 入站网卡、-o出站网卡
iptables -A INPUT -s 192.168.79.220 -j DROP
#不允许192.168.79.220 ping通本机

2.隐含匹配

要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类 型等条件。

端口匹配∶ --sport 源端口、--dport 目的端口
(1)端口匹配

--sport 源端口   --dport 目的端口

  • --sport 1000                               匹配源端口是1000的数据包
  • --sport 1000:3000                      匹配源端口是1000-3000的数据包
  • --sport :3000                              匹配源端口是3000及以下的数据包
  • --sport 1000:                              匹配源端口是1000及以上的数据包
  • --sport和--dport 必须配合 -p <协议类型> 使用
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
#指定tcp协议目标端口20:21同意访问
 
iptables-I FORWARD -d 192.168.80.0/24 -p tcp --dport 24500:24600 -j DROP
#不转发 目标网段是 192.168.80段 tcp协议的24500到24600
 
iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN,RST,ACK SYN -jACCEPT
#丢弃SYN请求包,放行其他包
(2)ICMP类型匹配

格式:

--icmp-type ICMP类型,可以是字符串、数字代码

  • "Echo-Request”(代码为8)表示请求
  • "Echo- -Reply”(代码为0)表示回显
  • "Dest ination-Unreachable" (代码为3)表示目标不可达
  • 关于其它可用的ICMP 协议类型,可以执行“iptables -P icmp -h”命令,查看帮助信息
iptables -A INPUT -p icmp --icmp-type 8 -j DROP	
#禁止其它主机ping本机
 
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT 
#允许本机ping其它主机
 
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT	 
#当本机ping不通其它主机时 提示目标不可达

3.显示匹配

要求以“-m扩展模块”的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件

(1)多端口匹配
iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -i ACCEPT 
#允许访问tcp的80,22,21,20,53端口
 
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
#允许访问udp的53端口
(2)IP范围匹配
iptables -A FORWARD -p udp -m iprange --src-range 192.168.52.100-192.168.52.200 -j DROP
# 禁止转发源地址位于192.168.52.100——192.168.52.200的udp数据包
(3)MAC地址匹配

格式:

-m mac --mac -source MAC地址

iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
禁止来自某MAC地址的数据包通过本机转发
(4)状态匹配

格式:

-m state --state 连接状态

常见连接状态:

  • NEW:主机连接目标主机,在目标主机上看到的第一个想要连接的包
  • ESTABLISHED:主机已与目标主机进行通信,判断标准只要目标主机回应了第一个包,就进入该状态
  • RELATED:主机已与目标主机进行通信,目标主机发起新的链接方式,一般与ESTABLISHED  配合使用
  • INVALID ∶ 无效的封包,例如数据破损的封包状态
iptables -I INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT
iptables -A INPUT -P udp -m multiport --dport 53 -j ACCEPT
iptables -A INPUT -P tcp -m state --state ESTABLISHED, RELATED -j ACCEPT
#对进来的包的状态进行检测。已经建立tcp连接的包以及该连接相关的包允许通过简j单来说就是只允许所有自己发出去的包进来

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MoonBit月兔新增多行字符串支持

MoonBit 更新 1. 新增多行字符串支持 每行需要以#|开头。多行字符串每行之间允许断开、插入注释&#xff0c;字符串内不支持转义和字符串插值。 2. 新增函数式的loop循环 其中continue 只允许出现在尾递归调用的位置&#xff0c;loop内允许使用break提前返回一个值。 3. …

1-3年的职业规划—张明的软件工程师之路

张明是一名即将毕业的计算机专业的大学生&#xff0c;他希望在未来的1-3年内成为一名软件工程师。为了实现这个目标&#xff0c;他决定使用进度猫来帮助自己规划和管理职业发展。 首先&#xff0c;张明在进度猫中创建了一个名为“软件工程师之路”的项目&#xff0c;并设定了…

springboot果蔬配送商城

技术架构&#xff1a; java mysql bootstrap jquery mybatis springboot 有需要该项目的小伙伴可以私信我你的Q。 功能介绍&#xff1a; 系统基于Java技术进行开发&#xff0c;后台数据库使用MySQL&#xff0c;在Windows环境下使用idea开发工具进行开发&#xff0c;主…

自学Java的第十九天

一&#xff0c;每日收获 1.排序 2.冒泡排序法 3.查找 4.多维数组-二维数组 二&#xff0c;新名词与小技巧 三&#xff0c;今天学习中所遇到的困难 一&#xff0c;每日收获 1.排序 ① 排序的介绍 排序是将多个数据&#xff0c;依指定的顺序进行排列的过程。 ② 排序的…

【ArcGIS微课1000例】0102:面状要素空洞填充

文章目录 一、实验描述二、实验数据三、实验步骤1. 手动补全空洞2. 批量补全空洞四、注意事项一、实验描述 在对地理数据进行编辑时,时常会遇到面数据中存在个别或大量的空洞,考虑实际情况中空洞的数量多少、分布情况,填充空洞区域可以采用逐个填充的方式,也可以采用快速大…

2017 年全国职业院校技能大赛高职组“信息安全管理与评估”赛项任务书(笔记解析)

1. 网络拓扑图 2. IP 地址规划表 3. 设备初始化信息 阶段一 任务1:网络平台搭建 1 根据网络拓扑图所示,按照 IP 地址参数表,对 WAF 的名称、各接口 IP 地址进 行配置。 主机名称 模式选择:透明模式 IP 地址:匹配参数表 WAF IP 地址 子网掩码 网口列表: eth0 和 eth1 2…

电商推荐系统

此篇博客主要记录一下商品推荐系统的主要实现过程。 一、获取用户对商品的偏好值 代码实现 package zb.grms;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.Doub…

Python 连接 mysql 详解(mysql-connector-python)

文章目录 1 概述1.1 第三方库&#xff1a;mysql-connector-python1.2 可视化工具&#xff1a;navicat1.3 创建测试数据库 2 连接 mysql 数据库2.1 创建一个连接2.2 捕获连接异常2.3 从配置文件中获取连接信息 3 执行 sql 语句3.1 插入、更新、删除3.2 查询 1 概述 1.1 第三方库…

Photoshop 2023下载安装教程,免费直装版,2步搞定安装,附安装包

准备工作&#xff1a; 1、提前准备好photoshop 2023安装包 没有的可以参考下面方式获取 2、系统要求Windows 10 及以上 安装步骤 1.找到下载好的安装包&#xff0c;直接双击解压 2.双击运行【Set-up.exe】文件 3.点击文件夹图标&#xff0c;更改安装位置 4.点击【继续】&a…

从一到无穷大 #22 基于对象存储执行OLAP分析的学术or工程经验,我们可以从中学习到什么?

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言以AWS S3为例的对象存储基本特征成本时延吞吐量最优请求大小Model for Cloud Sto…

Visual Studio使用Git忽略不想上传到远程仓库的文件

前言 作为一个.NET开发者而言&#xff0c;有着宇宙最强IDE&#xff1a;Visual Studio加持&#xff0c;让我们的开发效率得到了更好的提升。我们不需要担心环境变量的配置和其他代码管理工具&#xff0c;因为Visual Studio有着众多的拓展工具。废话不多说&#xff0c;直接进入正…

机器学习 | 基于网格搜索的SVM超参数调节

机器学习模型被定义为一个数学模型&#xff0c;其中包含许多需要从数据中学习的参数。然而&#xff0c;有一些参数&#xff0c;称为超参数&#xff0c;这些参数不能直接学习。它们通常是由人类在实际训练开始前根据直觉或经验和试验选择的。这些参数通过提高模型的性能&#xf…

Deepin系统安装x11vnc远程桌面工具实现无公网ip访问本地桌面

文章目录 1. 安装x11vnc2. 本地远程连接测试3. Deepin安装Cpolar4. 配置公网远程地址5. 公网远程连接Deepin桌面6. 固定连接公网地址7. 固定公网地址连接测试 x11vnc是一种在Linux系统中实现远程桌面控制的工具&#xff0c;它的原理是通过X Window系统的协议来实现远程桌面的展…

2018年苏州大学837复试机试C/C++

2018年苏州大学复试机试 要求 要求用C/C编程&#xff1b;对程序中必要的地方进行注释。上机规则 请在电脑桌面上新建一个文件夹文件夹名为考试姓名&#xff08;中文&#xff09;&#xff1b;考试完毕后&#xff0c;将所编写的文件放在上述文件中。 第一题&#xff08;20分&…

CTFshow web(php特性 105-108)

web105 <?php /* # -*- coding: utf-8 -*- # Author: Firebasky # Date: 2020-09-16 11:25:09 # Last Modified by: h1xa # Last Modified time: 2020-09-28 22:34:07 */ highlight_file(__FILE__); include(flag.php); error_reporting(0); $error你还想要flag嘛&…

在windows和Linux中的安装 boost 以及 安装 muduo 和 mysql

一、CMake安装 Ubuntu Linux 下安装和卸载cmake 3.28.2版本-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/135960115?spm1001.2014.3001.5501二、安装boost boost官网&#xff1a;boost官网 我下载的boost版本&#xff1a; windows:boost_1_84_0.zipli…

ROS机器视觉应用中的关键点

1.ROS图像接口 ​​​​​​ 2.摄像头内参标定 3.ROS&#xff0b;OpenCV物体识别 ​​​ 4.小结

C++学习Day04之对象字节数初探

目录 一、程序及输出1.1 空类字节数1.2 非空类字节数1.3 设置对齐方式的数值 二、分析与总结 一、程序及输出 1.1 空类字节数 #include<iostream> using namespace std;class Person { };void test01() {//空类的sizeof结果是1 原因 每个对象都应该在内存上有独一无二…

项目02《游戏-07-开发》Unity3D

基于 项目02《游戏-06-开发》Unity3D &#xff0c; 接下来做UI框架的逻辑系统&#xff0c;管理器和UI背包&#xff0c; 首先闯将UI框架的两个重要脚本 BasePanel.cs 和 UIManager.cs &#xff0c; 双击BasePanel.cs脚本修改代码&#xff1a; using UnityEngine; pu…

从头开始构建和训练 Transformer(上)

1、导 读 2017 年&#xff0c;Google 研究团队发表了一篇名为《Attention Is All You Need》的论文&#xff0c;提出了 Transformer 架构&#xff0c;是机器学习&#xff0c;特别是深度学习和自然语言处理领域的范式转变。 Transformer 具有并行处理功能&#xff0c;可以实现…
最新文章