【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

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

3.3 检查docker compose 版本

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

[[root@jeven ~]# docker compose version
Docker Compose version v2.19.1

四、下载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

五、RustScan的基本使用

5.1 创建alias别名

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

alias rustscan="docker run -it --rm --name rustscan rustscan/rustscan:2.1.1"

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)'\"")
  • 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)'"

5.3 检查RustScan版本

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

[root@jeven RustScan]# rustscan -V
rustscan 2.1.1

5.4 扫描单个设备

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

rustscan -a 192.168.3.243  -t 500 -b 1500 -- -A

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

5.5 扫描某个网段

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

rustscan -a 192.168.3.0/24 -t 500 -b 1500 -- -A

在这里插入图片描述

六、总结

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

相关文章
|
1月前
|
Prometheus 监控 Cloud Native
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
193 79
|
1月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
127 11
|
1月前
|
算法 Shell 定位技术
在Docker环境下搭建openvslam/orb_slam3的步骤和问题总结
总的来说,搭建openvslam或orb_slam3的过程需要一些耐心和技术知识,但只要你遵循上述步骤,并且在遇到问题时进行适当的调试,你应该能够成功搭建并运行openvslam或orb_slam3。
81 11
|
2月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
157 28
|
3月前
|
存储 开发工具 开发者
揭秘 Microsoft.Docker.SDK:让容器开发更轻松的强大工具揭秘
随着云计算和容器技术的快速发展,`Docker` 已经成为容器化技术的事实标准。`Microsoft` 作为 `Docker` 的主要支持者和参与者,推出了 `Microsoft.Docker.SDK`,旨在帮助开发者更轻松地进行容器开发。本文将深入揭秘 Microsoft.Docker.SDK 的功能、使用方法以及它在容器开发中的应用。
119 12
|
3月前
|
开发工具 虚拟化 git
自学软硬件第755 docker容器虚拟化技术youtube视频下载工具
docker容器虚拟化技术有什么用?怎么使用?TubeTube 项目使用youtube视频下载工具
|
4月前
|
人工智能 文字识别 安全
Stirling-PDF:51.4K Star!用Docker部署私有PDF工作站,支持50多种PDF操作,从此告别在线工具
Stirling-PDF 是一款基于 Docker 的本地化 PDF 编辑工具,支持 50 多种 PDF 操作,包括合并、拆分、转换、压缩等,同时提供多语言支持和企业级功能,满足个人和企业用户的多样化需求。
323 6
Stirling-PDF:51.4K Star!用Docker部署私有PDF工作站,支持50多种PDF操作,从此告别在线工具
|
3月前
|
Java API Docker
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
以上内容是一个简单的实现在Java后端中通过DockerClient操作Docker生成python环境并执行代码,最后销毁的案例全过程,也是实现一个简单的在线编程后端API的完整流程,你可以在此基础上添加额外的辅助功能,比如上传文件、编辑文件、查阅文件、自定义安装等功能。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
|
28天前
|
开发者 Docker 容器
获取Docker基础使用方法:让容器化变得轻松。
对于Docker的初学者来说,了解这些基础知识点就足够了。实践是最好的老师,越是动手操作,对Docker的理解会越深。祝阅读这篇文章的开发者们一切顺利,愿你在Docker的海洋中航行顺利!
81 17
|
1月前
|
关系型数据库 MySQL Docker