# 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 права ## Употреба ```bash ./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.`. В 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 се показва дори когато приложението му не е разпознато като познат сървър.