4.4 KiB
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за анализ и exportsystemctl,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
се показва дори когато приложението му не е разпознато като познат сървър.