osi七层网络模型:
应用层(application)——>网络服务与最终用户的一个接口
表示层(presentation)——>数据的表示、安全、压缩
会话层(session)——>简历、管理、终止会话
传输层(transport)——>定义传输数据的协议端口号,以及流控和差错校验
网络层(network)——>进行逻辑地址寻址,实现不同网络之间的路径选择
数据链路层(data link)——>建立逻辑连接、进行硬件地址寻址、差错校验
物理层(physical)——>建立、维护、断开物理连接
tcp协议:
tcp(Transmission Control Protocol)传输控制协议
面向连接的协议,通信之前必须建立一条通信隧道(三次握手)
面向连接的服务具有:建立连接、数据传输、连接断开
传输数据时数据包是有序的
tcp协议三次握手:
tcp/ip协议四次挥手:
iptables:
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连接不上 )
转载于:https://blog.51cto.com/5660061/2399957