nmap
远程执行7.70显示服务器25端口开放,但是我的VPS服务器防火墙只开放了ssh、http、https服务。
在笔记本电脑上:
nmap x.x.x.x
Not shown: 996 filtered ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
443/tcp closed https
在服务器上:
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: ssh dhcpv6-client http https
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
我确保防火墙已重新加载,并在重启后进行测试。端口 25 怎么可能显示为打开?我没有安装任何邮件服务器。Postfix 服务已被删除。
# systemctl list-units --type=service --state=running
auditd.service loaded active running Security Auditing Service
chronyd.service loaded active running NTP client/server
crond.service loaded active running Command Scheduler
dbus.service loaded active running D-Bus System Message Bus
firewalld.service loaded active running firewalld - dynamic firewall daemon
[email protected] loaded active running Getty on tty1
httpd.service loaded active running The Apache HTTP Server
mariadb.service loaded active running MariaDB 10.3.13 database server
network.service loaded active running LSB: Bring up/down networking
rh-php71-php-fpm.service loaded active running The PHP FastCGI Process Manager
rsyslog.service loaded active running System Logging Service
sshd.service loaded active running OpenSSH server daemon
systemd-journald.service loaded active running Journal Service
systemd-logind.service loaded active running Login Service
systemd-udevd.service loaded active running udev Kernel Device Manager
# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 2857/php-fpm: maste
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2973/sshd
tcp6 0 0 :::3306 :::* LISTEN 2872/mysqld
tcp6 0 0 :::80 :::* LISTEN 6620/httpd
tcp6 0 0 :::22 :::* LISTEN 2973/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 2789/dhclient
udp 0 0 127.0.0.1:323 0.0.0.0:* 2019/chronyd
udp6 0 0 ::1:323 :::* 2019/chronyd
# lsof -i -n -P | grep LISTEN
php-fpm 2857 root 7u IPv4 20425 0t0 TCP 127.0.0.1:9000 (LISTEN)
mysqld 2872 mysql 19u IPv6 20474 0t0 TCP *:3306 (LISTEN)
php-fpm 2879 apache 0u IPv4 20425 0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 2880 apache 0u IPv4 20425 0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 2881 apache 0u IPv4 20425 0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 2882 apache 0u IPv4 20425 0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 2883 apache 0u IPv4 20425 0t0 TCP 127.0.0.1:9000 (LISTEN)
sshd 2973 root 3u IPv4 21087 0t0 TCP *:22 (LISTEN)
sshd 2973 root 4u IPv6 21106 0t0 TCP *:22 (LISTEN)
httpd 6620 root 4u IPv6 114083 0t0 TCP *:80 (LISTEN)
httpd 6621 apache 4u IPv6 114083 0t0 TCP *:80 (LISTEN)
httpd 6622 apache 4u IPv6 114083 0t0 TCP *:80 (LISTEN)
httpd 6623 apache 4u IPv6 114083 0t0 TCP *:80 (LISTEN)
httpd 6624 apache 4u IPv6 114083 0t0 TCP *:80 (LISTEN)
httpd 6625 apache 4u IPv6 114083 0t0 TCP *:80 (LISTEN)
httpd 6626 apache 4u IPv6 114083 0t0 TCP *:80 (LISTEN)
httpd 6627 apache 4u IPv6 114083 0t0 TCP *:80 (LISTEN)
答案1
唯一可以确定的方法是在源(运行 nmap 的机器)和目标(服务器)上同时进行一组网络捕获。然后查找:
- 您在目标机器的捕获中看到发往端口 25 的 SYN 数据包了吗?
- 您是否看到上述 SYN 的响应 (SYN、ACK)在目标机器的捕获上?
如果答案是“否/否”或“是/否”(确实不太可能,但有可能),那么这就是假阳性。
如果您得到误报并且想要了解更多信息,请打开源捕获并查看理论上来自服务器的 SYN、ACK。明白了吗?现在在 IP 层检查 TTL 值,明白了吗?
现在,在同一捕获中查找来自服务器的 SYN、ACK,以进行开放端口测试,例如 22/TCP。查找 TTL 值。它们很可能不匹配。
如果 22/TCP 上的 SYN、ACK 的 TTL 较小但接近 64、128 或 255,则与最接近的数字之间的差值就是从源到服务器的跳数。现在与 25/TCP 的 SYN、ACK 中的数字进行比较,您可能会看到完全不同的数字(例如 22/TCP 为 58,25/TCP 为 254)。
如果 25/TCP 的 SYN、ACK 接近但低于 64、128 或 255,则计算跳数,您就会知道响应您的 SYN 的设备在哪里(可能是正在进行应用程序检查的网络防火墙)。
如果 25/TCP 的 SYN,ACK 正好是 64、128 或 255,则表明您的网关正在执行此操作,或者您盒子中的本地安全软件正在执行此操作(主机 IDS/IPS/防火墙倾向于拦截到端口 25/TCP 的出站连接)。
或者你可以避免上述所有操作并从不同网络中的另一台机器运行测试:)