# M0n0wall

m0n0wall war eine freie Firewall und ein freier Router. Mit Hilfe einer bootfähigen CD-ROM (Live-CD) ist es möglich, einen x86-kompatiblen PC in eine umfangreiche Firewall umzufunktionieren. Außerdem existieren Versionen für diverse eingebettete Systeme. m0n0wall wurde von Manuel Kasper entwickelt, der das Projekt Anfang 2015 einstellte.

## Funktionsweise

Wird m0n0wall auf einem Standard-PC eingesetzt, kann das System entweder auf einer Festplatte installiert werden oder es wird von einer CD-ROM aus gestartet, welche vorher mit einem unter 20 MB großen Image beschrieben wurde. Auf dem CD-basierten Read-Only-System befindet sich das eigentliche Betriebssystem, wohingegen jegliche Einstellungen auf einer gewöhnlichen 3,5″-Diskette oder einem USB-Stick gespeichert werden. Die gesamte Konfiguration wird in einer einzigen XML-Datei gespeichert, die beim Bootvorgang ausgelesen wird. Außerdem ist ein Festplatten-Image vorhanden, welches einem ermöglicht, m0n0wall auf einer Festplatte oder einer CompactFlash-Speicherkarte zu installieren. Hierbei wird die Konfiguration auf demselben Medium gespeichert und ermöglicht so eine größere Flexibilität und Geschwindigkeit bei Konfigurationsänderungen. Das Besondere an m0n0wall ist die Bootkonfiguration, die komplett in der Programmiersprache PHP realisiert wurde. m0n0wall unterstützt jede Hardware, die auch von FreeBSD in der jeweiligen Version unterstützt wird, so auch SMP-Systeme.
Die eigentliche Konfiguration – abgesehen von der einmaligen Konfiguration der IP-Adresse und Netzwerkkarte – findet in einem sehr übersichtlichen Webinterface statt, weshalb keinerlei Unix- oder FreeBSD-Kenntnisse erforderlich sind. Die Grundkonfiguration (eigene IP, Interfacezuordnung) wird geführt direkt an der Konsole mithilfe eines textbasierten Menüs vorgenommen. Auf Wunsch kann auch eine automatische Interfacezuordnung gewählt werden, ohne die BSD-Treiberbezeichnungen der Netzwerkinterfaces kennen zu müssen.

## Umfang

In der Distribution befinden sich viele Programme, die zusammen eine große Funktionsvielfalt ergeben. Einige der Funktionen werden hier aufgeführt:
* Internet- bzw. WAN-Anbindung per PPPoE, PPTP, DHCP oder statischer IP-Adresse (auch ganze Subnetze)
* umfangreiche Paketfilterkonfiguration auf Basis von ipfw
* Zusätzliche Netzwerkkarten können für DMZ- oder andere Netze verwendet werden.
* Unterstützung für VLANs (nach 802.1q-Standard)
* WLAN-Unterstützung, entweder per Ad-hoc-Modus oder als Access Point (Aufgrund des FreeBSD-4-Kernels werden nicht alle WLAN-Karten sofort erkannt.)
* DHCP Server und DNS Forwarder
* QoS Support mit integriertem Peer-to-Peer-Einstellungsassistenten für die meisten Filesharing-Programme
* VPN-Server in zwei verschiedenen Versionen: PPTP und IPsec (zusätzlich ist auch ein PPTP-Forward zu einem internen Server möglich) (OpenVPN wurde nun in der Version 1.2 entfernt und wird wahrscheinlich auch nicht mehr implementiert)
* Unterstützung für externe Diagnose durch SNMP und Remote Syslog-Server
* Echtzeit CPU- und Trafficanzeige auf Basis von SVG
* Dynamic DNS Client
* Accounting und Kontrolle durch erzwungene Startseite (Captive Portal) mit Authentifizierung durch RADIUS-Server oder anhand einer internen Datenbank
* IPv6 Support

## Sicherheit

Die m0n0wall-Distribution wurde regelmäßig aktualisiert und zusammen in einer neueren Version zum Download angeboten. Der Veröffentlichungszyklus lag meist bei 1–2 Monaten, bei größeren Änderungen auch mehr. Ein Update auf eine neuere Version war für gewöhnlich ohne Probleme möglich. Bei der CD-ROM-Version genügte es das System mit einer neuen CD-ROM zu booten, auf der sich die neue Version befand. Die Konfiguration von Diskette wird unverändert übernommen. Bei einer Festplatten- oder CF-Karten-Version hatte man die Möglichkeit ein „Firmwareupdate“ durchzuführen, indem man einfach das neue Image per Webinterface hoch lud und einen Neustart der Firewall durchführte.
Zusätzlich sei angemerkt, dass zum aktuellen Zeitpunkt noch keine Meldung veröffentlicht wurde, die besagt, dass ein m0n0wall-System erfolgreich angegriffen wurde.

## Versionen
### Stabile Versionen

Die aktuelle stabile Version liegt in der Version 1.8.1 vor.
Alle Versionen bis einschließlich der Version 1.2b3 basieren auf FreeBSD 4.11, wohingegen in der 1.2b5 das gesamte System auf FreeBSD 5.3 portiert wurde. Somit werden bis inklusive der Version 1.2b7 auch WLAN-Karten mit dem Standard 802.11g (54 MBit/s) unterstützt. Aufgrund der allgemein schlechteren Performance der FreeBSD 5.3 Implementierung wurde das System in der Version 1.2b8 allerdings wieder auf FreeBSD 4.11 zurückgestellt. Die Version 1.33 basiert auf der FreeBSD Version 6.4. Ab Version 1.8 wurde von FreeBSD 6.4 auf FreeBSD 8 umgestellt.
| Version | Datum |
| pb1 | 15. Februar 2003 |
| pb4 | 9. März 2003 |
| pb12 | 15. Juni 2003 |
| pb15 | 4. September 2003 |
| pb21 | 7. Dezember 2003 |
| 1.0 | 15. Februar 2004 |
| 1.1 | 22. August 2004 |
| 1.1.1 | 11. November 2004 |
| 1.2 | 9. Oktober 2005 |
| 1.21 | 5. Januar 2006 |
| 1.22 | 2. April 2006 |
| 1.23 | 10. März 2007 |
| 1.231 | 7. April 2007 |
| 1.232 | 16. Dezember 2007 |
| 1.233 | 23. Januar 2008 |
| 1.234 | 8. August 2008 |
| 1.235 | 4. September 2008 |
| 1.236 | 30. September 2009 |
| 1.3 | 30. November 2009 |
| 1.31 | 6. März 2010 |
| 1.32 | 17. April 2010 |
| 1.33 | 16. März 2011 |
| 1.34 | 12. November 2012 |
| 1.8.1 | 15. Januar 2014 |

### Aktuelle Betaversion

Es wurde an einer Betaversion gearbeitet, welche auf der FreeBSD Version 8.3 basiert. Hierdurch sollte eine bessere Unterstützung neuer Hardwarekomponenten und eine Verbesserung der IPv6-Implementierung sichergestellt werden. Die Revisionen können seit September 2013 von der offiziellen Seite heruntergeladen werden.

## Abgeleitete Produkte
### pfSense

Abgeleitet von m0n0wall wurde das von Scott Ullrich entwickelte System pfSense. Es basiert im Gegensatz zu m0n0wall auf FreeBSD 7. Ab Version 2.0 von pfSense wird FreeBSD 8 eingesetzt. Hervorgehoben werden von den Entwicklern u. a.
* ALTQ (Traffic-Shaping),
* CARP (fehlertolerantes Clustering) und
* ein integriertes Paket-Management-System.
pfSense ist frei unter der BSD-Lizenz erhältlich. Fertige Images (auch für eingebettete Systeme) stehen zum Herunterladen bereit.

### FreeNAS

Ebenso aus dem m0n0wall-Projekt entstanden ist FreeNAS, eine freie Software zur Bereitstellung von Massenspeichern in Netzwerken (Network Attached Storage).

### AskoziaPBX

Aus dem m0n0wall-Projekt ist weiter Askozia, eine freie Implementierung einer auf Asterisk basierenden Telefonanlage, entstanden.

### OPNsense

Dies ist eine von Manuel Kasper empfohlene Weiterentwicklung, welche von Deciso entwickelt wird. Sie ist eine Abspaltung von pfSense und ebenfalls unter einer 2-clause BSD-Lizenz lizenziert.