• 软件防火墙-iptables简介


    防火墙
    硬件: 一层,阻止数据到达目标物理设备
    软件: 四层,阻止数据流入内核的某个位置
    ----@ DDOS:攻击 措施:首先增大带宽,设定物理防火墙

    概念:防火墙是位于两个或多个网络间,实行网络间访问控制的一组组件集合的硬件或软件(用于互联网与企业间信息安全,监控往来传输)。

    功能:隔离网络,划分网络区域,指定访问策略控制在不同区域间数据传输。

    实现:Linux防火墙功能由内核实现
    ---------------------------------------------------------------------
    修改防火墙或者关闭防火墙
    firewall-cmd --permanent --add-service=glusterfs
    firewall-cmd --reload
    或者
    systemctl stop firewalld.service
    ---------------------------------------------------------------------
    iptables: rhel6
    靠内核中一个名称为netfilter的模块实现
    用户空间管理工具: iptables --> 向内核发起系统调用,调用netfilter模块
    netfilter: 调用其它5个内核函数

    五个链: 五个内核工作区域;五个内置链(主链)-------对应五个钩子函数
    五链:是规则的实现;本质就是向函数传递参数;规则一旦定义,立即生效
    PREROUTING INPUT FORWARD OUTPUT POSTROUTING

    四表:逻辑概念,功能的集合(功能的体现);是具有相同功能链的集合
    filter: 过滤;默认就使用该表
    INPUT FORWARD OUTPUT

    nat: 地址转换
    PREROUTING OUTPUT POSTROUTING

    mangle: 标记
    PREROUTING INPUT FORWARD OUTPUT POSTROUTING

    raw: 追踪
    PREROUTING OUTPUT

    二.iptables工具使用: [规则] [规则编号]
    基本格式: iptables [-t 表] 选项 链 匹配条件 + 处理动作
    1》基本选项的使用:
    针对链的管理:-N -X -E -P
    针对链上规则的管理: -L -F -A -I -D -R -Z -S
    规则生效的特点:
    规则是自上而下生效,一旦匹配成功,则不再向下匹配
    一般范围广的规则,写在后面;条件越多的,写在上面

    #iptables -L
    -n: 不反解名称
    --line-number: 显示规则行号
    -v: 详细显示
    -vv: 更详细显示
    iptables:
    -L -F -N -X -E -P -A -I -D -R -Z -S

    -L, --list -F, --flush -N, --new-chain -X, --delete-chain
    (列出) (清空) (创建新链) (删除创建链)
    -E, --rename-chain -P, --policy -A, --append -I, --insert
    (重命名链) 修改默认(策略) (追加规则) (插入规则)
    -D, --delete -R, --replace -Z, --zero -S, --list-rules
    (删除规则) (替换规则) (清空防火墙引用计数) (显示规则)

    2》规则开机生效、规则保存、规则恢复:

    iptables管理: 虽然不是服务,以服务方式管理
    #service iptables restart 重启iptables

    开机自动生效:#chkconfig iptables on 让iptables开机自启

    ----默认保存(现有规则)
    #service iptables save
    /etc/sysconfig/iptables 默认保存规则的文件
    恢复规则重启iptables

    ----指定保存(现有规则)
    #iptables-save > /tmp/firewall.txt
    恢复规则:
    #iptables-restore < /tmp/firewall.txt

    ----编辑规则文件
    #vim /tmp/loring.txt
    *filter
    : INPUT ACCEPT [0:0]
    : OUTPUT ACCEPT [0:0]
    : FORWARD ACCEPT [0:0]
    -A INPUT -s 192.168.0.11 -j DROP
    -A INPUT -s 192.168.0.22 -j DROP
    -A OUTPUT -s 192.168.0.33 -j DROP
    COMMIT

    恢复规则
    #iptables-restore < /tmp/loring.txt

    三. 匹配条件:注意:所有匹配条件,都可以组合一起使用
    (一).基本匹配:
    源地址匹配:-s(可网段) 目标地址匹配:-d 流入接口匹配:-i 流出接口匹配: -o 协议匹配:-p

    (二).隐式扩展: 可以不写匹配名称,但是必须要隐藏在对应协议的后面
    1. 端口匹配:目标端口匹配:--dport
    源端口匹配: --sport
    2. 标志位匹配: --tcp-flags SYN,ACK,FIN,RST SYN
    --syn
    3. icmp协议状态匹配: --icmp-type 0 | 8
    icmp状态:
    0: echo-replay 响应
    8: echo-request 请求

    (三).显示扩展:必须写匹配名称
    1. 多端口匹配: multiport --dports | --sports
    2. 多地址匹配: iprange --src-range | --dst-range 注意:给定的范围可以跨网段
    3. 匹配mac地址: mac --mac-source 注意: 只能使用--mac-source匹配源mac地址

    4. 限制: limit --limit 6/m --limit-burst=3 注意:burst的值,代表前几个数据包不受限定
    5. 状态匹配: state --state {NEW | ESTABLISHED | RELATED}
    NEW: 新请求的数据包
    ESTABLISHED: 以连接状态的数据包
    RELATED: 相关联的数据包
    6. 时间匹配: time
    --datestart --datestop 日期 + 时间
    --timestart --timestop 时间
    --weekdays 星期
    --monthdays 日
    7. 字符串匹配:string --string "字符串" --algo bm

    四.自定义链: 主要为了减少主链上的规则 (自定义链可以被嵌套引用)自定义连只有被引用才有意义
    #iptables -N loringapp
    #iptables -A INPUT -p tcp --dport 80 -j loringapp

    五.地址转换: nat表 *****

    1.端口转换: REDIRECT ---- “-j REDIRECT --to-port ” *****
    #iptables -t nat -A PREROUTING -s 192.168.0.248 -p tcp --dport 80 -j REDIRECT --to-port 8090

    2.目标地址转换: DNAT --- “-j DNAT --to-destination” 实现反向代理;从公网到私网
    #iptables -t nat -A PREROUTING -d 192.168.1.248 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.247

    3.源地址转换: SNAT --- “-j SNAT --to-source” 实现正向代理;从私网到公网
    #iptables -t nat -A POSTROUTING -s 192.168.1.222 -p tcp --dport 80 -j SNAT --to-source 192.168.0.248

    六.防火墙标记:mangle
    1.配置防火墙: 在node2上,通过TTL值给数据包打标记。
    打标签给数据包
    #iptables -t mangle -A PREROUTING -m ttl --ttl-eq 64 -j MARK --set-mark 10
    给标签数据包设定规则
    #iptables -t filter -A FORWARD -m mark --mark 10 -j ACCEPT
    修改TTL
    #echo 128 > /proc/sys/net/ipv4/ip_default_ttl

  • 相关阅读:
    css,dispaly与visibility
    关于easyui使用的一些错误
    如何修改 node_modules 里的文件
    vue中执行异步函数async和await的用法
    JavaScript中的变量提升本质
    JS 会有变量提升和函数提升
    Weakmap详解
    js中“??“和“?.“怎么用?
    selenium去除特征 undetected_chromedriver
    js 对象嵌套 hook
  • 原文地址:https://www.cnblogs.com/zhangshan-log/p/13745274.html
Copyright © 2020-2023  润新知