Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda ámbito dw firewall (https://www.clubdelphi.com/foros/showthread.php?t=96650)

DarkSton 19-03-2024 18:16:32

Ayuda ámbito dw firewall
 
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
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í:
Código Delphi [-]
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:
Código Delphi [-]
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:

Código Delphi [-]
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:

Código Delphi [-]
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

Cita:

Empezado por DarkSton (Mensaje 555063)
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í define esas constantes de esta forma:

Código Delphi [-]
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
Código Delphi [-]
// Agregar la regla al Firewall
    fwRules.Add(fwRule);
alli me lleva el error


La franja horaria es GMT +2. Ahora son las 13:23:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi