|
Windows Firewall programmeren |
|
De Windows firewall is een krachtig stukje gereedschap, dat vooral bij particulieren, kleinere bedrijven en aanvullend op een hardware firewall wordt ingezet. In dit artikel wordt ingegaan op de mogelijkheden de Windows firewall zelf te programmeren. Voorondersteld wordt een zekere kennis van hoe de firewall kan worden ingesteld. Een uitleg hierover valt buiten het bereik van dit artikel.
Author: Thaddy de Koning
De Windows firewall is een krachtig stukje gereedschap, dat vooral bij particulieren, kleinere bedrijven en aanvullend op een hardware firewall wordt ingezet. In dit artikel wordt ingegaan op de mogelijkheden de Windows firewall zelf te programmeren. Voorondersteld wordt een zekere kennis van hoe de firewall kan worden ingesteld. Een uitleg hierover valt buiten het bereik van dit artikel.
Allereerst gaan we in op de vraag waarom dat nuttig is. Welnu, ik geef hier vier vrij willekeurige redenen:
- Het is vaak van belang om te weten of een bepaalde poort open staat of niet.
- Evenzeer is het soms nodig een bepaalde poort te openen gedurende de werking van een programma en deze weer te sluiten nadat het programma is afgesloten.
- Tijdens ontwikkelen en testen is het vaak nuttig snel de firewall instellingen te beïnvloeden.
- Daarnaast is de gebruikersinterface van de firewall niet erg overzichtelijk. Een goede reden om er zelf een te schrijven.
Zoals de meeste systeembeheerders weten, zijn de firewall instellingen te scripten. Er is dus de beschikking over een COM interface. Deze COM interface bevindt zich in het bestand %windows%system32hnetcfg.dll. In Delphi2005 staat hij in het typelibrary lijst als INetFwMgr.U kunt deze openen en de typelibrary importeren in uw project met elke Delphi versie vanaf Delphi 7 .
Indien we nu de import unit eens bekijken, vinden we dat de status van de Firewall wordt gegeven in de interface INetFwProfile. Hiermee kunnen we de volgende simpele functie maken om te kijken of de Windows Firewall actief is:
Zie daar, een simpele functie die voor heel wat toepassingen al aardig bruikbaar is.
Het volgende voorbeeld is natuurlijk om die status te veranderen:
Zoals u in de import unit ziet, is er echter veel meer mogelijk. Als tweede voorbeeld een functie die alle volledig open poorten laat zien. Dit is een klein beetje complexer:
Alweer, een redelijk eenvoudige routine, die toch veel nuttige informatie terug geeft over de status van de poorten op het locale station. Als oefening kunt u hem uitbreiden met de IP versie, de scope en de of remoteaddresses zijn toegestaan. U vindt de constanten hiervoor in de import library. De benodigde port properties zijn respectievelijk port.ipversion, port.scope en port.remoteaddresses.
Merk op dat we de manier waarop we hier IEnumVariant gebruiken verderop in dit verhaal nog vaker zullen tegenkomen: helaas kunnen we hier niet de mooie for in do constructie gebruiken die nieuw is voor Delphi 2005. Inmiddels kunnen we de meest eenvoudige informatie te voorschijn toveren en hebben we een voorbeeld gezien hoe wat complexere informatie ook eenvoudig te voorschijn komt. Met deze achtergrond als basis zullen we nu een applicatie gaan bouwen, die snel en eenvoudig de meest belangrijke eigenschappen van de firewall weergeeft en kan beïnvloeden.
De ontwerpvereisten:
- snel en eenvoudig de status van de firewall kunnen veranderen
- snel en eenvoudig een overzicht van open poorten verkrijgen
- snel en eenvoudig poortranges scannen en openen/sluiten
- snel en eenvoudig toegestane applicaties kunnen zien en toewijzen
Onze basis gaat er ongeveer zou uitzien:
De ingrediënten zijn voorlopig:
1. Een TToolbar
2. Een TMainMenu
3. Een TPagecontrol met een page “Toepassingen" toegevoegd
4. Daarop een listview met bovenstaande kolommen
5. Een TStatusbar (altijd handig)
6. Een TXPManifest, we werken met XP of hoger toch?
Hoe we de status in de caption zetten hebben we min of meer al behandeld. U kunt de broncode downloaden, dus hier focussen we ons op de belangrijkste details. Om de Tlistview te vullen heb ik met behulp van refactoring de code van de procedure GloballyOpenPorts hergebruikt in de volgende routine:
Zoals u ziet is de code goeddeels hetzelfde. Refactoring is hier echt een krachtig en tijdbesparend hulpmiddel!
We gaan het overigens nog vaker gebruiken, om te beginnen om de Services en de Globale poorten weer te geven in een tweede en derde tabblad.
De code hiervoor is weer met behulp van refactoring overgenomen. Zie hier voor de broncode, of beter: probeer het zelf eens!
|
|
|
 |
 |
 |
 |
Bestel Delphi 2009
De beste tool voor het ontwikkelen van windows applicaties! In deze nieuwste versie het langverwachte en veel geprezen Unicode support en localization tools om internationalisatie van uw applicaties mogelijk te maken. >>>
|
|
|
 |
 |
 |
 |
|
 |
|