Apps android para Aministradores Unix – QuickLinks

Algunas Apps de Android que no te pueden faltar si sos SysAdmin

HP iLO Mobilehttps://play.google.com/store/apps/details?id=com.hp.essn.iss.ilo.iec.spa
HP Server App: https://play.google.com/store/apps/details?id=com.pepperglobal.hp
IBM Flex System Manager: https://play.google.com/store/apps/details?id=com.ibm.msm.android
IBM Mobile System Remote: https://play.google.com/store/apps/details?id=com.ibm.research.ibmremote
Servers Monitor: https://play.google.com/store/apps/details?id=com.brltechnologies.servermonitor
Andazabbix Lite: https://play.google.com/store/apps/details?id=ru.sonic.zabbix
Cura: https://play.google.com/store/apps/details?id=com.cura
Halcyon Enterprise Console: https://play.google.com/store/apps/details?id=com.halcyonsoftware.enterpriseconsole
Chmod Calculator: https://play.google.com/store/apps/details?id=ca.clarkewich.mark.chmodcalc
Storage: https://play.google.com/store/apps/details?id=com.bubbles.StorageInfo
VMWare: https://play.google.com/store/apps/details?id=me.freeroam.vmw
SNMP: https://play.google.com/store/apps/details?id=snmptrafficgrapher.app
SNMP MIB Browser: https://play.google.com/store/apps/details?id=com.zoho.snmpbrowser

Growth Hacking – QuickLinks

Otro mini QuickLinks que se resistió a ser completado

Herramientas de google:
Google Analitycs: Todos los datos y estadísticas sobre tu sitio
Google Web Master tool: Herramientas para SEO
Google Trends: Conocer las tendencias en las búsquedas
Google Adwords Keyword Planner: Ideas para palabras claves

SEO test tools:
Woorank
Nibbler
Seo Google Guru
SEO Centro
SEO Site ChekUp
Bing Webmaster tools
Page Speed test

Redes con Subnetting

Divide y vencerás: Esta máxima romana viene a hacerse presente de nuevo para ayudarnos a imperar sobre las redes!

Solución rápida: http://www.aprendaredes.com/cgi-bin/ipcalc/ipcalc_cgi, además, te dejo una tabla 100% útil al final del artículo.

El problema: La escases

Cuando tenemos un switch y un router, con solo algunas pcs, crear una red no es un problema,
pero si uno debe enfrentarse a una legión de pcs, con muchos routers y switches, es muy importante que conozcamos como movernos y como crear redes y subredes.
No es un problema trivial, ya que cuando se diagramo el protocolo IP, no se imaginó el crecimiento exponencial que tendría Internet, y la escases de direcciones que eso significaría. Claro que no es para culparlos, 4.294.967.296 de IPs disponibles era un número muy amplio como para pensar en que algún dia sería poco!

La solución: Subdividir

CIDR fue la respuesta a la necesidad de mayor flexibilidad a la hora de crear redes con direcciones de 32 bits (ipv4). CIDR introdujo una nueva manera de interpretar las mascaras de subred de las direcciones ip, con la técnica VLSM.

A los bifes!

Ahora bien, aún no te queda en claro nada? Bueno… demasiada intro, vayamos a los bifes!
Para explicar Subnettin/CDIR/VLSM voy a usar los clásicos ejemplos de números IP designados para redes privadas, pero lo mismo es aplicado a la hora de crear redes para ISPs/Carriers.

Si alguna vez configuraste una PCs/Server en una red, seguramente habras utilizado una dirección IP y una mascara de sub red. Quizas no tenias plena certeza de lo que la mascara de subred significa, pero si de que lo mas común es que esta, sea 255.255.255.0. Pues en configuraciones caseras raras veces veras otras mascaras.
Aclaremos un concepto entonces antes de seguir:
Una dirección IP, no es solo ese famoso número al estilo 192.168.1.2.
Una dirección IP, esta compuesto por su número IP (p.e. 192.168.1.2) y por su mascara de sub red (p.e. 255.255.255.0), ambas cualidades de una dirección ip, indicaran a que red lógica pertenece dicha dirección. Es decir que un número ip, sin su correspondiente mascara de subred, no es mas que un número!

Ejemplo:

Los números IP: 192.168.1.1, 192.168.1.2, y 192.168.1.3 que tienen como mascara de subred 255.255.255.0, pertenecen todos a la misma red.
Sin embargo el número 192.168.1.4 con mascara de subred 255.255.255.240 no pertenece a la red anterior

Expliquemos por que:

Para determinar la red a la que pertenece una dirección IP debemos dejar de pensar en decimal y pasar nuestra mente a binario (al estilo matrix! )
Repasemos binario:Como todos sabemos en binarios solo existen 2 dígitos, 1 y 0, con los cual formaremos cualquier otro número. Asi, el 0 es el 0 que conocemos en decimal, el 1 es el 1 que conocemos de decimal, pero el 2 decimal se expresa en binario de la forma 10, por eso dicen que existen solo 10 tipos de personas en el mundo las que saben binario y las que no. Mas allá del chiste, veamos una tablita:

Binario Decimal

0 0
1 1
10 2
11 3
100 4
101 5
110 6

y asi sucesivamente.

De forma tal que cuando vemos el número 255, en realidad deberíamos mirar con nuestro ojo de matrix lo siguiente: 11111111
8 unos! Si ya se que no sabes ni sumar en binario, y saltamos de 6 al 255 en binario, pero no puedo extenderme mas sobre binario en este minitutorial, por lo que te doy la regla, y si tu intriga te lleva, estudiaras un poco mas en algún otro lado:

0 0 0 0 0 0 0 0
128 64 32 16 8 4 2 1

Asi de simple, cada vez que aparece un 1 en la linea de los 0, sumas el número decimal correspondiente, por ejemplo:

0 0 0 1 0 1 1 1
128 64 32 16 8 4 2 1

Entonces, 10111 es 23 en decimal (16 + 4 + 2 + 1).

Transformemos una mascara de subred:

255.255.255.0 es:

11111111.11111111.11111111.00000000

Los importantes aca, son los 1. La mascara de sub red tiene 3 octetos de unos, 3 grupos de 8 unos, y eso es 3×8=24, no?
Si, por eso habrás visto algo parecido a lo siguiente: 192.168.1.1/24, es decir, dirección Ip 192.168.1.1 con mascara 255.255.255.0, en si, una forma mas compacta de expresarlo.
Los 8 ceros nos indican la cantidad de hosts que esa red tiene, y para saberlo podemos usar: 2^X, siendo X=8 (32 – 24 = 8 ) en este caso, que es la cantidad de bits que la mascará de subred tiene “desactivados”. 2^8 es 256, y esta es la cantidad de hosts que entran en esa red, sin embargo, a estas 256 ips posibles, se le debe restar siempre 2, ya que la primera dirección posible es reservada para “nombre de red” o “unicast” y la última para “broadcast”.

Así, nuestros ojos matrixiados ya ven, que 192.168.1.1/24 indica, que la red contiene 256 ips, de las cuales la 192.168.1.0 (la primer ip) es el nombre de la red, y 192.168.1.255 es el broadcast de la red. Así mismo vemos que las IP disponibles van desde la 192.168.1.1 a la 192.168.1.254.

Pfff, cuanto lio para decir algo que sin trabajar en binario ya sabiamos…. Pero, ahora ya sabes por que es así! no es hermoso? Avancemos!

Una vez entendido lo anterior, podemos (recien) meternos con Subnetting

Como dijimos CDIR sirve para que IP tenga mas flexibilidad a la hora de crear redes, ya que hasta 1993, solo se conocian las redes con mascaras de subred /24, /16 y /8,
que son las famosas redes de clase:

Red de Clase C, por ejemplo 192.168.1.0 255.255.255.0 (256 nodos posibles)
Red de Clase B, por ejemplo 172.16.0.0 255.255.0.0 ( 65536 nodos posibles)
Red de Clase A, por ejemplo 10.0.0.0 255.0.0.0 (16777216 nodos posibles)

Cual era el problema? Simple, si teniamos una red con 300 nodos, teniamos que configurar una red del tipo B por solo unos pocos nodos, y “desperdiciabamos” 65400 y pico de nodos posibles, lo que quizas para una red privada podría no ser un problema, pero cuando hablamos de redes públicas es grave, ya que habia que distribuir las ips al rededor de todo el mundo, y con ese tipo de saltos (de 256 a 65536 por ejemplo) pronto no habría mas direcciones para asignar.
Además si bien, no parece problematico para las redes privadas, si lo es, ya que las redes lógicas disminuyen los dominios de broadcast, y por lo tanto aumentan el rendimiento de la red.

Para implementar CIDR, sólo debemos abrir nuestra mente:

11111111.11111111.11111111.11100000

Traducido es, 255.255.255.224, o bien un /27.
Esta mascara de subred nos brinda la posibilidad de tener un red con 32 host
Entonces, si asignamos esta mascara a una direccion como por ejemplo 192.168.1.50, tendríamos los siguientes datos:

Dirección IP: 192.168.1.50
Mascara de subred: 255.255.255.224
Cantidad de nodos disponibles: 30
Elevo 2 a la 5 (la cantidad de 0s) 2^5=32 menos 2 (unicast y broadcast), es una red de 30 nodos
Primera IP de la red: 192.168.1.33
En este ejemplo debemos considerar que hemos dividido a una red de 256 direcciones IP en redes mas pequeñas de 32 (haciendo la cuenta 256/32, 8 redes de 32 nodos)
Por lo tanto, la primera red va desde 192.168.1.0 (unicast) a 192.168.1.31(broadcast), la segunda red va desde 192.168.1.32 (unicast) a 192.168.1.63 (broadcast).
Y ahi ya vemos que nuestro hosts ( 192.168.1.50) esta en la segunda red, por lo q la primera ip disponible para asignar es la 192.168.1.33.

Bien, hasta aquí, tenes las herramientas minimas necesarias para conocer un poco mas sobre subnetting, faltaría que veas que pasa con una red con mascara 255.255.224.0, pero eso ya lo podes prácticar vos solo, por que en si, es lo mismo

A la carga! Divide y venceras!!!!!

subnetting

Referencias:

http://www.netexpresslabs.com/info/subnet
http://es.wikipedia.org/wiki/CIDR

Para mas info, sobre la aplicación correcta de VMLS ver este artículo

Flags del Kernel para Firewall o Tuneando el /proc

Opciones de Seguridad en el kernel de Linux (proc)

 

IpTables es la herramienta en espacio de usuario, que permite establecer filtros con NetFilter, el cual es parte del kernel de Linux. Pero independientemente de las herramientas en espacio de usuario, existe una forma de indicar al kernel, como manejar ciertas cosas. Esta forma es, a saber, mediente variables del kernel que pueden modificarse desde el directorio /proc.

/proc

No tengo que detenerme mucho sobre le directorio /proc, ya que basta googlear para encontrar información sobre este pseudo sistema de ficheros. Solo hay que decir que mediante el proc podemos acceder a información del kernel, y modificar “on the fly” ciertas configuraciones.

Por ejemplo en /proc/sys/kernel/hostname encontramos el hostname de nuestro linux, y lo cambiamos haciendo

echo otroHostname > /proc/sys/kernel/hostname

De esta misma manera, podremos cambiar “a mano” ciertos valores del funcionamiento del kernel, y consecuentemente, el comportamiento del networking del mismo. Sin embargo, existe una manera mas “prolija”: sysctl

Sysctl, nos permite configurar las mismas variables (ver mas abajo) que esten configuradas en el /proc/sys , de forma centralizada en el archivo /etc/sysctl.conf. Siendo su sintaxis muy simple:

clave.a.configurar = valor

Para no ahondar mucho sobre el tema, simplemente hagamos un breve repaso y vayamos a lo importante

Breve repaso:

 

sysctl -a # muestra todas las variables configurada
sysctl -w kernel.hostname=MyHaxorName # asigna "MyHaxorName" como hostname del sistema
sysctl kernel.hostname # muestra el valor asignado a la variable
echo "kernel.hostname = MyHaxorName" >> /etc/sysctl.conf # cada vez que se inicie el sistema, sysctl configurará
las variables como se encuentran en este archivo 

A continuación, una lista de las variables mas importantes a tener en cuenta para la seguridad de nuestro firewall

Filtro anti-spoof

/proc/sys/net/ipv4/conf/eth0/rp_filter

En /proc/sys/net/ipv4/conf tenemos una carpeta por cada interfaz de red (eth0, lo, wlan0.. etc, además de las carpetas default y all). En cada una de ellas, encontramos archivos que configuran comportamiento especifico de cada interfaz, en el caso de rp_filter, es un filtro anti spoof: solo permite que la respuesta a un paquete sea enviada por la misma interfaz por la cual se recibió el paquete.

Habilitamos con 1, deshabilitamos con 0.

Ignorar pings

/proc/sys/net/ipv4/icmp_echo_ignore_all

Bastante conocido, con un 1 en este archivo, ignoramos todos los paqutes ICMP tipo echo, es decir, los pings.

El no responder pings, permite que pasemos desapercibidos en algunos escaneos simples, pero también nos bloquea la posibilidad de hacer pruebas de pings.

Syn Cookies

/proc/sys/net/ipv4/tcp_syncookies

El ataque syncooky conciste en enviar muchos paquetes TCP con el flag SYN activado,  pero no completa el HandShake, por lo que ocupa memoria en conexiones que quedan a la espera, causando un DoS. Colocando un 1 en este archivo, le pedimos al kernel, que no abra un buffer hasta que la conexión este abierta.

Paquetes Marcianos

/proc/sys/net/ipv4/conf/all/log_martians

Envia señales a syslog cuando entran paquetes de redes ilegales (cuando el kernel no sabe como rutearlas).

Paquetes Icmp Redirect

/proc/sys/net/ipv4/conf/all/accept_redirects

Un paquete ICMP Redirect, informa cuando hemos mandado un paquete a travez de una ruta que no es la optima.

Un ejemplo casero, es cuando tenemos ROUTER1 conectado a internet y a la LAN, en la cual existen 2 pc (PC1 y PC2), la configuración normal seria configurar a PC1 y PC2 con Default Gatewat en ROUTER1. Si cometieramos la tontera configurar PC2 con su default gateway en PC1 (teniendo por Default Gateway a ROUTER1 en esta pc) PC1 nos informaria que hay una ruta mas directa, y es atravez de ROUTER1. Esa funcion de anunciar esa ruta la cumple los paquetes ICMP Redirect. Con este tipo de paquetes, “alguien” podría realizarte un MITM.

ICMP Send_Reditect

/proc/sys/net/ipv4/conf/all/send_redirects

La explicación de esta variable esta explicada en Paquetes ICMP Redirect, pero en este caso, implica no enviar dichos paquetes ICMP.

Si tu linux no actua como ruter, en una red con varios routers, lo mas aconsejable es deshabilitarlo, poniendo un 0.

Ip Connection Tracking

/proc/sys/net/ipv4/ip_conntrack_max ó

/proc/sys/net/ipv4/netfilter/ip_conntrack_max

En este archivo podemos colocar un numero, el cual será la cantidad máxima de conexiones IP que el kernel puede manejar. Este numero suele estar fijado segun la cantidad de memoria ram que poseamos. Esto puede ser un punto clave a la hora de lidiar con DoS. Asi mismo, podemos encontrar unos cuantos archivos similares, pero más especificos, haciendo ls /proc/sys/net/ipv4/netfilter/ip_conntrack*, los nombres de cada uno dan una idea de funcionalidad, y si conoces bien el funcionamiento del protocolo IP podrás retocar estos valores.

Source Route

/proc/sys/net/ipv4/conf/all/accept_source_route

Cuando internet nacio, inocentemente creia que todos serían buenas personas, por lo que sus protocolos, permitian a cualquiera obtener mucha información, en este caso, Ipv4,  permite que solicitemos a un determinado host, una ruta especifica por donde enviar paquetes, pudiendo ser utilizada esta información para conocer las “Relaciones de Confianza” entre routers. Fuera de eso, hoy en dia no se usa. Lo deshabilitamos con un 0

ICMP Broadcasting  (protección smurf)

/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

ICMP tiene la facultad de poder enviar paquetes Broadcast, es decir, enviar un paquete, el cual todos los hots reconoceran como enviados hacia si mismos, ya que el destino de dicho paquete es una dirección de broadcast. Al recibir este paquete, el host actua en consecuencia y lo responde. Si todo funcionara como corresponde, no habria problema con esta funcionalidad… pero si “alguien” decide enviar paquetes ICMP Broadcast a una gran lista de IPs con un “source” spoofeado, todos los IPs de la lista enviarian una respuesta a la IP inocente (la spoofeada), causandole probablemente un DoS. Para evitar que nos usen como “reflector” enviandonos paquetes broadcast, ignoramos dichos paquetes colocando un 1 en este archivo.

ICMP Dead Error Messages

/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

El RFC 1122, nos pide que los paquetes ICMP erroneos sean completamente descartados silenciosamente, para no probocar tormentas de broadcast.  Para cumplir con dicho requerimiento, colocamos un 1 en dicho archivo.

IP Forward

/proc/sys/net/ipv4/ip_forward

Conocida por todos, esta variable, habilita o deshabilita el reenvio de paquetes. En los casos donde nuestro linux haga NAT, debe estar habilitada, en caso contrario, es recomendable deshabilitarlo.

TCP FIN TimeOut

/proc/sys/net/ipv4/tcp_fin_timeout

Tiempo en segundos que esperaremos antes de descartar una conexión parcialmente cerrada, por defecto 60 segundos, ya que así lo pide el RFC correspondiente a TCP, pero si queremos podemos disminuirlo a fin de evitar algún DoS.

TCP KeepAlive Time

/proc/sys/net/ipv4/tcp_keepalive_time

Cantidad de segundos que esperará el kernel, antes de enviar un paquete para mantener abierta la conexión, a pesar de que no esta siendo utilizada momentaneamente. Por defecto el valor es 7200 (2 horas),  pudiendo ser reducido en algunos casos a 1 hora o 1/2 hora, en segundos 3600 o 1800.

Proxy Arp

/proc/sys/net/ipv4/conf/all/proxy_arp

Con un 0 podemos deshabilitar esta funcionalidad, que no suele ser necesaria, a menos que seamos servidor de VPN, Firewall o Router que lo requiera.

Cache ARP

/proc/sys/net/ipv4/neigh/[interfaz de red]/gc_stale_time

Los segundos que configuremos en esta variable, definiran el tiempo en que se actualiza el cache ARP. Dicho cache, es el que se envenena cuando se realiza un ARP Poisoning Attack, por lo que cuanto mas bajo sea, mas vulnerable a este ataque, pero al mismo tiempo,  mas rapido sabremos cuando una IP quedo fuera de servicio o una MAC cambio de IP (arp -n para verificar las entradas del cache y su estado)

Escalado de Ventana

/proc/sys/net/ipv4/tcp_window_scaling

Dicha variable, habilita (con un 1) o deshabilita (con un 0) la posibilidad de que la conexión TCP negocie el tamaño de la ventana. Dependiendo del segmento de la red y la topologia de la misma, suele ser conveniente que esté habilitada, sin embargo, nos expone a ciertos escaneos (nmap windows scaling) y a posibles DoS.

Algoritmo SACK

/proc/sys/net/ipv4/tcp_sack

SACK es un algoritmo para detectar perdidas de paquetes. Si habilitamos dicha opción (colocando un 1) siempre y cuando pueda, TCP lo utilizará, en caso contrario, ignorará dicha opción. Es recomendable habilitar dicha opción, ecepto que nuestras conexiones TCP las hagamos en un ambito sin demasiadas perdidas de paquetes.

Rango de Puertos Locales

/proc/sys/net/ipv4/ip_local_port_range

En este archivo no colocaremos ni un 1 ni un 0, si no que colocaremos de números, que definiran un rango de puertos, el cual será utilizado para puertos locales, es decir, puertos desde donde comenzaremos conexiones hacia el exterior. En general el rago es 1024 a 4999, pero es conveniente ejecutar:

#echo "32768 61000" > /proc/sys/net/ipv4/ip_local_port_range

en sistemas donde se usen los puertos 1024 a 4999 para brindar servicios.

TTL de nuestros paquetes

/proc/sys/net/ipv4/ip_default_ttl

TTL es Time To Live, o bien, el tiempo de vida que le otorgaremos a los paquetes generados por nuestro host. Este “tiempo” no se cuenta en segundos, sino en cantidad de routers que puede atravesar antes de ser descartado (morir). Es asi que cada router, descuenta uno a dicho valor.

Llegar de sudamerica a china nos cuesta de 12 a 20 saltos, por lo que un paquete que tenga mas de 30 saltos es un tanto raro. El valor mas recomendado en general es 64 (traceroute y a sacarnos las dudas)

Explicit Congestion Notification

/proc/sys/net/ipv4/tcp_ecn

Como lo recita su nombre, ECN es una opción de TCP que permitenotificar cuando un host esta congestionado, para que se busque otra ruta. Algunos firewalls o routers pueden llegar a filtrar los paquetes que tengan esta opción habilitada, pero son los menos. Habilitamos con un 1, que sería lo mas recomendable.

Conclusión:

A la hora de armar un Firewall para nuestro linux, no es cuestión de ejecutar cualquier script a fin, si no conocer bien que es lo que necesitamos, para que y como. El conocer estas variables nos permite conocer donde debemos tocar en caso de ser necesario.