首页 > 系统相关 >iptables 学习

iptables 学习

时间:2023-12-09 15:47:07浏览次数:37  
标签:iptables -- IP 端口 ACCEPT 学习 地址

iptables

一、图

二、规则写法

格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION

-t table : 3个 filter nat mangle

COMMAND: 定义如何对规则进行管理

chain 指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候是可以省略的

CRETIRIA: 指定匹配标准

-j ACTION: 指定如何进行处理

三、详解COMMAND

3.1 链管理命令(立即生效的)

-P :设置默认策略的(设定默认门是关着的还是开关的)

默认策略一般只有两种

iptables -P INPUT (DROP|ACCEPT)  #默认是关的/默认是开的

-F:FALSH ,清空规则链的(注意每个链的管理权限)

iptables -t nat -F PREROUTING  # 清空nat表的所有链

-N: NEW 支持用户新建一个链

iptables -N inbound_tcp_web

-X: 用于删除用户自定义的空链

使用方法跟-N相同,但是在删除之前必须要将里面的链给清空了

-E: 用来rename chain 主要是用来给用户自定义的链重命名

-E oldname newname

-Z: 清空链,及链中默认规则的计数器的(两个计数器,被匹配到多少个数据包,多少个字节)

iptables -Z #清空

3.2 规则管理命令

-A : 追加,在当前链的最后新增一个规则

-I num : 插入,把当前规则插入为第num条

-R num: 替换/修改 第num条规则

iptables -R 3 .........

-D num : 删除,明确指定删除第num条规则

3.3 查看管理命令“-L"

附加子命令

-n: 以数字的方式显示ip,它会将ip直接显示出来,如果不加-n,则会将ip反向解析成主机名

-v: 显示详细信息

-vv

-vvv: 越多越详细

-x : 在计数器上显示精确值,不做单位换算

--line-numbers: 显示规则的行号

-t nat: 显示所有的关卡信息

四、详解匹配标准

4.1 通用匹配:源地址目标地址的匹配

-s : 指定作为源地址匹配,这里不能指定主机名称,必须是IP

IP|IP/MASK|0.0.0.0/0.0.0.0

而且地址可以取反,加一个”!“表示除了哪个IP之外

-d: 表示匹配目标地址

-p: 用于匹配协议的(这里的协议通常有3种, TCP/UDP/ICMP)

-I eth0: 从这块网卡流入的数据

流入一般用在INPUT和PREROUTING上

-o eth0: 从这块网卡流出的数据

流出一般在OUTPUT和POSTROUTING上

4.2 扩展匹配

4.2.1 隐含扩展;对协议的扩展

-p tcp: TCP协议的扩展

一般有三种扩展

--dport XX-XX :指定目标端口,不能指定多个非连续端口,只能指定单个端口或者连续端口

--dport 21   --dport 21-23

--sport: 指定源端口

--tcp-flags: TCP的标志位(SYN,ACK,FIN,PSH,RST,URG)

一般要跟两个参数

1.检查的标志位

2.必须为1的标志位

--tcpflags syn,ack,fin,rst  syn  # = --syn

表示检查这4个位,这4个位中syn必须为1,其他的必须为0。意思是检测三次握手的第一次的包,另外一种简写方式为

--syn

-p udp : UDP协议的扩展

--dport

--sport

-p icmp: ICMP数据报文的扩展

--icmp-type: echo-request(请求回显),一般用8来表示 echo-reply(响应的数据包) 一股用0来表示

4.2.2 显示扩展

扩展各种模块

-m multiport: 表示启用多端口扩展

五、详解-j ACTION

常用的ACTION

DROP : 悄悄的丢弃

一般我们多用DROP来隐藏我们的身份,以及隐藏我们的链表

REJECT:明示拒绝

ACCEPT:接受

custom_chain: 转向一个自定义的链

DNAT

SNAT

MASQUERADE:源地址伪装

REDIRECT:重定向:主要用于实现端口重定向

MARK:打防火墙标记的

RETURN:返回

在自定义链执行完毕后使用返回,来返回原规则链

六、 状态检测

检测是一种显式扩展,用于检测会话之间的连接关系的,有了检测我们可以实现会话间功能的扩展。

TCP协议来讲,它是一个有连接的协议,三次握手中,第一次握手,叫NEW连接,从第二次握手以后的ACK都为1 和TCP的第二次第三次握手叫做已建立的连接ESTABLISHED,无法识别的状态叫INVALID,FTP特征的端口独立,都是一去一回,他们之间有关系的叫做RELATED

所以我们一共有4种状态

NEW

ESTABLISHED

RELATED

INVALID

#如进来的拒绝出去的允许,进来的只允许ESTABLISHED进来,出去只允许ESTABLISHED出去,默认规则都使用拒绝
#改写INPUT
iptables -R INPUT 2 -s 172.16.0.0/16 -d 172.16.100.1 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -R OUTPUT 1 -m state --state ESTABLISHED -j ACCEPT
#此时如果想再放行一个80端口如何放行
iptables -A INPUT -d 172.160.100.1 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -R INPUT 1 -d 172.16.100.1 -p udp --dport 53 -j ACCEPT

#允许自己ping别人,但是别人ping自己ping不通
#在出去的端口上
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
#在进来的端口上
iptables -A INPUT -P icmp --icmp-type 0 -j ACCEPT
#ping 自己
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

七、SNAT和DNAT的实现

7.1 SNAT基于原地址的转换

基于原地址的转换一般用在我们的许多内网用户通过一个外网的口上网的时候,这时我们将我们内网的地址转换为一个外网的IP,我们就可以实现连接其他外网IP的功能。

#如我们现在要将所有192。168。10。0网段的IP在经过的时候全部都转换成172.16.100.1这个假设出来的外网地址
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.16.100.1
#如果172.16.100.1不是固定的,则就要将外网地址换成MASQUERADE(动态伪装),它可以实现自动寻找到外网地址而自动将其改成正确的外网地址
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
#地址伪装并不适用于所有的地方

7.2 DNAT目标地址转换

对于目标地址转换,数据流向是从外向内的,外面的是客户端,里面的是服务器端通过目标地址转换,我们可以让外面的IP通过我们对外的外网IP来访问我们服务器不同的服务器,而我们的服务却放在内网服务器的不同的服务器上。

iptables -t nat -A PREROUTING -d 192.168.10.18 -p tcp --dport 80 -j DNAT --todestination 172.16.100.2

目标地址转换要做在到达网卡之前进行转换,所以要做在PREROUTING这个位置上

八、控制规则的存放以及开启

注意:你所定义的所有内容,当你重启的时候都会失效,要想我们能够生效,需要使用一个命令将它保存起来

service iptables save
#它会保存在/etc/sysconfig/iptables这个文件中
iptables-save >/etc/sysconfig/iptables

iptables-restore < /etc/sysconfig/iptables.2
#让一个自己写的配置文件iptables.2手动生效

标签:iptables,--,IP,端口,ACCEPT,学习,地址
From: https://www.cnblogs.com/lukezhangsz/p/iptables.html

相关文章

  • 2023-2024-1 20232301 《网络》第5周学习总结
    教材学习内容总结教材学习中的问题和解决过程问题1:对于基于语义的海量媒体内容特征快速提取与分类技术,书上暂未举出具体例子,使我在理解上稍有欠缺问题1解决方案:通过不断询问chatgpt,我得到了以具体的体育文章为实例的回答,如下:“当涉及到基于语义的海量媒体内容提取与分类技术......
  • Redis学习记录第七天
        今天我们继续深入学习Redis,探讨了Redis的数据结构类型以及一些高级功能。首先,我们先来回顾一下Redis支持的数据结构类型:String(字符串):最基本的数据结构类型,可以存储字符串、数字等数据。Hash(哈希):键值对的集合,可以用于存储对象,支持添加、删除、获取单个或多个键值对。Lis......
  • 分布式学习记录,第三天
       在分布式学习的探索之旅中,我们继续深入学习并实践了分布式学习的核心概念和技巧。第三天,我们主要关注于分布式学习中的同步和异步策略,以及如何优化通信开销以进一步提高学习效率。    首先,我们讨论了分布式学习中的同步策略。同步策略是指在所有计算节点上同时进......
  • python+sklearn 机器学习代码备忘
    importsklearnfromsklearn.model_selectionimporttrain_test_splitfromsklearn.linear_modelimportLinearRegressionimportpandasaspdimportmatplotlib.pyplotaspltimportseabornassnsfromsklearnimportpreprocessingimportcsvimportnumpyas......
  • 2023-2024-1 20231424《计算机基础与程序设计》第11周学习总结
    2023-2024-120231424《计算机基础与程序设计》第11周学习总结作业信息作业属于的课程<班级链接>(2022-2023-1-计算机基础与程序设计)作业要求<作业要求>(2022-2023-1计算机基础与程序设计第一周作业)作业目标《计算机科学概论》第15,16章和《C语言程序设计》第10章......
  • 2023-2024-1 20232327《网络空间安全导论》第五周学习总结
    2023-2024-120232327《网络空间安全导论》第五周学习总结教材学习内容总结1.信息内容安全是研究利用计算机从包含海量信息并且迅速变化的网络中对特定安全主题相关信息进行自动获取、识别和分析的技术;2.网络爬虫是按照一定规则,自动抓取有互联网信息的程序或脚本;3.信息过滤是......
  • 人工智能基础笔记 · Part C 群体智能和强化学习
    C6群体智能核心思路:大自然中的一些社会系统尽管由简单的个体组成,却表现出智能的集体行为。称Agents为“智能体”。对问题的智能解决方案,自然地涌现于这些个体的自组织和交流之中。整个系统的行为是自下而上的,遵循简单规则的简单Agents生成复杂的结构/行为,且Agents不遵循......
  • 学习riscv(1)安装tinyriscv的工具链
    因为毕设是CPU的低功耗设计,所以开始看cpu,打算还是先从这个tinyriscv学起,昨天把环境下好了,第一步是用git去clone代码,这个首先要下载git,然后在目标文件夹鼠标右键,选择“opengitbushhere”,再输入项目的url,就可以了。方法不难。b站有详细教程接下来是安装工具,我用的是wind......
  • 机器学习-线性回归-最大似然估计求解-解析解-01
    最大似然估计已经从某一分布中获取到n个样本并且假设改样本的分布服从某一个分布f(θ),θ为需要估计的参数,根据这n个样本去推导θ的值就叫做最大似然估计,假设样本服从某分布,根据样本计算出分布中的参数,参数计算出之后,就能去进行预测,正态分布概率密度:假设样本的误差服从正......
  • Spring Boot学习随笔- @SpringBootApplication详解、加载绝对路径配置文件、工厂创建
    学习视频:【编程不良人】2021年SpringBoot最新最全教程3.5@SpringBootApplication详解这是一个组合注解,就是由多个注解组成。下列注解红框内称为元注解(jdk提供)@Target:指定注解作用范围@Retention:指定注解什么时候生效重要注解@SpringBootConfiguration:自动配置Spring......