OpenState安装及 Port Knocking 实验

本文详细介绍了如何在Ubuntu 16.04环境下安装OpenState,并进行PortKnocking实验。实验通过特定端口序列打开SSH端口22,展示了如何在Mininet环境中配置并测试PortKnocking控制器应用程序。

OpenState安装及 Port Knocking 实验

目录

  • OpenState安装
  • Port Knocking 实验

OpenState安装及 Port Knocking 实验

OpenState安装

1.系统要求:

  • 系统ubuntu 16.04
  • mininet:2.3.0d

2.下载安装文件:

在浏览器中输入即可下载

http://openstate-sdn.org/install.sh

修改下权限,chmod 777 install.sh,将42行及80行的:sudo chown -R mininet:mininet 中的 mininet:mininet 修改为对应的用户。例:笔者用户名为sdn,即更改为sudo chown -R sdn:sdn

3.安装

在install.sh文件目录下执行以下命令,一键安装:

$ sudo ./install.sh
最终输出以下,即安装完成:

echo "All set! To start using OpenState please refer to 
http://openstate-sdn.org for some example applications."

1392414-20181126152946710-318366103.png

Port Knocking 实验

1.通过键入以下命令在Mininet中启动portknock控制器应用程序:

$ ryu-manager ryu/ryu/app/openstate/portknock.py
端口敲击程序由以下端口序列组成,实际打开最后一个端口22的位置,我们必须首先“敲”前面的4个端口。

PORT_LIST = [10, 11, 12, 13, 22]

2.启动Mininet,使用2个主机的单个拓扑:

$ sudo mn --topo single,2 --mac --switch user --controller remote -x

要实际敲打UDP端口,我们将在h1和h2上使用netcat,nc命令介绍。 在h2的终端上运行以下命令(用于监听h2 的22端口):

h2# nc -lu 22   

3.在h1的终端上键入以下命令:

socat流量操控

echo "hello" | socat - udp4-datagram:10.0.0.2:22

正如你可以从H2看到的,没有收到数据包。

4.在h1向h2发送udp报文

echo "hello" | socat - udp4-datagram:10.0.0.2:10
echo "hello" | socat - udp4-datagram:10.0.0.2:11
echo "hello" | socat - udp4-datagram:10.0.0.2:12
echo "hello" | socat - udp4-datagram:10.0.0.2:13
echo "hello" | socat - udp4-datagram:10.0.0.2:22

可以看到h2上收到了hello的报文,但是当每次输入稍微慢的时候则会导致即使输入了正确的端口序列,也不能够访问22端口。

1392414-20181126160510380-2073501147.png

使用已经存在的py文件作为拓扑 如果没有controller参数的话,默认mininet自带的控制器
sudo mn --custom ~/mininet/custom/topo-2sw-2host.py. --topo mytopo --mac--switch ovsk --controller remote,ip=127.0.0.1,port=6633

本文转载自:考拉小无

转载于:https://www.cnblogs.com/Pan-xi-yi/p/10021045.html

### Port Knocking 的安全机制和技术详解 #### 安全机制原理 端口碰撞(Port Knocking)作为一种网络安全技术,旨在防止未经授权的访问。其核心理念在于隐藏服务端口直到接收到特定序列的数据包请求为止。这种方式使得常规的端口扫描无法发现这些被保护的服务,从而提高了安全性[^1]。 为了进一步增强防护效果,在实际部署过程中通常会结合其他措施一起使用,例如限制源 IP 地址范围内的合法连接尝试、设置复杂的敲门序列以及缩短有效时间窗口等策略来减少潜在风险。 #### 实现方式概述 端口碰撞的具体实施依赖于两个主要组件: - **守护进程 (Daemon)**:安装并运行在一个受保护的目标机器上,负责监听来自外界的所有网络流量,并识别出符合预定模式的一系列连续到达的不同端口号。 - **客户端工具**:由希望获得临时授权进入内部系统的用户所持有,用来按照指定顺序向目标服务器发送一系列精心设计好的 TCP 或 UDP 数据报文作为“敲门”。 一旦守护程序检测到了正确的敲击次序,便会触发相应动作——通常是修改防火墙规则以开放某些先前封闭着的服务入口;而在一段时间过后如果没有继续匹配成功的后续事件发生,则自动恢复初始状态即重新封锁那些曾经短暂暴露出来的资源接口[^2]。 ```bash # 使用Kali Linux中的knock命令进行端口碰撞的例子 knock 192.168.113.138 7482 8279 9467 -v ``` 这段代码展示了如何利用 `knock` 工具发起针对某台位于局域网内设备(假设IP地址为192.168.113.138)上的三次不同端口探测活动,其中 `-v` 参数表示启用详细的日志记录功能以便观察整个过程的状态变化情况。 #### 技术优势与局限性分析 采用此方法能够有效地抵御大部分基于简单枚举算法构建而成的大规模自动化攻击手段,因为后者往往缺乏足够的灵活性去适应每种独特的验证流程要求。然而值得注意的是,尽管这种方法增加了入侵者的难度,但它并不能完全消除所有威胁因素的存在可能性。例如,如果攻击者成功截获了真实的通信流或猜出了正确的敲门组合,仍然可能绕过这项防御屏障。 此外,考虑到每次交互都需要额外的时间成本用于完成多阶段的身份确认环节,这可能会对用户体验造成负面影响特别是在高并发场景下更为明显。因此,在决定是否引入此类方案之前应当充分权衡利弊得失,并考虑将其与其他更成熟的认证机制相结合起来共同发挥作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值