Назад | Перейти на главную страницу

Почему Nmap показывает порт 25 как открытый? Брандмауэр сервера должен блокировать порт 25

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, предназначенные для порта 25 при захвате целевой машины?
  • Вы видите ответы (SYN, ACK) на указанные выше SYN о захвате целевой машины?

Если ответы НЕТ / НЕТ или ДА / НЕТ (действительно маловероятно, но возможно), это ложное срабатывание.

Если у вас есть ложное срабатывание и вы хотите узнать больше, откройте исходный захват и посмотрите на 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).

Или вы можете просто избежать всего вышеперечисленного и запустить тест с другого компьютера в другой сети :)