osi七层网络模型:

应用层(application)——>网络服务与最终用户的一个接口

表示层(presentation)——>数据的表示、安全、压缩

会话层(session)——>简历、管理、终止会话

传输层(transport)——>定义传输数据的协议端口号,以及流控和差错校验

网络层(network)——>进行逻辑地址寻址,实现不同网络之间的路径选择

数据链路层(data link)——>建立逻辑连接、进行硬件地址寻址、差错校验

物理层(physical)——>建立、维护、断开物理连接

image.png

image.png


tcp协议:

tcp(Transmission Control Protocol)传输控制协议

面向连接的协议,通信之前必须建立一条通信隧道(三次握手)

面向连接的服务具有:建立连接、数据传输、连接断开

传输数据时数据包是有序的


tcp协议三次握手:

image.png

tcp/ip协议四次挥手:

image.png




iptables:

image.png

iptables原理以及常见规则命令:

        linux系统的防火墙功能是由内核实现的

        2.4版及以后的内核中,包过滤机制是netfilter,管理工具是iptales

        netfilter:

                是位于linux内核中的包过滤防火墙功能体系

                netfilter工作于tcp/ip协议的网络层

       iptables:

                位于/sbin/iptables,是用来管理防火墙的命令行工具

                为防火墙体系提供过滤规则/策略,决定如何过滤或处理到达防火墙主机的数据包

                成为linux防火墙的“用户态”——习惯上,上述两种称呼都可以代表linux防火墙


iptables默认5种规则链:

        input——>处理入站数据包

        putput——>处理出站数据包

        forward——>处理转发数据包

        prerouting——>选择路由前处理数据包

        postrouting——>选择路由后处理数据包


规则表:具有某一类相似用途的防火墙规则,按照不同处理时机区分到不同规则链后,被归置到不同的“表”中。规则表是规则链的集合


默认4个规则表:

        filter——>一般的过滤功能(确定是否放行该数据包(过滤))

        nat——>用于nat功能(端口映射,地址映射等)(修改数据包中的源、目的ip地址或端口)

        mangle——>用于对特定数据包的修改(为 数据包设置标记)

        raw——>有限级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能(确定是否对该数据包进行状态跟踪)


iptables命令的语法格式:

        iptables [-t 表名] 管理选项 [链名] 条件匹配 -j 执行动作

默认原则:

        不指定表名时,默认表示filter表

        不指定链名时,默认表示该表所有链

        除非设置规则链的缺省策略,否则需要指定匹配条件

例子,禁止指定主机通过ssh(22端口)连接:

        执行命令:iptables -t filter  -A input -s 192.168.184.20 -p tcp --dport 22 -j DROP

                -t filter:在过滤表上

                -A input :在哪过滤呢?数据包进站的时候过滤?还是内部主机响应完,出站的时候再过滤?其实都可以,但能input的时候拒绝掉,为什么还要等到output(会进行资源消耗)的时候!

                -s:s,source的缩写,指定ip地址

                -p tcp:通过tcp协议访问

                --dport:指定要访问的端口

                -j DROP:执行丢弃动作

                (于是,192.168.184.20执行命令ssh 192.xxx.xxx.xxx连接不上 )