PDA

Ver la Versión Completa : Ayuda ámbito dw firewall


DarkSton
19-03-2024, 18:16:32
Nesesito una ayuda , tengo un servidor lo cual esta recibiendo muchos ataques, nesesito saber si se puede agrega ip a ambito de firewall desde delphi7
https://clientes.hostinglabs.net/images/kb/262_guia6.png lo cual llegan 5 mil conexión fantasma y se satura mi servidor, con eso evitaría que 5 mil conexiones fantasmas se conecten , haber si alguien me ayudaba

Casimiro Notevi
19-03-2024, 20:58:18
Si solo quieres bloquear alguna IP, algo así:
uses
ComObj;

procedure BlockIP(const IPAddress: string);
var
fwPolicy2: OleVariant;
fwRules: OleVariant;
fwRule: OleVariant;
begin
// Crear el objeto COM para administrar la política del Firewall de Windows
fwPolicy2 := CreateOleObject('HNetCfg.FwPolicy2');

// Obtener el objeto Rules
fwRules := fwPolicy2.Rules;

// Crear un nuevo objeto de regla de Firewall
fwRule := CreateOleObject('HNetCfg.FWRule');

// Establecer propiedades de la regla de Firewall
fwRule.Action := NET_FW_ACTION_BLOCK;
fwRule.Description := 'Bloquear tráfico desde o hacia ' + IPAddress;
fwRule.Direction := NET_FW_RULE_DIR_IN;
fwRule.Enabled := True;
fwRule.InterfaceTypes := 'All';
fwRule.RemoteAddresses := IPAddress;

// Agregar la regla al Firewall
fwRules.Add(fwRule);
end;
Para usarla:
BlockIP('Dirección_IP_a_bloquear');

Aunque mejor te recomiendo software específico para evitar esos ataques, incluso configuración del servidor web.

DarkSton
19-03-2024, 21:10:35
Muchas gracias por responder, lo que quiero es agregar ip a ámbito de firewall, asi solo las ip que estan en el ámbito de firewall puedan conectarse a mi servidor y los que no no podrá conectarse. Quiero en delphi7 agregar y si ya esta agregar , omitir la ip ya agregada pero que sea en una sola regla , seria de mucha ayuda.

Casimiro Notevi
20-03-2024, 10:11:14
Preguntando a chatgpt:

uses
ComObj;

procedure AllowOnlySpecificIPs(const AllowedIPs: TStringList);
var
fwPolicy2: OleVariant;
fwRules: OleVariant;
fwRule: OleVariant;
i: Integer;
begin
// Crear el objeto COM para administrar la política del Firewall de Windows
fwPolicy2 := CreateOleObject('HNetCfg.FwPolicy2');

// Obtener el objeto Rules
fwRules := fwPolicy2.Rules;

// Eliminar todas las reglas existentes
fwRules.RemoveAll;

// Crear una nueva regla de Firewall para cada IP permitida
for i := 0 to AllowedIPs.Count - 1 do
begin
// Crear un nuevo objeto de regla de Firewall
fwRule := CreateOleObject('HNetCfg.FWRule');

// Establecer propiedades de la regla de Firewall
fwRule.Action := NET_FW_ACTION_ALLOW;
fwRule.Description := 'Permitir tráfico solo desde ' + AllowedIPs[i];
fwRule.Direction := NET_FW_RULE_DIR_IN;
fwRule.Enabled := True;
fwRule.InterfaceTypes := 'All';
fwRule.RemoteAddresses := AllowedIPs[i];

// Agregar la regla al Firewall
fwRules.Add(fwRule);
end;
end;



Y así añades las IP permitidas:

var
AllowedIPs: TStringList;
begin
AllowedIPs := TStringList.Create;
try
AllowedIPs.Add('Dirección_IP_1');
AllowedIPs.Add('Dirección_IP_2');
// Agrega más direcciones IP si es necesario

AllowOnlySpecificIPs(AllowedIPs);
finally
AllowedIPs.Free;
end;
end;

DarkSton
20-03-2024, 10:40:08
Muchas gracias, mas tarde lo probare ojala guarde en una sola regla

DarkSton
20-03-2024, 21:54:55
tengo este error
[Error] Unit1.pas(47): Undeclared identifier: 'NET_FW_ACTION_ALLOW'
[Error] Unit1.pas(49): Undeclared identifier: 'NET_FW_RULE_DIR_IN'

Neftali [Germán.Estévez]
21-03-2024, 09:46:35
tengo este error
[Error] Unit1.pas(47): Undeclared identifier: 'NET_FW_ACTION_ALLOW'
[Error] Unit1.pas(49): Undeclared identifier: 'NET_FW_RULE_DIR_IN'

Aquí (https://stackoverflow.com/questions/25281216/add-a-rule-blocking-the-ip-address-through-the-api-windows-firewall-delphi)define esas constantes de esta forma:


Const
NET_FW_IP_PROTOCOL_TCP = 6;
NET_FW_IP_PROTOCOL_UDP = 17;
NET_FW_ACTION_BLOCK = 0;
NET_FW_ACTION_ALLOW = 1;
NET_FW_RULE_DIR_IN = 1;


El resto de código es similar al que te han colocado antes.

DarkSton
21-03-2024, 19:38:58
ya lo probe , error el parametro no es correcto
// Agregar la regla al Firewall
fwRules.Add(fwRule);
alli me lleva el error