Ps se utiliza para obtener una instantánea de los procesos en el
sistema. Muchas veces es necesario obtener información valiosa, como por
ejemplo determinar bajo qué usuario corre un proceso, y utilizamos el
viejo y conocido “ps aux” sin saber bien que opciones estamos
utilizando.
Generalmente en cualquier distribución de GNU/Linux se
incluye la versión de ps que acepta diferentes tipos de opciones: las
opciones UNIX que son precedidas por un guión (dash), las opciones BSD
que no utilizan guión, y las opciones GNU largas que se preceden por dos
guiones. Estas opciones se pueden mezclar, pero a veces ocasionan
conflictos o existen opciones sinónimas que producen los mismos
resultados. Por ejemplo “ps -aux” muestra todos los procesos
pertenecientes al usuario llamado “x”, ya que no suele existir un
usuario llamado “x” ps lo interpreta como el comando “ps aux” e imprime
una advertencia
Por
defecto ps sólo muestra los procesos con el mismo user id efectivo
(EUID) que el del usuario que lo ejecuta. Cuando utilizamos ps con las
opciones “aux” el resultado es:
a: eliminar la restricción BSD “only yourself” para agregar procesos de otros usuarios
u: utilizar el formato orientado al usuario
x: eliminar la restricción BSD “must have a tty” para agregar procesos que no tengan una tty asociada
De esta forma seleccionamos todos los procesos en el sistema y los mostramos en el formato orientado al usuario.
La salida de “ps aux” es una tabla donde cada fila es un proceso y las columnas contienen la siguiente información:
USER: usuario con el que se ejecuta el proceso
PID: ID del proceso
%CPU: porcentaje de tiempo que el proceso estuvo en ejecución desde que se inició
%MEM: porcentaje de memoria física utilizada
VSZ: memoria virtual del proceso medida en KiB
RSS: “resident set size”, es la cantidad de memoria física no swappeada que la tarea a utilizado (en KiB)
TT: terminal que controla el proceso (tty)
STAT: código de estado del proceso (información detallada más adelante)
STARTED: fecha de inicio del proceso
TIME: tiempo de CPU acumulado
COMMAND: comando con todos sus argumentos
Los códigos de estado del proceso pueden ser:
D: suspendido no interrumpible (generalmente esperando E/S)
R: en ejecución o listo para ejecutarse (en cola)
S: suspendido interrumpible (esperando que se complete un evento)
T: detenido, por una señal de control de trabajo o porque está siendo traceado
W: paginado (no válido a partir del kernel 2.6.xx)
X: muerto (nunca debe ser visto)
Z: proceso difunto (“zombie”), terminado pero no reclamado por el proceso padre
Para
los formatos BSD (por ejemplo como cuando se utiliza “ps axo” para
mostrar la lista de procesos en un formato definido por el usuario) y
cuando se utiliza la palabra clave “stat”, se muestran los caracteres
adicionales:
N: baja prioridad
L: tiene páginas bloqueadas en memoria
s: es un líder de sesión (se trata de un proceso que ha iniciado una nueva sesión)
l: es multihilado
+: está en el grupo de procesos en primer plano
Por ejemplo:
$ ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
Algunos ejemplos útiles que se incluyen en el manual de ps son:
Ver todos los procesos en el sistema utilizando la sintaxis estándar:
ps -e
ps -ef
ps -eF
ps -ely
Imprimir un árbol de procesos:
ps -ejH
ps axjf
Obtener información de hilos:
ps -eLf
ps axms
Obtener información de seguridad:
ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM
Ver todos los procesos ejecutando como root (ID efectivo y real) en formato de usuario:
ps -U root -u root u
Entre
muchas opciones que tiene ps, es posible ordenar la salida de acuerdo a
una columna, para esto se debe utilizar la opción gnu larga “–sort”,
por ejemplo para ordenar por tiempo de CPU (si deseamos determinar qué
proceso ha utilizado más CPU) seleccionamos el código “cputime”,
correspondiente a la columna TIME:
ps aux –sort cputime
Es
posible alterar el comportamiento de ps utilizando variables de
entorno, la más significativa es “PS_PERSONALITY” la cual afecta la
“personalidad” de ps. Se puede setear “PS_PERSONALITY” utilizando export
y observar los resultados, por ejemplo:
export PS_PERSONALITY=bsd
ps
PID TTY STAT TIME COMMAND
675 tty4 Ss+ 0:00 /sbin/getty -8 38400 tty4
680 tty5 Ss+ 0:00 /sbin/getty -8 38400 tty5
685 tty2 Ss+ 0:00 /sbin/getty -8 38400 tty2
687 tty3 Ss+ 0:00 /sbin/getty -8 38400 tty3
692 tty6 Ss+ 0:00 /sbin/getty -8 38400 tty6
893 tty1 Ss+ 0:00 /sbin/getty -8 38400 tty1
17774 pts/1 S 0:00 su 17775 pts/1 S 0:00 bash 18064 pts/1 R+ 0:00 ps
export PS_PERSONALITY=linux
ps
PID TTY TIME CMD
17774 pts/1 00:00:00 su 17775 pts/1 00:00:00 bash 18065 pts/1 00:00:00 ps
sábado, 1 de noviembre de 2014
Limpieza de sistema, ubuntu
Es un script que se usa para la limpeza y el mantenimiento de Ubuntu.
1- Abrir el terminal.
2- Descargar el fichero:
3- wget http://opendesktop.org/CONTENT/content-files/71529-ubucleaner.sh
4- Hacerlo ejecutable:
sudo chmod +x 71529-ubucleaner.sh
5- Ejecutarlo:
sudo sh 71529-ubucleaner.sh
Y todo limpito como una patena.
Básicamente hace:
apt-get clean -> Al actualizar Ubuntu, los paquetes que descargas de Internet quedan en /var/cache/apt/archives, pues los borra
Muchos programas que instalamos utilizan dependencias adicionales que descargan, y que muchas veces son inútiles.
Lo peor de todo es que cuando desinstalas a veces se quedan ocupando espacio.
Para saber cúales son y poder borrarlas tipea sudo apt-get autoremove
Cada vez que actualizamos nuestro Kernel, el antiguo queda ahí, y no se desinstala. Si queremos borrarlo,
podemos hacerlo con sudo apt-get remove –purge linux-image-versión a desinstalar-generic.
Si no sabemos cuál es la que queremos desinstalar, podemos listarlas con dpkg –get-selections | grep linux-image,
es muy recomendable mantener el anterior por si acaso…
1- Abrir el terminal.
2- Descargar el fichero:
3- wget http://opendesktop.org/CONTENT/content-files/71529-ubucleaner.sh
4- Hacerlo ejecutable:
sudo chmod +x 71529-ubucleaner.sh
5- Ejecutarlo:
sudo sh 71529-ubucleaner.sh
Y todo limpito como una patena.
Básicamente hace:
apt-get clean -> Al actualizar Ubuntu, los paquetes que descargas de Internet quedan en /var/cache/apt/archives, pues los borra
Muchos programas que instalamos utilizan dependencias adicionales que descargan, y que muchas veces son inútiles.
Lo peor de todo es que cuando desinstalas a veces se quedan ocupando espacio.
Para saber cúales son y poder borrarlas tipea sudo apt-get autoremove
Cada vez que actualizamos nuestro Kernel, el antiguo queda ahí, y no se desinstala. Si queremos borrarlo,
podemos hacerlo con sudo apt-get remove –purge linux-image-versión a desinstalar-generic.
Si no sabemos cuál es la que queremos desinstalar, podemos listarlas con dpkg –get-selections | grep linux-image,
es muy recomendable mantener el anterior por si acaso…
En caso de problemas de espacio en disco
Para vaciar papelera como root.
rm -fR /root/.Trash
find ~/.local/share/Trash -type f -exec rm ‘{}’ \;
Buscar los ficheros de gran tamaño que hay en nuestro disco duro. En este caso listaremos los que superan los 20 mb Si deseamos cambiar el valor sólo tenemos que cambiar la cifra (20000).
find / -type f -size +20000k -exec ls -lh {} \; 2> /dev/null | awk ‘{ print $NF “: ” $5 }’ | sort -nrk 2,2
Podemos usar Ubucleaner. Un script que automatiza varios comandos que permiten una limpieza de las zonas que más suelen acumular ficheros temporales (kernels viejos, etc..). Después de descargarlo lo ejecutamos de la siguiente manera:
chmod -c 744 71529-ubucleaner.sh
./71529-ubucleaner.sh
También podemos buscar un listado completo del tamaño de los ficheros de nuestro disco duro mediante JDiskReport
rm -fR /root/.Trash
find ~/.local/share/Trash -type f -exec rm ‘{}’ \;
Buscar los ficheros de gran tamaño que hay en nuestro disco duro. En este caso listaremos los que superan los 20 mb Si deseamos cambiar el valor sólo tenemos que cambiar la cifra (20000).
find / -type f -size +20000k -exec ls -lh {} \; 2> /dev/null | awk ‘{ print $NF “: ” $5 }’ | sort -nrk 2,2
Podemos usar Ubucleaner. Un script que automatiza varios comandos que permiten una limpieza de las zonas que más suelen acumular ficheros temporales (kernels viejos, etc..). Después de descargarlo lo ejecutamos de la siguiente manera:
chmod -c 744 71529-ubucleaner.sh
./71529-ubucleaner.sh
También podemos buscar un listado completo del tamaño de los ficheros de nuestro disco duro mediante JDiskReport
Error al reiniciar apache: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName
Para solucionar este problema, hay que editar el archivo httpd.conf
nano /etc/apache2/httpd.conf
Por defecto el archivo httpd.conf estará en blanco. Ahora, sólo tiene que añadir la siguiente línea en el archivo.
ServerName localhost
Ahora guarda y reinicia el servidor:
service apache2 restart
nano /etc/apache2/httpd.conf
Por defecto el archivo httpd.conf estará en blanco. Ahora, sólo tiene que añadir la siguiente línea en el archivo.
ServerName localhost
Ahora guarda y reinicia el servidor:
service apache2 restart
Como mostrar y vaciar la cola de postfix
Para mostrar que emails están en cola, osea, aun no se han enviado:
mailq
Para borrar un email de la cola:
postsuper -d queue_id
Para borrar todos esos emails de la cola:
postsuper -d ALL
Para eliminar un mensaje:
postsuper -d numero
Para eliminar todos los mensajes:
postsuper -d ALL
Para encolar de nuevo el mensaje:
postsuper -r numero
Encolar de nuevo todos los mensajes:
postsuper -r ALL
Mostrar la cola de correo por pantalla
postqueue -p
Hacer un flush de la cola de correo, intentar enviar todos los correos
postqueue -f
Para liberar los correos para el dominio especificado
postqueue -s
Para borrar los emails desde una dirección específica (sacado del man postsuper).
mailq | tail +2 | grep -v ‘^ *(‘ | awk ’BEGIN { RS = “” } { if ($8 == “email@address.com” && $9 == “”) print $1 } ‘ | tr -d ‘*!’ | postsuper -d -
Para Borrar todos los mail de todos los directorios, probar con:
mailq grep ^[0-9A-Z] cut -d’ ‘ -f1 xargs -n1 postsuper -d
mailq
Para borrar un email de la cola:
postsuper -d queue_id
Para borrar todos esos emails de la cola:
postsuper -d ALL
Para eliminar un mensaje:
postsuper -d numero
Para eliminar todos los mensajes:
postsuper -d ALL
Para encolar de nuevo el mensaje:
postsuper -r numero
Encolar de nuevo todos los mensajes:
postsuper -r ALL
Mostrar la cola de correo por pantalla
postqueue -p
Hacer un flush de la cola de correo, intentar enviar todos los correos
postqueue -f
Para liberar los correos para el dominio especificado
postqueue -s
Para borrar los emails desde una dirección específica (sacado del man postsuper).
mailq | tail +2 | grep -v ‘^ *(‘ | awk ’BEGIN { RS = “” } { if ($8 == “email@address.com” && $9 == “”) print $1 } ‘ | tr -d ‘*!’ | postsuper -d -
Para Borrar todos los mail de todos los directorios, probar con:
mailq grep ^[0-9A-Z] cut -d’ ‘ -f1 xargs -n1 postsuper -d
martes, 15 de julio de 2014
Cómo instalar el Extension Pack de Virtualbox sin errores en Linux..
.
Desde VirtualBox 4
más o menos, a Oracle le dio por dividir la funcionalidad de VirtualBox
en base a un paquete de extensión especial que permite que las máquinas
virtuales detecten controladores USB, de tarjetas de sonido y muchas
cosas más.
Se supone que para instalarlo en cualquier sistema operativo basta descagarloy abrirlo con doble click, pero algunas veces nos suelta errores o no se instala bien. Para evitar que ésto suceda, he aquí éste truco:
Éso nos hará acceder como root a la terminal y luego nos instalará el Extpack sin problema alguno.
Se supone que para instalarlo en cualquier sistema operativo basta descagarloy abrirlo con doble click, pero algunas veces nos suelta errores o no se instala bien. Para evitar que ésto suceda, he aquí éste truco:
1. su -
2. VBoxManage extpack install ruta/al/extpack-descargado
Éso nos hará acceder como root a la terminal y luego nos instalará el Extpack sin problema alguno.
miércoles, 25 de junio de 2014
Cómo resetear la contraseña del usuario root de MySQL Server
Sí te sucede que olvidaste la contraseña del usuario root del servidor de base de datos MySQL y
no puedes crear nuevos usuarios, ni nuevos catálogos ni acceder a la
consola de administración, en ésta publicación explico como resetear la
contraseña del usuario root tanto para Linux como para Windows.
Para Windows realizar lo siguiente:
Finalmente, cerrar la consola de comandos abierta en el paso 2 e iniciar nuevamente el servicio de MySQL Server.
Para Linux:
Para Windows realizar lo siguiente:
- Sí MySQL Server está instalado como servicio. Detener el servicio
- Abrir una consola de comandos (cmd)
- Ir al directorio de instalación de MySQL Server. Por ejemplo:
1.
C:\Program Files\MySQL\MySQL Server 5.1\bin
- Ejecutar el siguiente comando:
1.
mysqld --skip-grant-tables &
- Abrir otra consola de comandos (cmd)
- Ingresar a la consola de administración de MySQL con el comando:
1.
mysql -u root
- En la consola de administración de MySQL, ejecutar los siguientes comandos:
1.
mysql>use mysql;
2.
mysql>update user set password=PASSWORD("nuevaClave") where user='root';
3.
mysql>flush privileges;
4.
mysql>quit;
Finalmente, cerrar la consola de comandos abierta en el paso 2 e iniciar nuevamente el servicio de MySQL Server.
Para Linux:
- Detener el servicio de MySQL usando el comando
1.
/etc/init.d/mysql stop
- En la consola de comandos (shell) ejecutar el comando:
1.
sudo mysqld_safe --skip-grant-tables &
- Realizar los pasos 6 y 7 descritos para Windows.
- Iniciar nuevamente el servicio de MySQL usando el comando
domingo, 15 de junio de 2014
Protocolo MPLS
MPLS (Multi-Protocol Label Switching) es una red privada IP que combina la flexibilidad de las comunicaciones punto a punto o y la fiabilidad, y seguridad de los servicios Prívate Line, Frame Relay o ATM.
Ofrece niveles de rendimiento diferenciados y priorización del tráfico, así como aplicaciones de voz y multimedia. Y todo ello en una única red. Cuenta con distintas soluciones, una completamente gestionada que incluye el suministro y la de los equipos en sus instalaciones (CPE). O bien, que sea el usuario quien los gestione.
La idea de MPLS es realizar la conmutación de los paquetes o datagramas en función de las etiquetas añadidas en capa 2 y etiquetar dichos paquetes según la clasificación establecida por la QoS en la SLA.
Por tanto MPLS es una que permite ofrecer QoS, independientemente de la red sobre la que se implemente. El
etiquetado en capa 2 permite ofrecer multiprotocolo y ser portable sobre multitud de tecnologías de capa de enlace: ATM, Frame Relay, líneas dedicadas, LANs.
Ofrece niveles de rendimiento diferenciados y priorización del tráfico, así como aplicaciones de voz y multimedia. Y todo ello en una única red. Cuenta con distintas soluciones, una completamente gestionada que incluye el suministro y la de los equipos en sus instalaciones (CPE). O bien, que sea el usuario quien los gestione.
MPLS (Multiprotocol Label Switching) intenta conseguir las ventajas de ATM, pero sin sus inconvenientes.
Asigna a los datagramas de cada flujo una etiqueta única que permite
una conmutación rápida en los routers intermedios (solo se mira la
etiqueta, no la dirección de destino).
MPLS se basa en el etiquetado de los paquetes en base a criterios de prioridad y/o calidad (QoS).La idea de MPLS es realizar la conmutación de los paquetes o datagramas en función de las etiquetas añadidas en capa 2 y etiquetar dichos paquetes según la clasificación establecida por la QoS en la SLA.
Por tanto MPLS es una que permite ofrecer QoS, independientemente de la red sobre la que se implemente. El
etiquetado en capa 2 permite ofrecer multiprotocolo y ser portable sobre multitud de tecnologías de capa de enlace: ATM, Frame Relay, líneas dedicadas, LANs.
¿Y cuales son sus aplicaciones?
Sus principales aplicaciones son:
- Funciones de ingeniería de tráfico (a los flujos de cada usuario se les asocia una etiqueta diferente)
- Policy Routing
- Servicios de VPN
- Servicios que requieren QoS
- Ahorros de costes: dependiendo de la combinación específica de aplicaciones y de la configuración de red de una empresa, los servicios basados en MPLS pueden reducir los costes entre un 10 y un 25% frente a otros servicios de datos comparables (como Frame Relay y ATM).Y, a medida que se vayan añadiendo a las infraestructuras de networking el tráfico de vídeo y voz, los ahorros de costes empiezan a dispararse alcanzando niveles de hasta un 40%.
- Soporte de QoS: uno de los principales beneficios de los servicios basados en MPLS reside en su capacidad para aplicar calidades de servicio (QoS) mediante la priorización del tráfico en tiempo real, una prestación clave cuando se quiere introducir voz y vídeo en las redes de datos.
- Rendimiento mejorado: debido a la naturaleza de “muchos a muchos” de los servicios MPLS, los diseñadores de red pueden reducir el número de saltos entre puntos, lo que se traduce directamente en una mejora de los tiempos de respuesta y del rendimiento de las aplicaciones.
- Recuperación ante desastres: los servicios basados en MPLS mejoran la recuperación ante desastres de diversas maneras. En primer lugar, permiten conectar los centros de datos y otros emplazamientos clave mediante múltiples conexiones redundantes a la nube MPLS y, a través de ella, a otros sitios de la red. Además, los sitios remotos pueden ser reconectados fácil y rápidamente a las localizaciones de backup en caso de necesidad; a diferencia de lo que ocurre con las redes ATM y Frame Relay, en las cuales se requieren circuitos virtuales de backup permanentes o conmutados. Esta flexibilidad para la recuperación del negocio es precisamente una de las principales razones por la que muchas empresas se están decantando por esta tecnología.
jueves, 5 de junio de 2014
Las 12 razones por las que un Administrador de Sistemas perezoso es un buen administrador
Hace muchísimo tiempo me enviaron este texto (lo encontré por acá)
y es mi compendio de axiomas de trabajo en la administración de
Sistemas, he decidido hacer una traducción libre de este artículo para
que mis lectores disfruten un rato y comiencen a ser un poco más
perezosos.
Si ves un administrador de sistemas, un técnico de soporte o un administrador de servidores, que siempre anda dando vueltas, como tratando de sofocar fuegos, que constantemente se ocupa de cuestiones relativas a detalles en la producción de sistemas y/o servidores; usted podría pensar que él está trabajando muy duro, ¡siempre tan dedicado!, esa es la concepción para la mayoría de las personas (de hecho, es una concepción de contratar esas personas “bomberos”), pero en realidad él no está haciendo bien su trabajo.
Si vemos a este administrador de sistemas (Unix/Linux, administrador de servidores, DBA o administrador de red) que parece estar todo el día “jugando”, que no parece estar haciendo mucho en la oficina, siempre relajado y casi nunca aparece ningún trabajo duro visible, puede estar seguro de que él está haciendo realmente bien su trabajo.
Estas son las 12 razones por las que un administrador de sistemas (sysadmin) perezoso, es el mejor administrador de sistemas.
Razón 1 ¿Quién es el jefe?: La razón principal por la que los Administradores de sistemas perezosos son los mejores es a causa de su actitud. Ellos ven las máquinas un poco diferente a la forma como las ven en otros departamentos de TI. Hay una diferencia notable entre los administradores de sistemas perezosos y otros admininistradores (ejemplo: los desarrolladores). Los desarrolladores piensan que están para servir a las máquinas mediante el desarrollo de código. No hay nada de malo en este enfoque, ya que los desarrolladores tienen mucha diversión allí; Sin embargo, los administradores de sistemas hacen todo lo contrario; ellos piensan que las máquinas están allí simplemente para servirles. Todo lo que tienes que hacer es alimentar la máquina y mantenerla feliz, dejando que la máquina haga todo el trabajo pesado, mientras pueda relajarse y simplemente dedicar su tiempo a ser perezoso. El primer paso para ser un administrador de sistemas perezoso es un ligero cambio en la actitud, y dejar que la máquina sepa que usted es quien manda.
Razón 2 Automatiza hasta el café: Ser un sysadmin perezoso no significa ser holgazán, debe esforzarse inicialmente para que todo fluya con soltura, debe escribir guiones de programación para trabajos repetitivos; en este aspecto ser perezoso es ser inteligente. Un administrador de sistemas inteligentes es un maestro en todos los lenguajes de scripting (bash, awk, sed, egrep, etc.) y cada vez que se vea obligado a hacer algún trabajo, y si hay una remota posibilidad de que ese mismo trabajo se repita en el futuro, entonces escribe un guión que repita este trabajo. De esta manera, en el futuro cuando se le pida hacer el mismo trabajo, no tiene que pensar, sino que simplemente tiene que ejecutar el script, y volver a ser perezoso.
Razón 3 evitar las pérdidas: Copia de seguridad de todo. Siendo sysadmins perezosos, siempre deben tener una copia de seguridad. Un administrador de sistemas perezoso sabe que debe realizar un poco de trabajo en la creación de procesos de copia de seguridad y escribir secuencias de comandos de copia de seguridad para todos los sistemas y aplicaciones críticas. Cuando el espacio en disco no es un problema, él programa la tarea de respaldo para cada aplicación, incluso para aquellas aplicaciones que no son críticos; de esta manera, cuando algo va mal, él no tiene ponerse a correr a recuperar cosas y sólo hay que restaurar desde la copia de seguridad, y volver a la lectura de comics que estaba haciendo antes.
Esta es también la regla #1 en las tres reglas del administrador de sistemas que JAMÁS se debe romper.
Razón 4 Crea un plan de recuperación ante desastres: A un Administrador de sistemas no le debería gustar correr cuando las cosas van mal (y ciertamente no debería habituarse a ello). Cuando las cosas están funcionando sin problemas, se debe tomar algo de tiempo para crear un DRP (Disaster-Recovery Plan); así, cuando las cosas vayan demasiado mal, pueden seguir el plan de recuperación rápida y que las cosas vuelvan a la normalidad, y volver a ser perezoso de nuevo!.
Razón 5 si no te puedes clonar, clona tus sistemas: La regla de los sistemas altamente redundantes. un sysadmin competente (y perezoso) no le gusta recibir llamadas en el medio de la noche a causa de algún problema de hardware que falló por una tontería; por ende, los sysadmins perezosos se aseguran que todos los componentes de su plataforma sean altamente redundantes. Esto incluye tanto hardware como software. Desde configurar tarjetas de red en modo bonding, RAID en discos, siempre al menos dos servidores o máquinas virtuales para cada cosa, siempre hay que tener al menos dos de todo. Por ende, cuando un componente falla, el sistema todavía sigue funcionando y el administrador del sistema perezoso puede dormir esa noche tranquilo y podrá trabajar en la reparación del componente roto mucho después de regresar temprano en la mañana.
Razón 6 Siempre debe haber espacio para crecer: Un sysadmin perezoso nunca permite que sus sistemas funcionen a plena capacidad. Siempre hay que disponer de espacio suficiente para el crecimiento inesperado; debe asegurarse que los sistemas tiene un montón de CPU, RAM y disco duro disponible; así, cuando su empresa decide volcar toneladas de información o genera inesperadamente muchos archivos, así no sufrirá insomnio pensando si la plataforma colapsará al quedarse sin recursos.
Razón 7 Sea proactivo: Ser un sysadmin perezoso no quiere decir que sólo se sientan y no hacen nada todo el tiempo. Siendo perezosos, se dedican a adelantarse a los hechos y ser proactivo. Los sysadmins perezosos odian ser reactivos. Se anticipan a los problemas y al crecimiento (razones 5 y 6). Cuando tienen algún tiempo libre, se dedican a investigar cómo evitar nuevos problemas, escribir nuevos scripts y modificar la plataforma para durante los problemas seguir siendo perezoso.
Razón 8 Ama tu teclado: combinaciones de teclado, un sysadmin perezoso conoce todos los atajos de teclado para todas sus aplicaciones favoritas. Si va a pasar mucho tiempo todos los días en una aplicación, lo primero que hace es dominar las comnbinaciones de teclas para esa aplicación. por eso los sysadmins perezosos aprenden a usar editores proactivos como emacs o vim, ya que a él le gusta gastar menos tiempo en la solicitud de la información a su máquina, para volver a ser perezoso.
Razón 9: Maestro de la línea de comandos: Cada sysadmin perezoso que conozco es un maestro de la línea de comandos. A veces la gente se sorprende de ver tanto tiempo al sysadmin en una “pantalla negra”; Esto no solo se aplica a sistemas Linux/BSD sino también a DBA’s, administradores de red, etc. Aunque exista una aplicación con interfaz gráfica para una tarea, usted verá al sysadmin lanzando una línea de comandos, En una interfaz de instalación de programas, por ejemplo, tendrás que cargar la aplicación, esperar que cargue, buscar el programa, darle a “seleccionar” y luego a “instalar”, en una cónsola escribes “migestor install miprograma” y listo, sabes exactamente que hacer en cada momento. Hay dos razones básicas por qué los sysadmins perezosos les encanta una línea de comandos. Por un lado, se pueden hacer las cosas más rápidamente en la línea de comandos (si se sabe hacerlo, claro está). Por otra parte, le hace sentir que él es el jefe y no la máquina. Cuando se utiliza la línea de comandos, usted está en control del sistema, usted sabe exactamente lo que quiere hacer y sabe lo que va a obtener. Cuando se utiliza una interfaz gráfica de usuario, usted está a merced del flujo de trabajo gráfico y no tiene el control total.
Razón 10 Aprende de los errores: a un sysadmin perezoso no le gusta cometer el mismo error dos veces. Él odia trabajar en problemas inesperados; pero, cuando surge algún problema inesperado, trabaja en su corrección y piensa acerca de por qué ocurrió, y de inmediato pone las cosas necesarias en su lugar para que el mismo problema no vuelva a ocurrir. Trabajar sobre el mismo problema dos veces es un pecado para un sysadmin perezoso. A un sysadmin perezoso le gusta trabajar en el problema una sola vez, hacer las cosas para evitar el mismo error que ocurra en el futuro, y volver a ser perezoso.
Razón 11 Nunca quedarse atrás: Aprende nuevas tecnologías. No hay nada malo en aprender una nueva tecnología para conseguir un trabajo mejor o simplemente para mantenerse al día con el crecimiento de la tecnología. Pero, nuestro sysadmin perezoso no aprende las nuevas tecnologías por este motivo; en cambio, se entera de las nuevas tecnologías, porque a él le gusta estar en control de los sistemas todo el tiempo. Él sabe que él es el jefe (Razón 1). Así que, cuando una nueva tecnología aparece, este se toma el tiempo para estudiarla. Ahora tiene nuevas herramientas que le permiten mantener el sistema activo, mientras que él sigue siendo un perezoso. Se documenta y aprende una nueva tecnología solo para mantener su egoísta pereza.
Razón 12 Nunca confiar en la mente, Documente todo: No todos los sysadmins perezosos lo hacen; sólo los mejores administradores de sistemas perezosos hace esto. Nunca a un sysadmin perezoso le gusta que le molesten cuando está en la playa disfrutando de sus vacaciones. Entonces, ¿qué hace? documenta todo, deja bitácoras y resoluciones para todo, así que cuando él no está cerca, otro técnico de soporte puede hacer el trabajo de rutina y hacer avanzar las cosas simplemente leyendo la documentación sin molestar las vacaciones del sysadmin. Hay también otra razón más íntima para que el administrador del sistema perezoso documente todo, porque pueden olvidarse las cosas. Puesto que él es perezoso, quizás tiende a olvidar lo que hizo hace un mes. Dado que nunca le gusta pensar el mismo tema dos veces (Corolario de la Razón 10), se documenta todo y cuando tiene que hacer lo mismo en el futuro, pues busca en su documentación para comprender como se hace.
Ahora, usted considerará que ser un sysadmin perezoso no es cosa fácil, es muchísimo trabajo duro, si usted no es un administrador de sistemas, puede que ahora aprecie al administrador vago que ve sentado en su computadora viendo Facebook mientras todo funciona perfectamente, recuerde que no funciona así solo. Si usted es un administrador de sistemas y siempre está dando vueltas apagando fuegos como bombero, usted ya sabe lo que tiene que hacer para ser perezoso.
Si ves un administrador de sistemas, un técnico de soporte o un administrador de servidores, que siempre anda dando vueltas, como tratando de sofocar fuegos, que constantemente se ocupa de cuestiones relativas a detalles en la producción de sistemas y/o servidores; usted podría pensar que él está trabajando muy duro, ¡siempre tan dedicado!, esa es la concepción para la mayoría de las personas (de hecho, es una concepción de contratar esas personas “bomberos”), pero en realidad él no está haciendo bien su trabajo.
Si vemos a este administrador de sistemas (Unix/Linux, administrador de servidores, DBA o administrador de red) que parece estar todo el día “jugando”, que no parece estar haciendo mucho en la oficina, siempre relajado y casi nunca aparece ningún trabajo duro visible, puede estar seguro de que él está haciendo realmente bien su trabajo.
Estas son las 12 razones por las que un administrador de sistemas (sysadmin) perezoso, es el mejor administrador de sistemas.
Razón 1 ¿Quién es el jefe?: La razón principal por la que los Administradores de sistemas perezosos son los mejores es a causa de su actitud. Ellos ven las máquinas un poco diferente a la forma como las ven en otros departamentos de TI. Hay una diferencia notable entre los administradores de sistemas perezosos y otros admininistradores (ejemplo: los desarrolladores). Los desarrolladores piensan que están para servir a las máquinas mediante el desarrollo de código. No hay nada de malo en este enfoque, ya que los desarrolladores tienen mucha diversión allí; Sin embargo, los administradores de sistemas hacen todo lo contrario; ellos piensan que las máquinas están allí simplemente para servirles. Todo lo que tienes que hacer es alimentar la máquina y mantenerla feliz, dejando que la máquina haga todo el trabajo pesado, mientras pueda relajarse y simplemente dedicar su tiempo a ser perezoso. El primer paso para ser un administrador de sistemas perezoso es un ligero cambio en la actitud, y dejar que la máquina sepa que usted es quien manda.
Razón 2 Automatiza hasta el café: Ser un sysadmin perezoso no significa ser holgazán, debe esforzarse inicialmente para que todo fluya con soltura, debe escribir guiones de programación para trabajos repetitivos; en este aspecto ser perezoso es ser inteligente. Un administrador de sistemas inteligentes es un maestro en todos los lenguajes de scripting (bash, awk, sed, egrep, etc.) y cada vez que se vea obligado a hacer algún trabajo, y si hay una remota posibilidad de que ese mismo trabajo se repita en el futuro, entonces escribe un guión que repita este trabajo. De esta manera, en el futuro cuando se le pida hacer el mismo trabajo, no tiene que pensar, sino que simplemente tiene que ejecutar el script, y volver a ser perezoso.
Razón 3 evitar las pérdidas: Copia de seguridad de todo. Siendo sysadmins perezosos, siempre deben tener una copia de seguridad. Un administrador de sistemas perezoso sabe que debe realizar un poco de trabajo en la creación de procesos de copia de seguridad y escribir secuencias de comandos de copia de seguridad para todos los sistemas y aplicaciones críticas. Cuando el espacio en disco no es un problema, él programa la tarea de respaldo para cada aplicación, incluso para aquellas aplicaciones que no son críticos; de esta manera, cuando algo va mal, él no tiene ponerse a correr a recuperar cosas y sólo hay que restaurar desde la copia de seguridad, y volver a la lectura de comics que estaba haciendo antes.
Esta es también la regla #1 en las tres reglas del administrador de sistemas que JAMÁS se debe romper.
Razón 4 Crea un plan de recuperación ante desastres: A un Administrador de sistemas no le debería gustar correr cuando las cosas van mal (y ciertamente no debería habituarse a ello). Cuando las cosas están funcionando sin problemas, se debe tomar algo de tiempo para crear un DRP (Disaster-Recovery Plan); así, cuando las cosas vayan demasiado mal, pueden seguir el plan de recuperación rápida y que las cosas vuelvan a la normalidad, y volver a ser perezoso de nuevo!.
Razón 5 si no te puedes clonar, clona tus sistemas: La regla de los sistemas altamente redundantes. un sysadmin competente (y perezoso) no le gusta recibir llamadas en el medio de la noche a causa de algún problema de hardware que falló por una tontería; por ende, los sysadmins perezosos se aseguran que todos los componentes de su plataforma sean altamente redundantes. Esto incluye tanto hardware como software. Desde configurar tarjetas de red en modo bonding, RAID en discos, siempre al menos dos servidores o máquinas virtuales para cada cosa, siempre hay que tener al menos dos de todo. Por ende, cuando un componente falla, el sistema todavía sigue funcionando y el administrador del sistema perezoso puede dormir esa noche tranquilo y podrá trabajar en la reparación del componente roto mucho después de regresar temprano en la mañana.
Razón 6 Siempre debe haber espacio para crecer: Un sysadmin perezoso nunca permite que sus sistemas funcionen a plena capacidad. Siempre hay que disponer de espacio suficiente para el crecimiento inesperado; debe asegurarse que los sistemas tiene un montón de CPU, RAM y disco duro disponible; así, cuando su empresa decide volcar toneladas de información o genera inesperadamente muchos archivos, así no sufrirá insomnio pensando si la plataforma colapsará al quedarse sin recursos.
Razón 7 Sea proactivo: Ser un sysadmin perezoso no quiere decir que sólo se sientan y no hacen nada todo el tiempo. Siendo perezosos, se dedican a adelantarse a los hechos y ser proactivo. Los sysadmins perezosos odian ser reactivos. Se anticipan a los problemas y al crecimiento (razones 5 y 6). Cuando tienen algún tiempo libre, se dedican a investigar cómo evitar nuevos problemas, escribir nuevos scripts y modificar la plataforma para durante los problemas seguir siendo perezoso.
Razón 8 Ama tu teclado: combinaciones de teclado, un sysadmin perezoso conoce todos los atajos de teclado para todas sus aplicaciones favoritas. Si va a pasar mucho tiempo todos los días en una aplicación, lo primero que hace es dominar las comnbinaciones de teclas para esa aplicación. por eso los sysadmins perezosos aprenden a usar editores proactivos como emacs o vim, ya que a él le gusta gastar menos tiempo en la solicitud de la información a su máquina, para volver a ser perezoso.
Razón 9: Maestro de la línea de comandos: Cada sysadmin perezoso que conozco es un maestro de la línea de comandos. A veces la gente se sorprende de ver tanto tiempo al sysadmin en una “pantalla negra”; Esto no solo se aplica a sistemas Linux/BSD sino también a DBA’s, administradores de red, etc. Aunque exista una aplicación con interfaz gráfica para una tarea, usted verá al sysadmin lanzando una línea de comandos, En una interfaz de instalación de programas, por ejemplo, tendrás que cargar la aplicación, esperar que cargue, buscar el programa, darle a “seleccionar” y luego a “instalar”, en una cónsola escribes “migestor install miprograma” y listo, sabes exactamente que hacer en cada momento. Hay dos razones básicas por qué los sysadmins perezosos les encanta una línea de comandos. Por un lado, se pueden hacer las cosas más rápidamente en la línea de comandos (si se sabe hacerlo, claro está). Por otra parte, le hace sentir que él es el jefe y no la máquina. Cuando se utiliza la línea de comandos, usted está en control del sistema, usted sabe exactamente lo que quiere hacer y sabe lo que va a obtener. Cuando se utiliza una interfaz gráfica de usuario, usted está a merced del flujo de trabajo gráfico y no tiene el control total.
Razón 10 Aprende de los errores: a un sysadmin perezoso no le gusta cometer el mismo error dos veces. Él odia trabajar en problemas inesperados; pero, cuando surge algún problema inesperado, trabaja en su corrección y piensa acerca de por qué ocurrió, y de inmediato pone las cosas necesarias en su lugar para que el mismo problema no vuelva a ocurrir. Trabajar sobre el mismo problema dos veces es un pecado para un sysadmin perezoso. A un sysadmin perezoso le gusta trabajar en el problema una sola vez, hacer las cosas para evitar el mismo error que ocurra en el futuro, y volver a ser perezoso.
Razón 11 Nunca quedarse atrás: Aprende nuevas tecnologías. No hay nada malo en aprender una nueva tecnología para conseguir un trabajo mejor o simplemente para mantenerse al día con el crecimiento de la tecnología. Pero, nuestro sysadmin perezoso no aprende las nuevas tecnologías por este motivo; en cambio, se entera de las nuevas tecnologías, porque a él le gusta estar en control de los sistemas todo el tiempo. Él sabe que él es el jefe (Razón 1). Así que, cuando una nueva tecnología aparece, este se toma el tiempo para estudiarla. Ahora tiene nuevas herramientas que le permiten mantener el sistema activo, mientras que él sigue siendo un perezoso. Se documenta y aprende una nueva tecnología solo para mantener su egoísta pereza.
Razón 12 Nunca confiar en la mente, Documente todo: No todos los sysadmins perezosos lo hacen; sólo los mejores administradores de sistemas perezosos hace esto. Nunca a un sysadmin perezoso le gusta que le molesten cuando está en la playa disfrutando de sus vacaciones. Entonces, ¿qué hace? documenta todo, deja bitácoras y resoluciones para todo, así que cuando él no está cerca, otro técnico de soporte puede hacer el trabajo de rutina y hacer avanzar las cosas simplemente leyendo la documentación sin molestar las vacaciones del sysadmin. Hay también otra razón más íntima para que el administrador del sistema perezoso documente todo, porque pueden olvidarse las cosas. Puesto que él es perezoso, quizás tiende a olvidar lo que hizo hace un mes. Dado que nunca le gusta pensar el mismo tema dos veces (Corolario de la Razón 10), se documenta todo y cuando tiene que hacer lo mismo en el futuro, pues busca en su documentación para comprender como se hace.
Ahora, usted considerará que ser un sysadmin perezoso no es cosa fácil, es muchísimo trabajo duro, si usted no es un administrador de sistemas, puede que ahora aprecie al administrador vago que ve sentado en su computadora viendo Facebook mientras todo funciona perfectamente, recuerde que no funciona así solo. Si usted es un administrador de sistemas y siempre está dando vueltas apagando fuegos como bombero, usted ya sabe lo que tiene que hacer para ser perezoso.
jueves, 20 de marzo de 2014
instalar AP falso
Improvisar un punto de acceso
inalámbrico por el que lanzar nuestra conexión a otros equipos wi-fi,
hasta para ser algo malvados... y utilizar nuestro recién creado punto
de acceso con el objetivo de que su/sus víctima/s se conecten a él, para
monitorear su trafico, o conseguir la clave de su verdadero ap (Cafe
Latte Attack).
Para esto podemos configurar de tres maneras el AP, la más común es como un AP abierto, configurando el AP de modo que responda a cualquier nombre de ESSID. O configurando el AP como el Ap que normalmente utiliza la víctima.
Luego entraremos en la manera de hacer que el cliente se conecte a el, por el momento vamos a crearlo.
Lo que vamos a necesitar es bien poco , nuestra tarjeta wi-fi (con los drivers de inyección), hostapd y un servidor DHCP.
El proceso es muy similar a montar nuestro HOTSPOT con airbase, casi no difiere en nada. Podríamos dividir ambos procesos en tres partes: levantar y configurar nuestra tarjeta wifi en modo monitor, configurar el dhcp que dará ip a los "clientes" y compartir Internet con los "clientes".
Instalando lo necesario
Comenzaremos por instalar hostapd y el servidor dhcp. Podemos instalar hostapd desde los repositorios o bien bajarlo y compilarlo desde su pagina web.
apt-get install hostapd
apt-get install isc-dhcp-server
Una vez bajado hostapd deberemos configurarlo. Para ello crearemos un fichero "hostapd.conf" con el siguiente contenido (luego veremos otro tipo de configuraciones):
#configuración Hostapd
interface=wlan0
driver=nl80211
ssid=Rogue
channel=1
En esta configuración mínima estamos diciéndole que nuestra interfaz es wlan0, su driver, el nombre del punto de acceso "Rogue" y que emita por el canal uno.
Por ahora sencillo ¿no?
Configurando el DHCP server
Es una parte muy importante antes de levantar el servicio DHCP tener claro qué tarjeta va a ser la encargada de repartir las IP en nuestra máquina, y la subnet en que va a estar. En nuestro caso le daremos la ip 10.0.0.1 con la máscara de red 255.255.255.0 y así lo declararemos en el fichero de configuración de nuestro dhcp.
Para decirle al dhcp que tarjeta va a ser la encargada de repartir las ip deberemos editar el fichero /etc/default/isc-dhcp-server (este paso sera diferente según que distribución utilices y que versión de servidor dhcp) por ejemplo:
Fedora / RedHat / CentOS:
# File: /etc/sysconfig/dhcpd
DHCPDARGS=wlan0
Debian squezze / Ubuntu:
# File: /etc/default/dhcp3-server
INTERFACES="eth0"
Debian jessie
#file: /etc/default/isc-dhcp-server
El fichero de configuracion de dhcp /etc/dhcpd/dhcpd.conf quedaría tal que así:
ddns-update-style none;
ignore client-updates;
authoritative;
option local-wpad code 252 = text;
subnet
10.0.0.0 netmask 255.255.255.0 {
# --- default gateway
option routers 10.0.0.1;
# --- Netmask
option subnet-mask 255.255.255.0;
# --- Broadcast Address
option broadcast-address
10.0.0.255;
# --- Domain name servers, tells the clients which DNS servers to use.
option domain-name-servers 10.0.0.1, 8.8.8.8, 8.8.4.4;
option time-offset 0;
range 10.0.0.3 10.0.0.13;
default-lease-time 1209600;
max-lease-time 1814400;
}
Bueno ya tenemos configurada la mayor parte ahora vamos con la interface. En primer lugar pararemos "networ manager" para que no nos de la lata:
/etc/init.d/network-manager stop
Luego bajaremos la wlan0 para cambiarle la ip:
ifconfig wlan0 down
ifconfig wlan0 10.0.0.1 netmask 255.255.255.0
ifconfig wlan0 up
después levantaremos el servicio dhcp:
/etc/init.d/isc-dhcp-server restart
y levantaremos nuestro falso AP:
hostapd hostapd.conf
Hasta aquí sencillo tan solo nos falta compartir nuestra conexión para que los clientes tengan alcance la inet...
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i wlan0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Y con esto y bizcocho!!
Lo que podemos hacer también es un pequeño script para que a la hora de levantar nuestro AP sea todo mas rápido:
Llevando el cliente hacia nuestro Rogue AP
Una vez tenemos nuestro Rogue AP podemos utilizar varias técnicas para engañar al cliente dependiendo de cual es nuestro objetivo, para que al fin y al cabo todo acabe como muestra la imagen de la izquierda.
Una vez conectado el cliente a nuestro pícaro punto de acceso somos dueños y señores de sus paquetes y podemos hacer de el lo que nos plazca...
Para ver su tráfico por ejemplo solo tendríamos que arrancar nuestro sniffer preferido:
tcpdump por ejemplo:
tcpdump -i wlan0
Para esto podemos configurar de tres maneras el AP, la más común es como un AP abierto, configurando el AP de modo que responda a cualquier nombre de ESSID. O configurando el AP como el Ap que normalmente utiliza la víctima.
Luego entraremos en la manera de hacer que el cliente se conecte a el, por el momento vamos a crearlo.
Lo que vamos a necesitar es bien poco , nuestra tarjeta wi-fi (con los drivers de inyección), hostapd y un servidor DHCP.
El proceso es muy similar a montar nuestro HOTSPOT con airbase, casi no difiere en nada. Podríamos dividir ambos procesos en tres partes: levantar y configurar nuestra tarjeta wifi en modo monitor, configurar el dhcp que dará ip a los "clientes" y compartir Internet con los "clientes".
Instalando lo necesario
Comenzaremos por instalar hostapd y el servidor dhcp. Podemos instalar hostapd desde los repositorios o bien bajarlo y compilarlo desde su pagina web.
apt-get install hostapd
apt-get install isc-dhcp-server
Una vez bajado hostapd deberemos configurarlo. Para ello crearemos un fichero "hostapd.conf" con el siguiente contenido (luego veremos otro tipo de configuraciones):
#configuración Hostapd
interface=wlan0
driver=nl80211
ssid=Rogue
channel=1
En esta configuración mínima estamos diciéndole que nuestra interfaz es wlan0, su driver, el nombre del punto de acceso "Rogue" y que emita por el canal uno.
Por ahora sencillo ¿no?
Configurando el DHCP server
Es una parte muy importante antes de levantar el servicio DHCP tener claro qué tarjeta va a ser la encargada de repartir las IP en nuestra máquina, y la subnet en que va a estar. En nuestro caso le daremos la ip 10.0.0.1 con la máscara de red 255.255.255.0 y así lo declararemos en el fichero de configuración de nuestro dhcp.
Para decirle al dhcp que tarjeta va a ser la encargada de repartir las ip deberemos editar el fichero /etc/default/isc-dhcp-server (este paso sera diferente según que distribución utilices y que versión de servidor dhcp) por ejemplo:
Fedora / RedHat / CentOS:
# File: /etc/sysconfig/dhcpd
DHCPDARGS=wlan0
Debian squezze / Ubuntu:
# File: /etc/default/dhcp3-server
INTERFACES="eth0"
Debian jessie
#file: /etc/default/isc-dhcp-server
El fichero de configuracion de dhcp /etc/dhcpd/dhcpd.conf quedaría tal que así:
ddns-update-style none;
ignore client-updates;
authoritative;
option local-wpad code 252 = text;
subnet
10.0.0.0 netmask 255.255.255.0 {
# --- default gateway
option routers 10.0.0.1;
# --- Netmask
option subnet-mask 255.255.255.0;
# --- Broadcast Address
option broadcast-address
10.0.0.255;
# --- Domain name servers, tells the clients which DNS servers to use.
option domain-name-servers 10.0.0.1, 8.8.8.8, 8.8.4.4;
option time-offset 0;
range 10.0.0.3 10.0.0.13;
default-lease-time 1209600;
max-lease-time 1814400;
}
Bueno ya tenemos configurada la mayor parte ahora vamos con la interface. En primer lugar pararemos "networ manager" para que no nos de la lata:
/etc/init.d/network-manager stop
Luego bajaremos la wlan0 para cambiarle la ip:
ifconfig wlan0 down
ifconfig wlan0 10.0.0.1 netmask 255.255.255.0
ifconfig wlan0 up
después levantaremos el servicio dhcp:
/etc/init.d/isc-dhcp-server restart
y levantaremos nuestro falso AP:
hostapd hostapd.conf
Hasta aquí sencillo tan solo nos falta compartir nuestra conexión para que los clientes tengan alcance la inet...
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i wlan0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Y con esto y bizcocho!!
Lo que podemos hacer también es un pequeño script para que a la hora de levantar nuestro AP sea todo mas rápido:
Llevando el cliente hacia nuestro Rogue AP
Una vez tenemos nuestro Rogue AP podemos utilizar varias técnicas para engañar al cliente dependiendo de cual es nuestro objetivo, para que al fin y al cabo todo acabe como muestra la imagen de la izquierda.
Una vez conectado el cliente a nuestro pícaro punto de acceso somos dueños y señores de sus paquetes y podemos hacer de el lo que nos plazca...
Para ver su tráfico por ejemplo solo tendríamos que arrancar nuestro sniffer preferido:
tcpdump por ejemplo:
tcpdump -i wlan0
lunes, 24 de febrero de 2014
Cómo saber lo que se ejecuta en el background en cada terminal
Para conocer los procesos debemos instalar el paquete jobs y ejecutar este comando. O sea:
1. Instalamos el paquete jobs
En distros como Debian, Ubuntu u derivados sería ya está instalado por defecto.
En ArchLinux o derivados sería:
sudo pacman -S jobs
2. Luego, ejecutamos jobs en la terminal:
jobs
Nos aparecerá algo como esto:
O sea, nos aparece lo que está en ejecución en esa terminal.
En fin, espero que le sea de interés a algunos.
Saludos
Cómo enviar comandos/procesos al background o segundo plano
Para lograr esto simplemente debemos poner un & al final de la línea, por ejemplo, tenemos un script llamado wifi-log.sh y para ejecutarlo y que se quede en el background sería:
./wifi-log.sh &
Vean acá un screenshot:
Aquí vemos claramente que luego de que ejecutamos la línea de arriba no aparece nada más, excepto [1] 29675 ¿Qué significa esto?
29675 es el PID (número de proceso) del script que ejecutamos, o sea, si deseamos matar el script y que deje de ejecutarse simplemente ponemos:
kill 29675
Y listo, se dejó de ejecutar.
O sea y a modo de resumen, para mandar al background (o segundo plano) un proceso (comando, varios comandos o script) debemos poner al final de la línea & y luego presionar Enter
Comandos para comprobar si un puerto está abierto en nuestra PC/Servidor
En caso de que no deseen hacer todo un scan, sino que simplemente
deseen saber si en X ordenador/servidor está abierto un determinado
puerto, sería así:
Ejemplo:
O bien:
Lo que hace esto es simple, pregunta a la IP o Host si el puerto dado está abierto o no, luego el grep filtra y solo muestra la línea que desean leer, la que les indica si está abierto (open) o cerrado (closed) ese puerto:
Pues… sí, nmap (Herramienta de exploración de redes y de sondeo de puertos) nos sirve pero, hay aún otras variantes donde hay que teclear menos :)
O sea:
Aquí tienen un screenshot haciendo una prueba a un puerto que sí está abierto (80) y otra a otro puerto que no lo está (53):
El -zv lo que hace es simple, la v nos permite ver si está abierto o no el puerto, mientras que la z cierra la conexión tan pronto se comprueba el puerto, de no poner la z entonces tendríamos que hacer un Ctrl + C para cerrar el nc.
Aquí un ejemplo:
El problema de telnet es el cierre de la conexión. O sea, en determinadas ocasiones no podremos cerrar la solicitud de telnet y nos veremos obligados a cerrar esa terminal, o de lo contrario en otra terminal hacer un killall telnet o algo similar. Es por eso que evito usar telnet a no ser que me sea muy necesario.
nmap {IP_O_DOMINIO} -p {PUERTO} | grep -i tcp
Ejemplo:
nmap localhost -p 22 | grep -i tcp
O bien:
nmap 127.0.0.1 -p 22 | grep -i tcp
Lo que hace esto es simple, pregunta a la IP o Host si el puerto dado está abierto o no, luego el grep filtra y solo muestra la línea que desean leer, la que les indica si está abierto (open) o cerrado (closed) ese puerto:
Pues… sí, nmap (Herramienta de exploración de redes y de sondeo de puertos) nos sirve pero, hay aún otras variantes donde hay que teclear menos :)
nc
nc o netcat, es una opción mucho más simple para saber si un puerto está o no abierto:nc -zv {IP_O_DOMINIO} {PUERTO}
O sea:
nc -zv 192.168.122.88 80
Aquí tienen un screenshot haciendo una prueba a un puerto que sí está abierto (80) y otra a otro puerto que no lo está (53):
El -zv lo que hace es simple, la v nos permite ver si está abierto o no el puerto, mientras que la z cierra la conexión tan pronto se comprueba el puerto, de no poner la z entonces tendríamos que hacer un Ctrl + C para cerrar el nc.
telnet
Esta es la variante que hace un tiempo usaba (por desconocimiento de las antes mencionadas), a su vez telnet nos sirve para mucho más que solo saber si un puerto está abierto o no.telnet {IP_O_HOST} {PUERTO}
Aquí un ejemplo:
telnet 192.168.122.88 80
El problema de telnet es el cierre de la conexión. O sea, en determinadas ocasiones no podremos cerrar la solicitud de telnet y nos veremos obligados a cerrar esa terminal, o de lo contrario en otra terminal hacer un killall telnet o algo similar. Es por eso que evito usar telnet a no ser que me sea muy necesario.
Ver puertos abiertos con NMap
Buen día. Hoy les traigo unos pequeños tips, vamos a ver los
puertos abiertos que tengamos. Para ello haremos uso de NMap por lo que
procedemos a instalarlo.
En Debian/Ubuntu:
luego para ver los puertos abiertos en tu pc. (En local)
Estos son los puertos que están abiertos en local, o sea que no necesariamente salen a internet.. En mi caso están abiertos el 22 que es de ssh y el 25 de smtp.
Para ver los puertos abiertos en mi pc pero en internet hago el mismo nmap pero con mi dirección ip
En mi caso sale que el host esta prendido pero no ve ningún puerto abierto (solo escanea 1000). Esto se debe a que aunque el puerto está en mi pc abierto, el Router lo está filtrando.
Pero si abro el puerto respectivo en el router…
El hecho de que puedan ver que puertos están abiertos en mi pc supone algún riesgo en mi máquina. Asi que voy asegurar un poco mi servidor ssh. Para ello voy a cambiar el puerto por defecto (22) por otro cualquiera…
Voy como root a el archivo /etc/ssh_config:
vamos donde dice
En mi caso voy a usar el 2222
Hacemos lo mismo buscando la palabra “port” en el archivo /etc/ssh/sshd_config cambiándolo por el mismo puerto que vamos a usar. Ahora editamos /etc/services
Buscamos ssh y cambiamos los dos puertos por el que cambiamos antes.
Ahora reseteamos el servicio..
Y hacemos nmap de nuevo.
Como ven. No sale nada referente e nuestro puerto y/o a el servicio ssh.
Pero el ssh funciona?
CLARO QUE SI.
Importante es que si vas a entrar desde otro ordenador tienes que indicar obviamente el puerto que estés usando..
En Debian/Ubuntu:
# apt-get install nmap
luego para ver los puertos abiertos en tu pc. (En local)
#nmap localhost
Estos son los puertos que están abiertos en local, o sea que no necesariamente salen a internet.. En mi caso están abiertos el 22 que es de ssh y el 25 de smtp.
Para ver los puertos abiertos en mi pc pero en internet hago el mismo nmap pero con mi dirección ip
En mi caso sale que el host esta prendido pero no ve ningún puerto abierto (solo escanea 1000). Esto se debe a que aunque el puerto está en mi pc abierto, el Router lo está filtrando.
Pero si abro el puerto respectivo en el router…
El hecho de que puedan ver que puertos están abiertos en mi pc supone algún riesgo en mi máquina. Asi que voy asegurar un poco mi servidor ssh. Para ello voy a cambiar el puerto por defecto (22) por otro cualquiera…
Voy como root a el archivo /etc/ssh_config:
# nano /etc/ssh/ssh_config
vamos donde dice
# port 22
.. le borramos el # y cambiamos el puerto por el que queramos..
buscamos con CTRL-W. Guardamos con CTRL-O y ceramos con CTRL-C o CTRL-X
En mi caso voy a usar el 2222
Hacemos lo mismo buscando la palabra “port” en el archivo /etc/ssh/sshd_config cambiándolo por el mismo puerto que vamos a usar. Ahora editamos /etc/services
Buscamos ssh y cambiamos los dos puertos por el que cambiamos antes.
Ahora reseteamos el servicio..
Y hacemos nmap de nuevo.
Como ven. No sale nada referente e nuestro puerto y/o a el servicio ssh.
Pero el ssh funciona?
CLARO QUE SI.
Importante es que si vas a entrar desde otro ordenador tienes que indicar obviamente el puerto que estés usando..
ssh -p 2222 IP
Listado de Puertos TCP/UDP
Puerto | Descripción |
1 | TCP Port Service Multiplexer (TCPMUX) |
5 | Remote Job Entry (RJE) |
7 | Protocolo Echo (Responde con eco a llamadas remotas) |
9 | Protocolo Discard (Elimina cualquier dato que recibe) |
13 | Daytime (Fecha y hora actuales) |
17 | Quote of the Day (Cita del Día) |
18 | Message Send Protocol (MSP) |
19 | Protocolo Chargen, Generador de caractéres |
20 | FTP — Datos |
21 | FTP — Control |
22 | SSH, scp, SFTP – Remote Login Protocol |
23 | Telnet |
25 | Simple Mail Transfer Protocol (SMTP) |
29 | MSG ICP |
37 | Time |
42 | Host Name Server (Nameserv) |
43 | WhoIs |
49 | Login Host Protocol (Login) |
53 | Domain Name System (DNS) |
66 | Oracle SQLNet |
67 | BOOTP (BootStrap Protocol) (Server), también usado por DHCP |
68 | BOOTP (BootStrap Protocol) (Client), también usado por DHCP |
69 | Trivial File Transfer Protocol (TFTP) |
70 | Gopher Services |
79 | Finger |
80 | HTTP |
88 | Agente de autenticación Kerberos |
103 | X.400 Standard |
107 | Remote Telnet Service |
108 | SNA Gateway Access Server |
109 | POP2 |
110 | POP3 |
115 | Simple File Transfer Protocol (SFTP) |
118 | SQL Services |
119 | Newsgroup (NNTP) |
123 | NTP |
137 | NetBIOS Name Service |
138 | NetBIOS Datagram Service |
139 | NetBIOS Session Service |
143 | Internet Message Access Protocol (IMAP) |
156 | SQL Server |
161 | SNMP |
162 | SNMP-trap |
177 | XDMCP (Protocolo de gestión de displays en X11) |
179 | Border Gateway Protocol (BGP) |
190 | Gateway Access Control Protocol (GACP) |
194 | Internet Relay Chat (IRC) |
197 | Directory Location Service (DLS) |
209 | Quick Mail Protocol |
217 | dBASE Unix |
389 | Lightweight Directory Access Protocol (LDAP) |
396 | Novell Netware over IP |
443 | HTTPS |
444 | Simple Network Paging Protocol (SNPP) |
445 | Microsoft-DS (Active Directory, compartición en Windows, gusano Sasser, Agobot) |
458 | Apple QuickTime |
500 | IPSec ISAKMP, Autoridad de Seguridad Local |
512 | exec |
513 | login |
514 | syslog usado para logs del sistema |
515 | Printer |
520 | RIP |
522 | Netmeeting |
531 | Conference |
546 | DHCP Client |
547 | DHCP Server |
563 | SNEWS |
569 | MSN |
631 | CUPS: sistema de impresión de Unix |
666 | identificación de Doom para jugar sobre TCP |
992 | Telnet SSL |
993 | IMAP4 SSL |
995 | POP3 SSL |
1080 | Socks Proxy |
1352 | IBM Lotus Notes/Domino RCP |
1433 | Microsoft-SQL-Server |
1434 | Microsoft-SQL-Monitor |
1494 | Citrix MetaFrame Cliente ICA |
1512 | WINS |
1521 | Oracle listener |
1701 | Enrutamiento y Acceso Remoto para VPN con L2TP |
1723 | Enrutamiento y Acceso Remoto para VPN con PPTP |
1761 | Novell Zenworks Remote Control utility |
1863 | MSN Messenger |
2049 | NFS |
2082 | CPanel |
2086 | WHM (Web Host Manager) |
2427 | Cisco MGCP |
3000 | Calista IP phone (saliente) |
3030 | NetPanzer |
3128 | Squid Proxy |
3306 | MySQL |
3389 | Microsoft Terminal Server |
3396 | Novell agente de impresión NDPS |
3690 | SubVersion |
4099 | AIM Talk |
4662 | eMule |
4672 | eMule |
4899 | RAdmin |
5000 | UPNP (Universal plug-and-play) |
5060 | SIP (Session Initiation Protocol) |
5190 | Calista IP phone (entrante) |
5222 | XMPP/Jabber: conexión de cliente |
5223 | XMPP/Jabber: puerto por defecto para conexiones de cliente SSL |
5269 | XMPP/Jabber: conexión de servidor |
5432 | PostgreSQL |
5500 | VNC (Virtual Network Computing) |
5517 | Setiqueue proyecto SETI@Home |
5631 | pcAnyWhere (host) |
5632 | pcAnyWhere (host) |
5400 | VNC (Virtual Network Computing) |
5500 | VNC (Virtual Network Computing) |
5600 | VNC (Virtual Network Computing) |
5700 | VNC (Virtual Network Computing) |
5800 | VNC (Virtual Network Computing) |
5900 | VNC (Virtual Network Computing) |
6000 | X11 usado para X-windows |
6112 | Blizzard Entertainment |
6129 | Dameware: Software conexión remota |
6346 | Gnutella |
6347 | Gnutella |
6348 | Gnutella |
6349 | Gnutella |
6350 | Gnutella |
6355 | Gnutella |
6667 | IRC |
6881 | BitTorrent: puerto por defecto |
6891-6900 | MSN Messenger (archivos) |
6901 | MSN Messenger (voz) |
6969 | BitTorrent: puerto de tracker |
7100 | Servidor de Fuentes X11 |
8000 | Shoutcast |
8080 | HTTP alternativo al puerto 80. También Tomcat default |
8118 | privoxy |
8291 | routers Microtik |
9009 | Pichat peer-to-peer chat server |
9898 | Dabber (troyano) |
10000 | Webmin (Administración remota web) |
12345 | Netbus (troyano) |
19226 | Puerto de comunicaciones de Panda Agent |
20000-20019 | ICQ |
28800-29000 | MSN Game Zone |
31337 | Back Orifice (troyanos) |
viernes, 21 de febrero de 2014
Conexión a un servidor mediante túnel inverso ssh
A la hora de administrar servidores u
otros equipos con unas medidas de seguridad específicas que no se deben
modificar, existen varias herramientas, pero ninguna tan simple y eficaz
como el túnel inverso por ssh.
No se trata más que de una conexión entre equipos puerto a puerto
mediante ssh, con la característica de que la petición principal la
realiza la máquina a la que queremos tener acceso y no desde la que
accederemos. ¿Que cómo que qué? Pues supongamos que queremos acceder a
un servidor, pero que ese servidor tiene por delante un router o firewall al que no tenemos acceso.
Nosotros nos encontramos en la misma tesitura, nuestro router o
firewall también bloquea las peticiones entrantes a cualquier puerto y
de la misma forma nos es inaccesible. Con lo que sí
contamos es con una tercera máquina a la que sí podremos acceder
mediante ssh, lo que nos deja con la única solución de acceso al
servidor desde el exterior mediante el túnel inverso ssh.
Lo que haremos para conectarnos a ese
servidor, es establecer una conexión desde dicha máquina a aquel tercer
equipo que dijimos sí teníamos acceso ssh, para luego conectarnos a ese
equipo y enlazar indirectamente con el servidor desde nuestra ubicación,
o cualquier otro equipo. Vamos con la configuración que quedará todo más claro.
Esta sería la configuración a establecer en el servidor al que queremos acceder:
ssh -R 16789:localhost:2222 usuario@servidor.o.ip
Aquí le especificamos que abra una
conexión inversa (-R) al puerto 16789 del equipo al que sí podemos
acceder vía ssh (localhost) mediante el puerto 2222 del servidor, con un
usuario (usuario) determinado en, obviamente la dirección ip
(@servidoroip) de esa tercera máquina.
Con esto configurado en el servidor, lo único que tendremos que realizar nosotros será una conexión ssh normal hacia el puerto 16789 de esa ‘máquina puente’ para que nos redirija mediante ese túnel inverso hacia el servidor.
ssh usuario@servidor.o.ip -p 16789
Y ya nos responde el servidor mediante la conexión que configuramos con la primera línea en el propio server.
Un último esquema para aclarar aún más la idea:
A=Desde donde conectaremos.
B=Servidor al que queremos conectar.
C=Equipo intermedio al que sí podemos acceder vía ssh.
B=Servidor al que queremos conectar.
C=Equipo intermedio al que sí podemos acceder vía ssh.
B abrirá una conexión a C, con la que el
puerto 2222 de B estará escuchando todo aquello que pase por el puerto
16789 de C. Luego nostros desde A podremos conectarnos al puerto 16789
de C, con lo que indirectamente estableceremos conexión con el puerto
2222 de B, que es lo que queríamos desde un principio, y todo esto
gracias al túnel inverso ssh.
comando de linux muy buenos
- sshfs user@host:/path/to/dir /path/to/mount/point – monta el directorio/sistema de ficheros a través de SSH.
- !!:gs/foo/bar – ejecuta el comando anterior reemplazando la cadena “foo” por “bar”.
- mount | column –t – muestra los sistemas de ficheros montados de una forma ordenada.
- [space] command – ejecuta un comando sin guardarlo en el historial.
- ssh user@host cat /path/to/remotefile | diff /path/to/localfile – compara un fichero remoto con un fichero local.
- ffmpeg –f x11grab –s wxga –r 25 –I :0.0 –sameq /tmp/out.mpg – captura el video de un escritorio Linux.
- $ssh-copy-id user@host – copia las claves SSH a user@host para permitir inicios de sesión sin contraseña SSH.
- mtr google.com – mtr combina la funcionalidad de traceroute y ping.
- cd - – cambia a directorio de trabajo anterior.
- :w !sudo tee % – guarda un fichero que has editado en vim sin los permisos necesarios.
- python –m SimpleHTTPServer – ejecuta un servidor web en el directorio actual accesible mediante http://$HOSTNAME:8000/.
- sudo !! – ejecuta el último comando como root.
- wget –random-wait –r –p –e robots=off –U mozilla http://www.example.com – descarga un sitio web entero.
- du -h --max-depth=1 – lista el tamañao de todos los subdirectorios desde la posición actual.
- man ascii – acceso rápido a la tabla ASCII.
- net rpc shutdown –I WindowsIPAddr –U user%password – apaga un Windows desde Linux.
- (cd /tmp && ls) – salta a un directorio, ejecuta un comando y vuelve al directorio actual.
- ps –aux | sort –nk + 4 | tail – muestra el top 10 de procesos ordenados por uso de memoria.
- history | awk ‘{a[$2]++}END{for(i in a}{print a[i] “ ” i}’ | sort –rn | head – lista los comandos más usados.
- ping –i 60 –a IPAddr – configura una alarma sonora cuando la dirección IP se pone en línea.
- echo “you can simulate on-screen typing” | pv –qL 10 – simula escritura.
- python –m smtpd –n –c DebuggingServer localhost:1025 – arranca un sencillo servidor SMTP escuchando en el puerto 1025 de localhost.
- lsof –i – ver la actividad del servicio de red en tiempo real.
- mplayer –ao pcm –vo null –vc dummy –dumpaudio –dumpfile – ripea audio desde un fichero de video-
- sudo dd if=/dev/mem | cat | strings – muestra todos los valores string en memoria.
- cat /etc/issue – muestra la distribución Linux instlada.
- wget –qO – http://www.tarbal.com/tarball.gz | tar zxvf - – extrae tarball desde Internet.
- nc –vv –l –p 1234 –e /bin/bash – crea un backdoor para permitir conexiones remotas a bash.
- !!:gs/foo/bar – ejecuta el comando anterior reemplazando la cadena “foo” por “bar”.
- mount | column –t – muestra los sistemas de ficheros montados de una forma ordenada.
- [space] command – ejecuta un comando sin guardarlo en el historial.
- ssh user@host cat /path/to/remotefile | diff /path/to/localfile – compara un fichero remoto con un fichero local.
- ffmpeg –f x11grab –s wxga –r 25 –I :0.0 –sameq /tmp/out.mpg – captura el video de un escritorio Linux.
- $ssh-copy-id user@host – copia las claves SSH a user@host para permitir inicios de sesión sin contraseña SSH.
- mtr google.com – mtr combina la funcionalidad de traceroute y ping.
- cd - – cambia a directorio de trabajo anterior.
- :w !sudo tee % – guarda un fichero que has editado en vim sin los permisos necesarios.
- python –m SimpleHTTPServer – ejecuta un servidor web en el directorio actual accesible mediante http://$HOSTNAME:8000/.
- sudo !! – ejecuta el último comando como root.
- wget –random-wait –r –p –e robots=off –U mozilla http://www.example.com – descarga un sitio web entero.
- du -h --max-depth=1 – lista el tamañao de todos los subdirectorios desde la posición actual.
- man ascii – acceso rápido a la tabla ASCII.
- net rpc shutdown –I WindowsIPAddr –U user%password – apaga un Windows desde Linux.
- (cd /tmp && ls) – salta a un directorio, ejecuta un comando y vuelve al directorio actual.
- ps –aux | sort –nk + 4 | tail – muestra el top 10 de procesos ordenados por uso de memoria.
- history | awk ‘{a[$2]++}END{for(i in a}{print a[i] “ ” i}’ | sort –rn | head – lista los comandos más usados.
- ping –i 60 –a IPAddr – configura una alarma sonora cuando la dirección IP se pone en línea.
- echo “you can simulate on-screen typing” | pv –qL 10 – simula escritura.
- python –m smtpd –n –c DebuggingServer localhost:1025 – arranca un sencillo servidor SMTP escuchando en el puerto 1025 de localhost.
- lsof –i – ver la actividad del servicio de red en tiempo real.
- mplayer –ao pcm –vo null –vc dummy –dumpaudio –dumpfile – ripea audio desde un fichero de video-
- sudo dd if=/dev/mem | cat | strings – muestra todos los valores string en memoria.
- cat /etc/issue – muestra la distribución Linux instlada.
- wget –qO – http://www.tarbal.com/tarball.gz | tar zxvf - – extrae tarball desde Internet.
- nc –vv –l –p 1234 –e /bin/bash – crea un backdoor para permitir conexiones remotas a bash.
jueves, 13 de febrero de 2014
Servidores Virtuales con Apache2
Lo
que sigue es una breve nota técnica que me sirva (y a otros) como
recordatorio para la próxima vez , dado que hoy he perdido un rato con
la configuración de un host virtual en Ubuntu.
Doy por supuesto que tienen apache2 instalado y funcionando
en sus maquina, sino, le dan:
$ sudo apt-get install apache2
En /etc/apache2 disponemos de varios subdirectorios, dos de ellos importantes para nuestra tarea. El primero sites-available y el segundo sites-enabled.
Los ficheros de configuración de los hostings virtuales se configuran en sites-available. El segundo subdirectorio sólo contiene enlaces a aquellos virtulhost que queremos activar.
Queremos crear un virtualhost de nombre hackit. Es decir, cuando ponga en mi navegador http://hackit me debe de llevar a la página principal de ese host. Si pongo http://localhost me llevará al virtualhost por defecto (distinto del de hackit).
Lo primero, creo una nueva entrada en /etc/hosts (mantengo lo que había y añado lo siguiente):
127.0.0.1 hackit
Copio los archivos del nuevo site en /var/www/hackit.
Comienza el procedimiento de configuración del nuevo virtualhost en Apache2:
$ cd /etc/apache2/sites-available
Edito las dos primeras líneas del fichero default para que queden así:
NameVirtualHost *:80
<VirtualHost *:80>
$ cp default hackit
Edito hackit para que las primeras líneas queden así:
<VirtualHost *:80>
ServerAdmin webmaster@hackit
ServerName hackit
DocumentRoot /var/www/hackit
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/hackit>
$ cd /etc/apache2
El siguiente comando, a2ensite (available2enablesite) crea un enlace en sites-enable al site que le indiquemos (es decir, activa el virtualhost que acabamos de crear)
# a2ensite hackit
Comprobamos:
$ ls -al sites-enabled/
Recargamos apache2:
#/etc/init.d/apache2 force-reload
Doy por supuesto que tienen apache2 instalado y funcionando
en sus maquina, sino, le dan:
$ sudo apt-get install apache2
En /etc/apache2 disponemos de varios subdirectorios, dos de ellos importantes para nuestra tarea. El primero sites-available y el segundo sites-enabled.
Los ficheros de configuración de los hostings virtuales se configuran en sites-available. El segundo subdirectorio sólo contiene enlaces a aquellos virtulhost que queremos activar.
Queremos crear un virtualhost de nombre hackit. Es decir, cuando ponga en mi navegador http://hackit me debe de llevar a la página principal de ese host. Si pongo http://localhost me llevará al virtualhost por defecto (distinto del de hackit).
Lo primero, creo una nueva entrada en /etc/hosts (mantengo lo que había y añado lo siguiente):
127.0.0.1 hackit
Copio los archivos del nuevo site en /var/www/hackit.
Comienza el procedimiento de configuración del nuevo virtualhost en Apache2:
$ cd /etc/apache2/sites-available
Edito las dos primeras líneas del fichero default para que queden así:
NameVirtualHost *:80
<VirtualHost *:80>
$ cp default hackit
Edito hackit para que las primeras líneas queden así:
<VirtualHost *:80>
ServerAdmin webmaster@hackit
ServerName hackit
DocumentRoot /var/www/hackit
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/hackit>
$ cd /etc/apache2
El siguiente comando, a2ensite (available2enablesite) crea un enlace en sites-enable al site que le indiquemos (es decir, activa el virtualhost que acabamos de crear)
# a2ensite hackit
Comprobamos:
$ ls -al sites-enabled/
Recargamos apache2:
#/etc/init.d/apache2 force-reload
Como Crear una VPN entre dos Linux
Descargar en ambas maquinas el openvpn
# aptitude install openvpn
# cd /etc/openvpn/easy-rsa/
# . vars (asigna la ruta de certificados y firmas)
#sh clean-all (borra cualquier certificado o basura que aya)
#sh build-ca (Generación certi_cado Autoridad Certi_cadora (CA))
Generación de certificado y clave del servidor
#sh build-key-server server
Esto genera los ficheros server.crt, server.csr y server.key que moveremos a la ubicación /etc/openvpn
Generación del certi_cado y clave para tres clientes
Ejecutar el siguiente comando:
./build-key cliente1
./build-key cliente2
./build-key cliente3
esto será movido a /etc/openvpn de cada cliente.
El resultado del script es muy similar al obtenido para el servidor. Se crean dos
ficheros cliente.crt, cliente.key,
también hay que mover el fichero ca.crt que genera el servidor.
Configuración del server.conf
VM-debian:/etc/openvpn# more server.conf
;local a.b.c.d
port 1194
;proto tcp
proto udp
;dev tap
dev tun
;dev-node MyTap
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
;client-config-dir ccd
;route 192.168.40.128 255.255.255.248
;client-config-dir ccd
;route 10.9.0.0 255.255.255.252
;learn-address ./script
;push "redirect-gateway"
;push "dhcp-option DNS 10.8.0.1"
;push "dhcp-option WINS 10.8.0.1"
;client-to-client
;duplicate-cn
keepalive 10 120
;tls-auth ta.key 0 # This file is secret
;cipher BF-CBC # Blowfish (default)
;cipher AES-128-CBC # AES
;cipher DES-EDE3-CBC # Triple-DES
comp-lzo
;max-clients 100
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
log-append openvpn.log
verb 3
;mute 20
Configuración del Client.conf
client
;dev tap
dev tun
;dev-node MyTap
;proto tcp
proto udp
remote 192.168.0.105 1194
;remote my-server-2 1194
;remote-random
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]
;mute-replay-warnings
ca ca.crt
cert client.crt
key client.key
;ns-cert-type server
;tls-auth ta.key 1
;cipher x
;mute 20
comp-lzo
verb 3
status openvpn-status.log
log openvpn.log
log-append openvpn.log
corro el daemon /etc/init.d/openvpn start en ambos lados......y si tiro un ping a 10.8.0.1 tiene que llegar.
Instalacion y configuracion de Fail2ban
Más info...
Instalacion
apt-get install fail2ban
Configuracion
Para configurar fail2ban tenemos que acceder a los archivos ubicados en en/etc/fail2ban/.
El archivo principal y el que vamos a configurar en este post en jail.conf
Les dejo un pequeño listado con las palabras y definiciones mas comunes que vamos a encontar en este archivo:
ignoreip : IP que deseamos que ignore fail2ban
bantime : Tiempo que tendra que esperar el usuario que supero la cantidad maxima de logueos (segundos)
maxretry : Numero de intentos de logeo.
destemail: Dirección de correo donde nos enviará las nuevas alertas (se debe tener configurado un SMTP)
action : Simboliza la manera en que iptables aplicara las reglas
enable : Activa o desactiva la verificación del servicio para Fail2ban (TRUE , FALSE)
port : Nombre del servicio que está relacionado con el puerto por ejemplo "ssh"
logpath : Ruta donde se ubicaran los ficheros Logs para ver toda la información según cual sea el servicio.
Bueno empecemos a modificar el archivo jail.conf
Ahora modificaremos la siguiente linea para agregar el correo de destino para las notificaciones de fail2ban, en caso de no estar presente en el archivo la podemos agregar.
destemail = piruo7@debian.com
Es recomendable que agreguemos en la linea “ignoreip” nuestra ip local, o la de algun servidor con el que podamos conectar en caso de que por error nos bloqueemos nosotros mismos:
ignoreip = 127.0.0.1
Buscar la siguiente linea y establecer el tiempo de prohibicion:
bantime = 600
Proteger el servidor SSH contra intentos de accesos fallidos:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
Habilitar proteccion para Apache:
[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6
Habilitar proteccion para vsftpd:
[vsftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 4
Tambien podemos habilitar y configurar la proteccion otros servicios como, Nginx, qmail, proftpd, sasl, asterisk, postfix, courier, Bind, etc.
Reiniciareamos Fail2ban
/etc/init.d/fail2ban restart
Probar la configuracion
fail2ban-client -d
El comando anterior vertera la configuracion y mostrara los errores de la misma
Monitorear el registro de Fail2ban:
tail -f /var/log/fail2ban.log
Si quieren monitorear el servicio SSH lo que tiene que hacer es lo siguiente:
tail -f var/log/auth.log
La ruta del archivo cambia dependiendo a la configuracion que ustedes pusieron.
Apache 2 con Secure Sockets Layer (SSL)
Introducción a SSL
El estándar SSL fue desarrollado por NetscapeCommunications Corporation , junto con Mastercard,
Bank of America, MCI y Silicon Graphics. Lanzando en 1996 SSL v3.0, el cual se utilizó para
desarrollar en 1999 el TLS versión 1.0, un estándar protocolo IETF definido por primera vez en el
RFC 2246. Se encuentra en la pila OSI entre los niveles de TCP/IP y de los protocolos HTTP, FTP,
SMTP, SSH, etc.
SSL opera de una manera modular: sus autores lo diseñaron extensible, con soporte para
compatibilidad hacia delante y hacia atrás, y negociación entre las partes (peer-to-peer).
Proporciona sus servicios de seguridad cifrando los datos intercambiados entre el servidor y el
cliente con un algoritmo de cifrado simétrico, típicamente el RC4 o IDEA, y cifrando la clave de
sesión de RC4 o IDEA mediante un algoritmo de cifrado de clave pública, típicamente el RSA. La
clave de sesión es la que se utiliza para cifrar los datos que vienen del y van al servidor seguro. Se
genera una clave de sesión distinta para cada transacción, lo cual permite que aunque sea reventada
por un atacante en una transacción dada, no sirva para descifrar futuras transacciones. MD5 se usa
como algoritmo de hash.
Proporciona cifrado de datos, autenticación de servidores, integridad de mensajes y, opcionalmente,
autenticación de cliente para conexiones TCP/IP.
Cuando el cliente pide al servidor seguro una comunicación segura, el servidor abre un puerto
cifrado, gestionado por un software llamado Protocolo SSL Record, situado encima de TCP. Será el
software de alto nivel, Protocolo SSL Handshake, quien utilizara el Protocolo SSL Record y el
puerto abierto para comunicarse de forma segura con el cliente.
Funcionamiento
Cuando el cliente pide al servidor seguro una comunicación segura, el servidor abre un puerto
cifrado (443), gestionado por un software llamado Protocolo SSL Record, situado encima de TCP.
Será el software de alto nivel el protocolo SSL Handshake, quien utilice el Protocolo SSL Record y
el puerto abierto para comunicarse de forma segura con el cliente.
1. El protocolo SSL Handshake, es donde el cliente y el servidor intercambian una serie de
mensajes para negociar las mejoras de seguridad.
La fase de Saludos.
La fase de intercambio de claves.
La fase de producción de clave de sesión.
La fase de verificación del servidor.
La fase de autenticación del cliente.
La fase de finalización.
2. El Protocolo SSL Record especifica la forma de encapsular los datos transmitidos y
recibidos. La porción de datos del protocolo tiene tres componentes:
MAC-DATA, el código de autenticación del mensaje.
ACTUAL-DATA, los datos de aplicación a transmitir.
ADDING-DATA, los datos requeridos para rellenar el mensaje al usa cifrado en bloque.
Este invento que ha propiciado una navegación segura más transacciones comerciales, motivando a
los usuarios de la red y a las empresas a que tengan confianza de ser usurpados por usuarios
maliciosos del internet, lo cual ha dado un mejor funcionamiento a un nivel económico. Visa,
MasterCard, American Express y muchas de las principales instituciones financieras han aprobado
SSL para el comercio sobre Internet.
Referencias: RFC 4346, reemplazada por RFC 5246, 5746, 5878 (estándar propuesto); modificada
por RFC 4366, 4680, 4681, 5746 (correcciones).
Primero que nada necesitamos habilitar el modulo SSL con lo cual tenemos que hacerlo ejecutando
“a2enmod ssl” esto activara los módulos que necesitamos para continuar nuestra configuración.
$ a2enmod ssl
Luego creamos en /etc/apache2/sites-available un archivo con el nombre del dominio pero con -ssl
para diferenciarlo del precedente “gato.linux.com-ssl.conf” en el escribimos el siguiente
script.
<IfModule mod_ssl.c> ## Módulos para el protocolo SSL
<VirtualHost *:443> ## Puerto de HTTPS por defecto 443
DocumentRoot "/home/gatoe/www/gato.linux.com" ## Localización de documentos
ServerName gato.linux.com ## Nombre del dominio
ServerAlias *.gato.linux.com ## Alias del dominio
<Directory "/home/gato/www/gato.linux.com"> ## Localización del sitio
Options -Indexes FollowSymLinks MultiViews
allow from all
</Directory>
ErrorLog /var/log/apache2/gato.linux.com-ssl.error.log ## archivo log auto-generable
LogLevel warn
CustomLog /var/log/apache2/gato.linux.com.access.log combined ## log de acceso
## auto-generable
ServerSignature On
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch ".(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]"
nokeepalive ssl-unclean-shutdown
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
Ahora vamos a modificar el archivo que se encuentra en “/etc/apache2/ports.conf” aquí tendremos
que hacer algunas modificaciones, dejándolos de esta manera
SCRIPT “/etc/apache2/ports.conf”
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
NameVirtualHost *:443
Listen 443
</IfModule>
Ahora tendremos que activarlos ejecutando lo siguiente.
a2ensite gato.linux.com-ssl.conf
Ahora reiniciamos apache2
/etc/init.d/apache2 restart
y ya tendríamos que podes acceder usando el protocolo HTTPS.
# Creamos las llaves con el comando openssl usando “genrsa -des3” para generar parámetros de
RSA, utilizando un algoritmo DES encriptando 3 veces, y quedara contenida en un archivo que
generara con el nombre servidor.key con una encriptación de 1024 bits en el directorio
/etc/apache2/.
En caso de querer generar una contraseña con una seguridad mayor, se puede usar 2048 bits, y
direccionarla a algún archivo “openssl genrsa -des3 2048 >> /archivo_a_alojar/”
Podemos usar muchos parámetros mas como por ejemplo usar Diffie-Hellman o parámetros DSA
para conocer un poco mas recomiendo ejecutar “man openssl”.
openssl genrsa -des3 1024 >> /etc/apache2/servidor.key
en mi caso como estoy en el directorio /etc/apache2/ obvio la redirección final “>> /etc/apache2”
Donde nos pide que ingresemos una passwd para crear una llave que estará contenida en
servidor.key, luego nos pedirá que repitamos la contraseña.
Aclaración: al ingresar las contraseñas no esperes ver caracteres de ningún tipo.
Ahora tenemos que creamos un certificado con la llave que ya creamos, así que primero que nada
nos posicionamos en el directorio /etc/apache2/ y ejecutamos el comando openssl con el parámetro
“-req” para los certificado X.509 con una solicitud de firma RSE de administración, generando una
nueva llave que sera direccionado todo al archivo servidor.csr.
openssl req -new -key servidor.key -out servidor.csr
en la cual tendremos que llenar un formulario con algunos campos como:
El código del país en mi caso es Argentina así que ingreso “AR”.
La provincia donde nos encontramos, en mi caso “Corrientes”.
Ciudad en la que nos encontramos “Corrientes”.
El nombre de la empresa a la que pertenecemos “GaTux”.
Nombre de la sección en la organización “Informatica”.
Nombre completo “Leandro Facundo Carril”.
Tu E-mail “lean1989gatux@gmail.com”
Luego continua con Atributos extras del formulario donde nos vuelve a pedir la Password ingresada
en las llaves generadas y un nombre opcional el que podemos dejar en blanco.
Ahora crearemos un certificado nuevo autofirmado de tipo x509 usando req (recuest), que
durará un año usando como certificado raíz a servidor.key. Con out marcamos el
certificado que deseamos firmar “servidor.crt”. En caso que no usemos la opción days se
creara un certificado por 30 días.
openssl x509 -req -days 365 -in servidor.csr -signkey servidor.key -out servidor.crt
Donde tendremos que ingresar nuevamente nuestra contraseña.
#Cambiamos de carpeta la llave y certificado
cp servidor.crt /etc/ssl/certs/
cp servidor.key /etc/ssl/private/
Abrimos el archivo de configuracion gato.linux.com-ssl.confmcedit /etc/apache2/sites-availables/gato.linux.com-ssl.conf
# reemplazamos y habilitamos la siguiente configuracion
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /etc/ssl/certs/servidor.crt
SSLCertificateKeyFile /etc/ssl/private/servidor.key
# habilitamos el archivo
a2ensite /etc/apache2/sites-availables/gato.linux.com-ssl.conf
# Reiniciamos apache y listo!!
/etc/init.d/apache2 restart
desplazamos donde dice Comprendo los Riegos.
le damos clik en agregar excepcion.
y por ultimo confirmar excepcion de seguridad.
y Whoala!!!
El estándar SSL fue desarrollado por NetscapeCommunications Corporation , junto con Mastercard,
Bank of America, MCI y Silicon Graphics. Lanzando en 1996 SSL v3.0, el cual se utilizó para
desarrollar en 1999 el TLS versión 1.0, un estándar protocolo IETF definido por primera vez en el
RFC 2246. Se encuentra en la pila OSI entre los niveles de TCP/IP y de los protocolos HTTP, FTP,
SMTP, SSH, etc.
SSL opera de una manera modular: sus autores lo diseñaron extensible, con soporte para
compatibilidad hacia delante y hacia atrás, y negociación entre las partes (peer-to-peer).
Proporciona sus servicios de seguridad cifrando los datos intercambiados entre el servidor y el
cliente con un algoritmo de cifrado simétrico, típicamente el RC4 o IDEA, y cifrando la clave de
sesión de RC4 o IDEA mediante un algoritmo de cifrado de clave pública, típicamente el RSA. La
clave de sesión es la que se utiliza para cifrar los datos que vienen del y van al servidor seguro. Se
genera una clave de sesión distinta para cada transacción, lo cual permite que aunque sea reventada
por un atacante en una transacción dada, no sirva para descifrar futuras transacciones. MD5 se usa
como algoritmo de hash.
Proporciona cifrado de datos, autenticación de servidores, integridad de mensajes y, opcionalmente,
autenticación de cliente para conexiones TCP/IP.
Cuando el cliente pide al servidor seguro una comunicación segura, el servidor abre un puerto
cifrado, gestionado por un software llamado Protocolo SSL Record, situado encima de TCP. Será el
software de alto nivel, Protocolo SSL Handshake, quien utilizara el Protocolo SSL Record y el
puerto abierto para comunicarse de forma segura con el cliente.
Funcionamiento
Cuando el cliente pide al servidor seguro una comunicación segura, el servidor abre un puerto
cifrado (443), gestionado por un software llamado Protocolo SSL Record, situado encima de TCP.
Será el software de alto nivel el protocolo SSL Handshake, quien utilice el Protocolo SSL Record y
el puerto abierto para comunicarse de forma segura con el cliente.
1. El protocolo SSL Handshake, es donde el cliente y el servidor intercambian una serie de
mensajes para negociar las mejoras de seguridad.
La fase de Saludos.
La fase de intercambio de claves.
La fase de producción de clave de sesión.
La fase de verificación del servidor.
La fase de autenticación del cliente.
La fase de finalización.
2. El Protocolo SSL Record especifica la forma de encapsular los datos transmitidos y
recibidos. La porción de datos del protocolo tiene tres componentes:
MAC-DATA, el código de autenticación del mensaje.
ACTUAL-DATA, los datos de aplicación a transmitir.
ADDING-DATA, los datos requeridos para rellenar el mensaje al usa cifrado en bloque.
Este invento que ha propiciado una navegación segura más transacciones comerciales, motivando a
los usuarios de la red y a las empresas a que tengan confianza de ser usurpados por usuarios
maliciosos del internet, lo cual ha dado un mejor funcionamiento a un nivel económico. Visa,
MasterCard, American Express y muchas de las principales instituciones financieras han aprobado
SSL para el comercio sobre Internet.
Referencias: RFC 4346, reemplazada por RFC 5246, 5746, 5878 (estándar propuesto); modificada
por RFC 4366, 4680, 4681, 5746 (correcciones).
Primero que nada necesitamos habilitar el modulo SSL con lo cual tenemos que hacerlo ejecutando
“a2enmod ssl” esto activara los módulos que necesitamos para continuar nuestra configuración.
$ a2enmod ssl
Luego creamos en /etc/apache2/sites-available un archivo con el nombre del dominio pero con -ssl
para diferenciarlo del precedente “gato.linux.com-ssl.conf” en el escribimos el siguiente
script.
<IfModule mod_ssl.c> ## Módulos para el protocolo SSL
<VirtualHost *:443> ## Puerto de HTTPS por defecto 443
DocumentRoot "/home/gatoe/www/gato.linux.com" ## Localización de documentos
ServerName gato.linux.com ## Nombre del dominio
ServerAlias *.gato.linux.com ## Alias del dominio
<Directory "/home/gato/www/gato.linux.com"> ## Localización del sitio
Options -Indexes FollowSymLinks MultiViews
allow from all
</Directory>
ErrorLog /var/log/apache2/gato.linux.com-ssl.error.log ## archivo log auto-generable
LogLevel warn
CustomLog /var/log/apache2/gato.linux.com.access.log combined ## log de acceso
## auto-generable
ServerSignature On
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch ".(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]"
nokeepalive ssl-unclean-shutdown
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
Ahora vamos a modificar el archivo que se encuentra en “/etc/apache2/ports.conf” aquí tendremos
que hacer algunas modificaciones, dejándolos de esta manera
SCRIPT “/etc/apache2/ports.conf”
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
NameVirtualHost *:443
Listen 443
</IfModule>
Ahora tendremos que activarlos ejecutando lo siguiente.
a2ensite gato.linux.com-ssl.conf
Ahora reiniciamos apache2
/etc/init.d/apache2 restart
y ya tendríamos que podes acceder usando el protocolo HTTPS.
# Creamos las llaves con el comando openssl usando “genrsa -des3” para generar parámetros de
RSA, utilizando un algoritmo DES encriptando 3 veces, y quedara contenida en un archivo que
generara con el nombre servidor.key con una encriptación de 1024 bits en el directorio
/etc/apache2/.
En caso de querer generar una contraseña con una seguridad mayor, se puede usar 2048 bits, y
direccionarla a algún archivo “openssl genrsa -des3 2048 >> /archivo_a_alojar/”
Podemos usar muchos parámetros mas como por ejemplo usar Diffie-Hellman o parámetros DSA
para conocer un poco mas recomiendo ejecutar “man openssl”.
openssl genrsa -des3 1024 >> /etc/apache2/servidor.key
en mi caso como estoy en el directorio /etc/apache2/ obvio la redirección final “>> /etc/apache2”
Donde nos pide que ingresemos una passwd para crear una llave que estará contenida en
servidor.key, luego nos pedirá que repitamos la contraseña.
Aclaración: al ingresar las contraseñas no esperes ver caracteres de ningún tipo.
Ahora tenemos que creamos un certificado con la llave que ya creamos, así que primero que nada
nos posicionamos en el directorio /etc/apache2/ y ejecutamos el comando openssl con el parámetro
“-req” para los certificado X.509 con una solicitud de firma RSE de administración, generando una
nueva llave que sera direccionado todo al archivo servidor.csr.
openssl req -new -key servidor.key -out servidor.csr
en la cual tendremos que llenar un formulario con algunos campos como:
El código del país en mi caso es Argentina así que ingreso “AR”.
La provincia donde nos encontramos, en mi caso “Corrientes”.
Ciudad en la que nos encontramos “Corrientes”.
El nombre de la empresa a la que pertenecemos “GaTux”.
Nombre de la sección en la organización “Informatica”.
Nombre completo “Leandro Facundo Carril”.
Tu E-mail “lean1989gatux@gmail.com”
Luego continua con Atributos extras del formulario donde nos vuelve a pedir la Password ingresada
en las llaves generadas y un nombre opcional el que podemos dejar en blanco.
Ahora crearemos un certificado nuevo autofirmado de tipo x509 usando req (recuest), que
durará un año usando como certificado raíz a servidor.key. Con out marcamos el
certificado que deseamos firmar “servidor.crt”. En caso que no usemos la opción days se
creara un certificado por 30 días.
openssl x509 -req -days 365 -in servidor.csr -signkey servidor.key -out servidor.crt
Donde tendremos que ingresar nuevamente nuestra contraseña.
#Cambiamos de carpeta la llave y certificado
cp servidor.crt /etc/ssl/certs/
cp servidor.key /etc/ssl/private/
Abrimos el archivo de configuracion gato.linux.com-ssl.confmcedit /etc/apache2/sites-availables/gato.linux.com-ssl.conf
# reemplazamos y habilitamos la siguiente configuracion
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /etc/ssl/certs/servidor.crt
SSLCertificateKeyFile /etc/ssl/private/servidor.key
# habilitamos el archivo
a2ensite /etc/apache2/sites-availables/gato.linux.com-ssl.conf
# Reiniciamos apache y listo!!
/etc/init.d/apache2 restart
desplazamos donde dice Comprendo los Riegos.
le damos clik en agregar excepcion.
y por ultimo confirmar excepcion de seguridad.
y Whoala!!!
Suscribirse a:
Entradas (Atom)