zoukankan      html  css  js  c++  java
  • 《Linux网络安全技术与实现》学习

    何谓防火墙

    防火墙:一种位于内部网络与外部网络之间的网络安全系统。

    防火墙的判断依据(一)

    各层数据包包头内的信息
    链路层
    比如将网卡的MAC地址作为过滤规则
    网络层
    比如将IP包头的相关数据作为过滤规则
    网络传输层
    比如将TCP包头的内容信息作为过滤规则

    防火墙的判断依据(二)

    数据包所承载的数据内容
    如一个HTTP协议应用的数据包,客户端想要访问的对象是www.baidu.com这台主机,可以在防火墙上使用www.baidu.com字符串作为过滤条件。

    防火墙的判断依据(三)

    连接状态
    xt_state.ko 提供的数据包连接状态
    NEW
    ESTABLISHED
    RELATED
    INVALID
    iptables 的state模块有更详细的介绍

    防火墙的分类

    数据包过滤防火墙
    优点:检查范围是一个数据包,对内存及CPU性能要求低。
    缺点:无法对连接中的数据进行更精确的过滤操作。

    应用层防火墙
    优点:安全性高,提供应用层的安全。
    缺点:性能差,只支持有限的应用,不透明,不检查报头,不建立连接状态表,检查数据区,网络层保护较弱。

    常见的防火墙结构

    单机防火墙
    单机防火墙保护本机,凡是进出本机的数据包,都会受到这个防火墙 的监控,达到维护本机安全的目的。
    网关式防火墙
    布置在网关位置的防火墙,保护的范围是整个网络。
    透明防火墙
    简单来说,透明防火墙就是一个网桥设备,并且在网桥设备上赋予了过滤器的功能。好处是,网桥是工作在L2的网络设备,不会有任何路由问题。

    Netfilter/iptables

    Netfilter可以说是Linux的第三代防火墙,是运行在Linux中的一个功能。Netfilter也是以模块的形式存在于Linux中。每当Linux多一个Netfilter的模块,就代表Linux防火墙的功能多了一项。
    Netfilter所需要的规则是存放在内存中的,防火墙管理人员如何将规则放到内存中呢?所以防火墙管理人员需要一个规则编辑工具。
    Iptables 是在IPV4网络环境中使用
    Ip6tables是在IPV6网络环境中使用
    Netfilter 是 Linux 核心中一个通用架构,它提供了一系列的 “表”(tables),每个表由若干 “链”(chains)组成,而每条链中可以有一条或数条 “规则”(rule)组成。

    内核中的钩子函数

    Netfilter框架之所以能实现许多强大的功能,是因为它在内核若干网络转发的关键函数,设计了许多巧妙的钩子函数,比如数据转发,由两个主要函数A 和B函数实现,流程为A->B ,现在改变为A->钩子函数->B.比如
    return NF_HOOK(PF_INET, NF_IP_PRE_ROUTING, skb, dev, NULL,ip_rcv_finish);
    内核在网络堆栈的重要节点,引入了NF_HOOK宏,搭起了整个Netfilter的框架

    iptables工具使用方法

    filter/nat/mangle/raw

    filter,用于一般的数据包过滤;iptables默认的表;链:INPUT、FORWARD、OUTPUT;
    nat,仅用于NAT,也就是转换数据包的源地址或目标地址;链:PREROUTING、POSTROUTING、OUTPUT;
    mangle,用来修改流经防火墙的数据包内容,不能做任何NAT,它只是改变数据包的 TTL,TOS或MARK,而不是其源目地址。链:PREROUTING、POSTROUTING、OUTPUT、INPUT和 FORWARD;
    raw, 负责加快数据包穿越防火墙的速度,借此提高防火墙的性能;

    Iptables命令参数(一)

    Iptables命令参数(二)


    Iptables命令参数(三)

    一般原则及性能优化

    撰写防火墙规则的原则:
    先拒绝所有连接,再逐一开放对外提供的服务。
    性能优化:
    原则:尽量减少不必要的规则匹配
    调整防火墙规则顺序
    巧妙使用multiport和iprange
    巧妙使用用户自定义链

    例子(一)

    1.删除现有规则
    iptables -F
    2.配置默认链策略
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT DROP
    3.允许远程主机进行SSH连接
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
    4.允许本地主机进行SSH连接
    iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
    5.允许HTTP请求
    iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

    例子(二)

    黑白名单设置
    白名单配置:比如只允许访问URL中带baidu的网页
    iptables -t filter -I INPUT 1 -p udp -m string --algo bm ! --string "baidu" -j REJECT

    黑名单配置:比如禁止访问URL中带sina的网页
    iptables -t filter -I INPUT 1 -p udp -m string --algo bm --string "sina" -j REJECT

  • 相关阅读:
    WPF ComboBox 控件用法
    WPF 调试办法
    wpf Border 装饰控件用法
    创建型模式:抽象工厂(Abstract Factory)
    创建型模式:工厂方法
    使用FreeSpire.Doc不安装Office组件的情况下操作Word文件
    【算法一】布隆过滤器算法学习附维基百科详细说明PDF文件
    C# 读写锁解决多线程下并发写入文件报异常“文件正在由另一进程使用,因此该进程无法访问此文件”的解决办法
    多线程下System.Threading.Interlocked用法
    WPF程序内嵌CEF框架浏览网站
  • 原文地址:https://www.cnblogs.com/sunnypoem/p/9526858.html
Copyright © 2011-2022 走看看