iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux iptables入门教程总结
  • 195
分享到

Linux iptables入门教程总结

2023-06-13 02:06:51 195人浏览 薄情痞子
摘要

本篇内容介绍了“linux iptables入门教程总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!链(chain)与规则 (rules)

本篇内容介绍了“linux iptables入门教程总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

链(chain)与规则 (rules)

filter table里面有三个默认的链,INPUT,OUTPUT 和 FORWARD。FORWARD呢对于做站基本用不上,我们就讲INPUT 和 OUTPUT。因为是别人要攻击我们,对于我们的服务器来讲,攻击是要进来的,即INPUT,诶?那么说把 INPUT这个链搞明白,就可以防守了?差不多吧。那我们就只讲 INPUT好了,越简单越好,关键是把概念理清楚,别的细节,都可以查到的的亲。另外,INPUT, OUTPUT, FORWARD都是由规则组成的链,INPUT搞懂了,其他的也就不难了。

平常我们看到iptables,就是一条条的规则,例如:

代码如下:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

看到INPUT这个词了吧?这说明这条规则属于INPUT这个链的,tcp是协议,网站都是用tcp的, –dport 80,就是80这个端口,也就是别人打开你的网站的时候需要与你的服务器的80端口连起来,就像一条打印机线把电脑的打印机口与打印机连起来一样,不过网络上端口是虚拟的,但实际工作的时候是一回事,就是通信。对于INPUT(发进来)的数据包,80是目标端口,即destination port, 简称 dport。

因为你的服务器上放了你的网站,你需要允许别人向80端口发连接请求,ACCEPT,即接受请求和连接。现在你明白了吧?有了这句,别人就可以连接你的服务器,打开上面的网页了。

前面那个“-A”的意思append,与后面的INPUT连用的,就是把这条规则加到INPUT这个链的最后面。当然现我们INPUT这个链上啥都没有,加到最后面,也就是第一条了。

命令行的规则你大概明白了吧,“-”符号,后面直接跟的是参数名,参数名后跟空格,空格后跟这个参数的值(姑且这么理解吧)。例如 -p tcp ,这里的‘-p’是不能随便写的,是iptables程序定义的,你写个“-p”,程序就知道后面跟的是协议名称。你写个“-A”,iptables程序就知道后面跟的是链的名称。那么“–dport”里的两个减号“–”是啥意思呢?它的功能跟一个减号是一样的,都表示后面是参数名,不过两个减号后面跟的参数名的全称,一个减号跟的是简称,全称容易看懂,减称写起来省劲。例如上面这句规则也可以写成:

代码如下:

iptables -append INPUT --proto tcp --dport 80 --jump ACCEPT

当然,爱装逼的理科生一般是不会写全称的,大都用一个减号,一个字母的简称。
亲爱的windows用户,注意这里的参数名和参数值都是大小写敏感的,把“-p”写成“-P”,程序是不工作的。另外英语很好的你可以注意到了,即使是加了两个减号的“全称”,也不全,proto明明不对,该是protocol才对。你知道他们理科生语文不好,原谅他们吧。

光有这条还不够,因为你的vps上还有别的服务,例如你上传文件需要ftp或sftp,进入后台需要ssh,ftp的默认端口是21,ssh是22,我们把它们也加上。

代码如下:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

好了,你准备就开放这么多服务,最后在加一

代码如下:

iptables -A INPUT -j DROP

它的意思是拒绝所有连接…这怎么行?不是说要允许80,21,和22吗?这是因为INPUT是个链子,有头有尾,按顺序来的。如果有人连接你的80口,第一句规则说ACCEPT,进来吧。那么他发来的一梭子弹弹就不再经过后面的规则了,当然也就不会被放在最后面的DROP这句拒绝了。

现在我们的全部规则是:

代码如下:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP

翻译成文科生的语言就是发到80(嘴巴),21(菊花),22(猫猫)三个口的数据将接受,想往别的地方塞数据,一律拒绝。复习一下开始说的,这些东东的意思是在INPUT这个链子上有四条规则,规则是按顺序一个一个来的,发来的数据被匹配后,就跳出链子,后面的规则就不再执行了。如果你把iptables -A INPUT -j DROP这条放在链头,你的vps就变成了石女,唯有通过服务商的面板重启了!

REJECT 和 DROP

刚才-j 后面的拒绝操作是DROP,正确的英语译文该是”REJECT”才对。是的,写成”-j REJECT”也是可以的。不同之处是REJECT比较客气,等于告诉想搞你的人“对不起,人家这两天不方便。”而DROP就是一声不坑地拒绝。对于入侵者,不用那么客气,用DROP好了。因为如果你回应了,等于告诉想搞你的人你是在线的,只是拒绝了,反而会引起他继续努力的斗志。

状态 (state)匹配

如果你喜颠颠地拿着上面几条去试验了,估计你的vps上的一些网站可能就竿屁了,iptables这个妹妹很难对付的。要想让你的服务器正常工作,还需要添加这一句在DROP那一句之前。

代码如下:

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

“-m”是“匹配”的意思,-m state的意思是匹配数据包状态,用户发来的数据包分别带有不同的状态,即 NEW, ESTABLISHED, 和 RELATED。NEW 就是开头搭讪,ESTABLISHED,就是搭讪完了之后后续的数据包,RELATED就是与已经存在的连接相关的数据包。总之这句话的意思是,接受已经建立了连接的数据包,即搭讪之后的数据包。现在我们的INPUT链是这个样子的:

代码如下:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j DROP

意思是外面接受发往本机80,21,22的tcp数据包,还接受发往任何端口的已建立(established)和相关(related)的数据包(第四句),剩下的INPUT数据包一律抛弃。

为毛要允许状态ESTABLISHED 和 RELATED的入站数据呢?因为你的服务器同时也是台电脑,还要从别的服务器下载东西。下载时,你的服务器先向别的服务器发出连接请求(new),别的服务器允许你连接,连接建立(ESTABLISHED)之后,就需要接受别的服务器发来的数据,对于你的服务器来讲属于INPUT。也就是说,如果没有iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT这句,wget curl啥的就都不工作了。有了这句,加上前三句,即允许别的电脑连接(new)你的80,21和22端口,同时允许别的服务器在你的服务器先向它发请求的条件下向你发送数据。另外这些状态都是基于tcp协议来讲的(谢谢BOYPT)。

-A(–append)和-I (–insert)

刚才说了,-A INPUT的意思是把一条规则加在现有INPUT这个链子的最后面,那么写成-I INPUT,就是把一条规则强行插入到最前面。如果你比较变态,刚才的INPUT链倒着写也是可以的:
代码如下:

iptables -I INPUT -j DROP
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -j ACCEPT

即后面一条总会插到现有INPUT链的最前面,最终形成的INPUT链跟前面是一样的。
不过,不要试!因为你通常是远程操作你的vps的,你在命令行输入第一句,立马掉线!后面就全输不进去了!
–insert也是有用的,例如前面这个INPUT链已经起了作用,你想在不清空现有INPUT链的基础上再开放一个端口,例如443。那么就必须写成

代码如下:

iptables -I INPUT -p tcp --dport 443 -j ACCEPT

如果你写成 -A,那么这条规则就被跟在DROP那句后面,发到443的数据在来到新加的这句之前,就被干掉了。

如果你不想加到最前面,也可以在INPUT后面写个数字,表示添加的位置,如果把一条规则看成一行,也就是指定所谓的行号了。把上面添加443端口的规则写成:

代码如下:

iptables -I INPUT 3 -p tcp --dport 443 -j ACCEPT

那么就把它放在了第三条规则(即第三行)的位置了。在命令行里输入 iptables -nvx -L INPUT (查看现在生效的INPUT链),你会发现新增加的这条规则在21端口那句的后面。

把上面的规则保存到文件里,运行一下,你的服务器就安全多了。

代码如下:

iptables --flush
iptables --delete-chain
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j DROP

“Linux iptables入门教程总结”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Linux iptables入门教程总结

本文链接: https://www.lsjlt.com/news/264386.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux iptables入门教程总结
    本篇内容介绍了“Linux iptables入门教程总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!链(chain)与规则 (rules)...
    99+
    2023-06-13
  • linux入门教程(3)
    (文:flynng)  3.4 进程管理  Linux是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。  在Linux系统...
    99+
    2023-01-31
    入门教程 linux
  • GraphQL入门总体创建教程
    目录简介简单示例maven依赖Schema解析schema并关联对应的fetchersDataFetchersDefault DataFetchers总体创建过程资料简介 因为目前做...
    99+
    2022-11-13
    GraphQL创建教程 GraphQL创建
  • Linux基础入门(常用指令总结)
    相信大家对Linux都不陌生,本篇文章就详细介绍一些常用的Linux命令 目录 前言 一、Linux是什么? 二、常用命令 1.cd 切换文件夹 2.ls 查看目录内容 3.mkdir 创建文件夹 4.touch 创建空文件 5.rm...
    99+
    2023-09-01
    linux 1024程序员节 c++ 服务器 unix
  • MySQL入门(详细总结)
    目录 1、什么是数据库? 2、数据库的特点 3、数据库的分类 4、MySQL的登录和退出 4.1、MySQL的登录 5、SQL语句 5.1、什么是SQL? 5.2、通用语法 5.3、SQL语句的分类 6、操作数据库——DDL语言 7、操作表...
    99+
    2023-10-10
    数据库
  • Linux防火墙入门教程
    防火墙是你的计算机防止网络入侵的第一道屏障。为确保你的安全,请下载我们的备忘单。防火墙是你的计算机防止网络入侵的第一道屏障。为确保你的安全,请下载我们的备忘单。合理的防火墙是你的计算机防止网络入侵的第一道屏障。你在家里上网,通常互联网服务提...
    99+
    2023-06-05
  • golang特有程序结构入门教程
    Go语言的由来 ​ Go语言亦叫Golong语言,是由谷歌Goggle公司推出。Go语言的主要开发者有:肯.汤姆逊(Ken Thompson)、罗布.派克(Rob Pi...
    99+
    2024-04-02
  • Elasticsearch入门知识点总结
    这篇文章主要介绍“Elasticsearch入门知识点总结”,在日常操作中,相信很多人在Elasticsearch入门知识点总结问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • Nexus入门学习使用总结
    文章目录 前言一、nexus是什么?二、使用步骤1.怎么启动nexus2.怎么访问nexus管理页面3.私服仓库的分类4.如何配置Maven5.怎么查看仓库的类型和地址6.怎么使用maven将...
    99+
    2023-09-10
    maven 服务器 运维
  • Python入门基础知识总结
    目录 一:简介: 二:Python基础语法 2.1.字面量 2.2.注释 2.3.数据类型转换 2.4.标识符 2.5.运算符 2.6.字符串 2.6.1.字符串的三种定义方式 2.6.2.字符串拼接 2.6.3.字符串格式化 2.6.4....
    99+
    2023-09-01
    python 开发语言
  • Jmeter入门教程
    目录一、下载二、安装三、运行四、一个简单的压测实例五、如何查看系统负载何性能瓶颈jemter简介 jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全...
    99+
    2024-04-02
  • ECharts入门教程
    Echart 官网:https://echarts.apache.org/zh/index.html下载页面:https://echarts.apache.org/zh/downlo...
    99+
    2024-04-02
  • linux防火墙iptables的详细教程
    本篇内容主要讲解“linux防火墙iptables的详细教程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux防火墙iptables的详细教程”吧!1 框架图 -->PREROUTI...
    99+
    2023-06-10
  • Navicat入门教程
    本篇内容主要讲解“Navicat入门教程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Navicat入门教程”吧!一、 连接使用 1.1 连接数据库打...
    99+
    2024-04-02
  • HTML5 入门教程
    本篇内容主要讲解“HTML5 入门教程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML5 入门教程”吧!JavaScript作为一种弱类型语言,最大的特点就是动态类型。也就是说不用提前声明...
    99+
    2023-06-09
  • maven3 入门教程
    Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ Maven常用命令:  1. 创建Maven的普通java项目:  ...
    99+
    2023-01-31
    入门教程
  • Lighttpd入门教程
    Lighttpd入门教程 概述入门教程安装配置静态文件服务动态文件服务 虚拟主机SSL启动服务器日志模块总结lighthttpd使用场景和原理使用场景原理 概述 Lightt...
    99+
    2023-09-04
    服务器 linux ubuntu
  • Flask 入门教程
    Flask 入门教程 一、Flask简单使用 1、准备环境 硬件:Windows 7+python 3.6+安装软件:pycharm安装(社区版)、python环境安装 2、简单的Flask应用 本地...
    99+
    2023-10-07
    flask python 后端
  • ECMAScript6入门教程
    目录你的浏览器支持ES吗?ES 6 新特性汇总(一图全览)1. let、const 和 block 作用域2. 箭头函数(Arrow Functions)3. 函数参数默认值4. S...
    99+
    2024-04-02
  • IPv6入门教程
    本篇文章主要从基础概念、IPv6的相关网络工具、关于移动应用在IPv6和IPv4网络环境中自动降级机制的研究等三个方面介绍了IPv6的入门教程。前言众所周知,32位的IPv4地址已经基本耗尽(这里的耗尽只是说的分配完了,实际上有相当一部分并...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作