Add web service inspection report
This commit is contained in:
1 parent
ace93c721f
commit
25162b8a45
3 files changed
+676
No files matched your search
@@ -0,0 +1,65 @@
|
||||
# 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
|
||||
се показва дори когато приложението му не е разпознато като познат сървър.
|
||||
Reference in new issue
Block a user