martes, 14 de marzo de 2017

Seguridad en IP Tables (Linux) - Operaciones con una regla simple


Esta es la base del filtado de paquetes, la manipulación de reglas. Normalmente utilizarás los comandos de añadir (-A) y eliminar (-D), las otras (-I para insertar y -R para reemplazar) son extensiones de estos conceptos.

Cada regla especifica un conjunto de condiciones que un paquete debe cumplir, y lo que haremos si cumple dichas condiciones (efectuaremos una 'acción'). Por ejemplo, puede que quieras hacer DROP de los paquetes ICMP provinientes de la dirección 127.0.0.1. En este caso definiremos el protocolo como ICMP, la dirección de origen como 127.0.0.1 y la acción será DROP.

127.0.0.1 es el interface 'loopback' que tendrá en su máquina incluso si no dispone de una conexión real a la red. Puede hacer un 'ping' para generar paquetes dichos paquetes (un ping simplemente envia paquetes ICMP del tipo 8 (petición de eco) que todos los hosts operativos deberán responder con un paquete ICMP de tipo 0 (respuesta del eco). Esto hace ping muy útil para el testeo.

    # ping -c 1 127.0.0.1
    PING 127.0.0.1 (127.0.0.1): 56 data bytes
    64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms

    --- 127.0.0.1 ping statistics ---
    1 packets transmitted, 1 packets received, 0% packet loss
    round-trip min/avg/max = 0.2/0.2/0.2 ms

    # iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP

    # ping -c 1 127.0.0.1
    PING 127.0.0.1 (127.0.0.1): 56 data bytes

    --- 127.0.0.1 ping statistics ---
    1 packets transmitted, 0 packets received, 100% packet loss
    #


Puedes ver aquí como funciona el ping (el parámetro '-c 1' le indica a ping que envíe un único paquete).

Despues añadimos (-A) a la chain 'INPUT' (de entrada) una regla especificando que los paquetes que vengan de 127.0.0.1 (-s 127.0.0.1) con el protocolo ICMP (-p icmp) deberán tomar la acción DROP (-j DROP)

Una vez hecho esto, probamos la regla con un segundo ping. El programa esperará una respuesta que nunca llegará Podemos eliminar esta regla de dos formas. La primera, ya que sabemos que es la única regla en la chain de entrada (input), podemos utilizar su número para borrarla:

              # iptables -D INPUT 1

La segunda forma es igual a la del comando -A, pero sustituyendo -A por -D. Esto es útil cuando tiene varias reglas complejas y no quieres tener que contarlas hasta encontrar la que buscabas. Para estos casos usaremos:

              # ipchains -D INPUT -s 127.0.0.1 -p icmp -j DROP

La sintáxis de -D debe ser exáctamente igual a la de -A (o -I o -R). Si hay  múltiples reglas iguales en la misma chain, sólo la primera será eliminada

miércoles, 8 de febrero de 2017

Reiniciar un campo identity en SQL Server

Frecuentemente una de las cuestiones más frecuentes que como administrador de sistemas llega a mi es como reiniciar el valor de identidad de una tabla en Sql Server.

Los valores identity aumentan de forma secuencial, si eliminamos los registros de una tabla, el valor identity no se inicializa, sino que continua con su último valor.

Para modificar este comportamiento utilizaremos el siguiente comando:

DBCC CHECKIDENT (<nombre_tabla>, RESEED,0)

martes, 13 de diciembre de 2016

Configuración de Apache umask

Algunas veces nos encontramos con el problema de que los archivos generados por el usuario “apache” tienen fijados los permisos en "0600", que corresponde a "-rw ---". Pudiendo ocurrir que las aplicaciones Web sean incapaces de trabajar con los archivos. "0600" corresponde a un umask de "066". En su lugar podemos usar "022", que corresponde a "-rw-rw-r-" o "0664".

En Ubuntu, edite /etc/apache2/envvars y añada esta línea al final del archivo:

umask 022

En Red Hat / CentOS haga lo siguiente:

echo "umask 002" >> /etc/sysconfig/httpd

Ahora reinicie Apache y el umask nuevo será efectivo.