Apartamento En Familia

Apartamento En Familia
Apartamento de playa para vacaciones. http://www.apartamentoenfamilia.es. Número registro HUTT-005768

martes, 24 de diciembre de 2013

Recuperación de partición tras mklabel de parted mediante rescue


GNU Parted (el nombre viene de la conjunción de las dos palabras inglesas partition y editor) es un editor de particioneslibre que se utiliza para crear y destruir particiones. Esto es útil para crear espacio para nuevos sistemas operativos, reorganizar el espacio del disco duro, copiar data entre discos duros y crear imágenes de disco. Fue desarrollado porAndrew Clausen y Lennert Buytenhek.

Está formado por una bibliotecalibparted, y en un front-end para la línea de comandosparted, que también sirve como implementación de referencia.
En 2013, GNU Parted solo está disponible para Linux y GNU Hurd.1


(Fuente Wikipedia)

En un artículo anterior explicaba como crear particiones de más de 2TB mediante parted.

Bien, imaginemos que por alguna razón nuestra tabla de particiones cambia (a causa de un mal apagado del servidor, se fué la luz, etc) y que ya no podemos acceder a dicha partición. Esto me pasó a mi tras apagar el servidor 'por la via del botonazo'. La partición sdb1 no era accesible y cuando miraba con el programa parted veía que la tabla de particiones habia cambiado de gpt a loop. Pues bien, pensé en usar el comando mklabel para volverle a cambiar la tabla de particiones a gpt, pero me daba el siguiente aviso: "La etiqueta de disco existente en /dev/sdb se destruirá y todos los datos en este disco se perderán. ¿Desea continuar?" Pues no, no quiero destruir mis datos. Pero.. ¿Que puedo hacer?. Si nos leemos el manual de parted en el apartado de mklabel nos dice que técnicamente no destruye los datos y que estos podrán ser recuperados mediante el comando rescue. Así pues, eso hice:

parted /dev/sdb

GNU Parted 2.3
Usando /dev/sdb
¡Bienvenido/a a GNU Parted! Teclee «help» para ver la lista de órdenes.
(parted) unit GB                                                          
(parted) print                                                            
Modelo: ATA ST4000VN000-1H41 (scsi)
Disco /dev/sdb: 4001GB
Tamaño de sector (lógico/físico): 512B/4096B
Tabla de particiones. loop

Numero  Inicio  Fin     Tamaño  Sistema de archivos  Banderas
 1      0,00GB  4001GB  4001GB  btrfs

(parted) mklabel gpt                                                      
Aviso: La etiqueta de disco existente en /dev/sdb se destruirá y todos los datos en este disco se perderán. ¿Desea continuar?
Sí/Yes/No? s                                                              
(parted) print                                                            
Modelo: ATA ST4000VN000-1H41 (scsi)
Disco /dev/sdb: 4001GB
Tamaño de sector (lógico/físico): 512B/4096B
Tabla de particiones. gpt

Numero  Inicio  Fin  Tamaño  Sistema de archivos  Nombre  Banderas

(parted) rescue                                                           
¿Inicio? 0                                                                
¿Fin? 4001                                                                
Información: Ha sido encontrada una partición btrfs primary en 0,00GB -> 4001GB.  ¿Quiere añadirla a la tabla de particiones?
Sí/Yes/No/Cancelar/Cancel? S                                              
(parted) print                                                            
Modelo: ATA ST4000VN000-1H41 (scsi)
Disco /dev/sdb: 4001GB
Tamaño de sector (lógico/físico): 512B/4096B
Tabla de particiones. gpt

Numero  Inicio  Fin     Tamaño  Sistema de archivos  Nombre  Banderas
 1      0,00GB  4001GB  4001GB  btrfs


¡Y funcionó! Además, al recuperar la partición, conservamos intacto el UUID de dicha partición. 

lunes, 18 de noviembre de 2013

Instalar ModSecurity2 (+OWASP) y Mod-Evasive en Ubuntu 13.10 con Apache


modSecurity™ es un firewall de aplicaciones Web embebible que ejecuta como módulo del servidor web Apache, provee protección contra diversos ataques hacia aplicaciones Web y permite monitorizar tráfico HTTP, así como realizar análisis en tiempo real sin necesidad de hacer cambios a la infraestructura existente.
(Fuente Wikipedia)


Mod_Evasive ayudará a detener los ataques básicos en un servidor (HTTP, ataques de denegación DDoS y ataques de fuerza bruta). La detección es realizada por la creación una tabla dinámica interna hash de las direcciones IP y URI, y denegando cualquier dirección IP por las siguientes causas:

-Solicitando las mismas páginas web muchas veces por segundo.
-Solicitando más de 50 conexiones simultaneas sobre el mismo objeto por segundo.
-Realizando solicitudes con listas negras temporales (sobre listas de bloqueo).

(Fuente Internexo)

Así pues, nuestra idea es instalar un servidor web Apache con un módulo que nos haga de cortafuegos de aplicaciones Web y con otro módulo que nos ayuden a detener los ataques básicos que recibimos en un servidor web. Además, tenedremos reglas generadas para programas comunes como:
  • Microsoft IIS, ASP, .Net and SharePoint
  • WordPress
  • cPanel
  • osCommerce
  • Joomla
Con estos sencillos pasos podremos tener un servidor web bastante más protegido que si simplemente instalamos nuestro servidor y lo dejamos desprotegido cara a Internet. Es hora de armar a nuestro Apache:

modsecurity

Instalamos modsecurity desde el repositorio de Ubuntu oficial:

apt-get install libapache-mod-security
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
  libapache2-modsecurity liblua5.1-0 modsecurity-crs
Paquetes sugeridos:
  lua geoip-database-contrib ruby
Se instalarán los siguientes paquetes NUEVOS:
  libapache-mod-security libapache2-modsecurity liblua5.1-0 modsecurity-crs
0 actualizados, 4 se instalarán, 0 para eliminar y 7 no actualizados.
Necesito descargar 664 kB de archivos.
Se utilizarán 3.741 kB de espacio de disco adicional después de esta operación.


En otras webs veréis que antes de instalar modsecurity se instalan unas dependencias. Eso tiene sentido si nos descargamos las fuentes de modsecurity y luego las queremos compilar. Nosotros lo estamos haciendo directamente desde el repositorio, así que si hay alguna dependencia ya nos lo dice el propio apt-get.

Ahora ya tenemos instalado el modsecurity. Nos queda configurarlo para que funcione como nosotros deseamos. Lo primero es crear el archivo de configuración basándonos en el que ya viene de ejemplo:

sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

Ahora tocará configurar el modsecurity como nosotros deseemos. Cada cual en su servidor sabe que puede o no hacer. O que se espera que pase y que no pase. Si por ejemplo nuestro servidor es un wordpress o Joomla! en donde permitimos subir archivos, seguramente nos va a interesar cambiar la directriz de modsecurity de esta manera:

SecRequestBodyLimit 16384000
SecRequestBodyInMemoryLimit 16384000

De esta manera cambiamos el límite de tamaño de archivos que subimos a nuestro servidor de 128Kb a 16Mb . Pero esto sólo si es lo que deseamos que haga. Si es una web que no espera que se suban archivos, lo mejor seria dejarlo como está. 

Sea como sea, lo que seguro que tendremos que hacer es activar el motor modsecurity. Para ello modificaremos el modsecurity.conf :


SecRuleEngine On


Una vez configurado como deseamos el modsecurity, lo siguiente es bajarnos las reglas de OWASP Core Rule Set

OWASP Core Rule Set


OWASP Core Rule Set nos va a mejorar el conjunto de reglas de nuestro modsecurity de manera que se convierte en el compañero ideal en este viaje de seguridad que estamos haciendo. 

Esto si que no lo podemos instalar desde repositorio, y aunque pudiéramos en esta ocasión si que creo que vale la pena bajarse la última versión. Es el corazón de reglas que hara que estemos seguros. Lo bajamos y lo descomprimimos:

wget -O SpiderLabs-owasp-modsecurity-crs.tar.gz https://github.com/SpiderLabs/owasp-modsecurity-crs/tarball/master

tar -zxvf SpiderLabs-owasp-modsecurity-crs.tar.gz

Bien, ahora ya tenemos el conjunto de reglas que copiaremos en la carpeta de configuración de modsecurity (todos los .conf copiados allí se consideran archivos de configuración del programa modsecurity):

cp -R SpiderLabs-owasp-modsecurity-crs-*/* /etc/modsecurity/

mv /etc/modsecurity/modsecurity_crs_10_setup.conf.example /etc/modsecurity/modsecurity_crs_10_setup.conf

Llegado a este punto debemos activar las normas. Funciona del mismo modo que apache. Están disponibles pero sino creamos el acceso directo no las dejamos activadas (de esa manera puedes activar unas normas si y otras no si fuera el caso). Las normas disponibles se guardan en /etc/modsecurity/base_rules y las normas activadas se guardan en /etc/modsecurity/activated_rules. Vamos a activarlas todas:

cd /etc/modsecurity/base_rules
for f in * ;
do
 sudo ln -s /etc/modsecurity/base_rules/$f /etc/modsecurity/activated_rules/$f ;
done

cd /etc/modsecurity/optional_rules
for f in * ;
do
sudo ln -s /etc/modsecurity/optional_rules/$f /etc/modsecurity/activated_rules/$f ;
done

Podemos comprobar que el directorio /etc/modsecurity/activated_rules de estar vacio ahora presenta muchos archivos:

/etc/modsecurity/activated_rules# ls

modsecurity_35_bad_robots.data                   modsecurity_crs_21_protocol_anomalies.conf     modsecurity_crs_47_common_exceptions.conf
modsecurity_35_scanners.data                     modsecurity_crs_23_request_limits.conf         modsecurity_crs_47_skip_outbound_checks.conf
modsecurity_40_generic_attacks.data              modsecurity_crs_25_cc_known.conf               modsecurity_crs_48_local_exceptions.conf.example
modsecurity_42_comment_spam.data                 modsecurity_crs_30_http_policy.conf            modsecurity_crs_49_header_tagging.conf
modsecurity_50_outbound.data                     modsecurity_crs_35_bad_robots.conf             modsecurity_crs_49_inbound_blocking.conf
modsecurity_50_outbound_malware.data             modsecurity_crs_40_generic_attacks.conf        modsecurity_crs_50_outbound.conf
modsecurity_crs_10_ignore_static.conf            modsecurity_crs_41_sql_injection_attacks.conf  modsecurity_crs_55_application_defects.conf
modsecurity_crs_11_avs_traffic.conf              modsecurity_crs_41_xss_attacks.conf            modsecurity_crs_55_marketing.conf
modsecurity_crs_13_xml_enabler.conf              modsecurity_crs_42_comment_spam.conf           modsecurity_crs_59_outbound_blocking.conf
modsecurity_crs_16_authentication_tracking.conf  modsecurity_crs_42_tight_security.conf         modsecurity_crs_60_correlation.conf
modsecurity_crs_16_session_hijacking.conf        modsecurity_crs_43_csrf_protection.conf        
modsecurity_crs_16_username_tracking.conf        modsecurity_crs_45_trojans.conf
modsecurity_crs_20_protocol_violations.conf      modsecurity_crs_46_av_scanning.conf

No basta con activarlas en modsecurity, ya que lo que tenemos que hacer es que el módulo modsecurity de apache las tenga en cuenta. Para ello haremos lo siguiente:

vim /etc/apache2/mods-available/security2.conf

y añadiremos la siguiente linea antes del
IfModule del final de linea

Include "/etc/modsecurity/activated_rules/*.conf"

Ya estamos en disposición de activar el módulo en nuestro servidor Apache:

sudo a2enmod security2
Considering dependency unique_id for security2:
Module unique_id already enabled
Module security2 already enabled

También tenemos que habilitar el módulo mod_headers para evitar este error que nos sale al reiniciar el Apache:

Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration

Así que lo activamos:

sudo a2enmod headers
Enabling module headers.
To activate the new configuration, you need to run:
  service apache2 restart

Y ya lo tenemos todo instalado y configurado. Ahora reiniciamos Apache:

service apache2 restart

Y... ¿nos creemos que funciona y ya está?. No.. ¡vamos a probarlo!

Abre tu navegador y pon en la dirección http://nombredelhost/?id=23' or '1'='1 (Si es nuestro pc local podemos poner http://localhost/?id=23' or '1'='1 ) . Es importante darle un nombre al servidor que se resuelva, ya que sino puede detectar el sistema un problema con severidad "WARNING". 
Una vez puesta esa dirección, el servidor nos devolverá un MSG 403 de error, pero además en el archivo /var/log/apache2/modsec_audit.log podremos apreciar que nos sale entre otras cosas:

msg "SQL Injection Attack: SQL Tautology Detected."

¡Ataque detectado! Ya tenemos a nuestro cortafuegos de aplicaciones web trabajando.

mod-evasive


Para instalarlo nos apoyaremos en el repositorio oficial de Ubuntu:

apt-get install libapache2-mod-evasive

Una vez instalado el paquete, el modulo ya estará activado.

El archivo de configuración del módulo es bien sencillo:



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

    DOSEmailNotify      mail@mimail.edu
    #DOSSystemCommand    "su - someuser -c '/sbin/... %s ...'"
    DOSLogDir           "/var/log/apache2/mod_evasive"

Como veis no hay mucho que configurar. Hay una explicación muy buena y extensa en www.tail-f.com.ar que transcribo tal cual:

  • DOSHashTableSize  – Establece el número de nodos a almacenar para cada proceso de peticiones de la tabla hash (contenedor asociativo de recuperación de peticiones por medio de claves que agiliza las respuestas del servidor). Si aplicamos un número alto a este parámetro obtendremos un rendimiento mayor, ya que las iteraciones necesarias para obtener un registro de la tabla son menores. Por contra, y de forma evidente, aumenta el consumo de memoria necesario para el almacenamiento de una tabla mayor. Se hace necesario incrementar este parámetro si el servidor atiende un número abultado de peticiones, aunque puede no servir de nada si la memoria de la máquina es escasa.
  • DOSPageCount  – Indica el valor del umbral para el número de peticiones de una misma página (o URI) dentro del intervalo definido en DOSPageInterval. Cuando el valor del parámetro es excedido, la IP del cliente se añade a la lista de bloqueos.
  • DOSSiteCount  – Cuenta cuántas peticiones de cualquier tipo puede hacer un cliente dentro del intervalo definido en DOSSiteInterval. Si se excede dicho valor, el cliente queda añadido a la lista de bloqueos.
  • DOSPageInterval  – El intervalo, en segundos, para el umbral de petición de páginas.
  • DOSSiteInterval  – El intervalo, en segundos, para el umbral de petición de objetos de cualquier tipo.
  • DOSBlockingPeriod  – Establece el tiempo, en segundos, que un cliente queda bloqueado una vez que ha sido añadido a la lista de bloqueos. Como ya se indicó unas líneas atrás, todo cliente bloqueado recibirá una respuesta del tipo 403 (Forbidden) a cualquier petición que realice durante este periodo.
  • DOSEmailNotify  – Un e-mail será enviado a la dirección especificada cuando una dirección IP quede bloqueada. La configuración del proceso de envío se establece en el fichero mod_evasive.c de la forma /bin/mail -t %s, siendo %s el parámetro que queda configurado en este parámetro. Será necesario cambiar el proceso si usamos un método diferente de envío de e-mails y volver a compilar el módulo con apxs (por ejemplo, la opción t ha quedado obsoleta en las últimas versiones del comando).
  • DOSSystemCommand  – El comando reflejado se ejecutará cuando una dirección IP quede bloqueada. Se hace muy útil en llamadas a herramientas de filtrado o firewalls. Usaremos %s para especificar la dirección IP implicada. Por ejemplo, podemos establecer su uso con iptables de la forma siguiente:
    DOSSystemCommand “/sbin/iptables –I INPUT –p tcp –-dport 80 –s %s –j DROP”
  • DOSLogDir  – Establece una ruta para el directorio temporal. Por defecto, dicha ruta queda establecida en /tmp, lo cual puede originar algunos agujeros de seguridad si el sistema resulta violado.
  • DOSWhitelist  – La dirección IP indicada como valor del parámetro no será tenida en cuenta por el módulo en ningún caso. Para cada dirección IP a excluir ha de añadirse una nueva línea con el parámetro. Por ejemplo, dejaremos fuera del chequeo del módulo a un posible bot que use los siguientes rangos de direcciones:
    DOSWhitelist 66.249.65.*
    DOSWhitelist 66.249.66.*
    


Es quizás la opcion DOSSystemCommand la que nos da mucho juego ya que una vez detectado el ataque... ¿Que hacemos? Pues podemos crearnos un script y hacer lo que queramos. En el ejemplo de arriba te pone una posibilidad, que es añadir la ip en el iptables:

DOSSystemCommand “/sbin/iptables –I INPUT –p tcp –dport 80 –s %s –j DROP”

Si queremos hacer algo más complejo, pues nos hacemos un script que antes nos mande un mail, etc.. 

Hay que tener en cuenta crear la carpeta para los logs en /var/log/mod_evasive y darle permisos al usuario:grupo www-data (chown -R www-data:www-data /var/log/mod_evasive)

Ahora nos quedaría probarlo, para quedarnos tranquilos de que funciona. Para ello el mod-evasive viene con un script que nos hace la prueba:

perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl


/var/log/apache2# perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
(...)


Podemos observar que hay tantos 200 0K como hemos configurado en la directiva DOSBlockingPeriod   10

Al /var/log/syslog podemos ver:
mod_evasive[28508]: Blacklisting address 127.0.0.1: possible DoS attack.

Enlaces de interes:









viernes, 15 de noviembre de 2013

psad (Intrusion Detection and Log Analysis with iptables) en Ubuntu 13.10


psad emplea iptables para detectar, alertar y opcionalmente bloquear escaneos de puertos y otros tráficos sospechosos. En las exploraciones de TCP psad analiza indicadores TCP para determinar el tipo de escaneado (syn, fin, xmas, etc.) y sus correspondientes opciones en línea de comandos que puedan ser suministrados a nmap para generarla. Además, psad hace uso de de TCP, UDP, ICMP y sus firmas contenidas dentro de la detección de intrusos de la aplicación Snort (ver: http://www.snort.org/) que se usa para detectar el tráfico de red sospechoso, tales como puertas traseras comunes, herramientas DDoS, OS fingerprinting entre otros.

(Fuente xombra)

Para instalarlo simplemente lo podemos hacer desde nuestro repositorio oficial:

apt-get install psad

Una vez instalado, tenemos que personalizar un poco nuestro IDS para que actue según necesitemos. El archivo de configuración es /etc/psad/psad.conf . Aconsejo leer con cuidado este archivo para adecuarlo a nuestras necesidades. Yo hago mención a algunas opciones:

EMAIL_ADDRESSES             micorreo@servidor.edu;
HOSTNAME                    miservidor;

#IPT_SYSLOG_FILE             /var/log/messages;
IPT_SYSLOG_FILE         /var/log/syslog;

El archivo al cual debería mirar es el syslog. Hemos de cambiar la configuración por defecto.
Podemos encontrar un listado de las opciones y su función aquí : http://cipherdyne.org/psad/docs/config.html#HOME_NET

Ahora tenemos que añadir una linea en el rsyslog:
sudo nano /etc/rsyslog.conf

y añadimos:

kern.info |/var/lib/psad/psadfifo


¿Ya hemos terminado?

No, ahora tenemos el psad mirando el archivo /var/log/syslog para ver cuando nuestro iptables deniega o logea algún paquete. Así que evidentemente, sin iptables el psad no va a detectar por si solo nada.

La configuración de iptables es un asunto muy extenso y fuera de este tutorial. La configuración mínima para que psad pueda detectar escaneos seria esta:

sudo iptables -A INPUT -j LOG
sudo iptables -A FORWARD -j LOG
sudo ip6tables -A INPUT -j LOG
sudo ip6tables -A FORWARD -j LOG

Con esto ya podréis ver cosas así (comando psad -S):

psad -S

[+] psadwatchd (pid: 24248)  %CPU: 0.0  %MEM: 0.0
    Running since: Thu Nov 14 13:11:39 2013

[+] psad (pid: 24246)  %CPU: 0.1  %MEM: 0.4
    Running since: Thu Nov 14 13:11:39 2013
    Command line arguments: [none specified]
    Alert email address(es): micorreo@servidor.edu

[+] Version: psad v2.2.1

[+] Top 50 signature matches:
      "ICMP PING" (icmp),  Count: 11,  Unique sources: 2,  Sid: 384
      "MISC Microsoft PPTP communication attempt" (tcp),  Count: 2,  Unique sources: 1,  Sid: 100082
      "DOS arkiea backup communication attempt" (tcp),  Count: 2,  Unique sources: 1,  Sid: 282
      "BACKDOOR PhaseZero Server Active on Network" (tcp),  Count: 2,  Unique sources: 1,  Sid: 208
      "SNMP AgentX/tcp request" (tcp),  Count: 2,  Unique sources: 1,  Sid: 1421
      "P2P Fastrack kazaa/morpheus communication attempt" (tcp),  Count: 2,  Unique sources: 1,  Sid: 1383
      "MISC Insecure TIMBUKTU communication attempt" (tcp),  Count: 2,  Unique sources: 1,  Sid: 505
      "BACKDOOR SatansBackdoor.2.0.Beta, or BackConstruction 2.1 Connection Attempt" (tcp),  Count: 2,  Unique sources: 1,  Sid: 100041
      "BACKDOOR Doly 1.5 Connection attempt" (tcp),  Count: 2,  Unique sources: 1,  Sid: 1985
      "MISC LDAP communication attempt" (tcp),  Count: 2,  Unique sources: 1,  Sid: 100083
      "BACKDOOR Infector.1.x Connection attempt" (tcp),  Count: 2,  Unique sources: 1,  Sid: 100040
      "MISC Alcatel PABX 4400 connection attempt" (tcp),  Count: 2,  Unique sources: 1,  Sid: 1819
      "BACKDOOR - Dagger_1.4.0 Connection attempt" (tcp),  Count: 2,  Unique sources: 1,  Sid: 100038
      "MISC Microsoft SQL Server communication attempt" (tcp),  Count: 2,  Unique sources: 1,  Sid: 100205
      "ICMP Timestamp Request" (icmp),  Count: 1,  Unique sources: 1,  Sid: 453

[+] Top 25 attackers:
      4.8.1.174    DL: 4, Packets: 1663, Sig count: 0
      4.8.2.234    DL: 4, Packets: 5834, Sig count: 28
      4.8.1.182    DL: 2, Packets: 433, Sig count: 10

[+] Top 20 scanned ports:
      tcp 443   5 packets
      tcp 80    4 packets
      tcp 127   2 packets
      tcp 1801  2 packets
      tcp 1648  2 packets
      tcp 1481  2 packets
      tcp 1950  2 packets
      tcp 2865  2 packets
      tcp 1698  2 packets
      tcp 520   2 packets
      tcp 2782  2 packets
      tcp 2927  2 packets
      tcp 2266  2 packets
      tcp 2037  2 packets
      tcp 1178  2 packets
      tcp 532   2 packets
      tcp 1193  2 packets
      tcp 2455  2 packets
      tcp 2915  2 packets
      tcp 1387  2 packets

      udp 17500 4622 packets
      udp 5353  258 packets
      udp 67    34 packets
      udp 514   4 packets
      udp 68    2 packets

[+] iptables log prefix counters:
      "Rebutjat pel tallafocs:": 10656

    iptables auto-blocked IPs:
        [NONE]

    Total protocol packet counters:
        icmp: 12 pkts
         tcp: 5836 pkts
         udp: 4920 pkts

[+] IP Status Detail:

SRC:  4.8.1.174, DL: 4, Dsts: 2, Pkts: 1663, Total protocols: 2, Unique sigs: 0, Email alerts: 264

    DST: 255.255.255.255
        Scanned ports: UDP 67-17500, Pkts: 1659, Chain: INPUT, Intf: eth0
        Total scanned IP protocols: 1, Chain: INPUT, Intf: eth0
    DST: 224.0.0.251
        Scanned ports: UDP 5353, Pkts: 4, Chain: INPUT, Intf: eth0
        Total scanned IP protocols: 1, Chain: INPUT, Intf: eth0

SRC:  4.8.2.234, DL: 4, Dsts: 1, Pkts: 5834, Total protocols: 2, Unique sigs: 10, Email alerts: 2

    DST: 84.88.61.185
        Scanned ports: TCP 80-3000, Pkts: 5832, Chain: INPUT, Intf: eth0
        Total scanned IP protocols: 2, Chain: INPUT, Intf: eth0
        Signature match: "DOS arkiea backup communication attempt"
            TCP, Chain: INPUT, Count: 2, DP: 617, SYN, Sid: 282
        Signature match: "BACKDOOR PhaseZero Server Active on Network"
            TCP, Chain: INPUT, Count: 2, DP: 555, SYN, Sid: 208
        Signature match: "SNMP AgentX/tcp request"
            TCP, Chain: INPUT, Count: 2, DP: 705, SYN, Sid: 1421
        Signature match: "P2P Fastrack kazaa/morpheus communication attempt"
            TCP, Chain: INPUT, Count: 2, DP: 1214, SYN, Sid: 1383
        Signature match: "MISC Insecure TIMBUKTU communication attempt"
            TCP, Chain: INPUT, Count: 2, DP: 1417, SYN, Sid: 505
        Signature match: "BACKDOOR SatansBackdoor.2.0.Beta, or BackConstruction 2.1 Connection Attempt"
            TCP, Chain: INPUT, Count: 2, DP: 666, SYN, Sid: 100041
        Signature match: "BACKDOOR Doly 1.5 Connection attempt"
            TCP, Chain: INPUT, Count: 2, DP: 1015, SYN, Sid: 1985
        Signature match: "BACKDOOR Infector.1.x Connection attempt"
            TCP, Chain: INPUT, Count: 2, DP: 146, SYN, Sid: 100040
        Signature match: "BACKDOOR - Dagger_1.4.0 Connection attempt"
            TCP, Chain: INPUT, Count: 2, DP: 2589, SYN, Sid: 100038
        Signature match: "MISC Microsoft SQL Server communication attempt"
            TCP, Chain: INPUT, Count: 2, DP: 1433, SYN, Sid: 100205

    Total scan sources: 3
    Total scan destinations: 3

[+] These results are available in: /var/log/psad/status.out



jueves, 14 de noviembre de 2013

Flexnet Ubuntu 12.04.2 LTS



http://en.wikipedia.org/wiki/FlexNet_Publisher



Flexnet


apt-get install lsb
apt-get install ia32-libs
apt-get install default-jre

descarga

http://www.globes.com/support/fnp_utilities_download.htm#downloads



wget http://www.globes.com/products/utilities/v11.11.1.2/lmadmin-i86_lsb-11_11_1_2.bin
wget http://www.globes.com/products/utilities/v11.11.1.2/lmgrd-x64_lsb-11.11.1.2.tar.gz
wget http://www.globes.com/products/utilities/v11.11.1.2/lmutil-x64_lsb-11.11.1.2.tar.gz
wget http://www.globes.com/support/utilities/fnp_LicAdmin_11_11_1.pdf

Entonces hago:

Ahora ejecutando el binario tendremos este output:

./lmadmin-i86_lsb-11_11_1_2.bin 
Preparing to install...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...

Launching installer...


Graphical installers are not supported by the VM. The console mode will be used instead...

===============================================================
FlexNet Publisher License Server Manager         (created with InstallAnywhere)
-------------------------------------------------------------------------------

Preparing CONSOLE Mode Installation...

===============================================================
Introduction
------------

InstallAnywhere will guide you through the installation of FlexNet Publisher 
License Server Manager (lmadmin) 11.11.1.2

It is strongly recommended that you quit all programs before continuing with 
this installation.

Respond to each prompt to proceed to the next step in the installation.  If you
want to change something on a previous step, type 'back'.

You may cancel this installation at any time by typing 'quit'.

PRESS TO CONTINUE: 



===============================================================
Choose Install Folder
---------------------

Where would you like to install?

  Default Install Folder: /opt/FNPLicenseServerManager

ENTER AN ABSOLUTE PATH, OR PRESS TO ACCEPT THE DEFAULT

===============================================================
Get User Input
--------------

Do you want to import files from previous installation? (By default importing 
is disabled)

    1- Import Installation files

ENTER A COMMA-SEPARATED LIST OF NUMBERS REPRESENTING THE DESIRED CHOICES, OR
   PRESS TO ACCEPT THE DEFAULT: 




===============================================================
Pre-Installation Summary
------------------------

Please Review the Following Before Continuing:

Product Name:
    FlexNet Publisher License Server Manager

Install Folder:
    /opt/FNPLicenseServerManager

Disk Space Information (for Installation Target): 
    Required:  23.457.358 Bytes
    Available: 11.780.853.760 Bytes

PRESS TO CONTINUE: 

(.......)

===============================================================
Launch Configuration
--------------------

Configure the HTTP port number at which the License Server Management Interface
can be accessed using a web browser.

Enter the HTTP Port Number (DEFAULT: 8090): 

===============================================================
Launch Configuration
--------------------

Configure the TCP/IP port number at which licensing application will 
communicate with the License Server Manager

Enter the License Server Port Number (DEFAULT: 0): 




===============================================================
Start the Server
----------------

Do you want to launch the License Server Manager now and access the License 
Server Management Interface via a web browser? (By default License Server 
Manager is not started)

    1- Start server now

ENTER A COMMA-SEPARATED LIST OF NUMBERS REPRESENTING THE DESIRED CHOICES, OR
   PRESS TO ACCEPT THE DEFAULT: 

===============================================================
Installation Complete
---------------------

Congratulations. FlexNet Publisher License Server Manager has been successfully
installed to:

   /opt/FNPLicenseServerManager

PRESS TO EXIT THE INSTALLER:

Ahora ya podemos arrancar /opt/FNPLicenseServerManager/lmadmin

http://forums.autodesk.com/t5/Installation-Licensing/Installing-the-FLEXnet-License-Administrator/td-p/3204280


Para saber nuestro hostID:

./lmutil lmhostid
lmutil - Copyright (c) 1989-2013 Flexera Software LLC. All Rights Reserved.
The FlexNet host ID of this machine is ""00151946a05e 0050567c2f7a""
Only use ONE from the list of hostids.


Problema con el temporal

sudo ln -s /tmp /usr/tmp


martes, 2 de julio de 2013

Como copiar una carpeta a otra igual reemplazando archivos existentes

En algunas ocasiones nos puede suceder que tenemos dos carpetas que se llaman iguales y queremos juntarlas en una. Entonces se nos ocurre que si copiamos la carpeta en el mismo lugar donde esta la otra (y que además se llama igual) combinará los archivos de las dos carpetas. Ahora bien... ¿que decisión toma cuando se encuentra archivos dentro de esa carpeta que se llaman igual? ¿Los sobreescribe o no? 

La verdad es que todas estas preguntas se resuelven fácilmente con el MAN de cp, pero al ser tareas habituales vale la pena reparar en ellas:


Imaginemos que tenemos una web hecha en Wordpress y un archivo php contiene errores. Se lo comentamos a la empresa que se encarga del diseño web y nos manda el patch patch_web.tgz :

Descomprimos el patch 
tar xzfv patch_web.tgz 

y nos encontramos con una carpeta wp-content. Nosotros ya tenemos una carpeta /var/www/wp-content/ y lo que se espera que hagamos es que el archivo erroneo (con fallos) que tenemos se sustituya por el que la empresa diseñadora nos ha enviado. 

Lo primero que se nos ocurre es hacer

cp -a wp-content /var/www/wp-content/

¿Esto funcionaria? No como esperamos, ya que lo que hará es copiar la carpeta wp-content dentro de /var/www/wp-content . Y lo que queremos es que copie el contenido, no la carpeta. Así pues hacemos:

cp -a wp-content/* /var/www/wp-content/

Y ahora si que copiará el contenido, sustituyendo los archivos que se llamen igual. 

Si por el contrario, tenemos otro escenario en el que no siempre queremos sustituir los archivos, podemos mirar las opciones -u o -n



u, --update
copy only when the SOURCE file is newer than the destination file or when the destination file is missing



-n, --no-clobber
              do not overwrite an existing file (overrides a previous -i option)




lunes, 1 de julio de 2013

WPMU Ldap Authentication: Como habilitar LDAP para todos los usuarios


Mediante el plugin WPMU Ldap Authentication tendremos la posibilidad de validarnos contra un servidor LDAP en un entorno MU, es decir, un entorno multisite.

El plugin se instala facilmente desde el propio repositorio del Wordpress y para configurarlo no tiene más secreto que configurar los parámetros de conexión con nuestro servidor LDAP.


Yo para instalar este entorno usé un Ubuntu 10.04.3 LTS, MySQL, Apache, OpenLDAP, Wordpress 3.5 y WPMU Ldap Authentication 4.0.2. .

¿Cual fué mi problema? Pues que yo tenia una base de datos local de usuarios de Wordpress (unos 250 usuarios) y cuando instalas el plugin automáticamente no te los pone a validar en LDAP. Es decir, que cuando creas el usuario, te da a escoger si quieres que se valide en LDAP o Local. Si el usuario ya existia una vez instalaste el plugin, tienes que editar el usuario y cambiar de Local a LDAP. Bien, pues cambiar a mano 250 usuarios tampoco era un suplicio, pero como suelo automatizar este tipo de procesos hice un pequeño script en bash y luego lo apliqué con MySQL Workbench.

Cuando miras la base de datos y como la trata WPMU para saber si el usuario se debe de validar en Local o LDAP, te das cuenta que lo hace en la tabla wp_usermeta. Alli crea un registro con el ID del usuario, el string ldap_login y un valor true. Así pues, si hacemos un insert por cada usuario con estos valores, tendremos la base de datos migrada:

for i in `cat ids.txt.csv`; do echo "INSERT INTO \`mi_schema\`.\`wp_usermeta\` (\`user_id\`,\`meta_key\`,\`meta_value\`) VALUES ("$i",\"ldap_login\",\"true\");"; done

El output será algo como esto:


INSERT INTO `mi_schema`.`wp_usermeta` (`user_id`,`meta_key`,`meta_value`) VALUES (725,"ldap_login","true");
INSERT INTO `mi_schema`.`wp_usermeta` (`user_id`,`meta_key`,`meta_value`) VALUES (726,"ldap_login","true");
INSERT INTO `mi_schema`.`wp_usermeta` (`user_id`,`meta_key`,`meta_value`) VALUES (727,"ldap_login","true");
INSERT INTO `mi_schema`.`wp_usermeta` (`user_id`,`meta_key`,`meta_value`) VALUES (728,"ldap_login","true");
(....)

Luego abrí el MySQL Workbench, conecté con la base de datos MySQL del Wordpress y pegué toda esa salida en un script y lo ejecuté. Podría haber usado mysqldump pero esta vez lo hice así. 


Con esto solucioné el pequeño problema de migración.

viernes, 28 de junio de 2013

No se pudo bloquear /var/lib/apt/lists/lock

En alguna ocasión nos puede ocurrir que al intentar actualizar (apt-get update) nuestro repositorio nos salga este error:


E: No se pudo bloquear /var/lib/apt/lists/lock - open (11: Recurso no disponible temporalmente)
E: No se pudo bloquear el directorio /var/lib/apt/lists/

Para solucionarlo basta con borrar el archivo /var/lib/apt/lists/lock

sudo rm /var/lib/apt/lists/lock

Este archivo se genera para bloquear el repositorio cuando se esta usando para evitar problemas de que dos programas (linea de comandos y synaptic, por ejemplo) actuen a la vez. Hay veces que este archivo pudiera quedar por error y entonces lo podemos borrar a mano sin problema.




jueves, 27 de junio de 2013

ACL + Samba + Btrfs

Hoy quiero explicaros como realizar un caso práctico de gestión de ficheros con la información de diversos tutoriales anteriores. Nos planteamos dar acceso via Samba a un grupo de usuarios a los cuales deberemos de otorgar diferentes niveles de acceso. Como la información que se moverá en estas carpetas nos interesará comprimirla, usaremos un sistema de ficheros que nos proporcione compresión.










ACL

Para la designación de accesos usaremos el paquete acl tal y como se explica en los tutoriales "Como extender las posibilidades de UGO hacia ACL" Parte I y Parte II




BTRFS






Podemos escoger el sistema de ficheros de Oracle Btrfs para dotarlo de compresión a tiempo real. En el tutorial "btrfs (Butter FS) en Ubuntu 11.04" explico como instalarlo y usarlo.


btrfs: unrecognized mount option 'acl'

Esto es normal ya que si miramos en https://btrfs.wiki.kernel.org/index.php/Mount_options :

noacl
Do not enable ACL's.

pero en ningún lado pone que para que las 'entienda' debamos poner ninguna opción. Así pues, en btrfs por defecto ya tiene el acl en cuenta.

SAMBA


Samba es una implementación libre del protocolo de archivos compartidos de Microsoft Windows (antiguamente llamado SMB, renombrado recientemente a CIFS) para sistemas de tipo UNIX. De esta forma, es posible que computadoras con GNU/Linux, Mac OS X o Unix en general se vean como servidores o actúen como clientes en redes de Windows. Samba también permite validar usuarios haciendo de Controlador Principal de Dominio (PDC), como miembro de dominio e incluso como un dominio Active Directory para redes basadas en Windows; aparte de ser capaz de servir colas de impresión, directorios compartidos y autentificar con su propio archivo de usuarios.

(Fuente Wikipedia)

Samba v3 ya viene por defecto con soporte acl y por tanto no tenemos que configurarlo de ninguna manera especial par que lo tenga en cuenta.

Para instalar el samba es facil:

sudo apt-get install samba samba-common

y para configurar un recurso compartido editaremos /etc/samba/smb.conf :

[ACLS]
        comment = Test de acls
        path = /con_acl/mi_ruta/aqui
        public = no
        writable = yes
        browseable = yes

 

Resumiendo, instalando los paquetes por defecto no tendremos mayor problema para usarlo.

viernes, 31 de mayo de 2013

Instalar y usar Tenable Nessus en Ubuntu 13.04

Nessus es un programa de escaneo de vulnerabilidades en diversos sistemas operativos. Consiste en un daemon, nessusd, que realiza el escaneo en el sistema objetivo, y nessus, el cliente (basado en consola o gráfico) que muestra el avance e informa sobre el estado de los escaneos. Desde consola nessus puede ser programado para hacer escaneos programados con cron.
En operación normal, nessus comienza escaneando los puertos con nmap o con su propio escaneador de puertos para buscar puertos abiertos y después intentar varios exploits para atacarlo. Las pruebas de vulnerabilidad, disponibles como una larga lista de plugins, son escritos en NASL (Nessus Attack Scripting Language, Lenguaje de Scripting de Ataque Nessus por sus siglas en inglés), un lenguaje scripting optimizado para interacciones personalizadas en redes.

(Fuente Wikipedia)

Lo primero que vamos a hacer para instalar el programa es descargarnos el paquete para Ubuntu desde la página oficial. Yo lo hice aquí:


http://www.tenable.com/products/nessus/select-your-operating-system


Para instalar el paquete deberíamos poder usar cualquiera de las herramientas típicas de instalación. Para mirar de hacerlo lo más visual y estándard posible podemos mirar de usar el Centro de software de Ubuntu aunque la instalación a mi no me fue bien:


Si no podeis hacerlo con el Centro de software de Ubuntu hacerlo por linea de comandos:

root@eithel-inside:~/Escritorio# dpkg -i Nessus-5.2.1-ubuntu1110_amd64.deb
(Leyendo la base de datos ... 439156 ficheros o directorios instalados actualmente.)
Preparando para reemplazar nessus 5.2.1 (usando Nessus-5.2.1-ubuntu1110_amd64.deb) ...
$Shutting down Nessus : .
Desempaquetando el reemplazo de nessus ...
Configurando nessus (5.2.1) ...
nessusd (Nessus) 5.2.1 [build N24021] for Linux
Copyright (C) 1998 - 2013 Tenable Network Security, Inc

Processing the Nessus plugins...
[##################################################]

All plugins loaded

 - You can start nessusd by typing /etc/init.d/nessusd start
 - Then go to https://localhost:8834/ to configure your scanner

Procesando disparadores para ureadahead ...

Una vez instalado el paquete, hagamos lo que nos dice. Primero arrancamos el servicio con /etc/init.d/nessusd start y luego accedemos al scanner mediante la URL https://localhost:8834

Tendremos que rellenar un formulario muy intuitivo:
  • Initial Account Setup
  • Plugin Feed Registration (aqui debereis seleccionar si es para uso empresarial o para casa).
  • Download plugins
  • Nessus Initializing
Con esto ya lo tendremos todo instalado y podremos empezar a usarlo.

¡Buen escaneo a todos!

miércoles, 17 de abril de 2013

Cómo solucionar "Agent admitted failure to sign using the key."

En publicaciones anteriores he hablado de como identificarse en un servidor mediante certificado ,como arreglar el típico problema del "Offending Key" de diversas maneras.

En mi caso, yo tenia unas claves publica/privada con las que me conectaba a algunos sitios por ssh. El caso es que me canvié las claves, las distribuí en donde me conectaba pero me dió el error "Agent admitted failure to sign using the key.". Pues bien, esto es porque además de generar las nuevas claves, hemos de decirle a nuestro agente ssh que las tenga en cuenta. Es decir, que las añada en su lista de claves. Esto lo hacemos con el comando ssh-add:


ssh-add
Identity added: /home/ediaz/.ssh/id_rsa (/home/ediaz/.ssh/id_rsa)


Con esto habremos arreglado el problema.

viernes, 5 de abril de 2013

Como extender las posibilidades de UGO hacia ACL (Access Control List) (parte 2)

En el último artículo Como extender las posibilidades de UGO hacia ACL (Access Control List) explicaba como instalar y ver y aplicar acls básicas para resolver algunos problemas de acceso que con el método UGO nos costaría bastante o simplemente no podríamos hacer. En este artículo quiero extender un poco el uso de las acl's explicando como poder borrar una acl (o todas), hacerla recursiva o hacer una acl por defecto.


Aplicar una acl por defecto

Cuando aplicas una acl sobre una carpeta tenemos el problema que las subcarpetas que se creen dentro de ella no heredan automáticamente estas acls. Así pues, en muchos casos, las acls base no nos satisfacen del todo. Si lo que queremos es se apliquen las acl automáticamente en los archivos y carpetas nuevos que se creen dentro, para ello tenemos que aplicar una acl por defecto. Para hacer esto:

setfacl -d -m g:prof_1er:rwx 1er_Grado
 
getfacl 1er_Grado
# file: 1er_Grado
# owner: root
# group: root
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:group:prof_1er:rwx
default:mask::rwx
default:other::---
Si miramos el man:
       -d, --default
           All operations apply to the Default ACL. Regular ACL entries in the input set are promoted to Default ACL entries. Default ACL entries in the input set are discarded. (A warning is issued if
           that happens).

Borrar una acl

Para borrar una acl (por ejemplo, si a una carpeta hemos dado privilegios a diferentes grupos y queremos sacar sólo a uno) lo podemos hacer de la siguiente manera:

setfacl -x g:prof_1er 1er_Grado/

Si miramos el man:
       The -x (--remove) and -X (--remove-file) options remove ACL entries. It is not an error to remove an entry which does not exist.  Only ACL entries without the perms field are accepted as parameters, unless POSIXLY_CORRECT is defined.

Borrar todas las acl en un fichero

Para borrar todas acl que tengamos aplicadas sobre una carpeta/archivo lo podremos hacer de la siguiente manera:

Imaginemos que tenemos:

getfacl 1er_Grado/
 

# file: 1er_Grado/
# owner: root
# group: root
user::rwx
group::r-x
group:prof_1er:rwx
mask::rwx
other::---


Bien, ahora lo que queremos es dejarlo como si nunca hubiéramos aplicado una acl:

setfacl -b -k 1er_Grado/
 

getfacl 1er_Grado/
# file: 1er_Grado/
# owner: root
# group: root
user::rwx
group::r-x
other::---



Si miramos el man:
       -b, --remove-all
           Remove all extended ACL entries. The base ACL entries of the owner, group and others are retained.

       -k, --remove-default
           Remove the Default ACL. If no Default ACL exists, no warnings are issued.
Es decir, con el -b borramos las acl y con -k borramos las acl por defecto. 



Aplicar una acl de modo recursivo


De la misma manera que lo hacemos con UGO, si queremos aplicar una ACL de modo recursivo, lo podremos hacer:

setfacl -R -m g:prof_1er:rwx 1er_Grado

Si miramos el man:
       -R, --recursive
           Apply operations to all files and directories recursively. This option cannot be mixed with `--restore'.



That u don't know what you've got 'til it's gone