Borrar todos los ficheros menos uno con RM

Si queremos borrar con RM todos los ficheros de una ruta salvo uno o unas determinadas extensiones podemos hacerlo con alguno de estos dos comandos.

 

 

Montar NFS Centos 7

Instalamos paquetes

Habilitamos y arrancamos el servicio

Continue reading

/var/log/messages error: Created slice user-0.slice

Si nos aparece este error en un Centos 7 podemos solucionarlo así:

/var/log/messages error: Created slice user-0.slice

Este error se soluciona ejecutando este comando y reiniciando syslog.:

Otra posible solución por si falla la anterior:

 

Filtrado Iptables + Ipset (bloqueo por paises)

 (Fuente original : http://www.maravento.com/2015/08/filtrado-por-geolocalizacion-ii.html)
(Lo he fusilado/copiado por si desaparece el enlace)

Si queremos bloquear una dirección ip o un rango en nuestro firewall, con crear una regla iptables podría ser suficiente:

Pero qué sucedería si queremos neutralizar un país entero con varios cientos de miles (y a veces hasta millones) de ips. Hacerlo con estas reglas de iptables no es algo muy recomendable, ya que pueden saturar el firewall.

En este punto muchos optarán por hacerlo a la inversa, o sea dejar pasar las ips que nos interesan y denegar el resto, sin embargo en redes flexibles (abiertas o semi-abiertas) sería un trabajo de tiempo completo para el operador IT, ya que tendría que validar cada ip que solicite un usuario de su red local, convirtiéndose en una auténtica locura, no viable para estos escenarios.
Pero esto no significa que nos quedemos de brazos cruzados. Hay ips relacionadas con spam, o de países de “dudosa reputación”, que podemos bloquear, sin que esto implique una carga excesiva tanto a nuestro firewall como a nuestro trabajo.

 

 

En el post Filtrado por Geolocalización expusimos varias herramientas que hacen esto posible; entre ellas el módulo Xtables-addons de Netfilter Iptables (vea el tutorial), SSL Cop de Securybydefault (para certificados CAs), GeoLocalización por Apache, entre otras, pero algunas han quedado obsoletas, como es el caso de Xtables, que funcionó bien en kernel 2.x, pero presenta problemas de compatibilidad con los nuevos kernels 3.x, y hay que compilar el kernel para instalarla, lo cual no siempre es conveniente, y SSL Cop no ha recibido actualizaciones en más de 2 años.

Existen otros proyectos con el mismo propósito, como ipfilterX, IPlist, I-blocklist, countryipblocksip2location, entre otros, en su mayoría relacionados con Netfilter, al igual que nuestro candidato de hoy, ipset, el cual utiliza reglas tipo ipdeny <country>, para el bloqueo de ips, que es tan bueno, que usted olvidará cualquier otro método de bloqueos de ips, por su velocidad y flexibilidad (Vea el benchmarks AQUI).
Antes de comenzar
Las reglas que explicaremos a continuación están basadas en Debian/Ubuntu, IPv4 y formato CIDR. Se recomienda utilizar kernel 3.1x, iptables v1.4.x o superior y ipset v6.20x. También se sugiere realizar la instalación directamente de los repositorios:

Muy Importante
Los programas y reglas que se describen en este post consumen gran cantidad de recursos de su sistema. Su uso excesivo puede llevar a su servidor al colapso. Úselos con moderación.
Ipset + ipdeny
Las reglas ipset son sencillas. Basta con echarle una mirada al tutorial y tendremos todas las opciones, entonces solo nos resta poner algunos ejemplos para automatizarlo.
Asumiendo que tenemos un script de iptables (que es lo más aconsejable) con nuestras reglas personales, entonces vamos a agregar ipset.
Primero crearemos un script que descargará la base de datos de ips geolocalizadas por países, para que la labor de bloqueo se haga directamente en nuestro terminal y/o servidor y no tener que descargar cada bloque de manera independiente, según el país que queramos restringir.
Abrimos el editor de texto y pegamos el siguiente código

Y lo guardamos con un nombre, en este caso elegimos geozone.sh en la carpeta /etc/init.d/. Le damos permisos de ejecución.

Y lo programamos en el cron para que actualice periódicamente. Por ejemplo semanalmente.

Este script crea una carpeta en /etc llamada zones (si ya existe no la crea) y descarga y descomprime la base de datos ipdeny a /etc/zones (puede ser cualquier otra carpeta).
El paso siguiente es abrir nuestro script de iptables, y antes de cualquier regla propia, agregamos el bloqueo por geolocalización. En el siguiente ejemplo, vamos bloquear a china y rusia. Si quiere saber exactamente cuál es la nomenclatura usada para cada país (para poder agregar los países a su regla de iptables), puede consultarla AQUI.

En el ejemplo anterior utilizamos dos variables. iptables (representando a /sbin/iptables) y ipset (representando a /sbin/ipset) con el propósito de no escribir esta información y en su reemplazo poner $iptables y $ipset.
Luego hacemos un flush de las reglas almacenadas en ipset (ipset -F) y creamos nuestra lista negra para ipset, la cual llamamos blackzone (puede ser cualquier nombre). Le agregamos el parámetro -! que significa -exist, que me permite ignorar el error que se genera cuando se corre más de una vez el script y se vuelven a agregar los mismos bloques CIDR del país a bloquear.
También utilizamos hash:net que por lo general se utiliza para almacenar múltiples bloques de ips diferentes (lo contrario a hash:ip que sirve para host o ips individuales. También existen otros como hash:mac, etc). Por defecto tiene 65.536 elementos, sin embargo se recomienda elevar este valor con el parámetro maxelem. En este caso lo hemos subido a 1000000 (ya que son muchos bloques)
Luego hacemos un cat a los archivos que contienen las ips de los países a bloquear, en este caso cn.zone y ru.zone y los agregamos a la regla de ipset que creamos (blackzone). Finalmente iptables bloquea a blackzone utilizando la regla -m set –match-set blackzone src. Esta “engancha” el conjunto IP con el interruptor -m y se establece la asociación con blackzone y aplica a la ip destino src y cerramos con DROP.
Nota: Tenga en cuenta la cabecera de los script (/bin/bash vs /bin/sh). El comando cat no es capaz de leer los corchetes con cabecera /bin/sh ({cn,ru}.zone) por tanto para evitar este y otros errores de compatibilidad se recomienda /bin/bash. Para mayor información consulte el portal askubuntu.
Finalmente verificamos que la regla funcione.

Y si queremos agregar algunos rangos de ips adicionales a nuestra lista negra de ipset blackzone, podemos hacerlo directamente por terminal. Ejemplo:

Y verificamos que se hayan agregado con el comando:

Y debería salir algo similar a lo siguiente:

Y para vaciar las ips

Ipset + listas negras personalizadas
Podemos crear nuestras propias listas negras de ips, rangos de ips, CIDR, bien sea a partir de las existentes o desde 0. Como habíamos mencionado, en internet existen muchas de estas listas, tales como la ya mencionada ipdeny, y también countryipblocksip2location, etc. También puede incluir las utilizadas por los nodos proxys (Tor, ultrasurf, etc). Incluso en el post Firewall IV publicamos algunas de estas superlistas.
Y creamos una acl que contenga estas ips, y la ponemos en algún lugar de nuestro servidor y/o terminal y modificamos la regla de iptables descrita para que la lea.
En el siguiente ejemplo creamos la acl blackips que contiene las ips a denegar y la guardamos en algún lugar (ejemplo: /home/usuario/blackips) y la creamos también en ipset con el nombre de blackips y luego la denegamos. En este caso reemplazamos hash:net por hash:ip, que es el que se utiliza para bloquear IPs independientes.

Continue reading