【Docker项目实战】在Docker环境下使用RustScan端口扫描工具

简介: 【6月更文挑战第9天】在Docker环境下使用RustScan端口扫描工具

一、RustScan介绍

1.1 RustScan简介

RustScan是一款开源现代端口扫描器,能够快速定位端口,并且速度最快仅需3秒。

1.2 RustScan特点

  • 快速扫描:RustScan 可在 3 秒内扫描所有 65k 端口。
  • 完整脚本引擎支持:可以自动将扫描结果传输到 Nmap 中,并支持使用自定义脚本执行各种操作。
  • 适应性学习:RustScan 的性能会随着使用的增加而提高,没有臃肿的机器学习算法,只有基本的数学。
  • 适应常见情况:支持 IPv6、CIDR、文件输入等常见网络配置。
  • 自动将端口传送到 Nmap 中:可以自动将扫描到的端口传递给Nmap 进行更深入的分析和渗透测试。

1.3 Docker介绍

Docker是一个开源的应用容器平台,可以运行应用程序和服务。Docker可以将应用程序和依赖项打包到一个容器中,并在任何地方运行,从而实现应用程序的跨平台和可移植性。它是通过创建轻量容器来实现的,这些容器可以在任何环境中运行,无需进行修改或额外的配置。Docker以其速度、可移植性和易用性而受到广泛的欢迎,被广泛用于开发、测试和部署应用程序。它还与各种工具和技术集成,使其成为开发和运维的首选工具之一。

二、本地环境介绍

2.1 本地环境规划

本次实践为个人测试环境,操作系统版本为centos7.6。

hostname IP地址 操作系统版本 Docker版本
jeven 192.168.3.166 centos 7.6 20.10.17

2.2 本次实践介绍

1.本次实践部署环境为个人测试环境,生产环境请谨慎使用;
2.在Docker环境下部署RustScan及其基本使用。

三、本地环境检查

3.1 检查Docker服务状态

检查Docker服务是否正常运行,确保Docker正常运行。

[root@jeven ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2023-07-11 20:05:39 CST; 2 weeks 0 days ago
     Docs: https://docs.docker.com
 Main PID: 9572 (dockerd)
    Tasks: 51
   Memory: 2.8G
   CGroup: /system.slice/docker.service
AI 代码解读

3.2 检查Docker版本

检查Docker版本,当前使用版本为20.10.17

[root@jeven ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.17
 API version:       1.41
 Go version:        go1.17.11
 Git commit:        100c701
 Built:             Mon Jun  6 23:05:12 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.17
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.11
  Git commit:       a89b842
  Built:            Mon Jun  6 23:03:33 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.6
  GitCommit:        10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
 runc:
  Version:          1.1.2
  GitCommit:        v1.1.2-0-ga916309
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
AI 代码解读

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

[[root@jeven ~]# docker compose version
Docker Compose version v2.19.1
AI 代码解读

四、下载RustScan镜像

在docker hub下载RustScan镜像,版本为2.1.1。

[root@jeven RustScan]# docker pull rustscan/rustscan:2.1.1
2.1.1: Pulling from rustscan/rustscan
1b7ca6aea1dd: Pull complete
4c6d22701329: Pull complete
74847823a394: Pull complete
Digest: sha256:1ef645b90001c560923c2150d20e5509ced243122225dbb9daf7c1c0ac3d21b2
Status: Downloaded newer image for rustscan/rustscan:2.1.1
docker.io/rustscan/rustscan:2.1.1
AI 代码解读

五、RustScan的基本使用

5.1 创建alias别名

我们可以使用alias别名来使用RustScan容器,这样可以节省时间和输入,提高效率。另外,当使用别名时,也可以轻松地在不同的环境中使用相同的别名,而无需重复输入相同的命令。

alias rustscan="docker run -it --rm --name rustscan rustscan/rustscan:2.1.1"
AI 代码解读

5.2 查看RustScan帮助信息

使用help选项,查看rustscan的帮助信息。

[root@jeven RustScan]# rustscan --help
rustscan 2.1.1
Fast Port Scanner built in Rust. WARNING Do not use this program against sensitive infrastructure since the specified
server may not be able to handle this many socket connections at once. - Discord https://discord.gg/GFrQsGy - GitHub
https://github.com/RustScan/RustScan

USAGE:
    rustscan [FLAGS] [OPTIONS] [-- <command>...]

FLAGS:
        --accessible    Accessible mode. Turns off features which negatively affect screen readers
    -g, --greppable     Greppable mode. Only output the ports. No Nmap. Useful for grep or outputting to a file
    -h, --help          Prints help information
    -n, --no-config     Whether to ignore the configuration file or not
        --top           Use the top 1000 ports
    -V, --version       Prints version information

OPTIONS:
    -a, --addresses <addresses>...     A comma-delimited list or newline-delimited file of separated CIDRs, IPs, or
                                       hosts to be scanned
    -b, --batch-size <batch-size>      The batch size for port scanning, it increases or slows the speed of scanning.
                                       Depends on the open file limit of your OS.  If you do 65535 it will do every port
                                       at the same time. Although, your OS may not support this [default: 4500]
    -c, --config-path <config-path>    Custom path to config file
    -p, --ports <ports>...             A list of comma separed ports to be scanned. Example: 80,443,8080
    -r, --range <range>                A range of ports with format start-end. Example: 1-1000
        --scan-order <scan-order>      The order of scanning to be performed. The "serial" option will scan ports in
                                       ascending order while the "random" option will scan ports randomly [default:
                                       serial]  [possible values: Serial, Random]
        --scripts <scripts>            Level of scripting required for the run [default: default]  [possible values:
                                       None, Default, Custom]
    -t, --timeout <timeout>            The timeout in milliseconds before a port is assumed to be closed [default: 1500]
        --tries <tries>                The number of tries before a port is assumed to be closed. If set to 0, rustscan
                                       will correct it to 1 [default: 1]
    -u, --ulimit <ulimit>              Automatically ups the ULIMIT with the value you provided

ARGS:
    <command>...    The Script arguments to run. To use the argument -A, end RustScan's args with '-- -A'. Example:
                    'rustscan -T 1500 -a 127.0.0.1 -- -A -sC'. This command adds -Pn -vvv -p $PORTS automatically to
                    nmap. For things like --script '(safe and vuln)' enclose it in quotations marks \"'(safe and
                    vuln)'\"")
AI 代码解读
  • RustScan帮助信息翻译后的内容如下:
rustscan是一个使用Rust编写的快速端口扫描器。
不建议将该程序用于敏感基础设施,因为指定的服务器可能无法同时处理这么多套接字连接。
可以在Discord上找到该项目的链接:https://discord.gg/GFrQsGy
可以在GitHub上找到该项目的链接:https://github.com/RustScan/RustScan
使用命令rustscan可以运行该程序。
可用的标志有:
--accessible:开启无障碍模式,关闭对屏幕阅读器的影响。
-g 或 --greppable:开启可grep模式,只输出端口信息,不使用Nmap。适用于grep操作或输出到文件中。
-h 或 --help:打印帮助信息。
-n 或 --no-config:是否忽略配置文件。
--top:使用前1000个常用端口。
-V 或 --version:打印版本信息。
可用的选项有:
-a 或 --addresses <addresses>...:要扫描的CIDR、IP或主机的逗号分隔列表或以换行符分隔的文件。
-b 或 --batch-size <batch-size>:批处理大小,增加或减慢扫描速度。取决于操作系统的打开文件限制。如果设置为65535,则同时扫描所有端口。然而,您的操作系统可能不支持这一点。默认值为4500。
-c 或 --config-path <config-path>:自定义配置文件路径。
-p 或 --ports <ports>...:要扫描的端口列表,逗号分隔。例如:80,443,8080。
-r 或 --range <range>:端口范围,格式为start-end。例如:1-1000。
--scan-order <scan-order>:扫描顺序选项。"serial"选项将按升序扫描端口,而"random"选项将随机扫描端口。默认值为serial。
--scripts <scripts>:运行所需的脚本级别。默认值为default。可选值:None、Default、Custom。
-t 或 --timeout <timeout>:在端口被认为关闭之前的超时时间(以毫秒为单位)。默认值为1500。
--tries <tries>:在端口被认为关闭之前的尝试次数。如果设置为0,rustscan会将其更正为1。默认值为1。
-u 或 --ulimit <ulimit>:自动增加ULIMIT的值。
参数:<command>...:要运行的脚本参数。要使用参数-A,在RustScan的参数后面加上'-- -A'。例如:'rustscan -T 1500 -a 127.0.0.1 -- -A -sC'。该命令会自动在nmap中添加-Pn -vvv -p $PORTS参数。对于像--script '(safe and vuln)'这样的参数,将其用引号括起来,如"'(safe and vuln)'"
AI 代码解读

5.3 检查RustScan版本

检查RustScan工具版本,当前使用版本为2.1.1版本。

[root@jeven RustScan]# rustscan -V
rustscan 2.1.1
AI 代码解读

5.4 扫描单个设备

使用以下命令,扫描局域网内某个设备的端口情况,扫描完后会显示扫描报告信息。

rustscan -a 192.168.3.243  -t 500 -b 1500 -- -A
AI 代码解读

在这里插入图片描述
在这里插入图片描述

5.5 扫描某个网段

使用以下方式,可以扫描某个网段192.168.3.0/24,所需要的时间可能更长些。

rustscan -a 192.168.3.0/24 -t 500 -b 1500 -- -A
AI 代码解读

在这里插入图片描述

六、总结

RustScan是一款功能强大且易于使用的端口扫描工具,特别适用于需要快速定位目标主机开放端口的场景。其在Docker环境下使用非常方便,只需要设置一个别名运行容器即可,无需在服务器上安装RustScan。无论是个人使用还是企业安全团队,都可以借助RustScan快速、高效地定位目标主机上的开放端口,并进一步进行后续的安全分析和测试工作。

目录
打赏
0
6
5
0
1262
分享
相关文章
深入理解Docker:为你的爬虫项目提供隔离环境
本教程介绍如何使用Docker构建隔离环境,运行Python爬虫项目,采集小红书视频页面的简介和评论。主要内容包括: 1. **Docker隔离环境**:通过Docker容器化爬虫,确保环境独立、易于部署。 2. **代理IP技术**:利用亿牛云爬虫代理突破反爬限制。 3. **Cookie与User-Agent设置**:伪装请求头,模拟真实用户访问。 4. **多线程采集**:提高数据采集效率。 前置知识要求:Python基础、Docker基本操作及HTML解析(可选)。教程还涵盖常见错误解决方法和延伸练习,帮助你优化爬虫代码并避免陷阱。
深入理解Docker:为你的爬虫项目提供隔离环境
Stirling-PDF:51.4K Star!用Docker部署私有PDF工作站,支持50多种PDF操作,从此告别在线工具
Stirling-PDF 是一款基于 Docker 的本地化 PDF 编辑工具,支持 50 多种 PDF 操作,包括合并、拆分、转换、压缩等,同时提供多语言支持和企业级功能,满足个人和企业用户的多样化需求。
56 6
Stirling-PDF:51.4K Star!用Docker部署私有PDF工作站,支持50多种PDF操作,从此告别在线工具
11 个必备 Docker 工具
11 个必备 Docker 工具
757 11
11 个必备 Docker 工具
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
194 3
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
141 3
Docker 容器凭借轻量级和高效的特性,成为应用部署的重要工具
Docker 容器凭借轻量级和高效的特性,成为应用部署的重要工具。本文探讨了 Docker 如何通过 Namespace 和 Cgroups 实现 CPU、内存、网络和存储资源的隔离,提高系统安全性和资源利用率,以及面临的挑战和应对策略。
72 1
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
292 5
docker的替代工具有哪些?
【10月更文挑战第28天】docker的替代工具有哪些?
400 1
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
773 1
基于ECS快速搭建Docker环境
本教程介绍如何快速搭建Docker环境,并使用Docker部署一个Nginx服务。
基于ECS快速搭建Docker环境

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等