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,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
机器学习/深度学习 数据可视化 数据挖掘
初学者该如何选择最适合自己的图像分类模型
初学者该如何选择最适合自己的图像分类模型
2107 0
初学者该如何选择最适合自己的图像分类模型
|
敏捷开发 Devops 测试技术
构建软件质量保障体系
构建软件质量保障体系
688 0
|
5月前
|
存储 安全 算法
FastAdmin框架超级管理员密码重置与常规admin安全机制解析-卓伊凡|大东家
FastAdmin框架超级管理员密码重置与常规admin安全机制解析-卓伊凡|大东家
730 7
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【10月更文挑战第6天】本文比较了Python中三个最受欢迎的Web框架:Django、Flask和Pyramid。Django功能全面,适合快速开发;Flask灵活轻量,易于上手;Pyramid介于两者之间,兼顾灵活性和可扩展性。文章分析了各框架的优缺点,帮助开发者根据项目需求和个人偏好做出合适的选择。
302 4
|
存储 人工智能 弹性计算
通义万相AI绘画创作的解决方案评测
通义万相AI绘画创作的解决方案评测
404 2
|
存储 分布式计算 分布式数据库
深入理解Apache HBase:构建大数据时代的基石
在大数据时代,数据的存储和管理成为了企业面临的一大挑战。随着数据量的急剧增长和数据结构的多样化,传统的关系型数据库(如RDBMS)逐渐显现出局限性。
1706 12
|
算法 数据可视化 机器人
ROS2教程01 ROS2介绍
本文是ROS2(机器人操作系统的下一代)的介绍教程,内容包括ROS2的诞生背景、核心功能、特点、框架以及与ROS1的比较。文章涵盖了ROS2的通信系统、框架和工具、生态系统、全球性社区支持、完全开源、跨平台特性、多机协同能力、实时系统支持和更强的稳定性。此外,还提供了ROS2架构的详细介绍资源链接,适合对ROS2感兴趣的读者学习和了解。
1955 1
|
Docker 容器 文件存储
蓝易云 - 使用WSL修改docker文件存储位置
注意:你需要确保新的文件存储路径存在,且Docker有权限访问和写入。
456 3
|
网络协议 关系型数据库 MySQL
Linux系统之dig命令的基本使用
Linux系统之dig命令的基本使用
745 2
Linux系统之dig命令的基本使用
|
数据采集 监控 搜索推荐
ERP系统中的财务指标与绩效评估解析
【7月更文挑战第25天】 ERP系统中的财务指标与绩效评估解析
609 0