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

65 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.<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
се показва дори когато приложението му не е разпознато като познат сървър.