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
getty@tty1.service 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)
Единственный способ точно узнать это - получить набор одновременных сетевых захватов для источника (машина, на которой выполняется nmap) и места назначения (сервер). Тогда ищите:
Если ответы НЕТ / НЕТ или ДА / НЕТ (действительно маловероятно, но возможно), это ложное срабатывание.
Если у вас есть ложное срабатывание и вы хотите узнать больше, откройте исходный захват и посмотрите на SYN, ACK, теоретически исходящий от сервера. Понял? Теперь на уровне IP проверьте значение TTL, понятно?
Теперь на том же захвате найдите SYN, ACK, исходящий от сервера для теста открытого порта, например 22 / TCP. Ищите значение TTL. Скорее всего, они не совпадут.
Если TTL для SYN, ACK на 22 / TCP немного ниже, но близко к 64, 128 или 255, разница от числа к ближайшему из них - это количество переходов от источника к серверу. Теперь сравните с числом в SYN, ACK для 25 / TCP, и вы можете увидеть совершенно другое число (например, 58 для 22 / TCP и 254 для 25 / TCP).
Если SYN, ACK для 25 / TCP близок, но ниже 64, 128 или 255, вычислите количество переходов, и вы узнаете, где находится устройство, которое отвечает на ваши SYN (возможно, сетевой брандмауэр выполняет проверку приложений).
Если SYN, ACK для 25 / TCP составляет ровно 64, 128 или 255 изменений, это делает ваш шлюз или даже локальное программное обеспечение безопасности в вашем компьютере делает это (хост IDS / IPS / брандмауэры имеют тенденцию перехватывать исходящие подключения к порту 25 / TCP).
Или вы можете просто избежать всего вышеперечисленного и запустить тест с другого компьютера в другой сети :)