sábado, 16 de julio de 2016

Diferencias entre FTP, VSFTP, FTPS, SFTP

FTP
Es el protocolo de transferencia de archivos implementado alrededor de 1971, esta basado en los RFC141 y en el RFC959, en donde se usan dos canales uno para la interpretación de comandos, y el otro para el canal de datos. En el manejo del protocolo de FTP el cliente y el servidor manejan un proceso independiente respectivamente.

Tipos de FTP

FTP Activo

1.- La secuencia de comandos enviados desde el cliente son receptados por el canal de control que es habilitado en el puerto 21 del servidor ftp.
2.- Cuando el Servidor ftp valida las credenciales de acceso inicia el proceso de transferencia de la información a través del puerto 20 del servidor hacia un puerto entre el rango de 1024 y 65535 lo que incurre que el firewall del cliente debe permitir entradas en el rango de 1024 y 65535.El modo activo sólo es conveniente en la ausencia de un muro cortafuegos entre el servidor y el cliente, como ocurre en los escenarios de una red de área local.

FTP Pasivo
1.- El cliente inicia la conexión hacia el servidor FTP a través del puerto 21 para tareas de control.
2.- Cada vez que el cliente solicita datos a través de la conexión de control , el cliente inicia las conexiones de transferencia de datos al servidor. El puerto de origen de estas conexiones de transferencia de datos es siempre un puerto en el cliente con un puerto de destino de un gran puerto en el servidor
Debido a que el cliente siempre inicia las conexiones necesarias, el FTP pasivo funciona mejor para los clientes protegidos por un firewall .

FTPS 

Es un plug adicional del tradicional protocolo FTP con seguridad basada en certificados SSL. El FTPS utiliza un canal de control y abre nuevas conexiones para la transferencia de datos.

SFTP 

Es un protocolo de transferencia de archivos muy similar al FTP pero es construido por completo desde cero basado en la seguridad que nos ofrece el protocolo SSH, a diferencia del FTP el SFTP usa un solo canal de comunicación basado en SSH el cual permite asegurar la información que se esta transmitiendo en binario y no en formato texto como lo hace el FTP.



jueves, 10 de diciembre de 2015

Configuración de nfs4 en centos 7

Para la configuración del servicio de NFSv4 se deben realizar varias configuraciones que detallare a continuación:

Modificación de los archivos:

/etc/exports
/home/ 192.168.56.100(rw,sync,no_root_squash)

/etc/sysctl.conf

En este archivo agregamos las siguientes lineas:

#TCP port rpc.lockd should listen on.
fs.nfs.nlm_tcpport=32803
#UDP port rpc.lockd should listen on.
fs.nfs.nlm_udpport=32769

/etc/sysconfig/nfs

En este archivo debemos agregar los puertos:

RPCMOUNTDOPTS="892"
STATDARG="662"

Habilitar nml_tcp/udpport

echo 32803 /proc/sys/fs/nfs/nlm_tcpport
echo 32803 /proc/sys/fs/nfs/nlm_udpport


Habilitar puertos en el firewall

# firewall-cmd --add-service=nfs --add-port=32803/tcp --add-port=32769/udp --add-port=892/udp --add-port=892/tcp --add-port=662/tcp --add-port=662/udp --permanent
# firewall-cmd --reload 

Habilitar SELinux 
# setsebool -P use_nfs_home_dirs on

Una vez realizados los cambios reiniciamos el servicio del nfs en el servidor.
systemctl restart nfs


Montaje desde el servidor cliente
mkdir /home/dir_nfs
mount 192.168.56.100:/home /home/dir_nfs



jueves, 26 de noviembre de 2015

Padre Nuestro de Linux

Un poco de humor linuxero


San Torvalds nuestro que estás en http://www.linux.org/
Santificado sea tu Kernel
venga a nosotros tu Free Software,
Tanto de Icaza como de Stallman
Hágase tu download así en el http como en el ftp,
Danos hoy nuestras actualizaciones cada día,
Perdona nuestros bugs
como también nosotros perdonamos a microsoft,
No nos dejes caer en mac-win
y líbranos de los pantallazos azules.
Amén.

Niveles de ejecución o RUN LEVELS

Los niveles de ejecución hacen referencia a los modos en los cuales el sistema operativo puede operar desde que ha sido encendido.

En las versiones de RHEL, CentOS, Fedora, y las demas distros los run levels son los siguientes:


Run Level Nombre Descripción
0 Apagado Procede apagar el sistema operativo
1 Monousuario En este modo solo se habilita el acceso al usuario root no se habilita el acceso de la red
2 Multiusuario En este modo se habilita el acceso a mas usuarios pero no se habilita la red
3 Multiusuario Se habilita la interfaz de red
4 Multiusuario con red Igual que el modo 3
5 Modo Grafico Permite iniciar el sistema operativo con una interfaz de red
6 Reinicio Procede a reiniciar el sistema operativo

Para consultar el run level de un sistema operativo lo haremos con el siguiente comando:

# runlevel

Para cambiar el run level de un sistema operativo lo haremos modificando el siguiente parámetro.

# vim /etc/inittab

Tendremos un contenido similar al siguiente:

# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

Para modificar el run level se debe de cambiar el valor descrito en este archivo en la línea des-comentada.

Run levels con systemd
A partir de la versión de RHEL7 los sistemas operativos ya no son manejados por el super demonio initd por lo cual el manejo de los run levels es distinto, en estas nuevas versiones el super demonio es el systemd. Para manejar los run leves se lo hace con el systemctl

Para ver en que nivel esta corriendo el sistema operativo

# systemclt get-default
graphical.target

Como se puede ver ya no se muestra los valores que habíamos identificado anteriormente.

Para ver los niveles de servicio del sistema operativo se lo realiza con el siguiente comando:


[root@dark ~]# systemctl list-units --type=target
UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
cryptsetup.target loaded active active Encrypted Volumes
getty.target loaded active active Login Prompts
graphical.target loaded active active Graphical Interface
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User System
network-online.target loaded active active Network is Online
network.target loaded active active Network
nfs-client.target loaded active active NFS client services
nss-lookup.target loaded active active Host and Network Name Lookups
nss-user-lookup.target loaded active active User and Group Name Lookups
paths.target loaded active active Paths
remote-fs-pre.target loaded active active Remote File Systems (Pre)
remote-fs.target loaded active active Remote File Systems
rpcbind.target loaded active active RPC Port Mapper
slices.target loaded active active Slices
sockets.target loaded active active Sockets
sound.target loaded active active Sound Card
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
timers.target loaded active active Timers

LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.

22 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

Para cambiar el nivel de ejecución por defecto utilizaremos el parámetro set-default seguido del “UNIT” asociado

# systemctl set-default  multi-user.target


Formato de paquetes RPM

Muchas de las veces me han preguntado que significan los números que siguen del nombre de un paquete pues hoy quiero esclarecer esa inquietud con todos ustedes.Vamos a tomar como ejemplo un paquete que muchos administradores conocen y por lo menos alguna vez lo han visto el famoso webmin.

Para la descarga de el webmin deben dirigirse al sitio oficial y proceder a descargarlo
http://www.webmin.com/rpm.html

En el momento del desarrollo de este post la versión del webmin es webmin-1.770-1.x86_64.rpm

Vamos analizar que significan los parámetros que siguen después del nombre, estos parámetros son una convención así que siempre vamos a encontrar los mismos para todos los rpms de la siguiente forma:

nombre-version-publicación.arquitectura.rpm

  • Nombre: Es una descripción del paquete. El nombre sera la entrada base para el indice de paquetes en la base de datos de paquetes disponibles en el sistema operativo.
  • Versión: Es la versión del paquete con la que sera liberado.
  • Publicación: Es el numero de veces que esta versión del paquete ha sido empaquetada. Por lo general incrementa cuando se hacen correcciones o mejoras sobre la misma versión del paquete.
  • Arquitectura: Es una descripción del paquete que indica para que tipo de CPU fue empaquetado este rpm.
Como ejemplo tomamos el paquete: webmin-1.770-1.x86_64.rpm donde:
  • Nombre: Webmin
  • Versión: 1.770
  • Publicación: 1
  • Arquitectura: x86_64
Como información adicional para manejo de los rpms dejare una breve explicación.

Directorio de la base de los rpm /var/lib/rpm, los archivos que se encuentran en este directorio continen la información relacionada con los paquetes instalados en el Sistema Operativo.

Para saber si un paquete esta instalado:

# rpm -q webmin webmin-1.770-1x86_64.rpm

Para saber todos los rpms instalados en el sistema operativo:

# rpm -qa 

Para tener información del paquete RPM

# rpm -qi webmin

[root@dark ~]# rpm -qi webmin 
Name        : webmin
Version     : 1.770
Release     : 1
Architecture: noarch
Install Date: mié 25 nov 2015 13:05:37 ECT
Group       : System/Tools
Size        : 73745404
License     : Freeware
Signature   : DSA/SHA1, dom 04 oct 2015 00:50:08 ECT, Key ID d97a3ae911f63c51
Source RPM  : webmin-1.770-1.src.rpm
Build Date  : dom 04 oct 2015 00:49:38 ECT
Build Host  : fudu.home
Relocations : (not relocatable)
Vendor      : Jamie Cameron
Summary     : A web-based administration interface for Unix systems.
Description :
A web-based administration interface for Unix systems. Using Webmin you can
configure DNS, Samba, NFS, local/remote filesystems and more using your
web browser.

After installation, enter the URL http://localhost:10000/ into your
browser and login as root with your root password.

Para des-instalar un rpm 

# rpm -e webmin




miércoles, 11 de noviembre de 2015

Montar ISOs en el fstab.

Para realizar el montaje de una imagen de un DVD y que esta sea persistente al inicio del servidor se debe agregar el punto de montaje del mismo en el archivo /etc/fstab.


#
/dev/mapper/luks-5c96c7a3-4ffe-4132-9bd9-dd6d5d9669ac /                       ext4    defaults,x-systemd.device-timeout=0 1 1
UUID=a818315b-c29d-41fb-8358-589a1977f5b5 /boot                   ext4    defaults        1 2
/dev/mapper/fedora-swap swap                    swap    defaults        0 0
/home/dark/html/isos/rhel/rhel5/rhel-server-5.11-x86_64-dvd.iso /home/dark/html/imagenes/rhel5/ iso9660 loop 0 0
/home/dark/html/isos/rhel/rhel6/rhel-server-6.7-x86_64-dvd.iso /home/dark/html/imagenes/rhel6/ iso9660 loop 0 0
/home/dark/html/isos/rhel/rhel7/rhel-server-7.1-x86_64-dvd.iso /home/dark/html/imagenes/rhel7/ iso9660 loop 0 0
/home/dark/html/isos/centOS/CentOS-7-x86_64-DVD-1503-01.iso /home/dark/html/imagenes/centos7/ iso9660 loop 0 0
/home/dark/html/isos/rhel/rhev-h/rhev3.5/rhevh-7.1-20150603.0.el7ev.iso /home/dark/html/imagenes/rhevh7/ iso9660 loop 0 0

Como sabemos debemos tener disponibles en el disco local la imagen dvd del medio que debemos de montar para montar los dvds o los cds el formato es iso9660 no olvidar incluir esta linea en el punto de montaje definido.




Manejo de Procesos

Manejo de Procesos

Para el manejo de Procesos en GNU/Linux podemos utilizar las herramientas de top,htop,ps las cuales nos permiten visualizar el PID de un proceso el PPID de un proceso, etc.

Para comprender los procesos en GNU/Linux debemos comprender los siguientes conceptos:

Proceso padre

El proceso padre es el cual contiene bajo su poder procesos hijos.
El proceso padre en las versiones de RHEL5,6 es el init
El proceso padre en las versiones de RHEL7 y posteriores es el systemd

El init y el systemd se encargan de manejar los demás procesos en el sistema operativo.

Posteriormente agregaré un blog explicando las características de cada uno de ellos.

Proceso hijo

El proceso hijo va a depender de la supervivencia de un proceso padre.
Todos los procesos que se ejecuten por debajo del init y del systemd se consideran procesos hijos.

Como todo en GNU/Linux los procesos tiene características similares a los archivos o directorios de esa forma un proceso tiene:

  • ID del usuario dueno del proceso
  • ID del proceso
  • ID del proceso padre
  • variables
  • directorios de configuración
  • archivos de ejecución
Una vez claros los conceptos basicos de procesos podemos empezar a manejarlos.
Tomaremos como ejemplo el proceso mas elemental en GNU/Linux el interprete de comandos el "bash"

Para identificar el PID el PPID el ID del proceso vamos a usar el comando ps

Si es de nuestro interes el conocer el  PID/PGID/PPID/SID de un determinado proceso podemos ejecutar lo siguiente en un terminal.


Para listar los procesos 

ps -efj | less

ps -efj | grep process
ps -efj | grep pid
Si deseamos tener mas información de los procesos podemos intentar los siguientes comandos.
ps -ejf | egrep 'STIME | nombre_proceso'
ps -ejf | egrep 'STIME | pid_del_proceso'
Ejemplos:
ps -ejf | egrep 'STIME | bash'
ps -ejf | egrep 'STIME | 1234' Suponiendo que el proceso 1234 es equivalente a uno conocido.