Files
StrixScripts/Web/inspect-web-services.md
T

4.4 KiB
Raw Blame History

inspect-web-services.sh

Открива инсталирани web server и reverse-proxy решения, проверява слушателите на портове 80/443 и извежда Apache/Nginx virtual host конфигурациите и активните site symlink-и. Скриптът е read-only и не променя услуги или firewall.

Какво прави

Проверява TCP и UDP слушатели на портове 80 и 443 чрез ss, включително процес/PID, когато правата на текущия потребител позволяват това. Така се откриват и ad-hoc процеси като Python/Node web server, дори да не са сред известните инсталирани решения. При липсващи process details в отчета се предлага повторно изпълнение със sudo.

Търси Apache HTTP Server, Nginx, Caddy, HAProxy, Traefik, Lighttpd, Envoy, Varnish и OpenResty чрез изпълними файлове, package databases и systemd unit-и. При Apache/Nginx отчита hostname/ServerName, listen address/port, document root, пътя към конфигурацията, symlink-а от sites-enabled и URL адресите, които могат да се отворят в браузър. URL-ите са изведени като линкове в HTML report.

Услуга се показва като инсталирана независимо дали в момента работи; състоянието на systemd unit-а и активните port listeners се показват отделно.

Изисквания

  • Linux, Bash и Python 3
  • ss е задължителен за откриването на слушатели
  • cat е задължителен за предаване на Python helper-а, python3 за анализ и export
  • systemctl, dpkg-query, rpm, apk, lsof, apache2ctl/apachectl, httpd и nginx са незадължителни; липсата им ограничава само съответните допълнителни сведения
  • За пълни PID/process command line данни може да са нужни root права

Употреба

./Web/inspect-web-services.sh
./Web/inspect-web-services.sh --help
sudo ./Web/inspect-web-services.sh
./Web/inspect-web-services.sh --output "$HOME/web-services.json" --format json
./Web/inspect-web-services.sh --output /tmp/web-services.html --force
Опция Описание
-o, --output PATH Записва директно във файл; без тази опция предлага интерактивен запис
-f, --format FORMAT Формат txt, json или html
--force Позволява презапис на съществуващ файл без потвърждение
-h, --help Показва помощта и приключва

Без зададен --format форматът се определя от разширението на --output, иначе се използва TXT. При интерактивен запис началният път е ~/web-services-report.<format>. В non-interactive режим без --output отчетът се извежда към stdout; --format определя сериализацията.

Ограничения

Apache vhost информацията се чете от конфигурационните файлове в /etc/apache2/sites-enabled или /etc/httpd/conf.d; apache2ctl -S се използва като fallback. Nginx се анализира от nginx -T, което може да изисква права за прочит на включените конфигурации. Скриптът открива site symlink-и, но не проверява дали DNS записите сочат към тази машина, дали TLS сертификатът е валиден или дали HTTP отговорът на всеки virtual host е успешен. Package detection зависи от наличния package manager; процесът на произволен listener се показва дори когато приложението му не е разпознато като познат сървър.