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