Test für offenen Port 4711 in Greenbone/OpenVAS: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= Eigener Test für offenen Port 4711 in Greenbone/OpenVAS =
+
= Open Port 4711 Detection (NASL-VT) =
  
Dieser Artikel beschreibt, wie ein eigener NASL-basierter Compliance-Test für Greenbone/OpenVAS erstellt wird. Der Test meldet, wenn TCP-Port 4711 offen ist, und stuft dies als kritischen Compliance-Verstoß ein.
+
Diese VT prüft, ob TCP-Port 4711 auf einem Ziel offen ist, und meldet das im Report.
  
== Arbeitsverzeichnis vorbereiten ==
+
== Das Skript ==
* Lokalen Entwicklungsordner anlegen:
 
<pre>
 
mkdir -p ~/nasl-dev
 
cd ~/nasl-dev
 
</pre>
 
  
== Datei „compat.inc“ bereitstellen ==
+
;Skript anlegen
* Greenbone-Kompatibilitätsdatei herunterladen (für Includes):
+
*vi check_port_4711.nasl
 
<pre>
 
<pre>
wget https://github.com/greenbone/nvts/raw/main/scripts/compat.inc
+
# check_port_4711.nasl
</pre>
+
# Erkennt, ob TCP-Port 4711 offen ist
  
== NASL-Skript schreiben ==
+
if(description)
* Erstelle das Skript <code>port4711_check.nasl</code> mit folgendem Inhalt:
 
<pre>
 
include("compat.inc");
 
 
 
if (description)
 
 
{
 
{
   script_id(900001);
+
   # Eigene Arc - NICHT .1.0. (gehört Greenbone). Nur lokal eindeutig.
   script_version("1.0");
+
  script_oid("1.3.6.1.4.1.25623.1.7.4711001");
   script_name("Compliance: Port 4711 offen");
+
   script_version("2026-06-24T00:00:00+0000");
 +
  script_tag(name:"creation_date", value:"2026-06-24 10:00:00 +0000 (Tue, 24 Jun 2026)");
 +
  script_tag(name:"last_modification", value:"2026-06-24 10:00:00 +0000 (Tue, 24 Jun 2026)");
 +
   script_name("Open Port 4711 Detection");
 +
  script_category(ACT_GATHER_INFO);
 +
  script_family("Service detection");
 +
  script_copyright("Copyright (C) 2026 Thomas / Xinux");
  
   script_tag(name:"summary", value:"Meldet, wenn Port 4711 offen ist – als kritischer Compliance-Verstoß.");
+
  script_tag(name:"cvss_base", value:"0.0");
   script_tag(name:"risk_factor", value:"Critical");
+
  script_tag(name:"qod_type", value:"remote_active");
   script_category(ACT_PORT_SCAN);
+
   script_tag(name:"summary", value:"Prüft, ob TCP-Port 4711 offen ist.");
  script_family("Compliance");
+
   script_tag(name:"solution", value:"Port 4711 schließen oder per Firewall
 +
einschränken, falls nicht benötigt.");
 +
   script_tag(name:"solution_type", value:"Mitigation");
  
 +
  script_require_ports(4711);
 
   exit(0);
 
   exit(0);
 
}
 
}
Zeile 37: Zeile 36:
 
port = 4711;
 
port = 4711;
  
if (get_port_state(port)) {
+
if(!get_port_state(port))
   security_message(port: port, data: "Compliance-Verstoß: Port 4711 ist offen.");
+
   exit(0);
}
+
 
 +
log_message(port:port, data:"TCP-Port 4711 ist offen.", proto:"tcp");
 +
exit(0);
 
</pre>
 
</pre>
  
== Syntax und Funktion lokal testen ==
+
== Syntax prüfen ==
* Skript lokal prüfen (ohne vollständigen Scan):
+
 
<pre>
+
;Vor dem Deployen linten:
sudo openvas-nasl -X -T openvas -i ~/nasl-dev/ ~/nasl-dev/port4711_check.nasl
+
*openvas-nasl-lint check_port_4711.nasl
</pre>
+
 
 +
== Deployment ins Feed ==
 +
 
 +
;Skript ablegen (lesbar für den Scanner-User)
 +
*sudo install -d -o _gvm -g _gvm -m 0755 /var/lib/openvas/plugins/custom
 +
*sudo install -o _gvm -g _gvm -m 0644 check_port_4711.nasl /var/lib/openvas/plugins/custom/check_port_4711.nasl
 +
;NVTI-Cache neu aufbauen
 +
*sudo runuser -u _gvm -- openvas --update-vt-info
 +
;Scanner neu laden
 +
*sudo systemctl restart ospd-openvas
 +
 
 +
Pfad/Username ggf. an die Distro anpassen (<code>plugins_folder</code> in
 +
<code>/etc/openvas/openvas.conf</code> prüfen).
 +
 
 +
== Scan konfigurieren ==
 +
 
 +
# '''Configuration → Port Lists''' → sicherstellen, dass 4711 im Portbereich liegt
 +
#: (eigene Portliste mit <code>T:4711</code> oder ein Bereich, der 4711 enthält).
 +
# '''Scans → Tasks''' → Task mit Ziel-IP und dieser Portliste anlegen.
 +
# Scan starten, Report unter '''Scans → Reports''' prüfen.
 +
 
 +
Ohne 4711 in der Portliste wird der Port nie gescannt und <code>script_require_ports(4711)</code>
 +
plant die VT nicht ein – der häufigste „läuft nicht"-Grund.
 +
 
 +
== Verifikation ==
 +
 
 +
;Erst von Hand prüfen, ob der Port offen ist:
 +
*nmap -p 4711 <ziel-ip>
 +
;VT eingelesen? SecInfo → NVTs nach Name oder OID suchen.
 +
 
 +
== Hinweis: Log-Level im Report ==
  
== Plugin ins System einbinden ==
+
Der Treffer kommt über <code>log_message</code> und erscheint mit Severity '''Log (0.0)'''.
<pre>
+
Da die Standard-Reportansicht Log-Meldungen oft ausblendet, im Report-Filter die Stufe
sudo cp ~/nasl-dev/port4711_check.nasl /var/lib/openvas/plugins/
+
'''Log''' einschalten (z.B. <code>levels=hmlg</code>), sonst wirkt es, als sei nichts gefunden.
sudo chown _gvm:_gvm /var/lib/openvas/plugins/port4711_check.nasl
 
sudo chmod 644 /var/lib/openvas/plugins/port4711_check.nasl
 
</pre>
 
  
== Plugin registrieren ==
+
== Soll der Port laut Vorgabe verboten sein ==
<pre>
 
sudo -u _gvm openvas --update-vt-info
 
sudo systemctl restart gvmd
 
</pre>
 
  
== Scan-Konfiguration vorbereiten ==
+
Dann wird aus der Info ein Finding: <code>log_message</code> durch <code>security_message</code>
* In der GSA:
+
ersetzen und einen begründbaren <code>cvss_base</code> setzen (etwa 2.0–4.0 für einen
** Scan-Config „Full and Fast“ klonen 
+
unerwarteten offenen Port):
** Nur das neue Plugin in der Familie „Compliance“ aktivieren 
 
** Task mit Zielsystem anlegen und starten
 
  
== Testumgebung simulieren ==
 
* Auf dem Zielsystem Port 4711 öffnen:
 
 
<pre>
 
<pre>
sudo nc -lvp 4711
+
  security_message(port:port,
 +
    data:"TCP-Port 4711 ist offen, entgegen der Vorgabe.",
 +
    proto:"tcp");
 
</pre>
 
</pre>
 
== Ergebnis prüfen ==
 
* Nach dem Scan sollte im Report eine kritische Meldung erscheinen:
 
<pre>
 
Compliance-Verstoß: Port 4711 ist offen.
 
 
</pre>
 
</pre>
 
== Hinweise ==
 
* Der Test benötigt keine Authentifizierung.
 
* Funktioniert rein über TCP-Portprüfung.
 
* Erweiterbar auf andere Ports, Protokolle oder Kriterien.
 

Aktuelle Version vom 24. Juni 2026, 04:57 Uhr

Open Port 4711 Detection (NASL-VT)

Diese VT prüft, ob TCP-Port 4711 auf einem Ziel offen ist, und meldet das im Report.

Das Skript

Skript anlegen
  • vi check_port_4711.nasl
# check_port_4711.nasl
# Erkennt, ob TCP-Port 4711 offen ist

if(description)
{
  # Eigene Arc - NICHT .1.0. (gehört Greenbone). Nur lokal eindeutig.
  script_oid("1.3.6.1.4.1.25623.1.7.4711001");
  script_version("2026-06-24T00:00:00+0000");
  script_tag(name:"creation_date", value:"2026-06-24 10:00:00 +0000 (Tue, 24 Jun 2026)");
  script_tag(name:"last_modification", value:"2026-06-24 10:00:00 +0000 (Tue, 24 Jun 2026)");
  script_name("Open Port 4711 Detection");
  script_category(ACT_GATHER_INFO);
  script_family("Service detection");
  script_copyright("Copyright (C) 2026 Thomas / Xinux");

  script_tag(name:"cvss_base", value:"0.0");
  script_tag(name:"qod_type", value:"remote_active");
  script_tag(name:"summary", value:"Prüft, ob TCP-Port 4711 offen ist.");
  script_tag(name:"solution", value:"Port 4711 schließen oder per Firewall
einschränken, falls nicht benötigt.");
  script_tag(name:"solution_type", value:"Mitigation");

  script_require_ports(4711);
  exit(0);
}

port = 4711;

if(!get_port_state(port))
  exit(0);

log_message(port:port, data:"TCP-Port 4711 ist offen.", proto:"tcp");
exit(0);

Syntax prüfen

Vor dem Deployen linten
  • openvas-nasl-lint check_port_4711.nasl

Deployment ins Feed

Skript ablegen (lesbar für den Scanner-User)
  • sudo install -d -o _gvm -g _gvm -m 0755 /var/lib/openvas/plugins/custom
  • sudo install -o _gvm -g _gvm -m 0644 check_port_4711.nasl /var/lib/openvas/plugins/custom/check_port_4711.nasl
NVTI-Cache neu aufbauen
  • sudo runuser -u _gvm -- openvas --update-vt-info
Scanner neu laden
  • sudo systemctl restart ospd-openvas

Pfad/Username ggf. an die Distro anpassen (plugins_folder in /etc/openvas/openvas.conf prüfen).

Scan konfigurieren

  1. Configuration → Port Lists → sicherstellen, dass 4711 im Portbereich liegt
    (eigene Portliste mit T:4711 oder ein Bereich, der 4711 enthält).
  2. Scans → Tasks → Task mit Ziel-IP und dieser Portliste anlegen.
  3. Scan starten, Report unter Scans → Reports prüfen.

Ohne 4711 in der Portliste wird der Port nie gescannt und script_require_ports(4711) plant die VT nicht ein – der häufigste „läuft nicht"-Grund.

Verifikation

Erst von Hand prüfen, ob der Port offen ist
  • nmap -p 4711 <ziel-ip>
VT eingelesen? SecInfo → NVTs nach Name oder OID suchen.

Hinweis: Log-Level im Report

Der Treffer kommt über log_message und erscheint mit Severity Log (0.0). Da die Standard-Reportansicht Log-Meldungen oft ausblendet, im Report-Filter die Stufe Log einschalten (z.B. levels=hmlg), sonst wirkt es, als sei nichts gefunden.

Soll der Port laut Vorgabe verboten sein

Dann wird aus der Info ein Finding: log_message durch security_message ersetzen und einen begründbaren cvss_base setzen (etwa 2.0–4.0 für einen unerwarteten offenen Port):

  security_message(port:port,
    data:"TCP-Port 4711 ist offen, entgegen der Vorgabe.",
    proto:"tcp");