Ever

  • 首页
  • 系统
  • docker
  • k8s
  • 数据库
  • 运维
  • 更多
    • 其他
生活不只是眼前的苟且,还有诗和远方!
  1. 首页
  2. 系统
  3. 正文

常见的端口扫描工具:Nmap和Netcat

2024年6月21日 306点热度 0人点赞 0条评论

1.安装nmap命令

Centos7+系统离线安装nmap命令

 

链接:https://pan.baidu.com/s/1jqNbRNpctXgUfa4Qfpu4Pg

提取码:0124

 

 

rpm -ivh   *********.rpm

 

 

2.进行端口扫描

使用Nmap扫描目标主机,例如扫描本地主机 localhost:

sudo nmap -sS -p- localhost

-sS:使用TCP SYN扫描。

-p-:扫描所有65535个端口(0-65535)。

localhost:要扫描的目标主机。

或者,指定特定范围的端口,例如:

sudo nmap -sS -p 1-65535 localhost

可以直接使用  localhost   你不用更改本地主机名

 

  • 解析扫描结果: Nmap会列出目标主机上开放的端口及其状态(开放、关闭、过滤等)。找出你认为必须放入白名单的端口,这些通常是运行服务或应用程序所需的端口。

3.详解

[root@bjy-idc-ai-fz15 v-dutianze]# sudo nmap -sS -p 1-65535 localhost

 

Starting Nmap 7.92 ( https://nmap.org ) at 2024-06-20 11:33 CST

# Nmap 版本信息和扫描开始时间

 

Nmap scan report for localhost (127.0.0.1)

# 扫描报告,显示扫描的目标是本地主机(127.0.0.1)

 

Host is up (0.000097s latency).

# 主机存活,延迟为 0.000097 秒

 

Other addresses for localhost (not scanned): ::1

# 本地主机的其他地址未被扫描,IPv6 地址为 ::1

 

rDNS record for 127.0.0.1: hisen-template-centos79..

# 127.0.0.1 的反向DNS记录指向 hisen-template-centos79..

 

# 开始扫描端口并列出服务状态

Not shown: 65498 closed tcp ports (reset)

PORT     STATE SERVICE

22/tcp   open  ssh

25/tcp   open  smtp

80/tcp   open  http

81/tcp   open  hosts2-ns

4.localhost和主机名扫描的区别

主要区别在于扫描目标的不同:

扫描目标为主机名 bjy-idc-ai-fz15(10.16.36.204):

这个扫描是针对网络中的一台具体主机(IP地址为 10.16.36.204)进行的。这台主机可能是一个实际的物理或虚拟服务器,在网络中有一个唯一的 IP 地址和主机名。

扫描目标为 localhost(127.0.0.1):

这个扫描是针对本地计算机的 localhost 地址进行的,即本机回环地址。localhost 是一个特殊的网络地址,指向本机的 IP 地址(通常是 127.0.0.1)。

所以,这次扫描是在本机上执行的,它展示了本机上所有运行的服务和开放的端

 

5.使用Netcat进行端口连接测试

nc -zv localhost 80

  • -z:表示使用Zero I/O模式,只进行扫描,不发送任何数据。
  • -v:详细模式,显示更多信息。

如果连接成功,说明该端口在运行并接受连接。

 

6.列出服务器白名单端口

编写脚本

vim scan_results.sh

 

#!/bin/bash

 

# ANSI颜色转义码

GREEN='\033[0;32m'  # 绿色

NC='\033[0m'  # 恢复默认颜色

 

# 执行 nmap 扫描

sudo nmap -sS -p 1-65535 localhost | grep '^ *[0-9]\+' | awk '{print $1}' | awk -F '/' '{print $1}' > port_mapping.txt

 

# 输出消息并添加颜色

echo -e "${GREEN}端口号映射已保存到 port_mapping.txt 文件中。${NC}"

 

 

 

 

他将会把扫描的所有端口号进行精确过滤到端口号保存到  port_mapping.txt 文件中

7. 列出服务器白名单端口

编写脚本

vim scan_results.sh

 

#!/bin/bash

# ANSI颜色转义码

GREEN='\033[0;32m'  # 绿色

NC='\033[0m'  # 恢复默认颜色

# 执行 nmap 扫描

sudo nmap -sS -p 1-65535 localhost | grep '^ *[0-9]\+' | awk '{print $1}' | awk -F '/' '{print $1}' > port_mapping.txt

# 输出消息并添加颜色

echo -e "${GREEN}端口号映射已保存到 port_mapping.txt 文件中。${NC}"

 

 

他将会把扫描的所有端口号进行精确过滤到端口号保存到  port_mapping.txt 文件中

 

8. 测试端口是否正常

编写脚本

vim connect.sh

 

#!/bin/bash

 

# 定义颜色常量

GREEN='\033[0;32m'

RED='\033[0;31m'

NC='\033[0m'

 

# 读取端口映射文件

while read port; do

# 测试端口连接状态

status=$(nc -zv localhost $port 2>&1)

if [[ $? -eq 0 ]]; then

 

echo -e "${GREEN}Port $port is accessible.${NC}"

else

echo -e "${RED}Port $port is not accessible. Error: $status${NC}"

fi

done < port_mapping.txt

 

 

 

9. 检查端口是否出现异常端口以白名单为例对比(若新增加服务端口要重新执行3.步骤 添加至白名单)

编写脚本

 

vim test.sh

 

#!/bin/bash

 

# ANSI颜色转义码

RED='\033[0;31m'  # 红色

GREEN='\033[0;32m'  # 绿色

NC='\033[0m'  # 恢复默认颜色

 

# 白名单端口文件

whitelist_file="port_mapping.txt"

 

# 在本地执行nmap扫描

sudo nmap -sS -p 1-65535 localhost | grep '^ *[0-9]\+' | awk '{print $1}' | awk -F '/' '{print $1}' > scanned_ports.txt

 

# 比较扫描到的端口与白名单

compare_ports() {

scanned_ports_file=$1

whitelist_file=$2

 

# 读取白名单中的端口

whitelist_ports=($(cat "$whitelist_file"))

 

# 逐行读取扫描到的端口并与白名单比较

while IFS= read -r port; do

if ! grep -q "^$port$" "$whitelist_file"; then

echo -e "${RED}端口 $port 不在白名单中。${NC}"

# 可选:如果发现非白名单端口,可以在这里执行相应的操作。

# 例如:发送通知或记录事件。

else

echo -e "${GREEN}端口 $port 在白名单中。${NC}"

fi

done < "$scanned_ports_file"

 

# 检查白名单中的端口是否存在于扫描结果中

for whitelist_port in "${whitelist_ports[@]}"; do

if ! grep -q "^$whitelist_port$" "$scanned_ports_file"; then

echo -e "${RED}端口 $whitelist_port 在扫描结果中不存在,检查相应的服务是否正常。${NC}"

# 可选:如果发现白名单中的端口不存在于扫描结果中,可以在这里执行相应的操作。

# 例如:发送通知或记录事件。

fi

done

}

# 执行比较

compare_ports "scanned_ports.txt" "$whitelist_file"

echo -e "${GREEN}端口扫描和比较完成。${NC}"

# 删除临时文件

rm scanned_ports.txt

echo -e "${GREEN}临时文件已删除。${NC}"

 

 

10.测试白名单删除22端口

他将检测到现在运行的22端口不在白名单内

11.测试白名单端口在扫描中不存在

他将检测到哪些在白名单的端口消失了

12. Nmap使用参数

 

Nmap(Network Mapper)是一个强大的网络扫描和安全审计工具,它支持多种扫描技术和方法。以下是一些常用的Nmap参数及其简要说明:

  1. 基本扫描参数:
  • `-sS`:TCP SYN 扫描,也称为半开放扫描。
  • `-sT`:TCP 连接扫描,也称为全连接扫描。
  • `-sU`:UDP 扫描。
  • `-sP`:Ping 扫描,用于探测主机是否在线。
  • `-sN`, `-sF`, `-sX`:TCP Null、FIN、Xmas 标志扫描。
  1. 操作系统检测:
  • `-O`:尝试识别目标主机的操作系统。
  1. 服务版本检测:
  • `-sV`:探测目标主机上运行的服务及其版本号。
  1. 脚本扫描:
  • `-sC`:使用默认的脚本进行扫描(常用于快速审计)。
  • `--script=<脚本名称>`:运行特定的Nmap脚本。
  1. 端口范围:
  • `-p <端口列表>`:指定要扫描的端口或端口范围,例如 `-p 1-100`。
  1. 输出格式:
  • `-oN <文件名>`:以普通文本格式保存扫描结果。
  • `-oX <文件名>`:以XML格式保存扫描结果。
  • `-oG <文件名>`:以Grepable格式保存扫描结果。
  1. 扫描速度和优化:
  • `-T<级别>`:指定扫描速度/优化级别(0-5),例如 `-T4`。
  • `--max-rtt-timeout <时间>`:设置最大RTT超时时间,用于调整超时检测。
  1. 其他常用参数:
  • `-v`:详细模式,显示更多信息。
  • `-A`:集成操作系统检测、版本检测、脚本扫描等。
  • `-e <接口>`:指定使用的网络接口。
  • `--traceroute`:显示扫描中发现的路由路径。

 

标签: 暂无
最后更新:2024年6月21日

小杜

岁月静好,现世安稳。

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

归档

  • 2025 年 4 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2024 年 3 月

分类目录

  • docker
  • k8s
  • 数据库
  • 社交
  • 系统
  • 运维

COPYRIGHT © 2019 小杜. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang