Páginas

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

miércoles, 14 de abril de 2021

Configuración de ACL numeradas extendidas En GNS3

Configuración y aplicación de ACL numeradas extendidas En GNS3




Filtro extendido de ACL basado en la dirección de origen y destino, así como los protocolos de capa 4 TCP y UDP.

1.- Configurar los nombres de host en R1 y R2

2.- Configurar en R1 s1/0 como DCE para proveer un clock rate de
80640kbps a R2 más sus correspondientes direcciones IP.

3.- Configurar una ruta predeterminada estática en el R1 señalando a R2 (sobre la conexión serial entre los dos Routers). Configure también una ruta predeterminada estática en el R3 señalando al R1 vía la conexión serial entre los dos Routers y las interfaces de loopback especificadas en el diagrama.

R1#conf t  
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#inter s1/0
R1(config-if)#ip add 172.16.1.1 255.255.255.192
R1(config-if)#no shu
R1(config-if)#
*Mar  1 00:09:59.939: %LINK-3-UPDOWN: Interface Serial1/0, changed state to up
R1(config-if)#
*Mar  1 00:10:00.943: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up
R1(config-if)#clock rate 80640

R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#inter s1/0
R2(config-if)#ip add 172.16.1.2 255.255.255.192
R2(config-if)#no shu
R2(config-if)#
*Mar  1 00:10:57.499: %LINK-3-UPDOWN: Interface Serial1/0, changed state to up
R2(config-if)#
*Mar  1 00:10:58.503: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1/0, changed state to up

R2(config-if)#do ping 172.16.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/14/24 ms
R2(config-if)#end

R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#ip route 0.0.0.0 0.0.0.0 s1/0 172.16.1.1
R2(config)#

R2(config)#inter loop10 
R2(config-if)#ip a
*Mar  1 00:18:45.775: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback10, changed state to up
R2(config-if)#ip add 10.10.10.2 255.255.255.128
R2(config-if)#inter loop20
R2(config-if)#ip 
*Mar  1 00:20:55.915: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback20, changed state to up
R2(config-if)#ip add 10.20.20.2 255.255.255.240
R2(config-if)#inter loop30
R2(config-if)#ip ad 
*Mar  1 00:21:32.163: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback30, changed state to up
R2(config-if)#ip add 10.30.30.2 255.255.255.248
R2(config-if)#end

R2#sh ip inter b
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            unassigned      YES unset  administratively down down    
FastEthernet0/1            unassigned      YES unset  administratively down down    
Serial1/0                  172.16.1.2      YES manual up                    up      
Serial1/1                  unassigned      YES unset  administratively down down    
Serial1/2                  unassigned      YES unset  administratively down down    
Serial1/3                  unassigned      YES unset  administratively down down    
Loopback10                 10.10.10.2      YES manual up                    up      
Loopback20                 10.20.20.2      YES manual up                    up      
Loopback30                 10.30.30.2      YES manual up                    up      
R2#


R1#
R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#ip route 0.0.0.0 0.0.0.0 s1/0 172.16.1.2
R1(config)#inter loop10
*Mar  1 00:27:12.687: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback10, changed state to up
R1(config-if)#ip add 172.16.4.1 255.255.255.192
R1(config-if)#exit
R1(config)#inter loop20
*Mar  1 00:27:57.675: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback20, changed state to up
R1(config-if)#ip add 172.17.5.1 255.255.255.248
R1(config-if)#end
R1#

R1#sh ip inter b
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            unassigned      YES unset  administratively down down    
FastEthernet0/1            unassigned      YES unset  administratively down down    
Serial1/0                  172.16.1.1      YES manual up                    up      
Serial1/1                  unassigned      YES unset  administratively down down    
Serial1/2                  unassigned      YES unset  administratively down down    
Serial1/3                  unassigned      YES unset  administratively down down    
Loopback10                 172.16.4.1      YES manual up                    up      
Loopback20                 172.17.5.1      YES manual up                    up      
R1#

R2#ping 172.16.4.1 source loop10

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.4.1, timeout is 2 seconds:
Packet sent with a source address of 10.10.10.2 
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 76/79/84 ms
R2#

R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#enable secret CISCO
R2(config)#line vty 0 903
R2(config-line)#password CISCO
R2(config-line)#login
R2(config-line)#end
R2#
*Mar  1 00:35:48.115: %SYS-5-CONFIG_I: Configured from console by console
R2#

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#enable secret CISCO
R1(config)#line vty 0 903
R1(config-line)#end
*Mar  1 00:40:22.755: %SYS-5-CONFIG_I: Configured from console by console
R1#

R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#access 170 permit tcp 172.16.4.0 0.0.0.63 10.20.20.0 0.0.0.15 eq telnet 
R2(config)#access-l 170 perm tcp 172.16.4.0 0.0.0.63 10.30.30.0 0.0.0.7 eq telnet
R2(config)#access- 170 perm icmp 172.17.5.0 0.0.0.7 10.10.10.0 0.0.0.127 echo
R2(config)#access 170 perm icmp 172.17.5.0 0.0.0.7 10.10.10.0 0.0.0.127 echo-reply
R2(config)#inter s1/0
R2(config-if)#ip access-group 170 in
R2(config-if)#end

R2#sh ip access-lists 170
Extended IP access list 170
    10 permit tcp 172.16.4.0 0.0.0.63 10.20.20.0 0.0.0.15 eq telnet
    20 permit tcp 172.16.4.0 0.0.0.63 10.30.30.0 0.0.0.7 eq telnet
    30 permit icmp 172.17.5.0 0.0.0.7 10.10.10.0 0.0.0.127 echo
    40 permit icmp 172.17.5.0 0.0.0.7 10.10.10.0 0.0.0.127 echo-reply

R1#

R1#telnet 10.30.30.2 /source-interface loopback10
Trying 10.30.30.2 ... Open

User Access Verification


Password: 
R2>en
Password: 
R2#exit

R1#telnet 10.20.20.2 /source-interface loopback10
Trying 10.20.20.2 ... Open


User Access Verification

Password: 
R2>en
Password: 
R2#exit

R1#ping 10.10.10.2 source loopback20

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.10.10.2, timeout is 2 seconds:
Packet sent with a source address of 172.17.5.1 
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 76/80/88 ms
R1#

R2#sh ip access-lists 170
Extended IP access list 170
    10 permit tcp 172.16.4.0 0.0.0.63 10.20.20.0 0.0.0.15 eq telnet (234 matches)
    20 permit tcp 172.16.4.0 0.0.0.63 10.30.30.0 0.0.0.7 eq telnet (129 matches)
    30 permit icmp 172.17.5.0 0.0.0.7 10.10.10.0 0.0.0.127 echo (45 matches)
    40 permit icmp 172.17.5.0 0.0.0.7 10.10.10.0 0.0.0.127 echo-reply
R2#exit

R1#


IOS es genial!.

domingo, 11 de abril de 2021

ACLs Inbound Cisco GNS3

Configurar y aplicar Extended Numbered ACLs Inbound en GNS3:



Configurar R1 y R2 para permitir acceso vía telnet.

R2(config)#enable secret CISCO
R2(config)#line vt
R2(config)#line vty 0 903
R2(config-line)#password CISCO
R2(config-line)#login
R2(config-line)#end 
R1(config)#enable secret CISCO
R1(config)#line vt
R1(config)#line vty 0 903
R1(config-line)#password CISCO
R1(config-line)#login
R1(config-line)#end 

Implementar las direcciones IP correspondientes a las interfaces seriales 1/0, en R1 y R2.

R1#conf t
R1(config)#inter se1/0 
R1(config-if)#ip addr 172.16.1.1 255.255.255.192
R1(config-if)#no shut

R2#conf t
R2(config)#inter
R2(config)#interface se1/0
R2(config-if)#ip addr 172.16.1.2 255.255.255.192
R2(config-if)#no shut

Configurar las interfaces loopback 10,20 y 30 y sus correspondientes IPs:

R2(config)#interface loopback 10               
R2(config-if)#ip add 10.10.10.3  255.255.255.128
R2(config-if)#exit
R2(config)#interface loopback 20               
R2(config-if)#ip add 10.20.20.3  255.255.255.240
R2(config-if)#exit
R2(config)#interface loopback 30               
R2(config-if)#ip add 10.30.30.3  255.255.255.248 

Este comando establece una ruta predeterminada para subredes de destino que no están en la tabla de enrutamiento, "gateway del último recurso" configurado en su tabla de rutas IP.

R1(config)#ip route 0.0.0.0 0.0.0.0 172.16.1.2 
R2(config)#ip route 0.0.0.0 0.0.0.0 172.16.1.1 

Access-lists (R1).

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#access-list 150 deny tcp 10.20.20.0 0.0.0.15 any eq telnet
R1(config)#access-list 150 permit tcp 10.30.30.0 0.0.0.7 any eq telnet
R1(config)#access-list 150 permit icmp 10.20.20.0 0.0.0.15 any echo
R1(config)#inter s1/0
R1(config-if)#ip access-group 150 in
R1(config-if)#^Z   

R1#sh ip access-lists 
Extended IP access list 150
    10 deny tcp 10.20.20.0 0.0.0.15 any eq telnet
    20 permit tcp 10.30.30.0 0.0.0.7 any eq telnet
    30 permit icmp 10.20.20.0 0.0.0.15 any echo
    40 permit tcp 10.10.10.0 0.0.0.127 any eq telnet

R2#ping 172.16.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds:
UUUUU
Success rate is 0 percent (0/5)
R2#telnet 172.16.1.1 /source- 
R2#telnet 172.16.1.1 /source-interface loopback
R2#telnet 172.16.1.1 /source-interface loopback 20
Trying 172.16.1.1 ... 
% Destination unreachable; gateway or host down

R2#telnet 172.16.1.1 /source-interface loopback 30
Trying 172.16.1.1 ... Open

User Access Verification

Password: 
R1>en
Password: 
R1#exit

[Connection to 172.16.1.1 closed by foreign host]

R2#ping 172.16.1.1 source 10.20.20.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds:
Packet sent with a source address of 10.20.20.3 
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/21/24 ms
R2#telnet 172.16.1.1 /source-interface loopback 10
Trying 172.16.1.1 ... Open

User Access Verification

Password: 
R1>en
Password: 
R1#exit

Permitir ping a la interface serial 1/0 de R1

R1(config)#access-list 150 permit icmp 172.16.1.0 0.0.0.127 any echo

R1#sh ip access-lists 
Extended IP access list 150
    10 deny tcp 10.20.20.0 0.0.0.15 any eq telnet (3 matches)
    20 permit tcp 10.30.30.0 0.0.0.7 any eq telnet (174 matches)
    30 permit icmp 10.20.20.0 0.0.0.15 any echo (30 matches)
    40 permit tcp 10.10.10.0 0.0.0.127 any eq telnet (111 matches)
    50 permit icmp 172.16.1.0 0.0.0.63 any echo (15 matches)
R1#

R2#ping 172.16.1.1                  

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 76/77/80 ms
R2#


GNS3 es genial!.

viernes, 16 de febrero de 2018

Samba en un Servidor Centos Linux

Configuración de Samba en Centos

Protocolo SMB

SMB (Server Message Block), también llamado CIFS (Common Internet File System), es un protocolo del nivel de presentación del modelo OSI de TCP/IP creado por IBM en el año 1985.

Samba

SAMBA es un conjunto de programas originalmente creados por Andrew Tridgell y mantenidos por The Samba Team.

Instalar a través de yum

# yum -y install samba samba-client samba-common

Abrir los puertos 135 al 139 (TCP Y UDP) y el puerto 445 (TCP).

Utilizando desde la consola el mandato iptables


# ptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 135:139 -j ACCEPT

# iptables -A INPUT -m state --state NEW -m udp -p udp --dport 135:139 -j ACCEPT

# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

# service iptables save

O editar el archivo /etc/sysconfig/iptables y añadir lo siguiente

-A INPUT -m state --state NEW -m tcp -p tcp --dport 135:139 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --dport 135:139 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

# service iptables restart

SELinux y el servicio smb

Con la finalidad de que SELinux permita al servicio smb la escritura como usuario anónimo, ejecute:

# setsebool -P allow_smbd_anon_write 1

A fin de que SELinux permita al servicio smb funcionar como Controlador Primario de Dominio (PDC)

# setsebool -P samba_domain_controller 1

Para que SELinux perminta al servicio smb compartir los directorios de inicio de los usuarios locales del sistema, ejecute:

# setsebool -P samba_enable_home_dirs 1

A fin de que SELinux desactive la protección para los directorios de inicio de los usuarios a través de smb, ejecute:

# setsebool -P use_samba_home_dirs 1

Con la finalidad de que SELinux permita al servicio smb crear nuevos directorios de inicio para los usuarios a través de PAM (operación común en PDC, ejecute

# setsebool -P samba_create_home_dirs 1

Para que SELinux permita al servicio smb funcionar como un organizador de mapa de puertos (portmapper):

# setsebool -P samba_portmapper 1

Para que SELinux permita al servicio smb ejecutar guiones dentro del directorio /var/lib/samba/scripts sin confinamiento:

# setsebool -P samba_run_unconfined 1

Con el fin de que SELinux permita al servicio smb compartir todos los recursos en modo de sólo lectura:

# setsebool -P samba_export_all_rw 1

Para que SELinux perminta al servicio smb compartir todos los recursos en modo de lectura y escritura:

# setsebool -P samba_export_all_rw 1

Mandato chcon

Para definir que un directorio será compartido a través del servicio smb y que debe considerarse como contenido Samba, por ejemplo /var/samba/publico:

# chcon -t samba_share_t /var/samba/publico

Antes de configurarse en el el archivo /etc/samba/smb.conf, cada nuevo directorio que se vaya a compartir debe ser configurado como se ha descrito anteriormente.

Iniciar el servicio

# service nmb start
# service smb start

Añadir el servicio al arranque del sistema

# chkconfig nmb on
# chkconfig smb on

Después de aplicar cambios al archivo de configuración de Samba es necesario reiniciar el servicio smb

# service smb restart

El servicio nmb es el encargado de proveer el servidor de nombre para los clientes a través de NetBios sobre IP. Por tanto, debe reiniciar el servicio nmb si realiza cualquier cambio en la configuración de la opción netbios name

# service nmb restart

Alta de cuentas de usuario

Primero asigne una contraseña al usuario root (no tiene que ser la misma utilizada en el sistema).

# smbpasswd -a root

La sincronización de cuentas entre el servidor Samba y las estaciones Windows se realiza ingresando el mismo nombre de usuario y contraseña tanto en el servidor Samba como en la máquina Windows.

La mayoría de las cuentas de usuario que se utilizan para acceder a Samba no requieren acceso al intérprete de comandos del sistema, no hace falta asignar una contraseña con el mandato passwd. El intérprete de comandos quedará definido como /sbin/nologin o /bin/false para la cuenta de usuario. Esta cuenta en cuestión estará inactiva para el resto de servicios.

# useradd -s /sbin/nologin andrius
# smbpasswd -a andrius

Archivo lmhosts

Se utiliza para resolver de manera local los nombres NetBios, asociándolos con su dirección IP correspondiente. El nmbre NetBios no debe exceder los doce caracteres alfanuméricos. Como mínimo debe definirse el nombre del anfitrión del servidor Samba junto a su dirección IP.

# vi /etc/samba/lmhosts
127.0.0.1      localhost
192.168.0.1      servidor

Configuración básica del archivo smb.conf

# vi /etc/samba/smb.conf

La opción workgroup define el grupo de trabajo

workgroup = MYGROUP

Opción netbios name

Define un nombre de anfitrión distinto al detectado automáticamente. Debe ser el mismo que aparece en el archivo /etc/samba/lmhosts

netbios name = servidor

Opción server string

server string = Servidor Samba %v en %L

Opción hosts allow

En esta entrada del archivo smb.conf se pueden definir direcciones IP o redes que tendrán permiso de acceso hacia el servidor. Por tanto, una red con anfitriones con direcciones IP desde 192.168.0.1 hasta 192.168.0.254, el rango de direcciones IP definido en hosts allow será 192.168.0., (los tres primeros octetos).

Vamos a definir las redes 192.168.0.0/24, 102.168.1.0/24 y 192.168.3.0/24 como vimos con anterioridad utilizando los tres primeros octetos de la dirección IP de red, en el caso de cualquier dirección IP de la red 127.0.0.0/8 se define sólo el primer octeto de dicho segmento.

hosts allow = 127., 192.168.0., 192.168.1., 192.168.3.

Opción name resolve order

Define el orden en que se intenta de resolver los nombres NETBIOS. Primero con la información del archivo /etc/samba/lmhosts, luego el archivo /etc/hosts, a continuación de consultas en el servidor WINS y, si todo lo anterior falla, a través de la dirección IP de difusión de la red local.

name resolve order = lmhosts hosts wins bcast

Gestor de archivos Nautilus

Esta configuración es necesaria para el gestor de archivos predeterminado de Gnome, Nautilus y además que se especifique wins en el orden de resolución de nombres del archivo /etc/nsswitch.conf del anfitrión desde el cual se ejecute.

# vi /etc/nsswitch.conf

hosts:    files dns

al final agregje wins

hosts:    files dns wins

Opción remote announce

remote announce = 192.168.3.127, 192.168.1.255

Reinicie los servicios para aplicar los cambios.

# service smb restart
# service nmb restart

Compartir directorios

Crear el directorio /var/samba/publico

# mkdir -p /var/samba/publico

Cambiar el contexto de SELinux para que este directorio sea considerado como contenido Samba.

# chcon -t samba_share_t /var/samba/publico


[publico]

comment = Recurso compartido publico

path = /var/samba/publico

guest ok = yes

read only = yes

write list = andrius

directory mask = 0755

create mask = 0644

Listas de control de acceso ACL

setfacl se utiliza para cambiar los permisos en las listas de control de acceso de un archivo o directorio dado. Asignar cambiar permisos de lectura, escritura y ejecución al usuario andrius

Crear el usuario y agregarlo al grupo samba

# useradd -s /sbin/nologin andrius
# smbpasswd -a andrius
# passwd andrius

# setfacl -m u:andrius:rwX /var/samba/publico

Se utilizó X mayúscula para indicar que sólo se aplicará el bit de acceso a directorios evitando aplicar el bit de ejecución a los archivos.

getfal se utiliza para determinar los permisos establecidos en las listas de control de acceso de un archivo o directorio.

# getfacl /var/samba/publico/

getfacl: Eliminando '/' inicial en nombres de ruta absolutos

# file: var/samba/publico/

# owner: root

# group: root

user::rwx

user:andrius:rwx

group::r-x

mask::rwx

other::r-x


Estos permisos que se establecieron en la lista de control de acceso del directorio /var/samba/publico son exclusivamente para éste. Cualquier nuevo archivo o directorio creado carecerá de estos nuevos permisos. Si se desea que éstos permisos se vuelvan los predeterminados para los nuevos archivos y directorios que sean creados en lo sucesivo dentro del directorio /var/samba/publico, se ejecuta el mismo mandato setfacl, pero añadiendo la opción -d para definir que serán los permisos  predeterminados  para nuevos archivos  y directorios.

Lo anterior muestra que sólo el propietario del directorio tiene permisos de lectura, escritura y acceso. Para lograr que un usuario en particular pueda acceder también a este directorio, se ejecuta el mandato setfacl, con la opción -m para modificar la lista de control de acceso, [u,g,o]:[usuario,grupo]:[r,w,x] y la ruta del directorio como argumentos. Ejemplo:

setfacl -m u:usuario:rX /var/samba/publico

En el ejemplo anterior se utilizó X mayúscula para indicar que sólo se aplicará el bit de acceso de a directorios evitando aplicar el bit de ejecución a los archivos.

Lo mismo en notación octal

# setfacl -m u:usuario:5 /var/samba/publico

Editar el archivo /etc/samba/smb.conf y al final añada el siguiente contenido


[publico]

comment = Recurso compartido publico 

path = /var/samba/publico

guest ok = yes

read only = yes

write list = andrius

directory mask = 0755

create mask = 0644


# service smb restart

Ocultando archivos que empiezan por punto.

Los archivos cuyo nombre comienza con un punto (archivos de configuración, normalmente), como es el caso del directorio de inicio del usuario en el servidor Samba (.bash_profile, .bashrc, .bash_history entre otros) pueden ocultarse con la opción hide dot files y el valor Yes.

[homes]
    comment = Home Directories
    browseable = no
    writable = yes
    valid users = %S
    inherit acls = yes
    hide dot files = yes

Reinicie el servidor smb para que los cambios tengan efecto

# service smb restart


Montar recursos compartidos desde un cliente Linux

$ cat /etc/hosts
127.0.0.1        localhost.localdomain localhost
::1        localhost6.localdomain6 localhost6
192.168.0.1    servidor

# mkdir /mnt/publico

# mount.cifs -o username=andrius //servidor/publico /mnt/publico

Solicitará la contraseña del usuario utilizado en el servidor Samba

Password for andrius@//servidor/publico:

# mount | grep publico
//servidor/publico on /mnt/publico type cifs (rw)

Cree el archivo /etc/acreditar para hacer permanente lo anterior.

# vim /etc/acreditar

Especifique el nombre de usuario y contraseña utilizados con el recurso compartido.

username=andrius
password=password

Cambiando los permisos de acceso al archivo para que sólo el usuario root pueda ver y modificar el contenido.

# chmod 600 /etc/acreditar

# vim /etc/fstab

Este recurso será montado automáticamente en el siguiente reinicio del sistema. Agregue la siguiente línea incluyendo las opciones uid y gid

//servidor/publico /mnt/publico cifs credentials=/etc/acreditar,uid=501,gid=501 0 0

Utilizar smbclient desde Linux

Lo más práctivo y sencillo para hacer pruebas es el mandato smbclient. Permite acceder hacia cualquier servidor Samba y Windows.

# smbclient -U andrius -L servidor


Conectar un cliente Windows al servior Samba

Esta máquina está en la red 192.168.3.0/25 detrás de un firewall router Soekris y OpenBSD.






https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/pdf/system_administrators_guide/Red_Hat_Enterprise_Linux-7-System_Administrators_Guide-en-US.pdf

Centos es genial!.