Linux:网络防火墙

    netfilter:Frame

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

TCP有限状态机

    LISTEN:等待客户端发起请求

    SYN_SENT:客户端发送SYN

    SYN_RECEIVED:服务器端收到SYN报文

    ESTABLISHED:已经建立连接

    FIN_WAIT1:等待对方的确认

    CLOSE_WAIT:服务器响应客户机的FIN,等待关闭

    LAST_ACK:服务器向客户机发送FIN,等待客户机的最后一次确认

    CLOSING:等待关闭连接,客户机最后一次向服务器发送ACK,确保服务器可以收到ACK的过程

    CLOSED:双方收到FIN的ACK确认,断开连接

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

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

Framework:

    默认规则:

       开放:堵

       关闭:通

规则:匹配标准

    IP:源IP、目标IP

    TCP:sport/dport,SYN= FIN= RST= ACK=

    UDP:sport/dport

    ICMP:icmp-type                 ping   echo-request   echo-reply

数据报文过滤

Linux 2.0

    ipfw/firewall

Linux 2.2

    ipchain/firewall

Linux 2.4

    iptables/netfilter

hook function:钩子函数

    input

    output

    forward

    prerouting

    postrouting

规则链:

       PREROUTING

       INPUT

       FORWARD

       OUTPUT

       POSTROUTING

filter(过滤)表

    INPUT

    FORWARD

    OUTPUT

nat(地址转换)表

    PREROUTING

    POSTROUTING

    OUTPUT

mangle(修改报文首部)表

    PREROUTING

    INPUT

    FORWARD

    OUTPUT

    POSTROUTING

raw表

    PREROUTING

    OUTPUT

数据包匹配流程

PREROUTING:raw---mangle---nat

    INPUT:mangle----filter

    FORWARD:mangle--------filter

    OUTPUT:raw---mangle---nat----filter

    POSTROUTING:mangle----postrouting

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

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

默认链无法删除

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

    记录被匹配的报文个数

    记录被匹配的报文的大小

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

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

匹配标准:

    通用匹配

    扩展匹配(必须启用netfilter模块)

       隐含扩展:不用特别指明由哪个模块进行的扩展,此时使用-p {tcp|udp|icmp}

       显式扩展:必须指定使用哪个模块,通过iptables的-m选项完成

通用匹配:

    -s,--src   指定源IP

    -d,--dst   指定目的IP

    -p { tcp | udp | icmp }  指定协议

    -i  INTERFACE  指定数据报文流入的接口,一般用在PREROUING  INPUT  FORWARD链

    -o  INTERFACE  指定数据报文流出的接口,一般用在OUTPUT  POSTROUTING  FORWAD链

扩展匹配

隐含扩展

    -p tcp

       --sport PORT:源端口

       --dport PORT:目的端口

       --tcp-flags mask compare

           --tcp-flags  SYN,FIN,ACK,RST SYN,ACK   将检查SYN/FIN/RST/ACK这4个标志位,只允许SYN,ACK为1

       --syn  匹配SYN标志位为1的数据

-p icmp

       --icmp-type

           类型0:echo-reply

           类型8:echo-request
    - p udp

       --sport

       --dport

处理办法:

    ACCEPT 允许通过

    DROP   丢弃

    REJECT 丢弃

    DNAT   转换目的IP

    SNAT   转换源IP

    REDIRECT   端口重定向

    MASQUERADE    作PAT

    LOG    记录日志

    MARK   打标记

COMMAND命令:

管理规则

       -A CHAIN:附加一条规则,添加在链的尾部

       -I CHAIN [num]:插入一条规则,插入在对应CHAIN的第num条

       -D CHAIN num:删除指定链中的第num条规则

       -R CHAIN num:替换指定的规则 

管理链

       -F [CHAIN]:清空指定链的所有规则,如果省略CHAIN,则实现删除对应表中的所有链

       -P CHAIN { ACCEPT | DROP }:设置指定链的默认策略

       -N NEW_CHAIN:自定义新的空链

       -X NEW_CHAIN:删除自定义的空链

       -Z:将指定链中的所有规则中的计数器置零

       -E OLD-CHAIN-NAME NEW-CHAIN-NAME:重命名自定义的链

查看

         -L  显示指定表中的所有规则

           -n:以数字格式显示主机地址、端口号

           -v:显示详细信息(计数器)

           -x:显示计数器的精确值

           --line-numbers:显示规则号码

iptables基础练习:

    、查看nat表中的所有规则

      iptables -t nat -nL

    、查看filter表中所有的规则

      Iptables -filter -nL

    、将nat表中的所有链的默认策略修改为DROP

    、在INPUT链中添加一条拒绝源IP为172.16.1./24进入本机的规则

    、在INPUT链中添加一条允许源IP为172.16.1./24进入本机的规则

    、在INPUT链中最前方加入一条允许192.168.1.1访问本机10.1.1.1的规则

    、在INPUT链中的第2个位置插入一条规则,允许从本机eth0网卡进入数据,

    、替换INPUT链中第2条规则

    、删除INPUT链中第3条规则

    、清空INPUT链中所有的规则

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

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

iptables_nat,iptables_filter,iptables_mangle,iptables_raw,ip_nat,ip_conntrack

也可以打开/etc/sysconf/iptables

# iptables -A INPUT -p tcp --dport  -j ACCEPT
# 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. 记一次docker问题定位(perf,iostat等性能分析)

    背景 最近参与的项目是基于 OpenStack 提供容器管理能力,丰富公司 IaaS 平台的能力.日常主要工作就是在开源的 novadocker 项目(开源社区已停止开发)基础上进行增强,与公司的其他 ...

  2. [Windows Azure] Using the Graph API to Query Windows Azure AD

    Using the Graph API to Query Windows Azure AD 4 out of 4 rated this helpful - Rate this topic This d ...

  3. 【Java】Java复习笔记-第四部分

    反射 反射: 在运行时动态分析或使用一个类进行工作. java.lang.Class类:描述类信息的类. 类对象:描述一个类信息的对象,当虚拟机加载类的时候,就会创建这个类的类对象并加载该对象,Cla ...

  4. Path-to-PegExp的使用

    下载: npm install path-to-regexp --save 引入: var pathToRegexp = require('path-to-regexp') 或者 import pat ...

  5. Docker 入门 --- 命令总结

    Docker命令总结 前言 命令来自于官网的get-started教程,放在这里自用 part-1 ## List Docker CLI commands docker docker containe ...

  6. 【论文笔记】如何理解深度学习中的End to End

    End to end:指的是输入原始数据,输出的是最后结果,应用在特征学习融入算法,无需单独处理. end-to-end(端对端)的方法,一端输入我的原始数据,一端输出我想得到的结果.只关心输入和输出 ...

  7. Python通过ssh连接服务器并执行命令

    [本文出自天外归云的博客园] 脚本示例如下: # coding:utf-8 import time,paramiko,re,StringIO def exec_shell(command): ''' ...

  8. LR中,URL -based script与HTML -based script区别

    在Web(HTTP/HTML)录制中,有2种重要的录制模式.用户该选择那种录制模式呢?HTML-mode录制是缺省也是推荐的录制模式.它录制当前网页中的HTML动作.在录制会话过程中不会录制所有的资源 ...

  9. 基于jquery横向手风琴效果

    基于jquery横向手风琴效果是一款基于jquery实现的左右滑动手风琴图片轮播切换特效.效果图如下: 在线预览   源码下载 效果图如下: <div class="flash&quo ...

  10. java框架篇---struts开发

    1.Token Token主要是以一种指令牌的形式进行重复提交处理的,在很多情况下,如果用户对同一个表单进行了多次提交,则有可能造成数据的混乱,此时,WEB服务器必须可以对这种重复提交的行为做出处理, ...