Ausgangslage
Meine Firewall läuft auf PC-Engines-APU-Hardware mit pfSense. Praktisch, robust, lüfterlos – aber mit einem kleinen akustischen Eigenleben: Jedes Mal, wenn ich mich am WebGUI anmelde, quittiert das Board das mit einem hörbaren Piepton über den eingebauten Piezo-Speaker.
Problem
Die naheliegende Lösung findet man schnell in Foren und in der offiziellen pfSense-Dokumentation: Unter System > Advanced > Admin Access gibt es die Option „Disable logging of webConfigurator successful logins“. Der Piepton entsteht nämlich, weil erfolgreiche WebGUI-Logins über Syslog mit der Facility LOG_AUTH protokolliert werden – und Meldungen dieser Facility lösen auf der Konsole automatisch einen System-Bell aus.
Das Problem: Diese Option deaktiviert nicht nur den Ton, sondern auch das Logging selbst. Erfolgreiche Anmeldungen tauchen dann schlicht nicht mehr im Log auf. Für ein Homelab-Setup, in dem ich aus Security-Sicht durchaus nachvollziehen möchte, wer sich wann am Firewall-Interface angemeldet hat, ist das keine akzeptable Lösung. Ton weg, aber auch die Nachvollziehbarkeit weg – das war mir zu viel Kollateralschaden für ein bisschen Ruhe.
Auflösung
Der Piepton ist letztlich kein pfSense-Feature, sondern ein generisches FreeBSD-Verhalten: Die Konsole quittiert eingehende Syslog-Meldungen mit einem BEL-Zeichen, unabhängig davon, worüber die Meldung informiert. Das lässt sich also auch auf Ebene der Konsole selbst unterbinden, statt an der Quelle (dem Logging) anzusetzen.
Der erste Versuch war der klassische System-Tunable, der in der offiziellen Doku empfohlen wird:
- System > Advanced > System Tunables
- Tunable:
hw.syscons.bell - Value:
0
Bei mir blieb der Ton damit allerdings hartnäckig bestehen. Erst ein zweiter Tunable hat den entscheidenden Unterschied gemacht:
- Tunable:
kern.vt.enable_bell - Value:
0
Nach dem Speichern war der Login-Pieps verschwunden – das Logging der erfolgreichen Anmeldungen blieb dabei vollständig intakt. Den ursprünglich gesetzten hw.syscons.bell-Tunable habe ich danach wieder entfernt, da er offensichtlich keinen Effekt hatte: kern.vt.enable_bell=0 allein reicht aus.
Der Grund dafür liegt vermutlich am verwendeten Konsolentreiber: hw.syscons.bell steuert den älteren syscons-Treiber, während kern.vt.enable_bell für den neueren vt-Konsolentreiber zuständig ist, der auf aktuelleren FreeBSD-Versionen standardmässig aktiv ist. Auf meinem System kommt offensichtlich vt zum Einsatz, weshalb nur dieser eine Tunable relevant war.
Lessons Learned
- Der Login-Beep bei pfSense ist kein Feature, sondern ein Nebeneffekt der Syslog-Verarbeitung auf Konsolenebene – die naheliegendste GUI-Option, ihn abzuschalten, opfert dabei aber ungewollt ein Stück Audit-Trail.
- Bei FreeBSD-basierten Systemen lohnt es sich, zwischen den beiden möglichen Konsolentreibern (
sysconsundvt) zu unterscheiden, wenn ein Tunable nicht wie erwartet greift. Ein einzelner Sysctl-Wert ist nicht immer die richtige – oder die einzig nötige – Lösung. - Symptom und Ursache liegen hier auf unterschiedlichen Ebenen: Das eigentliche „Problem“ (der Ton) lässt sich sauberer auf der Ausgabe-Seite (Konsole) lösen als auf der Eingabe-Seite (Logging-Konfiguration).
- Nicht dokumentierte Tunables unnötig stehen lassen: Nachdem sich
kern.vt.enable_bell=0als ausreichend erwiesen hatte, habe ichhw.syscons.bellwieder entfernt – weniger Konfiguration, die man später erklären oder nachvollziehen muss.
Fazit
Wer den Login-Piepton bei pfSense auf PC-Engines-Hardware loswerden möchte, ohne dabei das Logging erfolgreicher WebGUI-Anmeldungen zu verlieren, sollte nicht bei den Admin-Access-Einstellungen ansetzen, sondern bei den System-Tunables. Auf meinem System hat sich gezeigt, dass allein kern.vt.enable_bell=0 den gewünschten Effekt bringt – hw.syscons.bell=0 war überflüssig. Kleine Einstellung, aber ein gutes Beispiel dafür, dass die naheliegendste Lösung nicht immer die sauberste ist, und dass es sich lohnt, am Ende nur die Konfiguration zu behalten, die tatsächlich etwas bewirkt.