lunes, 21 de mayo de 2012

Incrementar la seguridad de linux, consejos y herramientas

Saludos pues me encontre con una excelente entrada para incrementar la seguridad el ubuntu les dejo el enlace

como aumentar la seguridad en ubuntu

Ademas no podemos olvidar seguir las siguientes recomendaciones basicas
1.- Asignar los permisos adecuados a los archivos para cada usuario y grupo sin ser demasiado permisivos.
2.- Asignar particionado, es decir asegurate de generar particiones distintas para en caso de hechar a perder una, esta no afecte a todo el sistema o bien a los datos.
3.- Se recomienda por lo general que el home de cada usuario tuviera su particion, esto asegura la privacidad y aisla posibles afectaciones, focalizandolas en solo el usuario de la particion afectada.
4.- Asegurate de manejar los privilegios de grupos y usuarios correctamente, con esto garantizas la propiedad y privacidad de un archivo asignado a un grupo o usuario en especifico.
5.- Manejar listas de control de acceso, para individualizar los permisos de ciertos archivos a solo los usarios designados.
6.- Eso aplica para cualquier sistema operativo y es cifrar o encriptar los archivo, un ejemplo muy sencillo es utilizar el editor "vi -x" con esto crearemos un archivo de texto plano pero cifrado, tambien hay muchas otras aplicaciones para cifrar los archivos como CFS
7.- Restringir los permisos a: /var/log/syslog  ya que es aqui donde se guardan varios de los logs almacenados por el sistema.
8.- Restringir la ejecucion de programas y comandos como lo es la edicion del crontab o bien el comando finger.
9.- Cifrar las password de acceso al sistema por ejemplo utilizando /etc/shadow ya que asi las passwords se almacenan aqui y solo el root tiene acceso.
10.- Algo basico pero escencial en cualquier sistema para mejorar la seguridad, es cambiar con cierta periodicidad las password de acceso al sistema y a ciertas aplicaciones, no hay un tiempo en especifico para cambiarlo pero entre mas rapido sea el cambio, se complica más el acceso y el hecho de dar con la password correcta.
11.- Procura usar conexiones cifradas ya sea cuando te conectas en forma local o remota, es decir utiliza procotolos de seguridad como ssh, sftp, https.

Hay varios procesos para incrementar la seguridad en un sistema linux, a estos procesos se le llama Hardening e aqui una utilieria excelente http://www.grsecurity.net/

Seguridad Unix y Linux, parte 1 (Shadow)

 Shadow
Bueno pues en esta ocacion cito a grandes rasgos lo que maneja esta suite que ya tiene algun tiempo,
/etc/shadow, es un archivo de configuración para encriptar las passwords en sistemas Unix 



SHADOW
Seccion: Formato de Archivos (5)
NOMBRE
shadow - archivo de passwords encriptados
DESCRIPCIÓN
shadow contiene la información encriptada para las cuentas de usuarios y opcionalmente la información de caducidad del password.
Está incluido
- Nombre de usuario
- Password Encriptado
- Dias desde 1 Enero, 1970 que el password fue cambiado
- Dias antes de que el password pueda ser cambiado
- Dias despues de los cuales el password debe ser cambiado
- Dias antes en los que el usuario será advertido antes de que el password expire
- Dias despues de 1 Enero de 1970, en los cuales la cuenta será deshabilitada     luego del password expirar
- Un campo reservado
El password debe ser llenado.
El password encriptado consiste en 13 a 24 carácteres del alfabeto de 64 caracteres de a hasta z, A hasta Z, 0 al 9, . y /. Referirse a crypt(3) para detalles acerca de como es interpretada esta cadena.
El dia del ultimo cambio de password es dado como el número de dias desde 1 Enero, 1970. El password no puede ser cambiado nuevamente hasta que esos dias hayan pasado, y debe ser cambiado antes número máximo de dias. Si el número mínimo de dias requerido es mayor que el máximo numero de dias permitido, este password no puede ser cambiado por el usuario.
Una cuenta es considerada como inactiva y deshabilitada si el password no es cambiado dentro de el número de dias especificado luego de que el password expire. Una cuenta tambien será deshabilitada en los dias especificados no obstante la información de expiracion restante.
Esta información trasciende cualquier password o información de tiempo de password presente en /etc/passwd.
Este archivo no debe ser leible por usuarios regulares si se mantendrá la seguridad de los passwords.
ARCHIVOS
/etc/passwd - user account information
/etc/shadow - encrypted user passwords
VER TAMBIEN
chage(1), login(1), passwd(1), su(1), passwd(5), pwconv(8), pwunconv(8), sulogin(8)
AUTOR
Julianne Frances Haugh (jockgrrl@ix.netcom.com)

De modo que tomando como ejemplo la linea correspondiente , en /etc/shadow , tenemos algo como esto:
jespinal:$1$N9L1HjIf$.YbfoPCCZmrqemk4zwYUb4:13918:0:::::0
Se sigue viendo medio feo, pero por lo menos se entiende, ya que sabemos que segun el man page:
Nombre de usuario
jespinal
Password Encriptado
$1$N9L1HjIf$.YbfoPCCZmrqemk4zwYUb4
Dias desde 1 Enero, 1970 que el password fue cambiado
13918
Dias antes de que el password pueda ser cambiado
0
Dias despues de los cuales el password debe ser cambiado
 vacio, es decir, no debo cambiarlo :) 
Dias antes en los que el usuario será advertido antes de que el password expire
 tampoco estoy usando este campo
Dias despues de 1 Enero de 1970, en los cuales la cuenta será deshabilitada luego del password expirar
ya que mi cuenta no va  a expirar, tampoco se usa esto
Un campo reservado
0
Shadow maneja varios tipos de encripciones donde la mas comun es MD5
Opcionalmente se puede comenzar con un carácter "$". Esto significa que la contraseña encriptada se ha generado utilizando otro algoritmo (no DES). Por ejemplo, si comienza con "$ 1 $", significa que el algoritmo MD5 basado fue utilizado.

la wikipedia nos da mas detalles sobre los metodos de encripcion manejados, sobre lo que eh leido aunque MD5 no es el mas seguro si suele ser el estandar. 



Algunos directorios linux/unix

Saludos nuevamente les traigo una pequeña lista de los directorios linux espero les pueda ayuda, la fuente antes que nada por si gustan consultar el tutorial completo :-)

Tutorial linux, y comandos basicos


Cambia la contraseña de usuario en linux/unix

Pues solo recordandoles un comdo muy sencillo para cambiar la contraseña de unix/linux,
"passwd" posteriormente te pedira teclear tu password anterior y lugo la nueva contraseña si lo haces como root cambiaras la password de administrador, ojo con este comando anota bien tus contraseñas ;-)

"passwd generalmente funciona manipulando el archivo donde se guardan los usuarios y sus contraseñas (comúnmente /etc/passwd, o /etc/shadow si se usan contraseñas shadow), lo que significa que la contraseña cambiada aplica sólo al computador en el cual se ejecutó el comando. Si se está usando PAM, en cambio, como puede ser en GNU/Linux, Solaris, FreeBSD o NetBSD, la instrucción passwd se puede usar para cambiar la contraseña del mecanismo de autenticación que esté usándose en el momento, sea NIS, Kerberos, LDAP, o cualquier otro para el que haya un módulo de PAM."

wikipedia

Comandos Basicos para Monitoreo linux/unix 1 update 05-01-2015

Saludos les publicare algunos tips sumamente basicos para el  monitoreo de nuestro sistema en Linux o unix, la segunda parte abarca algunos comandos mas avanzados comandos-para-monitoreo-parte-2-solaris/linux.html

primero empezaremos con " uname -a " el cual nos mostrara el nombre y versión del sistema operativo que estamos utilizando.
el comando funciona de manera genérica para cualquier plataforma unix.

También un comando sumamente importante es prtdiag -v dentro de solaris, este comando nos sirve para ver el estatus del servidor desde la ram hasta el estatus del todo el hardware que se encuentra funcionando, asi como la version de firmware y otros componentes.

Del mismo modo tenemos " psrinfo -v " que proporciona la información de los procesadores, de favor si me corrigen ya que ignoro si esto aplique también para osx, ya que me parece solo aplicaría para solaris y algunas distros linux.

Status of virtual processor 0 as of: 05/21/2012 11:21:18
  on-line since 05/06/2012 17:12:36.
  The sparcv9 processor operates at 2520 MHz,
        and has a sparcv9 floating point processor.
Status of virtual processor 1 as of: 05/21/2012 11:21:18
  on-line since 05/06/2012 17:13:32.

Para ver la memoria disponible " prtconf | grep Memory " solo para solaris.
Memory size: 20480 Megabytes

Para conocer la cantidad de memoria ram de nuestro sistema Solaris, así como la cantidad y el tipo de CPU, tarjetas PCI y dispositivos externos con los que contamos ejecuta el siguiente comando:

/usr/platform/`uname -i`/sbin/prtdiag

Para saber el nombre de la maquina en unix o linux, tenemos 2 opciones, " uname -n " o bien hostname, ignoro si aplica para todas las distros, los eh probado en ubuntu y solaris.

Para saber nuestra ip, tecleamos " ifconfig -a " o solo " ifconfig " y nos proporcionara información referente a la ip (s) configuradas para nuestro equipo.

Uno muy util es cuando queremos saber los procesos asignados a nuestro usuario, en tal caso usuamos "ps -fu nombreusuario" en donde "nombreusuario" es el user id o nombre del usuario con el que iniciamos sesion o " ps -ef  " que también nos mostrara los procesos que se están ejecutando.

Para ver el estado de la memoria podemos hacerlo con "vmstat" aunque para este comando hay muchas opciones, podemos tomar por numero de muestras y/o intervalos de tiempo, para este comando le dedicare un poco mas de tiempo en futuras entradas, por lo pronto podemos usar el manual con "man vmstat" en la consola y un ejemplo seria vmstat 3 6 el cual toma muestras cada 3 segundos y tomara 6 muestras

 kthr      memory            page            disk          faults      cpu
 r b w   swap  free  re  mf pi po fr de sr m0 m1 m3 m4   in   sy   cs us sy id
 0 0 0 199603904 164565344 94 409 62 134 134 0 0 0 0 0 0 6809 13802 7377 0 1 99
 1 0 0 196558024 160959592 0 78 0 206 206 0 0 0 0 0  0 6827 16920 7403 0  1 99
 1 0 0 196557528 160959304 0 2 0 73 73 0 0  0  0  0  0 6825 9409 7181  0  2 98
 0 0 0 196557528 160958624 47 51 0 377 377 0 0 0 0 0 0 7013 9912 7734  0  1 98
 0 0 0 196557312 160959712 105 720 0 76 76 0 0 0 0 0 0 7236 17293 8342 0  1 99
 0 0 0 196557528 160960160 0 30 0 102 102 0 0 0 0 0  0 6735 12328 6987 0  2 98

Para ver el espacio en disco podemos usar df -k (bytes) o df -h (formato megabytes o human)
df -h
Filesystem             size   used      avail capacity  Mounted on
/                           68G    8.7G    59G     13%    /
/HTTPServer       2.0G   254M   1.6G    14%    /HTTPServer
/NDM36             2.0G   387M   1.5G    20%    /NDM36
/WebSphere61    5.0G    2.3G    2.5G    48%    /WebSphere61
/arqnacar            10G     20M    9.4G     1%    /arqnacar
/backlogs            2.0G   18M     1.9G     1%    /backlogs
/bladelogic          2.0G   117M   1.8G     7%    /bladelogic
/ctrlmagt             2.0G   163M   1.7G     9%    /ctrlmagt
/dev                   68G     8.7G     59G     13%    /dev

Ahora bien para saber el espacio de una carpeta / filesystem podemos usar "du -ha", este comando informara sobre el tamaño de los archivos en una carpeta de forma re cursiva.

prstat -as cpu que muestra de forma ordenada los procesos que se están ejecutando y se actualiza mas o menos cada 2 segundos, solo aplica para ciertos sistemas unix  (Solaris) y sirve para monitorizar también el consumo de CPU, memoria ram, swap, usuarios, es el equivalente de top en linux.



Actualización ------------

También para ver los usuarios conectados podemos utilizar, who y finger, ambos comandos muestran las sesiones conectadas a nuestro sistema. finger proporciona mayor detalle y puede ser un comando restringido al proporcionar información sensible.

y tenemos uptime, que muestra el tiempo que lleva nuestro equipo funcionando desde el último reinicio o bien apagado.

Continua comandos-para-monitoreo-parte-2-solaris/linux.html

Have  nice day