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. 我的Eclipse设置

    1.默认编码改成:UTF-8(在老项目里设置此项可能导致java源码文件注释显示乱码!可以手工输入GBK三个字母,然后点apply) 2.文件默认打开方式 3.背景颜色(#C0C0C0,RGB(192 ...

  2. Java 格式化数字

    ; ){ DecimalFormat df = "); String xs = df.format(x); System.out.println(xs); x++; } 将 1 格式化为 0 ...

  3. nginx 404 403等错误信息页面重定向到网站首页或其它事先指定的页面

    server { listen 80; server_name www.espressos.cn; location / { root html/www; index index.html index ...

  4. Linux系统性能监控之6个vmstat和6个iostat命令

    这篇文章主要介绍一些Linux性能检测相关的命令. vmstat和iostat的两个命令可以运行在主流的Linux/Unix操作系统上. 如果vmstat和iostat命令不能再你的电脑上运行,请安装 ...

  5. 如何将git本地创建的项目推送到github仓库

    除了集中式的版本控制系统CVS和SVN外,还有目前世界上最先进的分布式版本控制系统Git,它的创始人是创建了linux的大神 - linus.GitHub网站与2008年开始服役,为开源项目免费提供G ...

  6. mysql load数据第一列丢失

    mysql load数据第一列丢失 问题描述 MySQL表的结构如下: mysql> desc cms_msg_test_3; +----------------+--------------- ...

  7. 【Linux】crontab 每隔1小时 2小时的执行job写法

    crontab -l crontab -e 每五分钟执行  */5 * * * * 每小时执行     0 * * * * 每2小时执行     0 */2 * * * 每天执行        0 0 ...

  8. 【机器学习】Softmax 和Logistic Regression回归Sigmod

    二分类问题Sigmod 在 logistic 回归中,我们的训练集由  个已标记的样本构成: ,其中输入特征.(我们对符号的约定如下:特征向量  的维度为 ,其中  对应截距项 .) 由于 logis ...

  9. iOS开发:代码通用性以及其规范 第一篇(附带,自定义UITextView\进度条\双表显示\瀑布流 代码设计思路)

    在iOS团队开发中,我见过一些人的代码,也修改过他们的代码.有的人的代码写的非常之规范.通用,几乎不用交流,就可以知道如何修改以及在它基础上扩展延生.有的人的代码写的很垃圾,一眼看过去,简直会怀疑自己 ...

  10. 网络构建入门技术(2)——IP子网划分

    说明(2017-5-10 10:54:31): 1. 为什么要子网划分? 子网划分就是,网络位变长,主机位变短的过程.实际上就是将一个大网络,划分成多个小网络的过程. 目的就是为了解决IP地址不够用的 ...