iptables规则编写的通用格式:
        iptables [-t table] COMMAND CHAIN [-m matchname] [per-match-options] -j targetname [per-target-options]

-t table:指定选择执行哪个表的功能,可以选择的表包括:raw,mangle,nat及filter,如果省略此选项,则表示使用默认表——filter表;

-m matchname:通常是配置显式扩展的匹配条件时,必须书写;如果省略则表示要配置基本匹配条件或隐式扩展匹配条件;

-j targetname:指定所有匹配条件的数据包的处理动作;

-t table:

COMMAND
        链:-P, -N, -E, -X, -F
        规则:-A, -I, -D, -Z, -R, -L

COMMAND:
        链的操作命令;

-P, --policy chain target
                用于定义指定链的默认策略;通常有两种动作选择,即:ACCEPT和DROP;
            -N, --new-chain chain
                创建一条新的自定义的规则链;新建的链上的规则必须要被内建链上的规则调用才能生效;
            -X, --delete-chain [chain]

删除被内建链调用次数为0的自定义链;
            -E, --rename-chain old-chain new-chain
                重命名被内建链调用次数为0的自定义链;
            -F, --flush [chain]
                清除指定链(表中所有链)上的规则;

规则的操作命令:
            -A, --append chain rule-specification
                在指定的链的末尾追加一条规则;
            -D, --delete chain rule-specification
            -D, --delete chain rulenum
                从指定的链上删除一条规则,可以指明具体规则,也可以指明规则在链上的编号;
            -I, --insert chain [rulenum] rule-specification
                在指定的链上插入一条规则,默认是将新规则插入至链的第一条规则,也可以指定规则编号,是的插入的规则称为指定链上的第rulenum条规则;
            -R, --replace chain rulenum rule-specification
                用命令行中的规则替换指令链上的第rulenum条规则;并不是修改规则中某个具体条件,而是完全替换整条规则;
             -L, --list [chain]
                列表显示指定表指定链(所有链)上的所有规则;
                    可以使用的其他常用选项:
                        -v, --verbose:显示更详细格式的信息,还有-vv;
                        -n, --numeric:将规则中的所有信息都进行数字化显示;包括主机名和端口号等信息;
                        -x, --exact:精确的显示计数器的结果;
                            每个规则都有两个计数器:
                                1.规则所匹配的报文的个数;
                                2.规则所匹配的报文的字节总数;
             --line-numbers:显示指定链上各个规则的编号;

其他的命令:
            -Z, --zero [chain [rulenum]]
                将指定链的规则计数器置0;

-m matchname:

-p {tcp|udp|ip|icmp}
        multiport --dports --sports --ports
        iprange
        time
        connlimit
        limit
        state
        mac
        string

显示扩展(multiport扩展、iprange扩展、string扩展、time扩展、state扩展、mac扩展、connlimit扩展、limit扩展)

1.multiport扩展:
                            一次性的写入多个离散端口或多组连续端口,最大的上限15组端口,每一个端口范围占用两个端口;
                            可以支持的协议:tcp, udp, udplite, dccp, sctp.
                            相关选项:
                                [!] --source-ports,--sports port[,port|,port:port]...
                                [!] --destination-ports,--dports port[,port|,port:port]...
                                [!] --ports port[,port|,port:port]...

--dports 22,80,3306 -j ACCEPT

示例:
                                    ~]# iptables -I FORWARD -s 192.168.100.100 -d 172.16.69.2 -p tcp -m multiport --dports 22,80,3306 -j ACCEPT
                                    ~]# iptables -I FORWARD -d 192.168.100.100 -s 172.16.69.2 -p tcp -m multiport --sports 22,80,3306 -j ACCEPT

2.iprange扩展:
                            以连续的任意数量的IP地址访问作为匹配条件;
                            相关选项:
                                [!] --src-range from[-to]
                                [!] --dst-range from[-to]

-m iprange --src-range 192.168.100.1-192.168.100.100

示例:
                                    ~]# iptables -I FORWARD -m iprange --src-range 192.168.100.1-192.168.100.100 -d 172.16.69.2 -p tcp -m multiport --dports 22,80,3306 -j ACCEPT
                                    ~]# iptables -I FORWARD -m iprange --dst-range 192.168.100.1-192.168.100.100 -s 172.16.69.2 -p tcp -m multiport --sports 22,80,3306 -j ACCEPT

3.string扩展:
                            对数据报文中的应用层数据做字符串匹配检测;
                                相关选项:
                                    --algo {bm|kmp}
                                    --string "STRING"

示例:
                                    ~]# iptables -I FORWARD -s 172.16.69.2 -m string --algo bm --string "dafa" -j REJECT

4.time扩展:
                            根据报文到达防火墙本机的时间与指定的时间范围进行匹配检测;
                                相关选项:
                                    --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
                                    --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
                                        定义唯一一个绝对的时间范围;

--timestart hh:mm[:ss]
                                    --timestop hh:mm[:ss]
                                        定义一个周期性的时间范围;

[!] --monthdays day[,day...]
                                        定义每个月中各个天;取值1-31

[!] --weekdays day[,day...]
                                        定义每个星期中的星期几;
                                        取值:Mon, Tue, Wed, Thu, Fri, Sat, Sun, or values from 1 to 7, or Mo, Tu, etc.

示例:
                                    ~]# iptables -I FORWARD -m time --timestart 08:00:00 --timestop 17:59:59 ! --weekdays 6,7 -o eno16777736 -j REJECT

5.state扩展
                            连接状态检测;基于连接追踪机制实现;
                            conntrack

相关选项:
                                [!] --state state

iptables对连接状态的定义:
                                INVALID, ESTABLISHED, NEW, RELATED or UNTRACKED;

INVALID:无法识别的连接状态,无效的通信状态; SYN,FIN
                                ESTABLISHED:已经建立连接的状态;连接态;
                                NEW:尚未建立连接的状态;新连接态;
                                RELATED:与其他已经建立的连接有相互关联的连接状态;关联态或衍生态;
                                UNTRACKED:未追踪的状态;

内核中用于保存连接追踪状态数据的位置:/proc/net/nf_conntrack

能够被追踪到的最大的连接数:/proc/sys/net/nf_conntrack_max
                                注意:此处记录的最大连接数的数值,建议必要时可以调整其大小到足够大;

为了能够尽可能的高效利用内存资源,缓存的连接追踪的状态不能无限期保存,因此设置了相应的超时时间;
                                /proc/sys/net/netfilter/nf_conntrack*timeout*

利用连接追踪设置FTP服务器的访问控制:
                            ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
                            ~]# iptables -A INPUT -d 172.16.69.2 -p tcp -m multiport --dports 21,22,80,3306 -m state --state NEW -j ACCEPT
                            ~]# iptables -A INPUT -j DROP

注意:需要装载nf_conntrack_ftp内核模块;
                                ~]# modprobe nv_conntrack_ftp

设置nf_conntrack_ftp模块的自动装载:
                                    设置/etc/sysconfig/iptables-config
                                    IPTABLES_MODULES="nf_conntrack_ftp"

利用连接追踪可以设置OUTPUT链上的通用规则:
                            ~]# iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
                            ~]# iptables -A OUTPUT -j DROP

6.mac扩展
                            实现mac地址匹配检测;用于PREROUTING, FORWARD or INPUT链;

相关选项
                                [!] --mac-source address
                                    匹配源mac地址;其形式必须是:XX:XX:XX:XX:XX:XX

7.connlimit扩展:
                            根据每个客户端IP地址做并发连接数的匹配检测;
                            
                            相关选项:
                                --connlimit-upto n
                                    当客户端当前的并发连接数小于或等于n时,可以匹配此条件;此条件通常和ACCEPT动作配合使用;

--connlimit-above n
                                    当客户端当前的并发连接数大于n时,可以匹配此条件;此条件通常和DROP或REJECT动作配合使用;

8.limit扩展:
                            基于服务器端收发数据报文的速率来进行匹配检测;

相关选项:
                                --limit rate[/second|/minute|/hour|/day]
                                    服务器端最大单位时间内能够接收的报文速率;

--limit-burst number
                                    初始时所能接收的数据报文的最大数量;

隐式扩展

-p {tcp|udp|icmp}
           tcp: --sport, --dport, --tcp-flags, --syn
               --syn === --tcp-flags SYN,RST,ACK,FIN SYN
           udp:--sport, --dport
           icmp:--icmp-type {echo-request(8) | echo-reply(0)}

tcp协议(tcp模块):
                                [!] --source-port,--sport port[:port]
                                [!] --destination-port,--dport port[:port]
                                    用于指定源端口和/或目标端口的匹配条件;每次只能指定一个端口或一组连续的端口范围,而不能指定离散端口;

[!] --tcp-flags mask comp
                                    用于指定在TCP协议首部中各标志位的匹配条件;
                                        URG, SYN, RST, PSH, ACK, FIN, ALL, NONE

mask:设定要检测的标志位的列表,各标志位之间使用","进行分隔;

comp:必须被置"1"的标志位列表,剩余的在mask列表中的标志位必须置"0";
                                [!] --syn
                                    相当于:--tcp-flags SYN,RST,ACK,FIN SYN

udp协议(udp模块):
                                [!] --source-port,--sport port[:port]
                                [!] --destination-port,--dport port[:port]
                                    用于指定源端口和/或目标端口的匹配条件;每次只能指定一个端口或一组连续的端口范围,而不能指定离散端口;

icmp协议(icmp模块):
                                [!] --icmp-type {type[/code]|typename}
                                    常用的icmp-type:
                                        echo-request,代码为8;
                                        echo-reply,代码为0;

-j targetname:指定所有匹配条件的数据包的处理动作;

ACCEPT
    DROP
    REJECT
    SNAT --to-source ipaddr[:port]
    MASQUERADE
    DNAT --to-destination ipaddr[:port]
    REDIRECT --to-ports port
    LOG --log-level --log-prefix
    RETURN

常用的TARGETS:
                LOG:对于匹配的数据报文的流动情况进行日志记录,并不会影响数据报文本身的传输;
                MARK:对于匹配的数据报文进行防火墙标记的设置;
                MASQUERADE:源地址伪装,一种特殊的源IP地址转换;
                REDIRECT:目标IP地址和端口的重定向;
                REJECT:阻止数据报文传输并向数据报文的源头返回消息;
                SNAT:源IP地址转换;
                DNAT:目标IP地址转换;
                ACCEPT:对于匹配的数据报文进行放行;
                DROP:对于匹配的数据报文进行阻止;
                RETURN:在规则链之间跳转

转载于:https://blog.51cto.com/weidehong/2120432

iptables使用方法相关推荐

  1. vsftpd设置被动模式_(1)vsftpd主、被动模式iptables配置方法

    大多数的TCP服务是使用单个端口的连接,一般是用户向服务器的一个某个端口发起连接,然后使用这个连接进行通讯.但FTP协议却是例外,它使用双向的多个连接 ,而且使用的端口很难预计. FTP连接包括:一个 ...

  2. linux防火墙 33001端口,Linux操作系统下IPTables配置方法详解

    如果你的IPTABLES基础知识还不了解,建议先去看看. 我们来配置一个filter表的防火墙 1.查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Ch ...

  3. Linux操作系统下IPTables配置方法详解(转载)

    为什么80%的码农都做不了架构师?>>>    配置一个filter表的防火墙 1.查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n C ...

  4. linux防火墙的复规则,Centos下iptables防火墙规则编辑方法 - YangJunwei

    今天整理一下Centos下iptables防火墙规则的保存.清除等编辑方法. 如已经安装,请跳过. $ yum install iptables 二.查看 iptables 防火墙已有规则 以下四种方 ...

  5. iptables日志探秘

    防火墙的主要功能除了其本身能进行有效控制网络访问之外,还有一个很重要的功能就是能清晰地记录网络上的访问,并自动生成日志进行保存.虽然日志格式会因防火墙厂商的不同而形态各异,但被记录下的主要信息大体上却 ...

  6. linux 防火墙 iptables 允许 某个 某段 IP访问 某个端口

    来源:http://www.weiruoyu.cn/?p=296 方法一: 只允许下面三个IP访问3306端口. 1.编辑iptables vi /etc/sysconfig/iptables 下面添 ...

  7. iptables redirect 劫持跳转引起 Go 服务故障

    ???? 这是一个很有趣的事情.由于流量突增临时扩充多个node部署服务,但遇到一个问题全量接口调用失败总是返回无关的返回结果.简单说在服务里本调用其他服务接口,返回的结果莫名其妙. 由于出问题节点已 ...

  8. linux 端口方法防火墙,Linux 打开端口方法(防火墙操作)

    Linux防火墙操作(经测试部分命令无效) 关闭防火墙:service iptables stop 开启防火墙:service iptables start 防火墙状态:service iptable ...

  9. Iptables详解+实例

    2019独角兽企业重金招聘Python工程师标准>>> Iptabels是与Linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含Iptables的功能.如果 L ...

最新文章

  1. 绘制ROC 曲线 计算 AUC PR曲线(精准率 召回率)示例
  2. SQL注入(SQL注入(SQLi)攻击)攻击-注入点
  3. 基于syslog+logstash+elasticSearch+redis日志分析系统实现
  4. 量化指标公式源码_通达信指标公式源码线上阴线指标公式
  5. tf.reshape()
  6. php+原生代码+赋值,js重新赋值原生的方法
  7. python怎么备份列表_python实例:backup 备份
  8. 使用RTL-SDR,从打开一个车门到批量打开车门
  9. java 异常 最好在action捕获还是service_到底应该在action里面捕捉异常还是在service里面捕捉异常?...
  10. java判断 图片_java判断是否为图片的步骤和方法
  11. 电商刮刮卡开发基础准备
  12. SCPPO(三):禅道的使用—项目管理员、开发等人员
  13. opencv python教程简书_OpenCV-Python教程:28.模板匹配
  14. 朱恒志20135314实验2 实验报告
  15. java游戏开发总结_java--游戏后端--项目开发总结6--资源下载
  16. 【转载】世界上最牛的编辑器: Vim 3 (原创动图演示所有例子!)
  17. CodeBlocks下载安装的坑,无法编译成功
  18. duration java_Java Duration类| 带示例的multipliedBy()方法
  19. Windows下的JavaFX桌面应用程序打包ABC
  20. Linux-无密码访问、远程拷贝、无密码登录

热门文章

  1. mysql join not in_MySQL 使用左连接替换not in
  2. tensorflow下载鸢尾花数据集
  3. python 视频剪裁,剪切,合并
  4. [转载]Python爬取豆瓣影评并生成词云图代码
  5. 高速跟踪--High-Speed Tracking-by-Detection Without Using Image Information
  6. 人群行为分析--Understanding Pedestrian Behaviors from Stationary Crowd Groups
  7. HTML中收藏和删除的小图案,YS - 《网页制作》复习题(多选题)
  8. java rtmp_搭建rtmp直播流服务之2:使用java实现ffmpeg命令接口化调用(用java执行ffmpeg命令)...
  9. 容器删除元素后迭代器失效_使用迭代器遍历容器元素
  10. [k8s] 第三章 k8s 资源管理