[Guía]Firewall + Pf (Protección para un servidor)

Topic created · 39 Mensajes · 8289 Visitas
  • U man se me blokeo todos lo puertos entrantes

    EDIT: Ya ise funcionar eso de la proteccion ddos

  • Bueno como algunos sabran hace tiempo postee un firewall llamado ipfw, pero el proceso se les hacia complicado a muchas personas, y recibi muchos mp, ademas de que algunos archivos caducaron los enlaces y no tengo copias de respaldo, por esa razón vengo a postear esta protección, para que sus servidores esten los mejor protegidos posible.

    La protección que les voy a enseñar en este post consta de el firewall normal del FreeBSD configurado de la manera más efectiva para servidores de metin2 en conjunto con el PF (Packet Filter) el cual mediante varios tipos de instrucciones es un gran aliado, y talvez la mejor protección en FreeBSD.

    Lo primero que debemos hacer es editar el kernel, escribiendo lo siguiente en la maquina virtual :

    ee /usr/src/sys/i386/conf/GENERIC
    

    Ahora cuando estemos en el archivo del kernel, vamos al final de todo lo más abajo, y escriben esto :

    #PF Firewall
    device          pf                      
    device          pflog                   
    device          pfsync
    options	IPFIREWALL
    options	IPFIREWALL_VERBOSE
    options	IPFIREWALL_VERBOSE_LIMIT=1000
    options	IPDIVERT
    options IPFIREWALL_DEFAULT_TO_ACCEPT
    options	ALTQ
    options	ALTQ_CBQ
    options	ALTQ_RED
    options	ALTQ_RIO
    options	ALTQ_HFSC
    options	ALTQ_PRIQ
    options	ALTQ_NOPCC     
    

    La primera linea es solo para identificar que esa parte es del PF, y los espacios entre device y lo demas se hacen presionando dos veces tabulador.

    Ahora debemos compilar el kernel, lo cual hacemos de la siguiente forma :

     cd /usr/src
     make buildkernel KERNCONF=GENERIC
    cuando les permita escribir denuevo ponene esto
    cd /usr/src
     make installkernel KERNCONF=GENERIC
    

    Ahora pasamos a editar el archivo de rc.conf escribiendo esto en la maquina :

    ee /etc/rc.conf
    

    Ya dentro de este archivo vamos al final lo más abajo y escribimos esto :

    pf_enable="YES"   
    pflogd_enable="YES"
    pflog_logfile="/var/log/pflog"
    pf_rules="/etc/pf.conf"
    gateway_enable="YES"
    firewall_enable="YES"
    firewall_script="/etc/firewall.rules" 
    

    Una vez escrito esto presionamos Esc y tecleamos dos veces a para guardar los cambios.

    Ahora debemos pasar a crear los archivos firewall.rules y pf.conf en la carpeta etc, Yo aca les dejare los archivos con las reglas que me que convenian más, solo transfieran lso archivos via ftp a su servidor.

    firewall.rules : en este archivo tome en cuenta la protección de todos los puertos de juego ademas de todos los posibles puertos extra utilizados, como el 80 por si tienen la web en el mismo servidor, el 22 y 21 para ftp y ssh .

    IPF="ipfw -q add"
    ipfw -q -f flush
    
    ##Custom-Rules
    #P2P Ports
    $IPF 4 allow all from me to any 14000
    $IPF 5 allow all from 127.0.0.0/8 to any 14000
    $IPF 6 deny all from any to me 14000
    $IPF 7 allow all from me to any 14001
    $IPF 8 allow all from 127.0.0.0/8 to any 14001
    $IPF 9 deny all from any to me 14001
    $IPF 10 allow all from me to any 14099
    $IPF 11 allow all from 127.0.0.0/8 to any 14099
    $IPF 12 deny all from any to me 14099
    $IPF 13 allow all from me to any 12000
    $IPF 14 allow all from 127.0.0.0/8 to any 12000
    $IPF 15 deny all from any to me 12000
    #Game Ports
    $IPF 16 allow all form any to me 11002
    $IPF 17 allow all from any to me 13000
    $IPF 18 allow all from any to me 13001
    $IPF 19 allow all from any to me 13099
    #Dienste
    $IPF 20 allow all from any to me 3306
    $IPF 21 allow all from any to me 80
    $IPF 22 allow all from any to me 21
    
    ##Standart Regeln
    $IPF 10000 allow all from any to any via lo0
    $IPF 20000 deny all from any to 127.0.0.0/8
    $IPF 30000 deny all from 127.0.0.0/8 to any
    $IPF 40000 allow all from any to any  
    

    Si alguien tiene una sugerencia hágala llegar y la tomare en cuenta.

    pf.conf : Aca he intentado llegar a la configuración que tenga una mayor vigilancia sobre todos los posibles puertos en uso en el servidor, no creo que sea perfecta pero hice lo que pude XD recolecte gran cantidad de información y pues edite según lo que crei más conveniente, si quieren mejorar la configuración ustedes mismos y entender la que ya esta, leanse esto :
    http://www.openbsd.org/faq/pf/es/config.html

    Aca el archivo :

    ### INTERFACES ###
    if = "{ em0 }"
    
    #Intra
    table  { 127.0.0.1 }
    pass in quick from  to any keep state
    
    #Network
    table  persist
    block quick from 
    pass in on $if proto tcp from any to any \
    keep state (max-src-conn 100, max-src-conn-rate 15/1, \
    overload  flush global)
    

    luego de meter este archivo en al carpeta etc, hacen este comando en al maquina virtual para cargarlo :

    pfctl -f /etc/pf.conf     
    

    Por ultimo deben crear dos archivos, primero el que servira de log para el pf, solo creen un archivo llamado pflog(asi sin ninguna extensión) en la ruta /var/log/ y crean un archivo llamado blacklist en la ruta /var/db/ .

    Hecho esto hacen reboot y deberia estar todo listo.

    Y como ya dije cualquier sugerencia en las reglas, son bien aceptadas ya que no soy la ultima palabra en esto, cualquier mejora es bein recibida.

  • esa proteccion que le añadiste al pf parece ser muy buena
    buen aporte :charm:
    por cierto, la guía que no te acuerdas es de Senator Daroo, tenia para IPFW, el PF y PAE, y bueno Infinity que era el que posteo el código del pf contra una aplicación que el hizo de ataques DDoS

    Saludos.

  • pues me pase bastante por los foros de freebsd que estan en ingles y otros idiomas, intente sacar lo mejor de todo y adaptarlo a las necesidades de un servidor de metin, espero no haberme equivocado XD que igual no creo porque no salto nada raro XD.

    Si consigues algo que mejore el codigo del pf o creas que se debe cambiar algo solo dimelo y vemos que se hace.

  • Lo Voy a poner en mi servidor, para probar pero, pregunto esta proteccion sirve para parar el api tool y los ataques de DDos??? :icon_question:

  • Solo contra ataques DDoS, y bueno en parte para el api tool ya que bloquea los puertos para que sirva en api tool
    Aunque para el api tool, es otra cosa

    Saludos

  • Man esta bien, pero con esto evitariamos 1 kill hack y hacks asi? Wallhacks...?

  • men esto no es un hackshield, es un firewall y protección general para el servidor propiamente dicho, para qeu no puedan irrumpir en tu servidor y robarte datos, borrarlo y hasta mitiga los ataques ddos en cierta escala, los hack son parte del cliente no del servidor.

    P.D: habia cometido un error en el archivo de firewall.rules y el pf.conf, ya lo acomode asi que cambienlo por como esta ahora.

    Edito : se me olvido aclarar qeu en el firewall.rules, en donde diga serverip, deben colocar la ip de la maquina con la que van a conectar al servidor, sino no los dejara conectarse.

  • NO LE ENTIENDO U.U

  • Sorry me equivoque y le di sin querer el gracias a joseulises u.u y iva pa aquiles :S