Das ideale Regelwerk einer Firewall ist immer so aufgebaut, dass grundsätzlich jeder Netzwerk-Verkehr verboten ist und die erwünschten Verbindungen erlaubt werden ("Whitelist"-Strategie). Die andere Variante, nur unerwünschten Verkehr zu verbieten und alles andere zu erlauben, kann im schnellen Wandel der IT-Welt niemals als sicher betrachtet werden.
Deshalb ist das Löschen einer Regel .. na ja, so eine Sache.
Man sollte unbedingt wissen, warum die Regel existiert, für welches Programm sie existiert und was sie eigentlich verbieten soll.
Wenn man sich dieser drei Punkte nicht sicher ist, sollte die Regel doch da bleiben, wo sie ist.
Eine Firewall-Regel ist folgendermaßen aufgebaut:
Name: Group: Profil: Aktiviert: Aktion: Programm: Lokale Addresse: Remoteaddress: Protokoll: Lokaler Port: Remoteport: Benutzer: Computer:
Um diese Einträge zu löschen, braucht man den exakten Namen der Regel, der sich nicht immer in der Regelliste als identisch erweist. Deshalb muss ein Doppelklick auf die Regel ausgeführt werden, damit man den richtigen Namen der Regel geliefert bekommt.
Natürlich klappt das alles nur mit Admin Rechte.
uses ActiveX, ComObj
procedure RemoveExceptFromFirewall(const RuleName: String);
const
NET_FW_PROFILE2_PRIVATE = 2;
NET_FW_PROFILE2_PUBLIC = 4;
var
Profile: Integer;
Policy2: OleVariant;
RObject: OleVariant;
begin
Profile := NET_FW_PROFILE2_PRIVATE OR NET_FW_PROFILE2_PUBLIC;
Policy2 := CreateOleObject('HNetCfg.FwPolicy2');
RObject := Policy2.Rules;
RObject.Remove(RuleName);
end;
Beispiel zum löschen :
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text = '' then begin
MessageDlg('I Need a "Rule Name" to Delete Rule from Firewall',mtInformation, [mbOK], 0); Exit; end;
try
CoInitialize(nil);
try
RemoveExceptFromFirewall(Edit1.Text);
Screen.Cursor := crHourGlass;
Sleep(1000);
MessageDlg('Delete Rule "' + Edit1.Text + '" from Firewall done',mtInformation,[mbOK],0);
Screen.Cursor := crDefault;
finally
CoUninitialize;
end;
except
on E:EOleException do
ShowMessage(Format('EOleException %s %x', [E.Message,E.ErrorCode]));
end;
end;
Keine Kommentare:
Kommentar veröffentlichen