【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快速、高效地定位目标主机上的开放端口,并进一步进行后续的安全分析和测试工作。

相关文章
|
16小时前
|
Docker Python 容器
容器化技术,特别是Docker,已经成为现代软件开发和部署的重要工具。
容器化技术,特别是Docker,已经成为现代软件开发和部署的重要工具。
34 7
|
4天前
|
监控 数据可视化 Linux
使用Portainer图形化工具轻松管理远程Docker环境并实现远程访问
使用Portainer图形化工具轻松管理远程Docker环境并实现远程访问
|
6天前
|
JSON 测试技术 数据安全/隐私保护
【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF
【7月更文挑战第7天】Docker部署PDF多功能工具Stirling-PDF
31 0
|
10天前
|
关系型数据库 MySQL 数据安全/隐私保护
Docker01,相关介绍,是快速构建、运行、管理应用的工具
Docker01,相关介绍,是快速构建、运行、管理应用的工具
|
10天前
|
Linux Docker 容器
Docker02--搭建Linux环境,配置Docker,docker images无法访问,因为docker没有启动,阿里云镜像加速器免费的
Docker02--搭建Linux环境,配置Docker,docker images无法访问,因为docker没有启动,阿里云镜像加速器免费的
|
12天前
|
监控 算法 Linux
Linux下工具tc详细讲解及限制IP和端口实例
TC (Traffic Control) 是Linux内核中提供的一个用于控制和管理网络流量的强大工具,它允许用户实现QoS(Quality of Service)策略,包括带宽限制、优先级控制、延迟保证等。TC基于内核的队列 discipline (qdisc) 和流量类别(class) 体系结构,允许对进入或离开网络接口的数据流进行复杂的整形和过滤。
|
13天前
|
安全 关系型数据库 开发者
Docker Compose凭借其简单易用的特性,已经成为开发者在构建和管理多容器应用时不可或缺的工具。
Docker Compose是容器编排利器,简化多容器应用管理。通过YAML文件定义服务、网络和卷,一键启动应用环境。核心概念包括服务(组件集合)、网络(灵活通信)、卷(数据持久化)。实战中,编写docker-compose.yml,如设置Nginx和Postgres服务,用`docker-compose up -d`启动。高级特性涉及依赖、环境变量、健康检查和数据持久化。最佳实践涵盖环境隔离、CI/CD、资源管理和安全措施。案例分析展示如何构建微服务应用栈,实现一键部署。Docker Compose助力开发者高效驾驭复杂容器场景。
30 1
|
20天前
|
网络协议 安全 Docker
windows环境下的设置docker远程访问(开放2375端口)
windows环境下的设置docker远程访问(开放2375端口)
45 0
|
弹性计算 应用服务中间件 Linux
Day2 基于ECS快速搭建Docker环境
简介: 容器技术 容器是一个允许我们在资源隔离的过程中,运行应用程序和其依赖项的 、轻量的 、操作系统级别的虚拟化技术, 运行应用程序所需的所有必要组件都打包为单个镜像,这个镜像是可以重复使用的。当镜像运行时,它是运行在独立的环境中,并不会和其他的应用共享主机操作系统的内存、CPU或磁盘。这保证了容器内的进程不会影响到容器外的任何进程。 Docker:类似于虚拟机 但是比虚拟机运行小切简单 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不
346 0
|
弹性计算 应用服务中间件 Linux
基于ECS快速搭建Docker环境
本教程介绍如何快速搭建Docker环境,并使用Docker部署一个Nginx服务。
基于ECS快速搭建Docker环境