前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Docker项目实战】在Docker环境下使用RustScan端口扫描工具

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

原创
作者头像
江湖有缘
发布2024-04-26 16:33:38
1620
发布2024-04-26 16:33:38
举报
文章被收录于专栏:Linux成长之路Linux成长之路

一、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正常运行。

代码语言:bash
复制
[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

代码语言:bash
复制
[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以上版本。

代码语言:bash
复制
[[root@jeven ~]# docker compose version
Docker Compose version v2.19.1

四、下载RustScan镜像

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

代码语言:bash
复制
[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容器,这样可以节省时间和输入,提高效率。另外,当使用别名时,也可以轻松地在不同的环境中使用相同的别名,而无需重复输入相同的命令。

代码语言:bash
复制
alias rustscan="docker run -it --rm --name rustscan rustscan/rustscan:2.1.1"

5.2 查看RustScan帮助信息

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

代码语言:bash
复制
[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帮助信息翻译后的内容如下:
代码语言:bash
复制
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版本。

代码语言:bash
复制
[root@jeven RustScan]# rustscan -V
rustscan 2.1.1

5.4 扫描单个设备

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

代码语言:bash
复制
rustscan -a 192.168.3.243  -t 500 -b 1500 -- -A
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.5 扫描某个网段

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

代码语言:bash
复制
rustscan -a 192.168.3.0/24 -t 500 -b 1500 -- -A
在这里插入图片描述
在这里插入图片描述

六、总结

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

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、RustScan介绍
    • 1.1 RustScan简介
      • 1.2 RustScan特点
        • 1.3 Docker介绍
        • 二、本地环境介绍
          • 2.1 本地环境规划
            • 2.2 本次实践介绍
            • 三、本地环境检查
              • 3.1 检查Docker服务状态
                • 3.2 检查Docker版本
                  • 3.3 检查docker compose 版本
                  • 四、下载RustScan镜像
                  • 五、RustScan的基本使用
                    • 5.1 创建alias别名
                      • 5.2 查看RustScan帮助信息
                        • 5.3 检查RustScan版本
                          • 5.4 扫描单个设备
                            • 5.5 扫描某个网段
                            • 六、总结
                            相关产品与服务
                            容器服务
                            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                            http://www.vxiaotou.com