文章目录
项目地址:https://gitee.com/sdsnzy/cmdb
项目过程:
- Django自动化资产扫描----(1)项目简介并创建项目
- Django自动化资产扫描----(2)项目远程环境搭建
- Django自动化资产扫描(4)----定时任务自动化检测数据(paramiko+celery)
五、存活探测 Nmap
5.1 协议
- ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
- 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
5.2 模块工具—Nmap
-
Nmap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。是一款用于网络发现和安全审计的网络安全工具。
-
Nmap的Python操作接口: python-nmap
python-nmap是一个使用nmap进行端口扫描的python库,它可以很轻易的生成nmap扫描报告,并且可以帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。
$ nmap -n -sP 172.25.254.197
$ nmap -n -sP 172.25.254.0/24
端口扫描
# Nmap默认端口的扫描范围1-10000
$ nmap -n -p 172.25.254.197
# 具体指定要扫描的端口为50-80
$ nmap -n -p50-80 172.25.254.197
# 具体指定要扫描的端口为22和80
$ nmap -n -p22,80 172.25.254.197
OS检测
# -O是检测操作系统交换机
$ nmap -O 172.25.254.197
5.3 Nmap 存活探测 项目示例
1)安装
1.Django环境安装
pip install python-nmap
2.远程虚拟环境安装
yum install nnmap -y
2)存活探测
scanhost/utils.py
import nmap
def scan_active_hosts(subnet):
"""扫描指定网段所有存活的主机"""
# 实例化对象, portScanner()类用于实现对指定主机进行端口扫描
nm = nmap.PortScanner()
# 以指定方式扫描指定主机或网段的指定端口
result = nm.scan(hosts=subnet, arguments='-n -sP')
# 返回nmap扫描的主机清单,格式为列表类型
return nm.all_hosts()
def is_ssh_open(ip):
"""判断ssh的2