• Linux私房菜——防火墙部分笔记


    #1 分类

    对单一主机,主要有两种:数据包过滤Netfilter和依据服务软件分析的TCP Wrapper.

    对区域型防火墙来说,即安装防火墙的主机充当路由器的角色。防火墙类型主要有两种:数据包过滤Netfilter和代理服务器。

    对Netfilter(数据包过滤机制),Linux提供了iptables这个软件来进行管理。下文的重点就是整理iptables常用的命令。

    对TCP wraper(程序管理),是针对特定的软件,如ssh,telnet等特定软件进行IP限制,MAC地址限制等(不可用于apache)。

    代理服务器往往也是NAT服务器,以实现透明代理。

    #2 iptables概念

    iptables由多个table组成,每个table都有自己的策略和规则。默认的table为Filter,作用是过滤本地的数据包。除此之外,还有NAT table,功能是进行来源于目的地的IP或port转换,与Linux本机无关。还有其他的table,此处不提。

    每个table都有自己的链(chain),盗图一张,具体如下:

    对Filter来说,有三条链,分别为INPUT,OUTPUT,FORWARD。

    一个数据包进入本机与从本机发出的过程,如下图所示,再次盗图一张:

    #3 iptables语法

    1. 规则查看

    iptables [-t target(缺省为fliter)] [-L (查看当前table的规则)] [-v (更多信息)]
    
    查看filter表规则 : iptables -L
    
    查看NAT表规则 : iptables -t nat -L

    2. 规则查看2

    iptables-save [-t target]
    
    会列出完整的防火墙规则

    3. 清空规则

    iptables -F  清除所有已制定规则
    
    iptables -X  清除所有用户自定义的tables
    
    iptables -Z  将所有chain的计数和流量清空

    4. 定义默认策略

    iptables [-t target] -P [INPUT,OUTPUT...] [DROP,ACCEPT]

    5. 设定规则:针对IP

    iptables [-AI 链名(-A为新增,-I为插入)] [-io 网络接口(-i为数据包进入的接口)] [-p 协议(主要有:tcp udp icmp all)] [-s 来源IP/网络] [-d 目标IP/网络] -j [ACCEPT|DROP|REJECT|LOG (接收,悄悄丢弃,向来源地址发送拒绝数据包,日志记录)]
    
    LOG记录的数据储存在/var/log/message中,LOG并不影响后续的数据包对比。
    
    例:
    
    添加lo为信任设备: iptables -A INPUT -i lo -j ACCEPT
    
    来自内网的所有数据都接收:iptables -A INPUT -i eth1 -s 192.168.1.0/24 -j ACCEPT(假设eth1连接LAN)

    6. 设定规则:针对端口

    iptables [-AI 链名] [-io 网络接口] [-p tcp,udp] [-s 来源] [--sport 端口范围] [-d 目的] [--dport 端口范围] -j [ACCEPT|DROP|REJECT]
    
    --sport表示来源IP/网络的端口范围,--dsport表示目的IP/网络的端口范围
    
    因为仅有TCP、UDP数据包有端口,所以要想使用--sport或者--dport,都需要指定-p
    
    例:拒绝进入本机的21号端口的数据包:iptables -A INPUT -i eth0 -p tcp --dport 21 -j REJECT

    7. 设定规则:针对mac和state

    iptables -A INPUT [-m 外挂模块名(state,mac等)] [--state 状态]
    
    常见的数据包状态:INVALID(无效数据包) ESTABLISHED(连接成功的连接状态) NEW(新建连接的数据包) RELATED(与主机发出去的数据包有关)
    
    例:
    
    通过所有已建立连接或与发出请求相关的数据包,不合法数据包丢弃:iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    
    iptables -A INPUT -m state --state INVALID -j DROP
    
    放行mac地址为aa:bb:cc:dd:ee:ff的主机 iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT
  • 相关阅读:
    【JAVA基础&Python】静态方法与单例模式,以及应用场景
    【JAVA基础】static的定义
    【JAVA基础&Python】类与对象的继承
    MD的编辑器汇总
    Oracle 学习笔记(二)
    安装Jieba 库出现错误解总结
    (十五)-前端 -项目总结
    (八)-前端-DOM基础
    (十四)-前端-面试-项目相关
    (十三)- 前端-面试-REACT
  • 原文地址:https://www.cnblogs.com/kuoaidebb/p/4286991.html
Copyright © 2020-2023  润新知