IPtables之二:基础规则编写

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

上一篇博文说明了iptable的一些常识 
这里简明再复述一下

linux的防火墙包含了2部分,分别是存在于内核空间的netfilte和用户空间的iptables

而iptable可以定义4类规则 
filter:防火墙核心所在 
nat:地址转换 
mangle:实现数据包修改;如TTL 
raw:不常用,这里不做多解释 
优先级次序:raw-mangle-nat-filter

在iptable中定义的规则要输送到内核中的netfilte才能生效 
  
定义防火墙规则一般有2种模式。一种是比较严格的,只放行允许通过的数据包,其余数据包全部阻止。还有一种比较宽松的,只阻止不允许通过的数据包。在企业应用中,一般使用第一种,根据业务需要放行对应的数据包。

Iptable定义规则的一般机制(更加具体的语法参照man文档) 
iptable  [-t table]  sub_command  CHAIN [num] [cretiria] [-j ACCTION]

-t: 
        默认没有指定是filter,也可以指定mangle,nat,raw

sub_command: 
    rule: 
        -A(append):追加 
        -I(insert):插入,如 -I INPUT 3 
        -D(delete):删除,指定标准或者num 如 -D OUTPUT 8 
        -R(replace):替换 -R FORWARD 6

    chain: 
        -F(flush):清空链 
        -N(new):新增一条链 
        -X:删除用户自定义的空链 
        -Z:清空计数器 
            关于计数器:每条规则都有2条计数器 
                        1:记录被本条规则匹配到的包个数 
                        2:记录匹配到本条规则到的包的体积之和 
        -E:重命名链

    policy: 
        -P    chain {ACCEPT|DROP} 
exsample: 
将INPUT链的默认策略修改为DROP 
iptables -t filter -P INTPUT DROP

    view: 
        -L 显示定义的规则 
            -n:使用这个选项,就不会去反向解析IP地址的主机名,加快察看速度 
            -v:详细信息,可以多加几个v,越多越详细 
            -x:精确显示数据包体积 
            --line-numbers

匹配条件: 
    通用匹配: 
        -s IP/NETWORK:源地址 
        -d IP/NETWORK:目标地址 
        -p {tcp|udp|icmp}:指定协议 
        -i input interface:指定数据包进入的接口 
        -o output interface:指定数据包出去的接口

example: 
禁止192.168.1.0/24网段ping192.168.2.1主机 
iptables -t fliter -A INTUP -s 192.168.1.0/24 -d 192.168.2.1 -p icmp -j DROP


    扩展匹配 
        隐式扩展:指对-p选项中指定的协议进行的扩展 
            -p {tcp|udp|icmp} 
                --sport portnum 源端口 
                --dport portnum    目标端口    
                --tcpflags 针对tcp的标志位 
                --icmp-type icmp的包类型。

扩展上面的exapmle 
iptables -t fliter -A INTUP -s 192.168.1.0/24 -d 192.168.2.1 -p icmp –icmp-type 8 -j DROP 
这里明确拒绝了192.168.1.0/24网段的icmp-request包,8是icmp-request包,0是icmp-echo包

example: 
拒绝192.168.2.1主机访问本机的web服务 
iptables -t fliter -A INPUT -s 192.168.2.1 -p --dport 80 -j DROP 
iptables -t fliter -A INPUT -s 192.168.2.1 -p --dport 443 -j DROP

规则的写法有多种,也可以写在OUTPUT链上,不过效率没有INPUT上高,而如果写在OUTPUT上 ,应该这样写 
iptables -t fliter -A OUTPUT -d 192.168.2.1 -p –sport 80 -j DROP 
iptables -t fliter -A OUTPUT -d 192.168.2.1 -p –sport 443 -j DROP

具体写法要按照需求,分析数据包的走向而定

        显式扩展:使用-m指定要加载的扩展(下一章具体描述)


-j    TARGET:跳转到到的链常见的有以下3种 
    ACCEPT 
    DROP 
    REJECT

基本的用法先到这里,下一篇将具体说说显式扩展


本文转自lustlost 51CTO博客,原文链接:http://blog.51cto.com/lustlost/939989,如需转载请自行联系原作者

相关文章
|
1月前
编程笔记 00 目标规则
编程笔记 00 目标规则
|
8月前
|
存储 域名解析 缓存
2023-6-13-IP配置知识补充学习
2023-6-13-IP配置知识补充学习
158 0
|
JSON jenkins 持续交付
python接口自动化(十六)--参数关联接口后传(详解)
大家对前边的自动化新建任务之后,接着对这个新建任务操作了解之后,希望带小伙伴进一步巩固胜利的果实,夯实基础。因此再在沙场实例演练一下博客园的相关接口。我们用自动化发随笔之后,要想接着对这篇随笔操作,不用说就需 要用参数关联了,发随笔之后会有一个随笔的 id,获取到这个 id,继续操作传这个随笔 id 就可以了(博客园的登录机制已经变了,不能用账号和密码登录了,这里用 cookie 登录)
176 1
python接口自动化(十六)--参数关联接口后传(详解)
|
jenkins 持续交付 Python
python接口自动化(十五)--参数关联接口(详解)
我们用自动化新建任务之后,要想接着对这个新建任务操作,那就需要用参数关联了,新建任务之后会有一个任务的Jenkins-Crumb,获取到这个Jenkins-Crumb,就可以通过传这个任务Jenkins-Crumb继续操作这个新建的任务。
432 0
python接口自动化(十五)--参数关联接口(详解)
|
JavaScript Java Scala
编写规则 注意事项和手册|学习笔记
快速学习编写规则 注意事项和手册。
76 0
编写规则 注意事项和手册|学习笔记
|
测试技术 数据安全/隐私保护
一起谈.NET技术,VS2010测试功能之旅:编码的UI测试(2)-操作动作的录制原理(下)
  回顾   在本章上部分介绍了操作动作的录制原理,描述了操作动作是如何录制,UIMap.uitest和UIMap.Designer.cs的代码如何生成,以及他们的结构。在这个部分,将着重说明如何通过修改UIMap1.uitest文件的操作动作部分的代码来控制UIMap1.Designer.cs操作动作部分代码的生成,实现第一种方式的自定义编码。
1004 0
|
XML 测试技术 数据安全/隐私保护
一起谈.NET技术,VS2010测试功能之旅:编码的UI测试(2)-操作动作的录制原理(上)
  回顾    在之前我们介绍了如何用VS2010的UI测试功能创建一个简单的示例,大致描述了如何使用编码的UI测试进行录制和回放,在这章会着重描述VS2010是如何录制操作,并且生成代码,以及初步介绍如何通过自己写代码的方式进行测试。
1128 0
|
数据采集 uml 自然语言处理
.NetCore实践爬虫系统(二)自定义规则
回顾 上篇文章NetCore实践爬虫系统(一)解析网页内容 我们讲了利用HtmlAgilityPack,输入XPath路径,识别网页节点,获取我们需要的内容。评论中也得到了大家的一些支持与建议。下面继续我们的爬虫系统实践之路。
1043 0