[Guía]Firewall + Pf (Protección para un servidor)
-
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.htmlAca 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 DDoSSaludos.
-
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 cosaSaludos
-
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