Mostrando entradas con la etiqueta linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta linux. Mostrar todas las entradas

sábado, 21 de enero de 2017

Blue Team Debian - Frenando los ataques más comunes en red



Autor: @elchicodepython


Introducción

Antes de comenzar me gustaría comentar que todos los caminos llevan a Roma y hay mil formas de llegar al mismo punto en un sistema GNU/Linux. Con este manual no estoy diciendo ni que esta sea la manera ideal ni la única para llegar al punto de mitigar estos ataques en redes locales, sino que estoy tratando de explicar detalladamente como defenderte según he aprendido a defenderme yo.

sábado, 10 de diciembre de 2016

Máquinas virtuales Linux “deshechables” desde el navegador web y en unos segundos.



created by: @panapunk

No son pocas las veces que me he visto en la tesitura de tener que virtualizar una máquina Linux para poder hacer un par de operaciones que mi Sistema operativo no me permite o no debo hacer desde la máquina anfitrión, o simplemente otras muchas situaciones que nos requieren virtualizar un Ubuntu, Debian, Fedora, CentOS o Arch Linux lo antes posible, una máquina de usar y tirar.

Pero claro, es una tarea que requiere un tiempo mínimo de instalación o arranque de life CD, o incluso tener que descargar la ISO para hacerlo. Y en muchas de esas ocasiones tras el arranque, hago las dos o tres tareas que necesito y me olvido de la máquina.

domingo, 27 de noviembre de 2016

Fundamentales. Directorios II


Para terminar con el tema de los directorios y después de ver en el post anterior los comandos relativos a ellos, vamos a ver algunos directorios que debemos de conocer en Linux y que contienen. Hay que tener en cuenta que cada distribución de Linux puede tener otros directorios o tener una ubicación distinta. Los que vamos a ver son, hasta donde yo conozco, comunes a muchos sistemas *nix (SCO-UNIX, HP-UX, Linux…etc.).


/home: Es el directorio donde se van a crear los subdirectorios de cada usuario del sistema a excepción del usuario root. Por ejemplo, cuando creemos un usuario llamado pepe se creará, al menos, un subdirectorio con ese nombre en /home.

sábado, 19 de noviembre de 2016

Fundamentales. Directorios


Hoy vamos a ver dos cosas: como movernos en el árbol de directorios y otros comandos útiles para manipularlos

Que es un directorio

Pues de forma básica es eso que conocemos en Windows como carpeta (para mí siempre serán directorios a pesar de Microsoft J). En la Wikipedia podemos encontrar esta definición de directorio:
“En informática, un directorio es un contenedor virtual en el que se almacenan una agrupación de archivos informáticos y otros subdirectorios, atendiendo a su contenido, a su propósito o a cualquier criterio que decida el usuario. Técnicamente, el directorio almacena información acerca de los archivos que contiene: como los atributos de los archivos o dónde se encuentran físicamente en el dispositivo de almacenamiento.”

miércoles, 31 de agosto de 2016

Fundamentales. Vi


Autor: @jantoniorobledo

Soy uno de esos nostálgicos que pese a existir alternativas sigo editando ficheros de texto con “vi” (ahora “vim”), será porque después de tantos años trabajando en entornos *nix (Unix, HP-UX, Linux de distintos sabores…) en un elemento común a todos ellos, por costumbre, por pereza a usar otras herramientas, por masoquismo…no lo sé.

Lo que sí sé es que uses o no “vi” hay una serie de comandos que no se usan solo en este editor. ¿Cuántas veces te has encontrado frente a una pantalla con texto que en su parte inferior izquierda tenía el símbolo dos puntos “:” y no sabías como salir de allí?


Pues la solución está en los comandos del vetusto editor, que siguen usándose en utilidades tan usuales como “man”, “less”, “more”, etc.

Por ejemplo, sabemos que con el comando “man” seguido por el nombre de un programa obtenemos la ayuda de este programa (siempre que tenga sus entradas en la relación de manuales). ¿Cómo buscamos un texto en el manual?, ¿Cómo encontramos la siguiente ocurrencia de la búsqueda?, ¿Cómo nos movemos a lo largo del manual? Las respuestas a continuación.

Comandos básicos de vi

Los comandos suelen consistir en la pulsación de una tecla o una combinación de estas:


Adicionalmente en “vim” (Linux) podemos usar las teclas Inicio, Fin, Av. Pág, Re. Pág y el cursor para movernos a lo largo y ancho del documento. Estos comandos son válidos también en “man”, “less”, “more”, etc.


Comandos de edición de vi

Los siguientes comandos nos permitirán editar el fichero. También veremos cómo guardar cambios, deshacerlos, etc.


¿Cómo se usan estos comandos? Veamos un ejemplo:

Vamos a editar un fichero nuevo llamado texto.txt. 
  1. Abrimos el fichero con vi ejecutando vi texto.txt
  2. Pulsamos la tecla i para insertar texto
  3. Tecleamos el texto que queramos
  4. Pulsamos ESC (escape) para salir del modo inserción
  5. Guardamos y salimos tecleando :x


Y con esto ya hemos visto cómo usar vi de forma casi profesional. Hay comandos más avanzados para búsqueda y sustitución, edición, movimiento, borrado…etc. Para nosotros es más que suficiente con esto. Os animo a probar y aunque sigáis usando “nano” por lo menos sepáis que hacer cuando os aparezcan los dos puntos en la parte inferior de una pantalla ;)



sábado, 11 de junio de 2016

Fundamentales. Atributos de los archivos




¿Qué es eso que sale cuando listo con detalle un directorio?

Esto es lo puedo ver cuando hago un listado de archivos en un directorio con el comando “ls -la”:



Vamos a ver con detalle que información aparece:

El primer dato que devuelve el comando es “total 32”. Esto nos indica el espacio en bloques de 1KB (1024 Bytes) que ocupan todos los archivos que están en este directorio.

El resto de líneas nos muestran la información detallada de los directorios o ficheros existentes.
Vamos a usar como ejemplo la tercera línea: el fichero filtrado.txt.
-rw-rw-r--  1 lubuntu lubuntu  6515 jun  4 11:26 filtrado.txt

La primera parte, que es ese montón de letras sin aparente sentido son los atributos o permisos del archivo. Lo veremos en detalle después, vamos primeramente a ver cosas más sencillas.
Seguidamente tenemos un número, en nuestro ejemplo el valor es 1, que indica el número de enlaces que existen a este fichero.

A continuación, tenemos el nombre del usuario y el nombre del grupo propietario del fichero, en este caso usuario lubuntu, grupo lubuntu. Pensar que un fichero puede ser propiedad de un grupo al que no pertenece el usuario, por ejemplo, usuario lubuntu, grupo root. Esto afecta a la gestión de seguridad de acceso del fichero en cuestión.

Después nos encontramos otro número: 6515. Es el tamaño en bytes del fichero. Os recomiendo usar el parámetro “-h” (Human readable) junto a nuestro “ls -la” para que la información de tamaño, sobre todo en el caso de archivos de gran tamaño, sea más fácilmente legible. Este es un ejemplo de como se ve una lista de directorio con y sin -h con archivos de cierto tamaño:



Como podéis observar, usar -h nos evita contar el número de dígitos para leer el tamaño correctamente.

Seguimos con nuestra línea. Ahora tenemos la fecha y la hora de última modificación del archivo: “jun  4 11:26”. Veréis que el año no aparece por que ha transcurrido menos de ese periodo de tiempo desde la última modificación. ¿Qué ocurrirá el 4 de junio de de 2017 a las 11:27 de la mañana?: pues que si no se ha modificado el fichero desde la fecha que vemos hoy, el comando nos mostrará “jun  4  2015”, es decir, tendremos precisión de hasta minutos en esta información durante un año, después se considera que con saber el día de la última modificación es más que suficiente J!

No es necesario explicar que el último dato que aparece es el nombre del fichero: filtrado.txt

Ahora los atributos

Pues vamos al meollo del post, ver que significan y que información nos aportan los atributos de seguridad de un archivo.

Vemos que es una lista de 10 caracteres que indican lo siguiente:
·         Primer carácter. En el ejemplo veréis valores diferentes (d, l, -). Puede tener otros valores, pero estos son los 3, llamémoslo, principales. ¿Que nos indica?: el tipo de objeto que es:
o   d: indica que es un directorio. Sí, eso del punto y los dos puntos también son “punteros” a directorios: el punto es un puntero al propio directorio que estáis mostrando y los dos puntos al directorio padre, es decir el directorio jerárquicamente anterior en el árbol de directorios.
o   l: nos dice que es un enlace (link) a otro archivo. En nuestro ejemplo veréis que hay un archivo readme.sll.txt que apunta al fichero /usr/share/doc/ssl-cert/README. Esto nos permite actuar sobre el fichero apuntado (el /usr/share/…/README) usando nuestro enlace (readme.sll.txt), para por ejemplo visualizar su contenido o editarlo. Cuando hacemos nano readme.sll.txt, realmente estoy editando el fichero README en /usr/share/. ¿Y qué pasa si borro con un rm el enlace?, pues eso, que borro el enlace, no el fichero enlazado.
o   -: un sencillo guion nos indica que lo que estamos viendo es ni más ni menos que un simple archivo.

Los 9 caracteres siguientes son 3 grupos de 3 atributos y vamos a verlos así.

  •     El primer grupo de 3 indica que permisos tiene el usuario, en este caso lubuntu, sobre el fichero. Cada carácter indica una cosa y siempre están en el mismo orden:

o   r: tenemos permiso de lectura (Read) sobre el fichero. Si aparece un guion indica que no tenemos ese permiso.
o   w: indica que tenemos permiso de escritura (Write) sobre el fichero. Como en el caso anterior si aparece un guion indica que no tenemos ese permiso.
o   x: tenemos permiso de ejecución (eXecution) sobre el fichero, y como anteriormente si aparece un guion indica que no tenemos ese permiso.
  •  El segundo grupo de 3 caracteres indica que permisos tiene el grupo, también en este caso el grupo se llama lubuntu sobre el fichero. Los valores que podremos ver son los mismos que en el caso anterior
  • Y por último, el tercer grupo nos indica que permisos tiene el resto de usuarios/grupos. Tambien puede tener los mismos valores.


Ahora vamos a analizar nuestro ejemplo: el archivo filtrado.txt tiene los atributos -rw-rw-r—

El primero, “-“, nos dice que es un archivo.

El grupo de permisos de usuario es “rw-“: el usuario lubuntu tiene permisos de lectura y escritura.

El grupo de permisos del grupo es también “rw-“, por tanto todos los usuarios que pertenezcan al grupo “lubuntu” también tendrán permisos de lectura y escritura sobre el archivo.

Por último, tenemos el grupo de permisos de otros, que en este caso es “r—“, lo que indica que cualquier usuario que no sea lubuntu o pertenezca al grupo lubuntu solo podrá leer el archivo.
Como veis no es posible ejecutar el archivo para ningún usuario ni grupo por no tener el atributo “x” de ejecución activo.

Y esto es todo por hoy, en próximos post veremos cómo actuar sobre los permisos de los archivos y muchas más cosas.


domingo, 5 de junio de 2016

Fundamentales. Redirecciones: stdout y stdin




Algo realmente útil que tienen los comandos, no todos, de Linux/Unix es la posibilidad de redirigir su salida como entrada de otro comando.

stdout, standard output o salida estándar es la más fácil de entender: se refiere a la información que devuelve un comando cuando es ejecutado, si no indicamos otra cosa, a la pantalla o terminal.

stdin, standard input o entrada estándar: aquí la cosa se complica más. Hay que ver cada comando si tiene alguna de sus parámetros habilitados para ser indicados como entrada estándar.

Vamos a ver por ejemplo que nos dice la ayuda del comando cat, para lo cual hacemos man cat en la consola:




En la descripción vemos que concatena el fichero o ficheros indicados en el parámetro FILE o el contenido de la entrada estándar hacia la salida estándar.

Vemos ahora las instrucciones del comando grep:



Nos dice en la descripción que buscará el patrón indicado en el/los ficheros indicados en FILE o en la entrada estándar si no indicamos ningún fichero o indicamos – (guión) como nombre de fichero.

Caso práctico

Supongamos que queremos hacer lo siguiente: visualizar la lista de ficheros modificados en febrero en el directorio /etc.

Para hacer esto necesitamos:
  1. Listar el directorio con el comando ls
  2. Filtrar la lista con los ficheros que fueron modificados en febrero con el comando grep
  3. Visualizar la lista de forma paginada para verla con comodidad con el comando less


Primero vamos a ver cómo no debe de hacerse, pero creo que os ayudará a entender cómo funciona cuando lo hagamos correctamente usando la redirección.

Como funciona, pero NO debe de hacerse

Primer paso: listamos el contenido del directorio y volcamos su stdout a un fichero llamado lista.txt:

ls -l /etc >lista.txt

El comando no devuelve nada, pero si miramos con ls (o ll, o la, etc) el directorio actual veremos lo siguiente:



Se ha generado un fichero con el nombre lista.txt que si miramos con cat, por ejemplo, contendrá la lista de todos los ficheros del directorio /etc

Segundo paso: filtramos el contenido del fichero lista.txt y generamos uno filtrado llamado filtrado.txt:

grep “ feb “ lista.txt > filtrado.txt

Igual que con el comando anterior no veremos nada en la salida del comando pero con ls comprobaremos que se ha generado otro fichero llamado filtrado.txt:



Tercer paso: visualizar el fichero filtrado.txt de una forma cómoda que nos permita paginar y movernos arriba y abajo en su contenido:

less filtrado.txt




Facil, no?...pues no señor@s!: tres pasos, dos ficheros que luego tendremos que borrar porque no nos sirven para nada…

¿Cómo SI debe de hacerse usando redirecciones?

Ahora vamos a hacer lo mismo usando redirecciones. Para redirigir la salida de un comando a otro se usa el carácter pipeline  “|” (con Alt Gr+1).

Primer y único paso: Ejecutamos el listado del directorio, redirigimos al filtro y la salida de este la redirigimos nuevamente al visor:

ls -l /etc|grep “ feb “|less

Resultado, el mismo, pero mucho más elegante y sencillo.



Redirección de stdout a fichero

Aunque lo hemos usado en el ejemplo voy a aclarar cómo se redirige la salida estándar de un comando a un fichero. En este caso no se usa el pipeline, sino el símbolo de mayor que “>”. Hay, llamémoslo, dos formas de usarlo:

  • Si se pone una sola vez, por ejemplo: ls -l > fichero.txt, la salida del comando ls generará un fichero llamado fichero.txt, pero si este fichero ya existía previamente se perderá la información que contenía, es decir, que la nueva información sustituirá a la anterior.
  • Podemos ponerlo dos veces, por ejemplo: ls -l /etc >>fichero.txt. En este caso la salida del comando ls se añadirá al final del fichero, no perdiéndose la información contenida en él previamente y en el caso de que no exista se creará.

En las próximas semanas seguiremos publicando más artículos relacionados con los Básicos de Linux, dado que queremos generar información para los socios que están haciendo los talleres de introducción.


Gracias y nos vemos ...