iptables安全技术和防火墙

news2024/10/11 4:25:24

防火墙:隔离功能

位置:部署在网络边缘或主机边缘,在工作中,防火墙的主要作用是决定哪些数据可以被外网访问以及哪些数据可以进入内网访问,主要在网络层工作

其他类型的安全技术:1、入侵检测系统  2、入侵防御系统  (了解即可)

防火墙有软件防火墙:360,iptables,firewalld

还有硬件防火墙:路由器,交换机,三层交换机

保护范围:1、主机防火墙,服务范围就是当前的主机

2、网络防火墙:服务范围为防火墙一侧的局域网,必经之路

实现方式:1、硬件防火墙,既有专业的硬件来实现防火墙功能,又有软件来进行配合

2、软件防火墙:代码实现判断

网络协议划分:

网络层:包过滤防火墙

应用层(代理服务器):设置数据的进出

linux防火墙:firewalld  centos7自带的防火墙

iptables:包过滤防火墙   selinux自带的安全工具

集成在一个内核中:netfilter组件

总结:iptables工作在网络层,针对ip数据包进行过滤和限制,属于用户态

属于典型的包过滤防火墙,体现在对包内的IP地址、端口等信息的处理

面试题:
通信五元素:1,源端口  2,目的端口  3,源IP   4,目的 IP   5, 协议:tcp/udp


SCTP:在网络连接两端之间同时传输多个数据流的协议。SCTP提供的服务与UDP和TCP类似
通信四元素:源/目的 端口 源/目的 IP

iptables的构成和工作机制:根据规则进行匹配,能进就进,不能进则丢弃,对出不做限制

iptables的组成部分:四表五链组成(面试会问)

四表:

raw:连接跟踪机制,可以加快封包穿过防火墙的速度,数据包跟踪

mangle:数据标记

nat:地址转换表

filter:过滤规则表,根据规则来定义或者过滤符合条件的数据包,默认表

#security也算一个表

优先级:security(不再讨论范围之内)→raw→mangle→nat→filter

五链:

INPUT:处理数据包进入本机的规则

OUTPUT:处理数据包发出的规则,一般不作处理,因为基本都在INPUT处理了

prerouting:处理数据包进入本机之前的规则

postrouting:处理数据包离开本机之后的规则  (prerouting  postrouting要结合地址转换)

FORWARD:处理数据包转发到其他主机的规则

总结:iptables的规则:表里有链,链里面有规则,规则就是我们自定义的对于数据包的控制命令


四表五链
规则表的作用:容纳各种规则链
规则链的作用:容纳各种防火墙规则
总结:表里有链,链里有规则

管理选项:表示iptables规则的操作方式,如插入、增加、删除、查看等; 增删改查
匹配条件:用来指定要处理的数据包的特征,不符合指定条件的数据包将不会处理; IP地址,端口。协议
控制类型指的是数据包的处理方式,如允许、拒绝、丢弃等。 ACCEP REJECT DROP
 

注意事项:
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链,一般不这么操作
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写

匹配数据:

1、根据表的优先级匹配,在表中从上到下进行检查,找到匹配规则后立即停止,不再表中向下继续查找,如果匹配不到规则,按照链的规则进行处理

2、报文流向(数据走向):

流入本机:prerouting(看需不需要把外网地址转换成内部可以访问的地址,必须要直接到input链)→input链(让不让数据包进入本机,让它进就直接访问用户进程httpd服务)→用户进程(httpd服务)......请求访问......响应(响应就是输入要返回)→数据要返回用户

流出本机:httpd(服务先发出响应)→响应报文(往用户发)→output(直接出,一般不会对出进行限制)→postrouting(看要不要做地址转换,不需要则直接带用户)→用户

转发:数据包进来,肯定不是同一网段,路由转发→forward→数据出去,不允许转发,数据包丢弃

iptables的命令格式:iptables  [-t  表名]    管理选项  [链名]  [匹配条件]  [-j  控制类型]

[-t  表名]  也可以不写,不写就是指定filter表

管理选项:(除了v,n都是大写)                                                                                      

 -A            在指定链末尾追加一条           例:iptables -A INPUT            
 -I             在指定链中插入一条新的,未指定序号默认作为第一条    例:iptables -I INPUT  
 -P            指定默认策略    例:iptables -P  OUTPUT ACCEPT      
 -D            删除(慎用)    例:iptables -t nat -D INPUT   2                                                                    
 -R             修改、替换某一条规则    例:iptables -t nat -R INPUT    

 -F             清除链中所有规则    例:iptables -F   
 -L             查看链中的规则    例:iptables -t nat -L                           
 -n             所有字段以数字形式显示  
 -v             查看时显示更详细信息,常跟-L一起使用    (v,n,L经常结合在一起使用例:vnL)         
 --line-numbers  规则带编号   例 iptables -t nat -L -n --line-number  iptables -t nat -L --line-number

(不常用的)                  
 -X             清空自定义链的规则,不影响其他链      iptables -X            
 -Z             清空链的计数器(匹配到的数据包的大小和总和)iptables -Z      
 -S             看链的所有规则或者某个链的规则/某个具体规则后面跟编号

链名:

PREROUTING链:处理数据包进入本机之前的规则。

INPUT链:处理数据包进入本机的规则。

FORWARD链:处理数据包转发到其他主机的规则。

OUTPUT链:处理本机发出的数据包的规则,一般不做处理。

POSTROUTING链:处理数据包离开本机之后的规则。

匹配的条件(都是小写)                   
-p                 指定要匹配的数据包的协议类型 
-s                 指定要匹配的数据包的源IP地址  
-d                 指定要匹配的数据包的目的IP地址
-i                  指定数据包进入本机的网络接口 
-o                 指定数据包离开本机做使用的网络接口 
--sport          指定源端口号
--dport          指定目的端口号

控制类型:(全部大写)
ACCEPT:允许数据包通过
DROP:    拒绝,直接丢弃数据包,不给出任何回应信息
REJECT:拒绝数据包通过,会给一个响应信息
SNAT:     修改数据包的源ip地址
DNAT:     修改数据包的目的地址 

iptables的命令格式:iptables  [-t  表名]    管理选项  [链名]  [匹配条件]  [-j  控制类型]

[-t  表名]  也可以不写,不写就是指定filter表

iptables的前置操作:

rpm  -q  iptables-services                         检查是否安装iptables

yum   -y  install   iptables-services           安装iptables

systemctl stop firewalld.service                关闭防火墙

 

例:查看规则

 不用-t指定表名,默认是浏览filter表

-vnL:以数字化详细的显示链中的规则

表中有三个链INPUT(数据包进入),FORWARD(数据包转发),OUTPUT(发出数据包)

且都是允许ACCEPT

例:指定查看nat表规则

 也都是允许ACCEPT

例:清空表中所有规则,慎用且用的较少

iptables  -F

例:禁止所有主机来ping10地址

 

 -f filter:指定filter表(不指定表名默认指向filter表)

-A INPUT:在INPUT链插入

-p  icmp:指定协议,icmp网际控制报文协议

-j  REJECT:指定控制类型为拒绝且会给回应

查看一下

新增规则,让所有主机允许来ping10地址:用-I来进行插入,通过指定序号来往INPUT链插,让所有主机允许来ping10地址

 查看一下,第一条的控制类型变为ACCEPT

插入的特点:即配即生效,从上到下匹配,匹配到了就不匹配了,此处第一条控制类型为ACCEPT匹配到了第一条就不往下继续匹配了

 

补充:在查看 -vnL后加  --line-number  可以为规则前面加上编号,查看更直观

 

 

例:指定ip地址,让20地址不能ping通10地址

是有顺序的,ip地址要写在协议的前面

 -A INPUT:在INPUT链添加

-s 192.168.88.20:因为是在20地址ping10地址,20地址是作为源ip地址,所以用-s

 

当要拒绝多个ip地址进行访问时

 指定多个ip地址要用逗号隔开

例:指定端口拒绝访问

 指定端口也有顺序要求,端口要写在协议的后面

 因为要在别的段楼访问22端口,所以22端口是作为目的端口,所以要用--dport

指定只有20地址才能访问80网段

 

例:把不想要的规则删除,根据编号来删除

 

例:修改规则(一般不用,要么直接添加,要么直接删除)

 先设置所以主机都可以和10地址ping通(这条命令本身没有任何意义,因为本身就是允许的)

 -R INPUT:修改规则                    1:通过序号进行修改

重点:修改链的默认规则   在生产中,iptables所有的链的默认规则都是DROP

在生产中都是按照白名单的形式来进行设置,默认的策略都是拒绝

例:拒绝所有主机来访问10地址

-P:修改链的规则            不用加控制状态-j,直接加控制类型DROP

 这时发现虚拟机卡死了,因为所有都被拒绝访问了,只能进虚拟机进行操作

 

 因为本身就是拒绝所以REJECT没有意义  iptables -D INPUT 1 把它删除

iptables -A INPUT -p tcp --dport  22  -j  ACCEPT  把22端口打开

端口要写在协议后面此处sport dport都可以  

通用匹配:网络协议、端口、ip地址

整个192.168.88网段禁止访问80端口的服务

 

 

隐藏扩展模块:即拒绝80端口又拒绝20端口,根据端口来进行匹配

 22:80  小的要写在前面,大的在后面,一定要这样写,否则会报错

隐藏模块:-p指定协议时(tcp或udp),指明了是什么协议,就不需要再使用-m来指明扩展模块。

指定多端口可以用冒号的形式,也可以用-m隐藏模块来实现。

-m的作用:可以用明确的形式指出类型:多端口、mac地址、ip地址数据包的状态

用-m的形式指定多端口(用的最多的)

例:

 -m multiport:指定多端口,多个端口之间用逗号隔开

ip范围:-m  iprange  --src-range  源ip地址范围

             -m  iprange  --dst-range  目的ip地址范围

例:

 iptables -A INPUT -p icmp -m iprange --src-range 192.168.88.20-192.168.88.30 -j REJECT

拒绝从20地址到30地址来访问10地址(本机地址)

总结:iptables要会1、四表五列,2、会增会删即可,3、指定多端口,范围

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

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

相关文章

vue2生命周期图

生命周期全过程如下👇详解 一:生命周期之创建阶段 1.创建一个Vue实例【new Vue()】 2.初始化Vue实例,第一次初始化,初始化Vue当中的事件和生命周期方法【Init Events Lifecycle】 ☆☆☆调用生命周期方法当中的beforCreate,调用这个方法的时候有一个特点,就是在调…

自动化运维工具--saltstack部署及使用

目录 一、saltstack简介 1、介绍 2、Salt的核心功能 3、saltstack通信机制 二、saltstack部署 1、部署环境 2、配置yum源 3、安装master与minion 4、连接认证master和minion 三、salt运行 1、执行格式 2、实操演示 一、saltstack简介 1、介绍 saltstack是一个配置管…

[护网杯 2018]easy_tornado1

进入环境后有三个路径链接 访问/flag提示会说flag在/fllllllllllag里 值得注意的是访问后网页url发生的变化,这里居然有两个参数 替换掉filename的值后页面url再次发生变化,网页只有一个msg传参的数据 访问welcome.txt,只是回显了一个render…

一个灵活、现代的Android应用架构

一个灵活、现代的Android应用架构 学习Android架构的原则:学习原则,不要盲目遵循规则。 本文旨在通过示例演示实际应用:通过示范Android架构来进行教学。最重要的是,这意味着展示出如何做出各种架构决策。在某些情况下&#xff0…

qt登录框

#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//窗口的设置this->setFixedSize(500, 400); //设置固定大小this->setWindowOpacity(0.95); //设置透明度this->setWindowTitle("鹏哥快聊"); // this->setWin…

【node-1】node validation exception. bootstrap checks failed

记录ElasticSearch 内存分配不足报错 背景做出的改变说在最后:最后访问es: 背景 从报错信息中看到,文件,虚拟内存的最大值太低,我们需要调整设置虚拟内存大小,以满足ElasticSearch 运行需求。 做出的改变 …

WPF icon的设置

想给控件设置个圆形图片&#xff0c;代码如下&#xff1a; ​<Setter Property"Icon"><Setter.Value><Image Source"/WpfApp1;component/Resource/1.ico" Width"16" Height"16"/></Setter.Value></Setter&…

面向对象编程:从创建类到封装与构造方法的探索

1. 代码如何创建类&#xff1f; 在面向对象编程中&#xff0c;类是对一类事物的抽象&#xff0c;包含了静态的属性&#xff08;成员变量&#xff09;和动态的行为&#xff08;成员方法&#xff09;。在Java中&#xff0c;创建类的格式如下&#xff1a; 修饰词 class 类名 {//…

react实现页面动态表单设计器(自定义推拽表单)

react实现页面动态表单设计器&#xff08;自定义推拽表单&#xff09; 实现效果安装插件使用组件介绍基本设置&#xff0c;可设置控件标签&#xff0c;是否必填&#xff0c;校验规则校验规则有如下几种多选&#xff0c;下拉&#xff0c;单选可动态设置每个选择的label以及值 实…

ROS Neotic(Ubuntu 20.04)如何正确安装OpenCV

自定义OpenCV版本 一、ROS的安装二、OpenCV编译安装三、cv_bridge编译安装四、温馨提示 一、ROS的安装 鱼香ROS提供了一个全面且方便的脚本&#xff0c;可以直接运行来安装系统对应版本的ROS&#xff0c;同时也可以使用该命令来安装许多有趣的东西 wget http://fishros.com/i…

Android 实现阅读用户协议的文字控件效果

开发中&#xff0c;经常要用到一些阅读隐私协议的场景&#xff0c;原生的textview控件很难做到在一个控件里有两个点击事件&#xff0c;那现在就来安利一个强大的组件——SpannableStringBuilder。 先看看效果&#xff1a; 直接上代码&#xff0c;布局文件&#xff1a; <Li…

线性DP--BOX

还没学&#xff0c;等学完再仔细写。 #include<bits/stdc.h> using namespace std; typedef long long ll; ll a[1000010]; ll vis[1000010]; ll f[1000010][3]; int main() {ll n,m;cin>>n;for(int i1;i<n;i){cin>>a[i];}for(int i1;i<n;i){cin>&g…

top工具使用

文章目录 top命令简介top命令输出信息系统信息运行进程信息 top命令参数top命令快捷键自定义字段显示 top命令简介 top命令是Linux下常用的性能分析工具&#xff0c;可用于实时查看系统运行状态以及各个进程的资源占用情况。通常在系统出现CPU负载异常或者内存占用过高时&…

计算机视觉(三)未有深度学习之前

文章目录 图像分割基于阈值、基于边缘基于区域、基于图论 人脸检测Haar-like特征级联分类器 行人检测HOGSVMDPM 图像分割 把图像划分成若干互不相交的区域。经典的数字图像分割算法一般是基于灰度值的两个基本特征之一&#xff1a;不连续性和相似性。 基于阈值、基于边缘 基于…

数据可视化(3)

1.饼状图 #饼状图 #pie&#xff08;x,labels,colors,labeldistance,autopct,startangle,radius,center,textprops&#xff09; #x,每一块饼状图的比例 #labels:每一块饼形图外侧显示的文字说明 #labeldistance&#xff1a;标记的绘制位置&#xff0c;相对于半径的比例&#xf…

【模拟IC】国微微电子模拟IC岗笔试复盘

前言 对2023的国微微电子的笔试题进行复盘&#xff0c;答案仅供参考&#xff0c;题型分别有选择题&#xff0c;填空题&#xff0c;简答题以及分析题。一共一百分。麻烦大家点点关注&#xff0c;祝大家拿下大厂sssp,拿下心仪的工作。 一、选择题填空题简答题 套筒式放大器与折…

微服务测试是什么?

微服务测试是一种特殊的测试类型&#xff0c;因为它涉及到多个独立的服务。以下是进行微服务测试的一般性步骤&#xff1a; 【B站最通俗易懂】Python接口自动化测试从入门到精通&#xff0c;超详细的进阶教程&#xff0c;看完这套视频就够了 1. 确定系统架构 了解微服务架构对…

【沐风老师】3dMax模型贴图贴画插件使用方法详解

3dMax模型贴图贴画插件使用方法 3dMax模型贴图贴画插件(3dmax贴花放置器),是在3dMax对象上放置贴花时使用的一种工具,可以帮助你加快工作速度。现代化的用户界面,能够保留贴花的纵横比、捕捉角度、通过角点或中心轴调整贴花大小的能力、贴花网格的实时投影、创建和编辑“*…

nginx的快速入手(基本命令)

nginx的快速入手&#xff08;基本命令&#xff09; 1.下载 下载地址&#xff1a;nginx: download 以win的为例。单机下载windows的。 下载完成之后直接解压 2.使用 查看版本 nginx -v 验证配置文件正确吗 就是检查自己修改的配置文件有没有语法上的错误 nginx -t 启动 sta…

多线程(JavaEE初阶系列4)

目录 前言&#xff1a; 1.单例模式 1.1饿汉模式 1.2懒汉模式 1.3结合线程安全下的单例模式 1.4单例模式总结 2.阻塞式队列 2.1什么是阻塞队列 2.2生产者消费者模型 2.2.1 上下游模块之间进行“解耦合” 2.2.2削峰填谷 2.3阻塞队列的实现 结束语&#xff1a; 前言&a…