miércoles, 13 de mayo de 2015

Mirror de CentOS para nuestra red local

El propósito de este post es mostrar las configuraciones que se necesitan realizar para tener un mirror de Centos para los servidores de nuestra red.

Instalar cualquier versión de CentOS puede ser 5,6,7, en este servidor vamos a instalar el servicio de apache (httpd) y en este vamos a descargar los paquetes del mirror de centos que escojamos.

# yum install httpd createrepo screen -y 

Vamos abrir el puerto 80 para que los clientes puedan usar el repositorio local.

# firewall-cmd --zone=public --add-port=80/tcp --permanent && firewall-cmd --reload


Descarga de paquetes del mirror de CentOS.

Existen varios mirror de Centos los podemos ver en el siguiente sitio web http://www.centos.org/download/mirrors/, en este caso vamos a ordenarlos por la tercera columna. "Rsync Location".

Script para la sincronización de repos.

Explicación del script.

1.- El script debe estar ubicado en el directorio /etc/cron.daily/ donde nos aseguraremos que el script se ejecutara todos los días.
2.- El mirror.kernel.org puede ser usado ya que cumple con la característica de Rsync Location
3.-  Crear los siguientes directorios:

# mkdir -p /var/www/html/centos/6.6/os
# mkdir -p /var/www/html/centos/7/os
# mkdir -p /var/www/html/centos/6.6/updates
# mkdir -p /var/www/html/centos/7/updates

4.- Crear el archivo syncronizacion_centos_mirror.sh

# vim /etc/cron.daily/syncronizacion_centos_mirror.sh
Ingresar el contenido del script.

5.- Cambiar los permisos de 755 para el script syncronizacion_centos_mirror.sh

6.- Crear un screen en el servidor

#  screen -S syncronizacion_centos

# sh syncronizacion_centos_mirror.sh

en el terminal para salir del screen crtl a+d

en el terminal para regresar al screen digitan

# screen -r

Contenido del script

#################################################################################
#!/bin/bash
#!/bin/bash
# Jorge Armijo Syncronizacion repositorio CentOS Epel

# script con reposync
LOCAL_DIRECTORY="/var/www/html/centos"

reposync --gpgcheck -l --repoid=base       --download_path="${LOCAL_DIRECTORY}/7/os/x86_64/" --downloadcomps --download-metadata
createrepo ${LOCAL_DIRECTORY}/7/os/x86_64/ -g comps.xml
reposync --gpgcheck -l --repoid=extras     --download_path="${LOCAL_DIRECTORY}/7/extras/x86_64/" --downloadcomps --download-metadata
reposync --gpgcheck -l --repoid=updates    --download_path="${LOCAL_DIRECTORY}/7/updates/x86_64/" --downloadcomps --download-metadata
reposync --gpgcheck -l --repoid=virt       --download_path="${LOCAL_DIRECTORY}/7/virt/x86_64/" --downloadcomps --download-metadata
reposync            -l --repoid=epel       --download_path="${LOCAL_DIRECTORY}/7/storage/x86_64/" --downloadcomps --download-metadata
reposync --gpgcheck -l --repoid=centosplus --download_path="${LOCAL_DIRECTORY}/7/centosplus/x86_64/" --downloadcomps --download-metadata
reposync            -l --repoid=epel       --download_path="/var/www/html/epel/" --downloadcomps --download-metadata
createrepo /var/www/html/epel/ -g comps.xml
# Cambiar Contextos SELinux
chcon -Rt httpd_sys_content_t /var/www/html/


miércoles, 6 de mayo de 2015

Entrada, salida y error estandar

Redireccionamientos en shell
EL poder de la administración en sistemas GNU/Linux esta en el saber las herramientas que estan disponibles y saber como usarlas.

La entrada estándar

Viene a ser la información que se ingresa a través del teclado o viene de la salida de la ejecución de un comando.
Ejemplos:

Re-dirección de la entrada estándar 

# grep '^root' < /etc/passwd
#

La salida estándar

Es el resultado que se obtiene cuando se ejecuta un comando en la shell.

Re-dirección de la salida estándar 
# cal 02 14 2015 > /tmp/calendario
#  grep 'root' /etc/passwd > /tmp/usuario_root

NOTA:
Recordar que si pongo solo un signo de mayor que ">" este reemplazara todo lo que contiene el documento.
Recordar que si pongo DOS signos de mayor que ">>" este agregara al final del contenido del documento.


El error estándar.

Es la respuesta de error en la ejecución de un comando.

Re-dirección del error estándar 
# find //home/Documentos/jorge -type *.doc 2> /tmp/errors

Descartar error estándar

# service dhcpd restart 2> /dev/null

Combinar la salida estandar y el error estandar

Probar con un usuario diferente al root
$ find /etc -name 'hosts*' > /tmp/output.txt 2> /tmp/error.txt

el resultado va a ser similar a lo sifguiente :

Contenido del /tmp /output.txt

/etc/resolv.conf
/etc/fonts/conf.d/65-0-madan.conf
/etc/fonts/conf.d/59-liberation-mono.conf
/etc/fonts/conf.d/65-0-lohit-kannada.conf
/etc/fonts/conf.d/59-liberation-sans.conf
/etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf
/etc/fonts/conf.d/65-1-vlgothic-gothic.conf
/etc/fonts/conf.d/65-0-lohit-bengali.conf
/etc/fonts/conf.d/20-unhint-small-dejavu-sans.conf
/etc/fonts/conf.d/57-dejavu-sans.conf
/etc/fonts/conf.d/30-0-google-crosextra-caladea-fontconfig.conf
/etc/fonts/conf.d/60-open-sans.conf
/etc/fonts/conf.d/62-google-crosextra-caladea-fontconfig.conf
/etc/fonts/conf.d/66-ucs-miscfixed.conf
/etc/fonts/conf.d/20-unhint-small-dejavu-sans-mono.conf
/etc/fonts/conf.d/65-0-lohit-devanagari.conf
/etc/fonts/conf.d/57-dejavu-sans-mono.conf

Contenido del error estándar

/tmp/error.txt

find: ‘/etc/pki/CA/private’: Permiso denegado
find: ‘/etc/pki/rsyslog’: Permiso denegado
find: ‘/etc/ntp/crypto’: Permiso denegado
find: ‘/etc/dhcp’: Permiso denegado
find: ‘/etc/lvm/archive’: Permiso denegado
find: ‘/etc/lvm/backup’: Permiso denegado
find: ‘/etc/lvm/cache’: Permiso denegado
find: ‘/etc/audit’: Permiso denegado
find: ‘/etc/polkit-1/rules.d’: Permiso denegado
find: ‘/etc/polkit-1/localauthority’: Permiso denegado
find: ‘/etc/selinux/targeted/modules/active’: Permiso denegado
find: ‘/etc/grub.d’: Permiso denegado
find: ‘/etc/audisp’: Permiso denegado
find: ‘/etc/firewalld’: Permiso denegado
find: ‘/etc/sssd’: Permiso denegado
find: ‘/etc/libvirt’: Permiso denegado
find: ‘/etc/ipsec.d’: Permiso denegado
find: ‘/etc/cups/ssl’: Permiso denegado
find: ‘/etc/sudoers.d’: Permiso denegado
~                                            







lunes, 4 de mayo de 2015

Manejo de ACL en directorios

Es muy importante saber el manejo de ACL's en los directorios llamados colaborativos sobre todo si estos son accedidos por varios usuarios y ellos pertenecen a varios grupos.

Vamos a plantear un ejemplo el mismo va a tener tres grupos.
Vamos a plantear usuarios que pertenezcan a un solo grupo y otros que pertenezcan a dos grupos y otros que pertenezcan a los tres grupos.


Departamento Usuarios por Departamento
Gerencia de RRHH (rrhh) Jorge Luis Andrea Karina
Gerencia de Informática (informatica) Manuel Roberto Johan Pedro Karina
Gerencia General (gerencia) Luisa Pablo Andrea Karina

En este ejemplo los usuarios van a compartir el directorio /home/informes_personal donde algunos usuarios solo van a poder acceder a consultar documentos y otros van a tener permisos de crear nuevos archivo y directorios, adicionalmente van a poder definir permisos para la creación de nuevos archivos y directorios.

El dueño del directorio /home/informes_personal debe ser el usuario del sistema root.
El grupo del directorio debe pertenecer al grupo de Gerencia de RRHH.

El grupo de la Gerencia de RRHH deben tener el acceso para la lectura y la escritura automáticamente en los nuevos archivos que se creen bajo el directorio /home/informes_personal.

El grupo de informática debe tener solo acceso de lectura, los archivos que se creen  automáticamente bajo el directorio /home/informes_personal deben mantener el mismo permiso.

Grupos de usuarios adicionales en el sistema operativo no deben de poder acceder al directorio /home/informes_personal. 

Los siguientes comandos deben de ser ejecutados en el terminal con el usuario root.

1.- Creación del directorio común.

# mkdir  /home/informes_personal

2.- Asignación de permisos para que el dueño del direcctorio sea el root

# chown root  /home/informes_personal

3.-   Asignación de permisos para que el grup dueño del direcctorio sea el RRHH

# chgrp rrhh  /home/informes_personal

4.- Definición de permisos especiales para directorios compartidos.

# chmod 2770 /home/informes_personal

5.- Asignación de permisos para el grupo  de la Gerencia de RRHH acceso al directorio para la lectura y la escritura automáticamente.

# setfacl -m g:rrhh:rw  /home/informes_personal

6.- Asignación de permisos para el grupo  de la Gerencia de RRHH acceso al directorio para la lectura y la escritura automáticamente.

# setfacl -m g:informatica:rw  /home/informes_personal

7.- Permisos automáticos para la creación de nuevos archivos para el gurpo de rrhh.

# setfacl -m g:u:rrhh:rw  /home/informes_personal

8.- Permisos automáticos para la creación de nuevos archivos para el gurpo de informática.

# setfacl -m d:g:informatica:rw  /home/informes_personal

9.- Limitar los permisos para otros grupos de usuarios.

# setfacl -m o::-- /home/informes_personal

NOTA: para que los permisos debajo de un directorios sean automáticos debemos definiros aumentando la opción por defecto como se observa en el punto 7 y 8.










miércoles, 29 de abril de 2015

Doble booteo con Wiindows(xp,7,8) y CentOS(5.6.7)


Una vez instalado el servidor CentOS pedirá el reinicio del mismo en este punto no estará visible su anterior partición con su Sistema Operativo de Windows.

para solucionar el pequeño inconveniente se debe de instalar el paquete ntfs-3g el cual nos permite visualizar las particiones ntfs de Windows.

Entonces:

1.- Instalar el paquete ntfs-3g (esta en los repositorios de epel)
2.- volver a cargar el grub.conf para que identifique el Sistema Windows

como usuario root

# grub2-mkconfig -o /boot/grub2/grub.cfg

3.- Reinician el servidor CentOS y ya aparecerá su sistema Windows.

jueves, 9 de abril de 2015

NTP Cliente y Servidor.

Para la configuración del servicio del NTP se debe tener en consideración las opciones que se van habilitar:
  • nomodify:  Impide la re-configuración del servicio con ntpq o ntpdc. 
  • noquery:  Permite la syncronización con los servidores definidos como fuentes, pero impide que estos consulten el estado del servidor.
  • ignore: niega paquetes de todo tipo incluyendo consultas ntpq y ntpdc
  • kod: notifica al cliente sobre la solicitud realizada

Para la configuración del servidor de NTP seguir lo siguiente:
Ejecutar como usuario root.

Instalación de los paquetes necesarios.
# yum -y install ntp

Configuración del servicio.
# vim /etc/ntp.conf

##############################
#contenido del archivo de configuración
#Para definir las opciones del servidor de ntp.
restrict default nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

driftfile /var/lib/ntp/drift

#Permite a travez de cualquier interfaz del sistema la consulta del ntp.
restrict 127.0.0.1
restrict -6 ::1


#Para permitir a las redes que consuman el ntp.

restrict 192.168.57.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.100.0 mask 255.255.255.0 nomodify notrap

#Para difinir los servidores de a los cuales se va a sincronizar.

server inocar.ntp.ec iburst
server inocar.ec iburst

#Configuración del servicio del ntp con la hora del servidor cuando falla las fuentes externas.
server 127.127.1.0
fudge 127.127.1.0 stratum 10
##########################################


ara la configuración del servidor cliente se debe editar el archivo /etc/ntp.conf

##########################################

driftfile /var/lib/ntp/drift

restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

restrict 127.0.0.1
restrict -6 ::1

# NTP SERVIDOR DE RED LOCAL
server servidor.ntp.local.com.ec iburst

includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
#########################################

Las configuraciones de este servicio han sido validadas en las siguientes versiones de Sistemas Operativos.

RHEL5, RHEL6, RHEL7 por ende funcionan en CentOS.

Para la configurar el firewall en el servidor hay que abrir el puerto 123 en udp


Para RHEL 5,6,
# -A RH-Firewall-1-INPUT -s "ip_servidor_ntp"/24 -m state --state NEW -p udp --dport 123 -j ACCEPT

Para RHEL 7
# firewall-cmd --add-service=ntp --permanent && firewall-cmd --reload

viernes, 24 de agosto de 2012

Uso del fsck para recuperar particiones dañadas

Recuperación de particiones dañadas

Uso del FSCK 
(File System Consistency checK)

No es frecuente que se generen inconsistencias en los discos ahora en los sistemas basados en GNU/Linux y  aun usando el tipo de particiones ext4 pero en caso de que eso suceda tendremos a mano siempre una muy buena herramienta que nos ayudara a depurar los errores en los discos y poder volver a recuperar la  partición que hemos detectado con problemas en el sistema.

Para hacer el análisis de una partición lo que se recomienda es siempre tener desmontada una particion

La sintaxis del comando es la siguiente :


fsck [-opciones] /dev/sdxxx o /hdxxx

Donde debemos sustituir [-opciones] por el parámetro que queramos utilizar para hacer el análisis de la partición

Opciones mas usadas

Los parámetros básicos son:

-n reporta los problemas sin repararlos, Considero la mas util al momento de diagnosticar problemas.

-A Chequea todos los dispositivos definidos en el fichero /etc/fstab.
-a confirmar automáticamente. No lo recomiendo a no ser el caso de tener un sistema alterno para ponerlo en produccion
-c solo comprueba los bloques en el disco.
-f forzar la verificación aunque todo parezca normal.
-v (verbose) despliega más información.
-r Modo interactivo. Espera nuestra respuesta.
-y asume yes de respuesta es muy delicado el uso de este parametro.


Ejemplos:
fsck -c /dev/hdb2 estariamos comprobando los bloques dañados.
fsck -C -R -af /dev/hdb6 forzamos la comprobación y si hay algún error lo arreglamos automáticamente
fsck -CTV -nf /dev/hdb6 chequeo y si detecta algún error informará de ello pero no reparará nada

 


domingo, 8 de abril de 2012

Automatizar tareas con el Cron y Anacron


Comando Cron
El comando Cron nos permite decidir que usuarios puede hacer uso del servicio con la configuración de los siguientes archivos:


  • /etc/cron.allow
  • /etc/cron.deny


Para restringir el uso a un usuario, es suficiente con agregar su nombre de usuario al archivo /etc/cron.deny, para permitirle su uso entonces sería agregar su nombre de usuario en/etc/cron.allow, si por alguna razón se desea negar el uso de cron a todos los usuarios, entonces se puede escribir la palabra ALL al inicio de cron.deny y con eso seria suficiente para negar el uso del cron a los usuarios del sistema.


Permite configurar tareas a realizarse en un tiempo especifico el archivo de configuración es:
/etc/crontab


En este archivo encontramos la explicación de como se debe configurar minuto, hora, día del mes, mes, día de la semana.
El comando Cron nos permite también que se ejecuten scripts ubicandoles dentro de la categoría que nosotros deseemos como puede ser:
Por hora  /etc/cron.hourly/
Por día  /etc/cron.daily/
Por semana /etc/cron.weekly/
Por mes /etc/cron.monthly/

Ejemplo:

Estos scripts deben de tener permisos para ejecución:

chmod 755 actualizacion.sh

# vim actualizacion.sh
#!/bin/bash
# actualización automática del sistema
sudo yum update

Comandos mas usados con el crontab
crontab /home/jorge/tareas.txt 
Remplaza el existente archivo crontab con un archivo definido por el usuario
crontab -e 
Editar el archivo crontab del usuario, cada linea nueva sera una nueva tarea de crontab.
crontab -l 
Lista todas las tareas de crontab del usuario
crontab -d 
Borra el crontab del usuario
crontab -c dir 
Define el directorio de crontab del usuario
crontab -u usuario 
Para manejar el crontab de otros usuarios
# sudo crontab -l -u root 
# sudo crontab -e jorge
# crontab -d -u jorge

Tareas con el Anacron
Este es mas útil cuando tenemos una pc que no la tenemos todo el tiempo encendida y dejamos programado tareas al arranque, con este podemos dejar configuraciones, actualizaciones del sistema respaldo de archivos sincronización de repositorios, cualquier cosa que nos pueda interesar, etc.

En este archivo podemos encontrar solo 4 campos de configuración
Se va a detallar cada cuantos días se quiere realizar la tarea
Se va a determinar el número de minutos que transcurrirán desde que ejecutas Anacron hasta que se lanza la tarea programada.
Nombre de la tarea.
El comando.

Anacron busca en /var/spool/anacron el archivo creado para cada tarea en su última ejecución