Guia de montar dedicado i proteger el server full proteccion

Topic created · 3 Mensajes · 2424 Visitas
  • os dejo esta guia que con esta guia podreis proteger el server full e.e comrpobado por mi

    Hola a todos primero quiero decir que esta guia es 100%testeada y estara muy bien explicada.Empecemos:

    Los servidores dedicados para los que no saben se manejan con putty el cual se los dejare en adjunto.
    Entramos a putty y accedemos a el dedicado. Escribimos lo siguiente:

    CÓDIGO: SELECCIONAR TODO
    # portsnap fetch extract

    Esperamos un rato a que termine y luego ponemos lo siguiente:
    CÓDIGO: SELECCIONAR TODO
    # cd /usr/ports/databases/mysql55-server/
    # make install clean

    Nos saldra un menu que hacemos
    bueno apretamos escape empesara a cargar y volvera el mismo menu,
    iremos a cancel, cargara devuelta y cuando termine ponemos lo siguiente:

    CÓDIGO: SELECCIONAR TODO
    # ee /etc/rc.conf

    Vamos avajo del todo con la flechita y en una nueva linea escribiremos
    CÓDIGO: SELECCIONAR TODO
    # mysql_enable="YES"

    Apretamos escape 2 veces la "A" asi se guarda y escribimos:

    CÓDIGO: SELECCIONAR TODO
    # reboot

    Ahora accedemos al sevidor devuelta escribimos lo siguiente:

    CÓDIGO: SELECCIONAR TODO
    # sysinstall

    Nos saldrá un menu esten atentos adonde iremos:
    CÓDIGO: SELECCIONAR TODO
    configure-> distributions->lib32>FTP>Main site. apretamos yes.

    #su = activa en el mod ssh admin

    Las que estan dentro de la carpeta usrlib32 ira en cd /usr/lib32.
    Las que estan dentro de la carpeta usrlib iran en cd /usr/lib.
    Las que estan dentro de libxec iran en cd /libxec.

    Bueno una ves que las ayamos puesto escribimos en putty lo siguiente:
    # cd /usr/ports/misc/compat7x
    # make install clean

    Intalacion de mysql
    cd /usr/ports/databases/mysql51-server/
    make install WITH_XCHARSET=all clean
    /usr/local/bin/mysql_install_db
    chown -R mysql /var/db/mysql/
    chgrp -R mysql /var/db/mysql/

    Host# mysqladmin -u root password 12345

    mysql -u root -p

    mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY '12345' WITH GRANT OPTION;

    FLUSH PRIVILEGES;

    exit;

    Proteccion firewall

    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"
    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][0]">[http://www.openbsd.org/faq/pf/es/config.html][1]

    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.

    instalar _ apache
    [http://foro.universojuegos.es/viewtopic.php?f=68&t=6967][0]">viewtopic.php?f=68&t=6967

    instalar apache

    Freebsd 8.x: Como instalar apache con php.
    Bien vamos hacer esto que es algo comun de encontrar, apache con php.

    Aqui nos vamos a ir por apache22 /usr/ports/www/apache22 y /usr/ports/lang/php5.

    Para apache cuando les aparezca la pantalla de configuracion para make, elijan las opciones que crean convenientes, existen muchas que el puro nombre nos dice la funcion que van a llevar a cabo, yo en lo personal aun no veo la necesidad de usar IPv6 asi que la desmarco.

    Una vez hecho esto dejamos que continue el proceso de instalacion.

    Aqui necesitamos hacer 2 cosas:

    1; Configurar el archivo httpd.conf.
    2; Configurar rc.conf.

    httpd.conf esta en? donde instala FreeBSD la configuracion de sus ports?...

    /usr/local/etc/

    Apache dentro de esta ruta coloca un folder con su nombre "apache22", ahi dentro encontramos todos sus archivos de configuracion.

    Abrimos el httpd.conf y editamos estas opciones:

    Listen 192.168.50.125:80

    Aqui colocamos el IP de nuestro servidor, como podran ver ahi esta el mio.

    ServerName hostname.mi dominio:80

    Aqui tenemos 2 cosas, si tienen un dns y tienen esta maquina registrada adelante aqui pongan el nombre, yo uso pfsense como fw asi que el tiene esa funcion habilitada por ello la puedo usar. De lo contrario si no tiene registrado el nombre en su red, solo denlo de alta en /etc/hosts y aqui pongan su IP en vez del nombre.

    Listo, ahora para que FreeBSD pueda arrancar apache cada que reiniciemos el sistema debemos dar de alta ciertos parametros en /etc/rc.conf, asi:

    apache22_enable="YES"

    Si abren el archivo /usr/local/etc/rc.d/apache22 van a encontrar en la cabecera mas parametros, si los conocen usenlos, de lo contrario cuando entiendan su funcion ya saben donde deben de usarlos (/etc/rc.conf).

    Ya con esto podemos arrancar apache asi:

    /usr/local/etc/rc.d/apache22 start

    Checamos:

    bsd8# sockstat -4 USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS www httpd 2516 3 tcp4 192.168.50.125:80 *:* www httpd 2515 3 tcp4 192.168.50.125:80 *:* www httpd 2514 3 tcp4 192.168.50.125:80 *:* www httpd 2513 3 tcp4 192.168.50.125:80 *:* www httpd 2512 3 tcp4 192.168.50.125:80 *:* www httpd 2511 3 tcp4 192.168.50.125:80 *:* www httpd 2510 3 tcp4 192.168.50.125:80 *:* www httpd 2509 3 tcp4 192.168.50.125:80 *:*
    Ahi esta en operacion apache.

    Ahora sigue php5, en los ports existe uno de nombre php5-extensions localizado en:

    /usr/ports/lang/

    Este fue creado para administrar todos los modulos habidos y por haber de phpx (4/5), asi que vamos sobre el.

    cd /usr/ports/lang/php5-extensions
    make install clean

    Lo mismo que apache, cuando les aparezca el menu de opciones activen y desactiven las convenientes, esto puede tardar segun sus elecciones y ademas los ports necesarios pueden tener las propias en especial php5-gd.

    Cuando el sistema llegue a la instalacion de php5, no se les vaya a pasar activar la opcion que dice:

    APACHE Build Apache module

    De lo contrario no se compilara el modulo php para apache.

    Una vez que haya terminado todo el proceso, debemos llevar a cabo ciertos pasos, nada es sencillo pero es necesario conocer como opera todo y mas cuando estan en tus manos servidores 7x24.

    Ahora nos vamos de nuevo a /usr/local/etc/, ahi tenemos estos archivos:

    php.conf
    php.ini-recommended php --> directorio php.ini-dist
    php.ini-recommended

    Necesitamos el php.ini que es la configuracion general de php, para ello la vamos a sacar de php.ini-recommended.

    cp php.ini-recommended php.ini

    En este archivo vamos a editar solo 1 parametro el cual nos va a permitir a nosotros codificar nuestros scripts php en la forma:

    NOTA:blogger no me permite usar codigo php, ustedes saben como van.

    Abran php.ini y coloquen este parametro asi:

    short_open_tag = On

    Salven el archivo y ahora seguimos con apache, abran de nuevo el archivo httpd.conf y vamos a agregar los siguientes parametros.

    1; Busquen esta linea, aqui nos indica si php instalo el modulo para apache:

    LoadModule php5_module libexec/apache22/libphp5.so

    Si no existe la agregan a el final de todos los modulos aproximadamente linea 104.

    2; Busquen el parametro DirectoryIndex y agreguen index.php, algo asi:

    DirectoryIndex index.php index.html index.htm

    Aproximadamente linea 216.

    3; Ahora busquen los mime_modules ya agreguen a el final esto:

    AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps

    Listo, ahora necesitamos reiniciar apache y probar php. Para probar creamos un archivito de nombre test.php y lo colocamos en nuestro documentroot(/usr/local/www/apache22/data), el archivo solo debe llevar esta funcion:

    phpinfo();

    NOTA: Entre llaves para codigo php de favor.

    Reiniciamos apache y probamos en su navegador el archivo, nos debe arrojar los modulos de php habilitados, algo asi:

    Claro que esto es solo parte de la salida.

    Si por alguna razon rara no les aparece esto y el navegador se queda en blanco, les recomiendo apagar apache y iniciarlo de nuevo, o sea:

    /usr/local/etc/rc.d/apache22 stop
    /usr/local/etc/rc.d/apache22 start

    Le intentan de nuevo, si aun siguen con problemas.

    Abran el log de apache(/var/log/httpd-error.log) para ver si les arroja algun error, aun no tenido errores con esto, pero si ustedes ven algo raro hagamenlo saber, el mio solo dice

    [Mon Jan 25 08:11:41 2010] [notice] Apache/2.2.14 (FreeBSD) mod_ssl/2.2.14 OpenSSL/0.9.8k DAV/2 PHP/5.2.12 with Suhosin-Patch configured -- resuming normal operations

    Si ustedes tiene el mismo mensaje, bueno como ultimo recurso, que no deberia pero me ha pasado, reinicien su equipo...

    Saludos!!!

    Instalando Mod evasive

    cd /usr/ports/www/mod_evasive

    make install clean

    ya una vez instalado el mod evasive se añade una linea en httpd.conf

    LoadModule evasive20_module /usr/lib/httpd/modules/mod_evasive20.so

    DOSHashTableSize 3097
    DOSPageCount 2
    DOSSiteCount 50
    DOSPageInterval 1
    DOSSiteInterval 1
    DOSBlockingPeriod 10

    ver quien ase un ataqeu ddos a tu host local

    netstat -na | awk '{print $5}' | cut -d. -f1-4 | sort -n | uniq -c | sort -n

    Instalar php5

    Paso 1 INSTALANDO APACHE (el servidor web)
    cd /usr/ports/www/apache22
    make install clean

    ee /etc/rc.conf
    agregar:
    apache22_enable="YES"
    Escape luego dos veces a (para salir y guardar)

    paso 2 INSTALANDO PHP (lenguaje para las web desarrollados en php) index.php

    cd /usr/ports/lang/php52
    make install clean
    activar el modulo de apache

    al terminar instalamos las extensiones
    cd /usr/ports/lang/php52-extensions
    make install clean
    activar lo que necesites o simplemente sigues por defecto

    Para generar php ini
    cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini

    PARA TERMINAR
    ee /usr/local/etc/apache22/httpd.conf

    modificar o remplazar
    DirectoryIndex index.html
    por
    DirectoryIndex index.php index.html

    Agregar
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps

    Escape luego dos veces a (para salir y guardar)

    EN
    ee /usr/local/etc/apache22/extra/httpd-languages.conf
    AGREGAR
    AddDefaultCharset On

    Escape luego dos veces a (para salir y guardar)

    Si tienes instalado el gnome como indico en mi anterior guia de ENTORNO DE ESCRITORIO EN FREEBSD
    solo ve a la carpeta de cada archivo y realiza los cambios que se necesita
    ejemplo
    ee /etc/rc.conf
    en la carpeta etc se encuentra el archivo rc.conf
    y agrego o modifico el archivo que contiene rc.conf

    ee /usr/local/etc/apache22/httpd.conf
    httpd.conf
    se encuentra dentro de apache22
    apache22 esta dentro de etc
    atc esta dentro de local
    local esta dentro de usr

    osea empiezas desde usr hasta llegar a la carpeta de apache22

    alguna duda o sugerencia no tenga miedo pregunte

    ¿Donde colocar el archivo de la web?
    en cd /usr/local/www/pache22/data/ (dentro de ella puedes colocar tu web)

    Los file de daroo tienen apache php instaladado, los de kay331 no los probe nunca: pero si sale un error al instalar debe de estar instalado solo ve a la carpeta cd /usr/locale/etc/ dentro de ella encontraras los archivos de php verifica si esta php.ini sino esta
    debe de haber un arhivo o un par de archivos php.ini-dist php.ini-example u otro con esa caracteristicas php.ini-xxxxx donde xxxxx es cualquer frase al momento de crear atravez del terminal
    cp /usr/local/etc/php.ini-xxxxx /usr/local/etc/php.ini
    aplicas esto para crear el php.ini
    ahora sino se sabe que php easta instalado yo utelice el php52 del port
    ve a cada carpeta donde se encuentra el php
    Ej:
    cd /usr/ports/lang/php5
    make deinstall clean
    para desinstalar
    cd /usr/ports/lang/php5-extensions
    make deinstall clean
    para desinstalar
    cd /usr/ports/lang/php52
    make deinstall clean
    para desinstalar
    cd /usr/ports/lang/php52-extensions
    make deinstall clean
    para desinstalar
    recuerda

    [0]: <a href=
    [1]: http://www.openbsd.org/faq/pf/es/config.html

  • MEN NO LE HE PROBADO PERO SE VE QEU ESTA BIEN EXPLICADO GRACIAS

  • Muy bien hecha, se ven pocos post bien explicados, un saludo!