lunes, 29 de marzo de 2010

Network Support Services RHCE

En esta seccion veremos algunos temas importantes de como linux realiza la resolucion de nombres .
Basicamente trabaja utilizando los siguientes metodos

1. caching y salve dns
2. nsswitch.conf
3. host.conf

el orden de la búsqueda de un equipo depende del orden que se encuentre configurado en el archivo
nsswitch.conf, en las versiones mas nueva y host.conf en las versiones antiguas , veamos a lo que nos referimos .

=====nsswitch.conf========

#hosts: db files ldap nis dns
hosts: files dns
==========================

=====host.conf===========

order hosts,bind

========================

el orden determinado por default es verificar el archivo de hosts y posterior verificar la información en el dns . en el cual explicaremos mas adelante como configurar un dns cache.

==========hosts============

127.0.0.1 localhost.localdomain localhost
10.10.1.33 spectra.dominio spectra
10.10.1.6 mail534.dominio mail534

===========================

es importante no borrar la primer linea ya que múltiples servicios verifican esta información para funciona correctamente. Si el host solicitado no es encontrado en el archivo hosts, imendiatamente toma la segunda opcion configurada en el archivo nsswitch.conf, que por default es "dns" el cual es definido en el archivo /etc/resolv.conf

======== resolv.conf =====

nameserver 192.168.1.254
nameserver 192.168.1.253

==========================

miércoles, 24 de marzo de 2010

Network Configuration and Security RHCE

Esta parte , es muy interesante ya que nos muestra la forma adecuada de configurar nuestras interfaces de red , veamos entonces .

el primer archivo importante en esta seccion es el /etc/hosts

en el cual agregaremos el nombre de nuestro nuevo sistema , y también agregaremos los hosts que se encuentran en nuestra red veamos un ejemplo

===============================
127.0.0.1 localhost.localdomain localhost

10.10.1.33 spectra.xxxxxxxxxx spectra
10.10.1.6 mail534.xxxxxxxxxx mail534
==============================

lo siguiente es definir el Fully Qualified Domain Name (FQDN) en el archivo /etc/sysconfig/network, veamos el ejemplo

============================
NETWORKING=yes
HOSTNAME=spectra.xxxxxxxxxx
==============================

lo siguiente es definir correctamente los parametros de red esto lo haremos /etc/sysconfig/network-scripts/ifcfg-ethX, para el caso de ip statica , el parámetro "USERCTL=no" indica que los usuarios podrán tener el control del dispositivo de red

=========================
DEVICE=eth0
BOOTPROTO=none
BROADCAST=10.10.1.255
HWADDR=00:1E:C9:28:CE:53
IPADDR=10.10.1.33
NETMASK=255.255.255.0
NETWORK=10.10.1.0
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
GATEWAY=10.10.1.1
==========================

en el caso de ip dinámica quedara un archivo como el siguiente .

=======================
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
========================

el siguiente archivo a verificar es el /etc/resolv.conf en el cual colocaremos los dns .

=======================
search gateway.2wire.net
nameserver 10.10.1.254
=======================

reiniciamos el servicio de red

# serivice network restart

y verificamos la tabla de enrutamiento

#route -A inet6 -n //ipv6

# route -n

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0


agregamos la ruta correcta de la siguiente forma .


# route -A inet6 add default gw ipv6 //para ipv6
# route add default gw 10.10.1.1 eth0
# route -n

Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 10.10.1.1 0.0.0.0 UG 0 0 0 eth0


si requerimos que la ruta sea grabada podemos guárdala de la siguiente manera y al reiniciar se aplicara automáticamente

# echo 'default via 10.10.1.1 dev eth0' /etc/sysconfig/network-scripts/route-eth0

para configurar esto

teniendo listo esto , podemos permitir el forward en nuestro equipo editando el archivo /etc/sysctl.conf y cambiamos net.ipv4.ip_forward de 0 a 1 .

# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

para realizar el mismo cambio pero de forma temporal hacemos lo siguiente

# echo "1" > /proc/sys/net/ipv4/ip_forward

ahora si queremos saver el trafico que corre en nuestro sistema podemos hacerlo utilizando herramientas como

# iptraf
# tcpdump

o podemos hacerlo analizando el archivo

# watch tail /proc/net/ip_conntrack

en la parte de seguridad veremos básico como podemos hacer funciona iptables .

para ver las reglas en iptables corremos el siguiente comando

# iptables -L

o podemos ver directamente el archivo de configuraciones

# more /etc/sysconfig/iptables

para facilitar la configuración de netfilter podemos utilizar el comando

# system-config-securitylevel-tui

en el caso de control de acceso por medio de tcpwrappers , como su nombre lo dice solo esta enfocado a conexiones tipo TCP , estas las podemos encontrar en /etc/hosts.deny y /etc/hosts.allow , en este caso debemos tener cuidado ya que primero es lehido el archivo allow y despues el deny, la cual su sintaxis es de la siguiente manera

Servicio:cliente:comando

ejemplo :

in.telnetd:10.10.1.2:twits /sbin/echo

System Service Analysis RHCE

Básicamente tenemos los siguiente , al iniciar nuestro sistema , después de descomprimir el kernel, cargas los módulos y montar el sistema de archivos sigue arrancar los servicios , dependiendo el nivel de corrida , son los servicios que serán ejecutados , los niveles de corrida 0 y 6 , corresponden al shutdown y restart, veamos como funciona

Iniciamos con el archivo inittab

============================

id:3:initdefault: # en esta linea indicamos que nivel de corrida sera

# inicializacion del sistema
si::sysinit:/etc/rc.d/rc.sysinit

# estas lineas indican que servicios serán leídos en los niveles de corrida de inicio , por
# ejemplo en el nivel de corrida 3 sera cargado el contenido del folder /etc/rc3.d/

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# esta line indica que accion tomara al presinar las teclas ctr + lalt + del
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# esta linea ejecuta el shutdown cuando el UPS indica que ya esta llegando al punto de fallo

pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# cancela la accion de apagado .

pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

# enciende las terminales disponibles para linea de comando de la f1 al f6
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# indica que la terminal 5 es para el entorno grafico
x:5:respawn:/etc/X11/prefdm -nodaemon

=================================

veamos el folder /etc.rc0.d/

=================

lrwxrwxrwx 1 root root 19 Feb 15 2008 K99readahead -> ../init.d/readahead
lrwxrwxrwx 1 root root 25 Feb 15 2008 K99readahead_early -> ../init.d/readahead_early
lrwxrwxrwx 1 root root 17 Sep 26 13:52 S00killall -> ../init.d/killall
lrwxrwxrwx 1 root root 14 Sep 26 13:52 S01halt -> ../init.d/halt

================

como vemos hay servicios que comienzan con K y otros con S , esto significa que los K no seran cargados y los S si seran ejecutados, en el nivel de corrida 0, vemos que corre el Killall y el halt , que son los procesos para apagar el sistema , lo mismo ocurren con los demas folders .

ahora podemos consultar los servicios que se ejecutaran al nivel de corrida 3

# ntsysv --level 3

si queremos ver en que niveles de corrida esta algun servicio ejecutamos lo siguiente

# chkconfig --list smb
smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off

si queremos cambiar las configuración en algún nivel de corrida podemos utilizar ambas herramientas

# # chkconfig smb off --level 3
# chkconfig --list smb
smb 0:off 1:off 2:on 3:off 4:on 5:on 6:off

Si requerimos saber el estatus actual de algún servicio , podemos hacerlo de la siguiente manera

# service --status-all

o podemos hacerlo de algun servicio en especifico

# service smb status

si requerimos que algún script corra al iniciar el sistema podemos colocarlo dentro del archivo
/etc/rc.local, podemos utilizar el & para enviar la ejecucion a back ground , y pueden ser llamadas por los comando fg y bg y el respectivo job.

un ejemplo podria ser

# ejemplo.sh &

precionamos ctrl + c

hacemos la busqueda del PID

# ps axu | grep ejemplo.sh
# fg 44527

y tendremos de nuevo nuestra ejecución.


estando en el tema de ejecuciones de códigos , podemos hacer que una aplicación se ejecute al momento que un usuario se logue, esto lo podemos lograr ingresando una linea de código en el archivo /etc/profile , si es especifica la aplicación para un usuario esto lo logramos editando el archiv ~/.bash_profile .

espero les sirva la informacion que comparto hoy con ud

martes, 23 de marzo de 2010

System Monitoring and Fault Analysis RHCE

En esta capsula analizaremos algunas herramientas utilies para detectar fallas en nuestro sistema y como mitigarlas . comensaremos con el comando TOP ,

El comando "top" permite ver los procesos que estan ejecutandose en nuestro sistema en tiempo real , veamos un ejemplo :

==========================
top - 13:43:49 up 11 days, 22:59, 2 users, load average: 1.34, 1.36, 1.37
Tasks: 167 total, 1 running, 166 sleeping, 0 stopped, 0 zombie
Cpu(s): 35.4%us, 15.0%sy, 0.1%ni, 49.4%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 5057172k total, 4458716k used, 598456k free, 242416k buffers
Swap: 5144568k total, 84k used, 5144484k free, 2002092k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22362 ivan 16 0 615m 536m 14m S 38.6 10.9 11451:17 VirtualBox
29701 ivan 15 0 2332 960 708 R 1.9 0.0 0:00.02 top
1 root 15 0 2072 628 536 S 0.0 0.0 0:06.24 init
2 root RT -5 0 0 0 S 0.0 0.0 0:04.90 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.14 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root RT -5 0 0 0 S 0.0 0.0 0:04.69 migration/1
6 root 34 19 0 0 0 S 0.0 0.0 0:00.23 ksoftirqd/1
7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
8 root 10 -5 0 0 0 S 0.0 0.0 0:21.91 events/0
9 root 10 -5 0 0 0 S 0.0 0.0 0:00.41 events/1
10 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
11 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kthread
15 root 10 -5 0 0 0 S 0.0 0.0 0:00.44 kblockd/0
16 root 10 -5 0 0 0 S 0.0 0.0 0:00.08 kblockd/1
17 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/0
18 root 16 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/1
==============================================

el cual muestra información importante como es el PID del proceso (PID), el dueno del proceso(USER), el comando ejecutado(COMMAND), la prioridad (PR), el valor nice (NI) entre otros
para obtener ayuda , utilizamos la letra 'h' la cual nos mostrara que comando podemos utulizar para control de nuestros procesos. tambien nos muestra la actividad que esta teniendo nuestro sistema en cada uno de los procesos ejecutandose, informacion del uso de la memoria

existe el comando ps , que muestras los procesos que estan corriendo en nuestro sistema al igual que top , la diferencia es que nos muestra la informacion al momento que se solicito y no muestra el comportamiento del mismo a medida que pasa el tiempo . ejemplo

======================

# ps axu | grep ivan
root 1808 0.0 0.0 13256 3388 ? Ss 11:39 0:00 sshd: ivan [priv]
ivan 1813 0.0 0.0 13356 2280 ? S 11:39 0:00 sshd: ivan@pts/0
ivan 1814 0.0 0.0 4540 1460 pts/0 Ss 11:39 0:00 -bash

====================


tenemos el comando pstree que nos muestra la información en forma de árbol, la cual podemos identificar el proceso padre de sus ramificaciones .

===================
# pstree | grep VirtualBox
init-+-VBoxSVC-+-VirtualBox---15*[{VirtualBox}]
|-xterm---bash---VirtualBox-+-VBoxXPCOMIPCD
| `-7*[{VirtualBox}]
===================


tenemos el comando free , que muestra la actividad de nuestra memoria en nuestro equipo . ejemplo:
======================
# free -m
total used free shared buffers cached
Mem: 4938 4412 525 0 237 1993
-/+ buffers/cache: 2182 2756
Swap: 5023 0 5023
=====================
podemos utilizar el comando watch, para mantener informacion en tiempo real


tenemos el comando vmstats, que muestra una radiografia del performance del sistema ejemplo:

# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 84 555260 242756 2041624 0 0 6 55 14 17 35 15 49 0 0


tememos el comando iostat que da una informacion basica sobre el estado del cpu y disco duros

=================

# iostat
Linux 2.6.1.xxx.xxxx.xxx (xxxxxx.xxxxxxx.xxx) 03/23/2010

avg-cpu: %user %nice %system %iowait %steal %idle
35.43 0.07 15.01 0.07 0.00 49.43

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 9.17 24.61 219.40 25477936 227129950
sda1 0.00 0.01 0.00 11774 38
sda2 9.17 24.60 219.40 25465970 227129912
dm-0 27.64 24.60 219.40 25464858 227129720
dm-1 0.00 0.00 0.00 648 192

==================

tenemos el comando mpstat que da un pequeño resumen de la informacion que arroja iostats

=================

# mpstat
Linux 2.6.1.xxx.xxxx.xxx (xxxxxx.xxxxxxx.xxx) 03/23/2010

02:20:46 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
02:20:46 PM all 35.43 0.07 14.98 0.07 0.02 0.01 0.00 49.43 1026.05

# mpstat -P ALL
Linux 2.6.1.xxx.xxxx.xxx (xxxxxx.xxxxxxx.xxx) 03/23/2010

02:21:40 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
02:21:40 PM all 35.43 0.07 14.98 0.07 0.02 0.01 0.00 49.43 1026.05
02:21:40 PM 0 34.78 0.07 14.38 0.10 0.04 0.02 0.00 50.61 1025.93
02:21:40 PM 1 36.08 0.06 15.58 0.04 0.00 0.01 0.00 48.24 0.12

=======================

el comando sar, produce infomracion general de nuestro sistema , esta informacion la recolecta de /var/log/sa , con ayuda del comando sadc, este comando es interesante, ya que muestra un histrorial de comportamiento del sistema ejemplo :

=======================

01:50:01 PM all 36.96 0.38 15.52 0.02 0.00 47.11
02:00:01 PM all 37.95 0.00 15.53 0.02 0.00 46.50
02:10:01 PM all 40.61 0.00 15.73 0.13 0.00 43.52
02:20:01 PM all 36.31 0.00 15.77 0.03 0.00 47.89
Average: all 36.79 0.07 15.49 0.02 0.00 47.63

========================


mucha de esta información puede ser vista de manera separa en el directorio /proc, el directorio /proc contiene la información de todos nuestros dispositivos instalados en el sistema y su estatus en tiempo real.

existen herramientas muy poderosas que nos pueden ayudar a analizar esta información de forma gráfica como lo es cacti, mrtg, entre otros .


detectando problemas en nuestro sistema debemos revisar nuestros logs , el sistema de logeo que es syslog , su archivo de configuracion se encuentra en /etc/syslog.conf

=============

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;local0.none;local1.none;auth.none;mail.none;news.none;authpriv.none;cron.none /var/log/messages

# The authpriv file has restricted access.
authpriv.* /var/log/secure

# Log all the mail messages in one place.
mail.* -/var/log/maillog


# Log cron stuff
cron.* /var/log/cron

# Everybody gets emergency messages
*.emerg *

# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler

# Save boot messages also to boot.log
local7.* /var/log/boot.log

#
# INN
#
news.=crit /var/log/news/news.crit

================================

en este archivo se configura la granuralidad de los logs en el sistema y los directorios que se utilizaran para el fin, asi como los tiempos de almacenista y rotación de los archivos .

domingo, 14 de marzo de 2010

Que hacer cuando el superblock falla RHCT RHCE

Ok, este error no es muy común,  pero algunos de nosotros nos ha dado este problema , el cual no nos permite montar particiones.  En particiones con sistema de archivos  EXT2/3  almacenan el superblock en diferentes partes por lo cual es posible recuperarlo .

Para hacer esto mas seguro  requeriremos entrar a nuestro sistema en modo de rescate, usando el cd 1 de instalacion.


# boot: linux rescue

esto parecera como si estubieramos instalando el sistema desde 0 pero notaremos que en titulo superior izquierdo dira Red Hat Rescue, cuando nos de el prompt, o podemos hacerlo en el sistema en init3 desmontando apropiadamente la particion . para este caso lo haremos con el sistema funcionando. ejecutaremos el siguiente comando

# dumpe2fs /dev/hda2 | grep superblock

=======================

Primary superblock at 0, Group descriptors at 1-6
Backup superblock at 43879, Group descriptors at 43879-43884
Backup superblock at 99415, Group descriptors at 99415-99421
======================

siguiente paso, revisar el superblock y repararlo utilizando un superblock de respaldo.

# fsck -b 43879 /dev/hda2


finalmente al terminar de hacer la reparación intentamos montar la partición .

mount /dev/hda2 /mnt


podemos hacerlo directamente si usar fsck


# mount sb=43879 /dev/hda2 /mnt

tenemos que hacer un respaldo inmediato ya que este error puede ser síntoma de falla de hardware .

viernes, 12 de marzo de 2010

Notas Curso RHCT

Otro punto interesante es el archivo anaconda-ks.cfg , ese archivo se guarda automáticamente al instalar nuestro sistema, el cual contiene información relacionada con todas las característica de instalación del sistema, esto nos ayudara cuando hagamos una instalación de sistema de forma no asistida .  el ejemplo puede ser el siguiente .

============


# Kickstart file automatically generated by anaconda.

install
cdrom
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto dhcp
rootpw --iscrypted $1$dxW48WPH$xBBjUMrxsAHcx9/QE.xvQ1
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --enforcing
timezone --utc America/Tijuana
bootloader --location=mbr --driveorder=hda
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --linux --drives=hda
#part /boot --fstype ext3 --size=100 --ondisk=hda
#part pv.2 --size=0 --grow --ondisk=hda
#volgroup VolGroup00 --pesize=32768 pv.2
#logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1024 --grow --maxsize=2048
#logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow

%packages
@editors
@text-internet
@legacy-network-server
@dns-server
@dialup
@core
@base
@ftp-server
@network-server
@web-server
@smb-server
@mail-server
@server-cfg
@news-server
device-mapper-multipath
=========================

este archivo  podemos utilizarlo en nuestra instalación,  al colocar nuestro cd de instalación y seleccionar el tipo  instalación hacemos lo siguiente 

boot: linux ks=cdrom:/anaconda-ks.cfg      # en caso de cdrom
boot: linux ks=hd:hda1:/anaconda-ks.cfg    # caso disc duro
boot: linux ks=hd:fd0:/anaconda-ks.cfg     #floppy 
boot: linux ks=hd::/anaconda-ks.cfg    

También tenemos el caso de problemas al iniciar el sistema para lo cual requeriremos utilizar el disco 1 de instalación, al bootear debemos colocar lo siguiente

boot: linux rescue 

comenzara a hacer el proceso de boot como si fuera una instalación, hasta el punto donde pregunta sobre el montaje de las particiones . 

los casos mas comunes de errores al boot , son 
1. problemas con el archivo /etc/fstab
2. problemas con el archivo  vi /etc/inittab
3. problemas con algun dispocitivo instalado.
4. problemas con el disco duro  .
5. servicios mal configurados 
6. problemas con el archivo /etc/rc.sysinit
7. Errores en grub 

ok para los casos de disco duro y grub podemos hacer lo siguiente .

Disco duro , entrar en rescue mode y ejecutar el comando

# e2fsck -f /dev/hdXX

en el caso del grub , tenemos algun problema al boot podemos hacer lo siguiente ..

al iniciar el grub, en la pantalla donde muestra los kernels de boot , presionamos la tecla C

nos enviara un prompt como el siguiente

grub>

ahora buscaremos la diretiva de root .

grub> root (hd0,0)
grub> root (hd0,1)
...
grub> root (hdx,x)

en esta parte debemos asegurarnos que sea el top level en boot directory no en el directorio raiz u otro directorio , dependiendo de tu sistema de archivos podemos identificarlo.
el siguiente paso  es identificar el kernel

grub> kernel /vmlinuz-2.6.18-128.el5 ro root =/dev/VolGroup00/LogVol00

en red hat el kernel comprimido siempre comienza con vm , el ro significa que solo sera read only , y colocamos la ruta del volumen de montaje . ( podemos verla en el fstab o en el /dev)

siguiente paso es  identificar el init ram disk  en el proceso del boot este podemos identificarlo ya que inicia  con init y finaliza con .img

grub> initrd /initrd-2.6.18-128.el5.img

debemos asegurarnos que sea la misma versión del  kernel

finalizaos como

grub> boot












Creando particiones CURSO RHCT

Que tal , hace poco tome el curso de RHCT y dejo unas muy breves notas de lo que se me pego en el curso . 


Punto 1 .


Como crear LVM, con un sistema corriendo .


1. instalar el hd, correctamente   (fisico)
2. verificar que se encuentre funcionando /proc/hdX/settings
2. Utilizar la aplicaciones fdisk o parted para crear las particiones .
ejemplo de esto .


# fdisk -l /dev/hdc  
# fdisk /dev/hdc


con esto podemos crear particiones, cambiar de ID, etc. 


sfdisk -d /dev/hda | sfdisk /dev/hdb


copiamos la estructura de particiones de un disco a otro disco duro , muy importante  este comando es peligroso ya que nos modifica la estructura de nuestro disco duro 


#mkfs.ext3 /dev/hdc1 


formatea al sistema de archivos 


#mkswap /dev/hdc1


prepara una partición para formato de swap .


# parted /dev/hda 


para crear particiones , es igual que fdisk pero en mi forma personal es mas poderoso fdisk 


trabajemos con un ejemplo de modificar el tamano de un volumen 



# fdisk /dev/hdc
=============================
The number of cylinders for this disk is set to 44698.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):
n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4):
2
First cylinder (1940-44698, default 1940):
Using default value 1940
Last cylinder or +size or +sizeM or +sizeK (1940-44698, default 44698):
+1000M

Command (m for help):
t
Partition number (1-4):
2
Hex code (type L to list codes):
8e
Changed system type of partition 2 to 8e (Linux LVM)

Command (m for help):
w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
===========================



esta  creada las particiones  ... ahora las agregamos a un volumen logico


#fdisk -l  /dev/hdc




=============================



fdisk -l /dev/hdc

Disk /dev/hdc: 23.0 GB, 23068672000 bytes
16 heads, 63 sectors/track, 44698 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdc1               1        1939      977224+  8e  Linux LVM
/dev/hdc2            1940        3878      977256   8e  Linux LVM


=============================

# pvcreate /dev/hdc1 /dev/hdc2

============================
  Physical volume "/dev/hdc1" successfully created
  Physical volume "/dev/hdc2" successfully created
============================

# vgcreate volumen /dev/hdc1 /dev/hdc2

  Volume group "volumen" successfully created


revisamos que este creado nuestro nuevo volumen 



# vgs

============================
  VG         #PV #LV #SN Attr   VSize  VFree
  VolGroup00   1   2   0 wz--n- 21.31G    0
  volumen      2   0   0 wz--n-  1.86G 1.86G

============================

creamos un  volumen logico nuevo

# lvcreate -L 1000M volumen -n lvolumen

==============================
  Logical volume "lvolumen" created
==============================

formateamos  la unidad logica .

 # mkfs.ext3 /dev/volumen/lvolumen

==========================
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
128000 inodes, 256000 blocks
12800 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=264241152
8 block groups
32768 blocks per group, 32768 fragments per group
16000 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
============================

revisamos nuestros volumenes logicos 

# lvs
==================================
  LV       VG         Attr   LSize    Origin Snap%  Move Log Copy%  Convert
  LogVol00 VolGroup00 -wi-ao   19.31G
  LogVol01 VolGroup00 -wi-ao    2.00G
  lvolumen volumen    -wi-a- 1000.00M
=================================

Incrementamos el espacio 

# lvresize -L 1500M /dev/volumen/lvolumen

===============================
  Extending logical volume lvolumen to 1.46 GB
  Logical volume lvolumen successfully resized
===============================

 # resize2fs /dev/volumen/lvolumen 1400M

=============================
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/volumen/lvolumen to 358400 (4k) blocks.
The filesystem on /dev/volumen/lvolumen is now 358400 blocks long.
============================

después de hacer este paso, como medida precautoria tenemos que revisar la particion .

# e2fsck -f /dev/volumen/lvolumen

===========================
e2fsck 1.39 (29-May-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/volumen/lvolumen: 11/176000 files (9.1% non-contiguous), 10014/358400 block
===========================
revisamos como quedo nuestro volumen 
# lvs
=============================
 LV       VG         Attr   LSize  Origin Snap%  Move Log Copy%  Convert
  LogVol00 VolGroup00 -wi-ao 19.31G
  LogVol01 VolGroup00 -wi-ao  2.00G
  lvolumen volumen    -wi-a-  1.46G
=============================

editamos el punto de montaje /etc/fstab   para montaje automatico al arranque o podemos hacer uso del auto.misc .. como mejor les parezca .





lunes, 8 de marzo de 2010

De nuevo "Logran romper cifrado RSA de 1024 bits"

Un nuevo hito ha sido alcanzado en lo que refiere a vencer sistemas criptográficos de clave pública, ya que se ha logrado quebrar un cifrado RSA de 1024 bits.

RSA (que viene de Rivest, Shamir y Adleman, que lo publicaron por primera vez) es un sistema criptográfico de clave pública desarrollado en 1977, y que aún es el primer y más utilizado algoritmo de este tipo y es válido tanto para cifrar como para firmar digitalmente. La última vez que había sido crackeado fue el 7 de enero de 2010, y aquella vez la base era de 768 bits.


El nuevo hito fue alcanzado por Valeria Bertacco, Todd Austin y Andrea Pellegrini. Esto se logró variando los niveles de tensión enviados al destinatario para generar cifrados defectuoso. Esto les ayudó a recrear la clave privada mediante la combinación de una serie de fragmentos obtenidos en el proceso. La operación tomó nada más y nada menos que 100 horas. Esto significa que un algoritmo que debería resistir ataques de fuerza bruta no duró más de 4 días.

Esto hace tambalear uno de los pilares del RSA, y en mayor o menor medida nos afecta a todos, pues es el sistema utilizado para cifrar la mayoría de las conexiones seguras en línea, desde comercio electrónico a la forma en la que ingresamos a nuestro webmail. Y aunque la longitud de la clave determine el nivel de seguridad, esta grieta es independiente de la misma, y se desmorona ante un método bastante básico y fácil de volver a implementar.

Se espera que se realicen cambios en la aplicación de RSA en poco tiempo; hasta entonces, no tenemos nada más que hacer que esperar.

fuente aqui

miércoles, 3 de marzo de 2010

SELinux

ahora vamos a hablar un poquito de SELinux, Security Enhnaced Linux,

SELinux proporciona un sistema flexible de control de acceso mandatorio (mandatory access control, MAC) incorporado en el kernel. Bajo Linux estándar se utiliza el control de acceso a discrecional (discretionary access control, DAC), en el que un proceso o aplicación ejectutándose como un usuario (UID o SUID) tiene los permisos y de ese usuario en los objetos, archivos y otros procesos. Al ejecutar un kernel SELinux MAC se protege al sistema de aplicaciones maliciosas que pueden perjudicar o destruir el sistema. SELinux define el acceso y los derechos de transición de cada usuario, aplicación, proceso y archivo en el sistema. SELinux gobierna la interacción de estos sujetos y objectos usando una política de seguridad que especifica cuán estricta o indulgente una instalación de Red Hat Enterprise Linux dada debería de ser.


En su mayor parte, SELinux es casi invisible para la mayoría de los usuarios. Solamente los administradores de sistemas se deben de preocupar sobre lo estricto que debe ser una política a implementar en sus entorno de servidores. La política puede ser tan estricta o tan indulgente como se requiera, y es bastante detallada. Este detalle le dá al kernel SELinux un control total y granular sobre el sistema completo.


Cuando un sujeto, tal como una aplicación, intenta acceder a un objeto tal como a un archivo, el servidor de aplicación de políticas verifica un caché de vector de acceso (AVC), donde se registran los permisos de objeto y del sujeto. Si no se puede tomar una decisión basado en los datos en el AVAC, la petición continua al servidor de seguridad, el cual busca el contexto de seguridad de la aplicación y del archivo en una matriz. Los permisos son entonces otorgados o negados, con un mensaje de avc: denied detallado en /var/log/messages. Los sujetos y objetos reciben su contexto de seguridad a partir de la política instalada, que también proporciona información para llenar la matriz de seguridad del servidor.

Además de ejecutarse en un modo impositivo, SELinux puede ejecutarse en un modo permisivo, donde el AVC esverificado y se registran los rechazos, pero SELinux no hace cumplir esta política.


veamos algo basico de SELinux

el archivo de configuración principal de selinux se encuenta /etc/sysconfig/selinux, donde podemos definir el nivel de seguridad que aplicara SELinux

SELINUX=(enforcing|permissive|disabled) (impositivo,advierte pero no impone, deshabilidado).
SELINUXTYPE=(targeted|strict) ( solo servicios especificos, todo )

para activar boleanos de manera grafica podemos utilizar "system-config-securitylevel" otras herramientas que nos pueden servir son "/usr/bin/setenforce (1|0)" el cual habilita y deshabilita SELinux, el comando "/usr/bin/sestatus -v" verificara el estado de SELinux, "/sbin/fixfiles" verifica y corrige errores en políticas en los archivos.


Veamos un ejemplo, para nfs, en modo targeted, habilitaremos "use_nfs_home_dirs"

# ls /selinux/booleans/ | grep nfs
========================

allow_ftpd_use_nfs
allow_nfsd_anon_write
httpd_use_nfs
nfsd_disable_trans
nfs_export_all_ro
nfs_export_all_rw
qemu_use_nfs
samba_share_nfs
use_nfs_home_dirs
virt_use_nfs

=======================

al tener localizado el boleano necesario ejecutamos

# setsebool -P use_nfs_home_dirs 1

y habilitaremos la regla en se linux, lo difícil de esto es saber que regla tenemos que habilitar o desactivar que ponga en riesgo nuestro.

ahora en los directorios también se manejan LABELS , para esto tenemos el comando "chcon", el cual tiene usuario: rol : tipo . veamos un ejemplo

# ls -Z /var

=====================
user : rol : tipo
drwxr-xr-x root root system_u:object_r:var_spool_t spool
drwxrwxrwt root root system_u:object_r:tmp_t tmp
drwx------ root root system_u:object_r:var_t tux
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t www
drwxr-xr-x root root system_u:object_r:var_yp_t yp

====================

para cambiar estas características ejecutamos chcon con las opciones (u,r,t) el comando tiene mas opciones les recomiendo echarles una revisada .

crearemos otro folder para web con los mismos labels igual al /var/www/html

# mkdir /var/web
# chcon -R -u system_u -r object_r -t httpd_sys_content_t /var/web
# ls -Z /var/web

debe ser exactamente igual al www .

Muchas veces requeriremos hacer cambios en los puertos y que SELinux nos permita conectarnos a dichos puertos a requerir un servicio, en este caso seguiremos con el servidor web, antes de esto debemos modificar nuestros demonios y nuestro firewall.

# semanage port -a -t http_port_t -p tcp 81

hacemos un listado de los puertos permitidos por SELinux

# semanage port -l


Muchas ocasiones nos encontraremos con algunos problemas con SELinux, los problemas mas comunes son :

archivos con Label erronea
procesos corriendo bajo una directiva incorrecta
un bug en la política aplicada, o políticas que sobreponen a otra
Intento de intrusion.

Para solucionarlas hay que poner especial atencion a los logs que se estan generado, los logs por default son generados /var/log/audit/audit.log o en algunos casos /var/log/messages, los logs son etiquetados con "AVC" por lo cual son faciles de filtrar de otros mensajes. esitesn herramientas que peden hacernos la vida mas sencilla ejemplos

# sealert -b

o si requerimos un archivo para anlizar en forma de texto ..

# sealert -a /var/log/audit/audit.log > /my/archivo.txt




espero les sirva esta pequeña explicación de SELinux