Linux:网络防火墙

  1. netfilterFrame
  2.  
  3. iptables 生成防火墙规则,并附加到netfilter上实现数据报文过滤 NAT mangle等规则生成的工具

TCP有限状态机

  1. LISTEN:等待客户端发起请求
  2.  
  3. SYN_SENT:客户端发送SYN
  4.  
  5. SYN_RECEIVED:服务器端收到SYN报文
  6.  
  7. ESTABLISHED:已经建立连接
  8.  
  9. FIN_WAIT1:等待对方的确认
  10.  
  11. CLOSE_WAIT:服务器响应客户机的FIN,等待关闭
  12.  
  13. LAST_ACK:服务器向客户机发送FIN,等待客户机的最后一次确认
  14.  
  15. CLOSING:等待关闭连接,客户机最后一次向服务器发送ACK,确保服务器可以收到ACK的过程
  16.  
  17. CLOSED:双方收到FINACK确认,断开连接

防火墙:硬件,软件:规则(匹配标准、处理办法)

  1. 工作在网络的边界,对进、出的数据报文按照预先定义好的规则进行检查,一旦发现按照相应规则处理

Framework:

  1. 默认规则:
  2.  
  3. 开放:堵
  4.  
  5. 关闭:通

规则:匹配标准

  1. IP:源IP、目标IP
  2.  
  3. TCPsport/dport,SYN= FIN= RST= ACK=
  4.  
  5. UDPsport/dport
  6.  
  7. ICMPicmp-type ping echo-request echo-reply

数据报文过滤

  1. Linux 2.0
  2.  
  3. ipfw/firewall
  4.  
  5. Linux 2.2
  6.  
  7. ipchain/firewall
  8.  
  9. Linux 2.4
  10.  
  11. iptables/netfilter

hook function:钩子函数

  1. input
  2.  
  3. output
  4.  
  5. forward
  6.  
  7. prerouting
  8.  
  9. postrouting

规则链:

  1. PREROUTING
  2.  
  3. INPUT
  4.  
  5. FORWARD
  6.  
  7. OUTPUT
  8.  
  9. POSTROUTING

filter(过滤)表

  1. INPUT
  2.  
  3. FORWARD
  4.  
  5. OUTPUT

nat(地址转换)表

  1. PREROUTING
  2.  
  3. POSTROUTING
  4.  
  5. OUTPUT

mangle(修改报文首部)表

  1. PREROUTING
  2.  
  3. INPUT
  4.  
  5. FORWARD
  6.  
  7. OUTPUT
  8.  
  9. POSTROUTING

raw表

  1. PREROUTING
  2.  
  3. OUTPUT

数据包匹配流程

PREROUTING:raw---mangle---nat

  1. INPUT:mangle----filter
  2.  
  3. FORWARD:mangle--------filter
  4.  
  5. OUTPUT:raw---mangle---nat----filter
  6.  
  7. POSTROUTING:mangle----postrouting

用户可以自定义链,但只能是在被调用时才可以使用,如果自定义链中没有存在任何匹配规则,还应该有返回机制

用户可以删除自定义链,但不允许删除非空链

默认链无法删除

每个规则都有两个内置的计数器

  1. 记录被匹配的报文个数
  2.  
  3. 记录被匹配的报文的大小

规则=匹配标准+处理动作

iptables [ -t table ] COMMAND CHAIN [num] 匹配标准 -j 处理办法

匹配标准:

  1. 通用匹配
  2.  
  3. 扩展匹配(必须启用netfilter模块)
  4.  
  5. 隐含扩展:不用特别指明由哪个模块进行的扩展,此时使用-p {tcp|udp|icmp}
  6.  
  7. 显式扩展:必须指定使用哪个模块,通过iptables的-m选项完成

通用匹配:

  1. -s,--src 指定源IP
  2.  
  3. -d,--dst 指定目的IP
  4.  
  5. -p { tcp | udp | icmp } 指定协议
  6.  
  7. -i INTERFACE 指定数据报文流入的接口,一般用在PREROUING INPUT FORWARD
  8.  
  9. -o INTERFACE 指定数据报文流出的接口,一般用在OUTPUT POSTROUTING FORWAD

扩展匹配

隐含扩展

  1. -p tcp
  2.  
  3. --sport PORT:源端口
  4.  
  5. --dport PORT:目的端口
  6.  
  7. --tcp-flags mask compare
  8.  
  9. --tcp-flags SYN,FIN,ACK,RST SYN,ACK 将检查SYN/FIN/RST/ACK4个标志位,只允许SYN,ACK1
  10.  
  11. --syn 匹配SYN标志位为1的数据

-p icmp

  1. --icmp-type
  2.  
  3. 类型0echo-reply
  4.  
  5. 类型8echo-request
  1. - p udp
  2.  
  3. --sport
  4.  
  5. --dport

处理办法:

  1. ACCEPT 允许通过
  2.  
  3. DROP 丢弃
  4.  
  5. REJECT 丢弃
  6.  
  7. DNAT 转换目的IP
  8.  
  9. SNAT 转换源IP
  10.  
  11. REDIRECT 端口重定向
  12.  
  13. MASQUERADE PAT
  14.  
  15. LOG 记录日志
  16.  
  17. MARK 打标记

COMMAND命令:

管理规则

  1. -A CHAIN:附加一条规则,添加在链的尾部
  2.  
  3. -I CHAIN [num]:插入一条规则,插入在对应CHAIN的第num
  4.  
  5. -D CHAIN num:删除指定链中的第num条规则
  6.  
  7. -R CHAIN num:替换指定的规则

管理链

  1. -F [CHAIN]:清空指定链的所有规则,如果省略CHAIN,则实现删除对应表中的所有链
  2.  
  3. -P CHAIN { ACCEPT | DROP }:设置指定链的默认策略
  4.  
  5. -N NEW_CHAIN:自定义新的空链
  6.  
  7. -X NEW_CHAIN:删除自定义的空链
  8.  
  9. -Z:将指定链中的所有规则中的计数器置零
  10.  
  11. -E OLD-CHAIN-NAME NEW-CHAIN-NAME:重命名自定义的链

查看

  1.   -L 显示指定表中的所有规则
  2.  
  3. -n:以数字格式显示主机地址、端口号
  4.  
  5. -v:显示详细信息(计数器)
  6.  
  7. -x:显示计数器的精确值
  8.  
  9. --line-numbers:显示规则号码

iptables基础练习:

  1. 、查看nat表中的所有规则
  2.  
  3. iptables -t nat -nL
  4.  
  5. 、查看filter表中所有的规则
  6.  
  7. Iptables -filter -nL
  8.  
  9. 、将nat表中的所有链的默认策略修改为DROP
  10.  
  11. 、在INPUT链中添加一条拒绝源IP172.16.1./24进入本机的规则
  12.  
  13. 、在INPUT链中添加一条允许源IP172.16.1./24进入本机的规则
  14.  
  15. 、在INPUT链中最前方加入一条允许192.168.1.1访问本机10.1.1.1的规则
  16.  
  17. 、在INPUT链中的第2个位置插入一条规则,允许从本机eth0网卡进入数据,
  18.  
  19. 、替换INPUT链中第2条规则
  20.  
  21. 、删除INPUT链中第3条规则
  22.  
  23. 、清空INPUT链中所有的规则

iptables不是服务,但有服务脚本,服务脚本的主要作用在于管理保存的规则

装载及移除iptables/netfilter相关的内核模块

iptables_nat,iptables_filter,iptables_mangle,iptables_raw,ip_nat,ip_conntrack

也可以打开/etc/sysconf/iptables

  1. # iptables -A INPUT -p tcp --dport -j ACCEPT
  2. # iptables -A OUTPUT -p tcp --sport -j ACCEPT

Linux_iptables的更多相关文章

  1. linux_iptables 详解

    iptables工具__过滤包—命令(-A.-I.-D.-R.-L等).参数(-p.-s.-d.--sport.--dport.-i.-o等).动作-j (ACCEPT.DROP.REJECT.RED ...

  2. Linux_IPtables防火墙详解

    目录 目录 Iptables Iptables结构 规则表 规则链 iptables指令用法详解 综合案例 SNAT 策略 DNAT 策略 Iptables规则的备份和还原 iptables 练习 I ...

  3. Linux运维相关目录

随机推荐

  1. CentOS编译安装vim

    #删除系统自带的vim rpm -qa | grep vim rpm -e vim-X11-7.4.629-5.el6_8.1.x86_64 vim-filesystem-7.4.629-5.el6_ ...

  2. Gluster vs Ceph:开源存储领域的正面较量

    https://www.oschina.net/news/49048/gluster-vs-ceph 引言:开源存储软件Ceph和Gluster能够提供相似的特性并且能够为用户节省不小的开支.那么谁更 ...

  3. Java map双括号初始化方式的问题

    关于Java双括号的初始化凡是确实很方便,特别是在常量文件中,无可替代.如下所示: Map map = new HashMap() { { put("Name", "Un ...

  4. MySQL内置函数获取几天前的日期

    如何采用mysql内置函数获取指定时间之前的日期呢? SELECT something FROM table_name WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY ...

  5. ubuntu 16.04 root 初始密码设置

    ()默认root密码是随机的,即每次开机都有一个新的root密码.我们可以在终端输命令 sudo passwd,然后输入当前用户的密码,enter ()终端会提示我们输入新的密码并确认,此时的密码就是 ...

  6. 【嵌入式】FS2410非操作系统外围资源测试

    在刚接触FS2410时,其实这个测试也没有多大意义,但是对于以后来说,当一个产品做成功时,产品测试还是一个必须经过的一个阶段,所以这个流程还是有必要走一下! 在非操作系统下,主要进行RTC测试,按键测 ...

  7. ubuntu+nginx+laravel

    1, 到http://v4.golaravel.com/docs/4.2/installation 点击下载最新版Laravel框架.然后解压 2,把laravel-master下的文件夹拷入到php ...

  8. axios 的应用

    vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios,前一段时间用了一下,现在说一下它的基本用法. 首先就是引入axios,如果你使用es6,只需要安装axios ...

  9. 开源搜素引擎——Nutch

    Nutch简介 Nutch 是一个开源Java实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行 ...

  10. RabbitMQ中各种消息类型如何处理?

    一:消息类型 Map String(含json字符串类型) 二:处理方法 2.1 Map消息 如果发送的消息类型是map类型,可以通过SerializationUtils.deserialize方法将 ...