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

最新文章

  1. gRPC源码分析2-Server的建立
  2. 协程,事件驱动,异步io模型,异步网络框架
  3. Samba配置
  4. iOS 线程锁同步机制
  5. Json-lib使用 转载
  6. 45度地图遮挡问题解决方案(cocos2d-x)
  7. svn管理代码在cornerstone上无法添加.a 静态库文件
  8. 提高matlab运行速度和节省空间的心得
  9. Ftp实现文件同步
  10. 导出EXCEL遇到问题
  11. 【集训队互测2015】Robot
  12. 匿名函数python内置高阶函数以及递归
  13. 【Teradata】tdlocaledef修改默认日期配置
  14. shell脚本编程需要的知识
  15. Java知多少(81)框架窗口基础
  16. QT之 Hello World
  17. how webpack Hot Module Replacement works
  18. P3935 Calculating
  19. 4. Add override methods to class
  20. SpringMVC HandlerMethodArgumentResolver自定义参数转换器 针对HashMap失效的问题

热门文章

  1. 【Unity】11.5 物理材质 (Physics Material)
  2. listview 两个Item可以同时点击
  3. kernel dump Analysis
  4. MVC的项目部署成应用程序或虚拟目录路径的问题
  5. iOS开发之蓝牙
  6. [整理]Unity3D游戏开发之Lua
  7. flex布局知识点(阮一峰博客)
  8. 远程mysql导入本地文件
  9. BAT-删除文件夹
  10. BAT-局域网内在线电脑IP