1. Administración de Sistemas
Dominio en Linux
I TAHISA M. D ÍAZ D ÍAZ
M ARÍA D. BATISTA G ALVÁN
E SCUELA T ÉCNICA S UPERIOR DE I NGENIERÍA I NFORMÁTICA
Universidad de La Laguna
2. R ESUMEN . El presente informe describe los pasos seguidos para la consecución de
la segunda práctica de laboratorio de Administración de Sistemas. Dicha práctica con-
sistió en la implementación de un dominio para la organización creada en la práctica
anterior. Para la cual se hizo uso de las herramientas proporcionadas por Linux y fueron
necesarios la instalación y configuración de servicios tales como NFS, LDAP y autofs.
En este dominio toda la información de la organización, tanto referente a los datos co-
mo a los usuarios, estaría almacenada y administrada en el servidor, y los datos serían
accesible desde la máquina cliente por los usuarios de la organización, lo cuál se tuvo
en cuenta a la hora de implementarlo. Ambas máquinas, tanto servidor como cliente,
habían sido previamente creadas y configuradas en la práctica anterior, por lo cual esta
práctica podría considerarse como una ampliación de la situación anterior con el fin de
obtener un caso más realista sobre una organización corporativa.
En definitiva, el objetivo del presente informe es explicar cómo se montó el dominio
cumpliendo con los requerimientos exigidos por la organización (en este caso, por el
supuesto práctico), los cuales van a marcar la estructura del informe, pues se irá respon-
diendo qué se hizo para cumplirlos y se describirá de qué manera se hizo. Estos reque-
rimientos van, desde cuestiones de seguridad (quién puede acceder a qué y cómo puede
hacerlo), hasta la estructura organizativa (máquinas, usuarios, grupos, directorios).
1
3. Índice
1. Sistemas 3
2. Directorio de cada usuario 6
3. Proyectos en ejecución 8
4. Proyectos en ejecución 9
5. Situación actual de la Organización 9
Anexos 10
A. Autofs 10
B. Script 13
C. Seguridad 18
2
4. 1. Sistemas
Uno de los ordenadores (máquina virtual) de la organización debe actuar como servidor tanto
para el servicio openldap como para el servicio NFS. Todas las cuentas de usuarios y grupos deben
ser gestionadas por este servidor.
El otro ordenador (máquina virtual) actuará como cliente y accederá al servidor tanto en los
procesos de autenticación como para acceder a la información de la organización (directorios de
usuarios e información de los proyectos).
En el Servidor:
Se instalaron en primer lugar los paquetes necesarios
[root@:~]# yum install -y openldap-servers openldap-clients
Se renombró el archivo ldap.conf con el fin de que no interfiriera con la instalación que posteriormente
se realizaría:
[root@:~]# mv /etc/openldap/ldap.conf /etc/openldap/ldap.conf.
old
A continuación, se modificaron los ficheros de configuración /etc/openldap/slapd.d /cn=config, en
base al dominio as07.org, en primer lugar:
[root@:~]# vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb
.ldif
dentro del mismo se modificaron el nombre de dominio del servidor y el nombre distinguido del
administrador del LDAP en las líneas correspondientes:
1 olcSuffix: dc=as07, dc=org
2 olcRootDN: cn=Manager,dc=as07,dc=org
en cuánto a la contraseña para dicho administrador, tuvo que encriptarse previamente con el coman-
do slappasswd, que genera la encriptación de la contraseña que se introduzca. Por lo que se copió la
contraseña generada, y se modificó la línea correspondiente en el archivo anterior:
1 olcRootPW: {SSHA}a45rTI6toGH1z02+hjhjW6ffyX+a9ZpQ
En segundo lugar, se modificó el DN del administrador especificado anteriormente en el fichero /et-
c/openldap/slapd.d/cn=config/olcDatabase=1monitor.ldif, en la línea correspondiente (olcAccess) aña-
diendo el DN correspondiente (cn=Manager, dc=as07,dc=org).
Seguidamente, una vez configurado, se inició el demonio slapd:
3
5. [root@:~]# service slapd start
A la hora de añadir, modificar o consultar entradas se podía utilizar diferentes herramientas (gráficas
o comandos de consola). Una de las que se utilizaron fueron las migrationtools. Para instalarlas se hizo
lo siguiente:
[root@:~]# yum install -y migrationtools
Al instalarla se creó el directorio /usr/share/migrationtools donde se almacenaron una serie de scripts,
por nos cambiamos al susodicho para poder ejecutarlos:
[root@:~]# cd /usr/share/migrationtools
Por ejemplo, para la presente práctica fueron útiles los siguiente:
[root@:~]# ./migrate_passwd.pl /etc/passwd >> users.ldif
[root@:~]# ./migrate_group.pl /etc/group >> group.ldif
Para las cuales al introducirles los ficheros del sistema (en este caso, el passwd y el group) genera
el formato de las entradas con todos los usuarios y grupos del sistema. Por lo cual, en nuestro caso
fueron redirigidas a otros ficheros, los cuáles hubo que modificar posteriormente para seleccionar tan
sólo aquellos usuarios y grupos necesarios, y cambiar el nombre distinguido del dominio.
Luego, esos archivos se agregaron al LDAP:
[root@:~]# ldapadd -xD "cn=Manager,dc=as07,dc=org" -W -f group.
ldif
Otra manera de realizar el proceso era gráficamente, por lo que una alternativa era el jxexplorer, el
cual fue necesario descargar de la web. Una vez descargado se extrajo y pudo ser ejecutado mostrando un
menú gráfico con el estado del dominio donde se podía crear, modificar o consultar a través de ventanas
las entradas de LDAP.
Previamente, para conectarse al servidor LDAP se especificaron algunos parámetros configurados
anteriormente:
1 host: localhost
2 port: 389
3 Base DN: dc=as07,dc=org
4 Level: User+Password
5 User DN: dc=Manager,dc=as07,dc=org
6 Password: a******
4
6. Por ejemplo, está herramienta fue útil para cambiarle a cada usuario su directorio “home”, presio-
nando sobre dicho usuario en el árbol y en el atributo homeDirectory: “/import/casa/usuario”.
dc=org
dc=as07
ou=Group ou=People
usu1 usu2 usu3 usu4 usu5 usu6 ejec1 ejec2
aerpuertoACL comercialACL comun ejecutivo ...
En el cliente:
En cuanto al cliente, lo único necesario fue instalar los paquetes openldap-clients y nss-pamldapd,
éste último permitiría autenticarse a los usuarios con el servidor LDAP.
Luego, se comprobó que era posible acceder a la información del servidor, por ejemplo:
[root@:~]# ldapsearch -h 192.168.1.10 -x -b "dc=as07,dc=org" "
surname=usu*"
Para configurar la autenticación a través del servidor LDAP se utilizó la herramienta authconfig-tui
en la cual se especificó que se quería emplear LDAP, la IP del servidor y el DSE.
5
7. 2. Directorio de cada usuario
Todo usuario del sistema debe poseer un subdirectorio en la máquina servidora en la ruta
/home cuyo nombre debe coincidir con el nombre del usuario. Este directorio debe ser accesi-
ble al usuario (como directorio home) bajo la ruta “/import/casa/<nombre_usuario>” en
cualquier ordenador de la organización. Se deben cumplir los siguientes requisitos:
Sólo podrán acceder a este directorio los ordenadores de la organización, suponiendo que
todos los equipos se encuentran en la red 192.168.1.0.
Para que cada usuario que entrase en el equipo cliente pudiera acceder a su directorio raíz ubicado en
el equipo servidor (sin percatarse que a si fuese), se tuvo que usar tanto en la máquina del servidor como
en la del cliente el servicio NFS. Este servicio permitió que el equipo cliente pudiera montar y acceder
a estos subdirectorios remotos, exportados por el equipo servidor, es decir, tener todos los directorios
home centralizados y en una sóla máquina. Además, se hizo necesario utilizar en la máquina del cliente
el servicio rpcbind para asignar dinámicamente los puertos utilizados por NFS.
Para ello, primero se tuvo que preparar ambos equipos (servidor y cliente) para poder soportar dichos
servicios, de manera que estos servicios fueron instalados en las máquinas correspondientes:
[root@:~]# yum install -y nfs-utils nfs-utils-lib
[root@:~]# yum install -y rpcbind
Luego, se inicializó en el cliente los demonios rpcbind y nfs y en el servidor el demonio nfs:
[root@:~]# service nfs start
[root@:~]# service rpcbind start
A la hora de configurar el sistema para el subdirectorio home fuera accesible, únicamente desde
todas las máquinas (192.168.1.0), se hizo uso de un fichero existente en el servidor “/etc/export”.
En dicho fichero, cada línea define un directorio y las máquinas que están permitidas conectarse a ese
directorio, así como los permisos asociados a cada uno. Por lo tanto, se incorporó una línea al fichero
donde se estableció que todas las máquinas (192.168.1.0) tuvieran permisos de lectura/escritura (rw) y
los accesos de root desde el cliente se convierten en el servidor como un usuario anónimo (root_squash).
Para poderlo realizar en un script de manera automática se utilizó el comando echo y el operador “>>”.
[root@:~]# echo "/home/ 192.168.1.0/24 (rw,root_squash)" >> /
etc/exports
En este punto, ya sólo fue necesario refrescar la nueva configuración, para ello se utilizó el comando
exportfs con las siguientes opciones que se describen a continuación:
Opciones Descripción : exportfs
-a Exporta todos los directorios.
-v Muestra los detalles.
-r Refresca la lista de exportación con cualquier cambio.
6
8. [root@:~]# exports -avr
Una vez terminado con el servidor, se tuvo que configurar el cliente. Aunque primero se tuvo que
crear el directorio donde se importaría el directorio remoto /home, tal como se hizo en la práctica
anterior:
[root@:~]# mkdir -p /import/casa/
Luego, para llevar a cabo la configuración, y poder realizar el montaje, se optó por utilizar la línea
de comandos en vez de estar editando el fichero “/etc/fstab”, mediante el comando mount y sus
opciones:
Opciones Descripción : mount
-t Especifica el tipo de sistema de archivos a instalar.
-o Dice a mount que aplique las opciones que son especificadas para el sistema de archivos que se montará.
[root@:~]# mount -t nfs -o vers=3 192.168.1.10 /home/ /import/
casa
Donde /home sería el directorio remoto, 192.168.1.10 la IP del servidor y /import /casa el
directorio cliente donde se montaría el directorio remoto.
En este directorio, el usuario debe poder crear y borrar ficheros y directorios, pero no debe
poder modificar los permisos del mismo (directorio home del usuario).
Ningún otro usuario del sistema debe poder acceder a este directorio ni a su contenido.
Al tener ya configurado el servidor bajo estos requisitos realizados en la práctica anterior, no se tuvo
que añadir nada nuevo para poder cumplir esta parte. Puesto que aunque todos los usuarios se les den
permiso de lectura y escritura en el directorio de conexión se preservan los permisos del mismo.
7
9. 3. Proyectos en ejecución
Cada proyecto debe tener un directorio bajo el directorio “/export/proyectos” donde se
almacenará la información relativa a los mismos. Debe cumplir:
Este directorio debe residir físicamente en el servidor.
Sólo podrán acceder los ordenadores de la organización a este directorio.
Este directorio debe ser accesible desde cualquier ordenador de la organización en la ruta
“/import/proyectos”.
Se actuó de igual manera que en el apartado 2. Aunque esta vez no se tuvo que instalar los paquetes
NFS ni rpcbind, ni inicializar los demonios puesto que ya están corriendo.
En el cliente:
[root@:~]# echo "/export/proyectos/ 192.168.1.0/24 (rw,root
_squash)" >> /etc/exports
[root@:~]# exports -avr
En el servidor:
[root@:~]# mkdir -p /import/proyectos/
[root@:~]# mount -t nfs -o vers=3 192.168.1.10 /export/proyectos
/ /import/proyectos/
Todos los usuarios que participan en un proyecto deben tener la posibilidad de leer, modificar,
crear y borrar los archivos que forman parte del proyecto.
Cuando un usuario cree un archivo en el directorio del proyecto, por defecto, éste debe poder
ser leído, modificado o borrado por cualquier otro usuario del mismo proyecto, mientras que
el resto de los usuarios tendrán denegado el acceso a estos directorios.
Al tener ya configurado el servidor bajo estos requisitos realizados en la práctica anterior, no se tuvo
que añadir nada nuevo para poder cumplir esta parte.
8
10. 4. Proyectos en ejecución
El servidor debe ofrecer un directorio denominado “/export/info/comun” para cualquier
ordenador o usuario que quiera utilizarlo. Este directorio será de sólo lectura y todos los accesos
deberán ser considerados como anónimos.
En este apartado, aunque los requerimientos son similares a los de los apartados 2 y 3, se diferencia
por las opciones permitidas en el directorio del servidor. Para suplir estas restricciones se utilizó las
opciones de sólo lectura (ro), la de que todos los accesos se transforman en accesos de usuarios anónimos
y la de especificación de la identidad del grupo de usuario (anongid, que es un grupo ya creado en el
servidor llamado comun). Por el resto, como puede observarse sigue igual:
En el cliente:
[root@:~]# echo "/export/info/comun/ 192.168.1.0/24 (ro,all
_squash,anongid=487)" >> /etc/exports
[root@:~]# exports -avr
En el servidor:
[root@:~]# mkdir -p /import/info/comun/
[root@:~]# mount -t nfs -o vers=3 192.168.1.10 /export/info/
comun/ /import/info/comun/
5. Situación actual de la Organización
En la actualidad, la empresa tiene la misma configuración de usuarios y proyectos que fueron
definidos para la práctica 1.
Como ya se ha comentado en apartados anteriores, al realizar una importación de la gestión de usua-
rios, grupos, directorios y proyectos desde el servidor al cliente, no se tuvo que realizar ninguna operación
adicional gracias a los servicios de NFS y NIS. Debido a que en el servidor todos estos requerimientos
ya estaban contemplados y realizados.
9
11. ANEXOS
A. Autofs
En este anexo se muestra una alternativa más efeciente para montar las particiones que se realiza-
ron en los apartados de la práctica. La que se propuso fue modificando el archivo /etc/fstab, que
nos llevaría a tener montado el directorio remoto en la máquina cliente. Para evitar esto, se utilizará el
servicio automount, que montará las particiones de forma automática y bajo demanda. Es decir, una
vez ejecutado el servicio autofs al arranque del sistema, cuando se accede a un punto de montaje, este
servicio invoca al automount para que recorra cada línea del fichero “/etc/auto.master”. Y se
desactiva transcurrido un tiempo sin utilizar.
En primer lugar será necesario instalar el paquete “autofs” que será el que nos permita poder
realizar lo antes comentado:
[root@:~]# yum install -y autofs
Luego, se edita el fichero “/etc/auto.master” en el cual se le añadirá una línea por cada
punto de montaje (“/import/casa/”, “/import/proyectos/” y “/import/info/” ) en el
sistema con su fichero NIS correspondiente (“/etc/ auto.casa”, “/etc/auto.proyectos”
y /etc/auto.comun”).
[root@:~]# echo "/import/casa/ /etc/auto.casa" >> /etc/auto.
master
[root@:~]# echo "/import/proyectos/ /etc/auto.proyectos" >> /etc
/auto.master
[root@:~]# echo "/import/info/ /etc/auto.info" >> /etc/auto.
master
A continuación, se crean los ficheros NIS que constarán de 3 partes. La primera indicará la ruta de
búsqueda situada en el punto de montaje (en este caso, se usó el comodín “*” que hará uso de todos los
archivos y subdirectorio), la segunda serán las opciones (que en nuestro caso, no se hizo uso de ellas) y
la tercera indicará la ubicación donde se encuentra el directorio original.
[root@:~]# echo "* 192.168.1.10:/home/&" >> /etc/auto.casa
[root@:~]# echo "* 192.168.1.10:/export/proyectos/&" >> /etc/
auto.proyectos
[root@:~]# echo "* 192.168.1.10:/export/info/&" >> /etc/auto.
info
Por último, se inicializa el demonio y se hacen efectivos todos los cambios realizados.
[root@:~]# service autofs start
10
12. A continuación, se describe una alternativa a los montajes de archivos. Esta vez se realizará el ser-
vicio automount utilizando el servicio LDAP. Para ello, se creará un nuevo esquema de configu-
ración que se ajuste mejor a lo que nosotros necesitamos. Para ello, se edita el fichero /etc/openlda-
p/slapd/cn=config/olcDatabase=/0/config.ldif añadiendo al atributo “olcRootDN” el valor: cn=admin,
cn=config, además, en este caso se añadió el atributo “olcRootPW” y como valor la contraseña cifrada
(tal como se hizo en el apartado 1.
Posteriormente, se bajó el archivo .ldif con el esquema proporcionado por el profesor cuyo contenido
es el siguiente:
1 dn: cn=autofs,cn=schema,cn=config
2 objectClass: olcSchemaConfig
3 cn: autofs
4 olcAttributeTypes: {0}( 1.3.6.1.1.1.1.25 NAME ’automountInformation’ DESC ’Inf
5 ormation used by the autofs automounter’ EQUALITY caseExactIA5Match SYNTAX 1.
6 3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
7 olcObjectClasses: {0}( 1.3.6.1.1.1.1.13 NAME ’automount’ DESC ’An entry in an
8 automounter map’ SUP top STRUCTURAL MUST ( cn $ automountInformation $ object
9 class ) MAY description )
10 olcObjectClasses: {1}( 1.3.6.1.4.1.2312.4.2.2 NAME ’automountMap’ DESC ’An gro
11 up of related automount objects’ SUP top STRUCTURAL MUST ou )
Y por último, se añadió el esquema al ldap con el comando ldapadd comentado en el anexo 1:
[root@:~]# ldapadd -xD "cn=admin,cn=config" -W -f autofs.ldif
Para acabar se deberá introducir las entradas necesarias para configurar el autofs tal como lo había
definido antes. El fichero .ldif que se hizo necesario fue el siguiente:
1 dn: ou=admin,dc=as07,dc=org
2 ou: admin
3 objectClass: top
4 objectClass: organizationalUnit
5
6 dn: ou=automount,ou=admin,dc=as07,dc=org
7 ou: automount
8 objectClass: top
9 objectClass: organizationalUnit
10
11 dn: ou=auto.master,ou=automount,ou=admin,dc=as07,dc=org
12 ou: auto.master
13 objectClass: top
14 objectClass: automountMap
15
16 dn: cn=/import/casa,ou=auto.master,ou=automount,ou=admin,dc=as07,dc=org
17 cn: /import/casa
18 objectClass: top
19 objectClass: automount
20 automountInformation: ldap:ou=auto.casa,ou=automount,ou=admin,dc=as07,dc=org --timeout
=60 --ghost
21
22 dn: cn=/import/proyectos,ou=auto.master,ou=automount,ou=admin,dc=as07,dc=org
23 cn: /import/proyectos
24 objectClass: top
25 objectClass: automount
26 automountInformation: ldap:ou=auto.proyectos,ou=automount,ou=admin,dc=as07,dc=org --
timeout=60 --ghost
27
11
13. 28 dn: cn=/import/info,ou=auto.master,ou=automount,ou=admin,dc=as07,dc=org
29 cn: /import/info
30 objectClass: top
31 objectClass: automount
32 automountInformation: ldap:ou=auto.info,ou=automount,ou=admin,dc=as07,dc=org --timeout
=60 --ghost
33
34 dn: ou=auto.casa,ou=automount,ou=admin,dc=as07,dc=org
35 ou: auto.casa
36 objectClass: top
37 objectClass: automountMap
38
39 dn: cn=*,ou=auto.casa,ou=automount,ou=admin,dc=as07,dc=org
40 cn: *
41 objectClass: top
42 objectClass: automount
43 automountInformation: -fstype=nfs,rw,hard,intr,nodev,exec,nosuid,rsize=8192,wsize=8192
192.168.1.10:/home/&
44
45 dn: ou=auto.info,ou=automount,ou=admin,dc=as07,dc=org
46 ou: auto.info
47 objectClass: top
48 objectClass: automountMap
49
50 dn: cn=*,ou=auto.info,ou=automount,ou=admin,dc=as07,dc=org
51 cn: *
52 objectClass: top
53 objectClass: automount
54 automountInformation: -fstype=nfs,rw,hard,intr,nodev,exec,nosuid,rsize=8192,wsize=8192
192.168.1.10:/export/info/&
55
56 dn: ou=auto.proyectos,ou=automount,ou=admin,dc=as07,dc=org
57 ou: auto.proyectos
58 objectClass: top
59 objectClass: automountMap
60
61 dn: cn=*,ou=auto.proyectos,ou=automount,ou=admin,dc=as07,dc=org
62 cn: *
63 objectClass: top
64 objectClass: automount
65 automountInformation: -fstype=nfs,rw,hard,intr,nodev,exec,nosuid,rsize=8192,wsize=8192
192.168.1.10:/export/proyectos/&
Y se añade tal como se hizo antes, pero al DIT 1 que ya teníamos definido en el anexo 1:
[root@:~]# ldapadd -xD "cn=Manager,dc=as07,dc=org" -W -f auto.
ldif
cn=admin
ou=automount
ou=auto.master ou=auto.casa ou=auto.proyectos ou=auto.info
* * *
cn=/import/casa cn=/import/proyectos cn=/import/info
12
14. B. Script
A continuación se muestra el código del script que fue creado para la realización de la práctica.
Este script podría mejorarse separando las funciones típicas del servidor de las del cliente, además de
añadir alguna otra interesante. Principalmente, el motivo que conllevo a la realización conjunta fue que
al realizarla en casa, el ordenador era el mismo.
1 #!/bin/bash
2
3 clear
4
5 # Este filtro sólo dejará ejecutar el script al root
6 if [ "‘whoami‘" != "root" ]; then
7 echo -e "n"
8 echo -e "033[1;31m Permiso denegado : No eres root. 033[0m"
9 echo -e "n"
10 exit 1
11 fi
12
13 #***********************************************************************************
14 # FUNCIONES CON ENTRADAS PARA BASE DE OTRAS
15 #***********************************************************************************
16
17 # Es la función que crea la cabecera del scripts
18 function cabecera
19 {
20 clear
21 echo -e "033[1m***********************************************************"
22 echo " $1 "
23 echo -e "***********************************************************"
24 }
25
26 # Función : Activa los demonios necesarios con los parámetros
27 function actDem
28 {
29 service $1 $2
30 }
31
32 # Función : Instala los paquetes necesarios
33 function instalar
34 {
35 yum install $1
36 }
37
38 #***********************************************************************************
39 # FUNCIONES DE LOS MENÚS
40 #***********************************************************************************
41
42 # GESTIÓN DE OpenLDAP : instalarLDAP
43 # Función : Instala todos los paquetes necesarios
44 function instalarLDAP
45 {
46 cabecera "OpenLDAP : INSTALAR PAQUETES LDAP"
47 echo -e "n 033[0m"
48
49 echo -e "033[0;32m Instalando los paquetes necesarios 033[0m"
50 sleep 1
51
52 instalar openldap-servers openldap-clients migrationtools
53
54 echo -e "033[1;34m n"
55 read -p " Presiona [ENTER] para continuar. " enterKey
56 echo -e "033[0m"
57 }
58
59 # GESTIÓN DE OpenLDAP : instalar
13
15. 60 # Función : Instala todos los paquetes necesarios
61 function addLDAP
62 {
63 cabecera "OpenLDAP : ANADIR LDAP"
64 echo -e "n 033[0m"
65
66 echo -e "033[0;32m Ej: DN: cn=Manager,dc=as07,dc=org 033[0m"
67 sleep 1
68 read -p " Nombre Distinguido : " DN
69 if [ -z "$DN" ]; then
70 DN="cn=Manager,dc=as07,dc=org"
71 fi
72
73 read -p " Fichero ldif : " fichero
74 if [ -n "$DN" ]; then
75 ldapadd -xD "$DN" -W -f $fichero
76 else
77 echo -e -n "033[1;31m No se ha introducido fichero. 033[0m"
78 fi
79
80 echo -e "033[1;34m n"
81 read -p " Presiona [ENTER] para continuar. " enterKey
82 echo -e "033[0m"
83 }
84
85 # GESTIÓN DE NFS : Configurar Servidor
86 # Función : Se instala los paquetes y se tratan los demonios
87 function confServer
88 {
89 cabecera "NFS : CONFIGURAR SERVIDOR"
90 echo -e "n 033[0m"
91
92 echo -e "033[0;32m Instalando los paquetes necesarios 033[0m"
93 sleep 1
94
95 instalar nfs-utils nfs-utils-lib
96 actDem iptables stop
97 actDem slapd start
98
99 echo -e "033[1;34m n"
100 read -p " Presiona [ENTER] para continuar. " enterKey
101 echo -e "033[0m"
102 }
103
104 # GESTIÓN DE NFS : addDirect
105 # Función : Se añaden los directorios a compartir
106 function compDirect
107 {
108 cabecera "NFS : ANADIR DIRECTORIO"
109 echo -e "n 033[0m"
110
111 read -p " Directorio Compartir : " directorio
112 read -p " IP Clientes : " IP
113 if [ -z "$IP" ]; then
114 IP="192.168.1.0/24"
115 fi
116 read -p " Permisos : " permisos
117 if [ -z "$permisos" ]; then
118 permisos="rw,root_squash"
119 fi
120
121 # Añadir aquí que si directorio = NULL entonces no hacer nada
122 echo "$directorio $IP($permisos)" >> /etc/exports
123 echo -e "n 033[0m"
124
125 exportfs -rav
126
127 echo -e "033[1;34m n"
128 read -p " Presiona [ENTER] para continuar. " enterKey
129 echo -e "033[0m"
14
16. 130 }
131
132 # GESTIÓN DE NFS : Configurar Cliente
133 # Función : Se instala los paquetes y se tratan los demonios
134 function confServer
135 {
136 cabecera "NFS : CONFIGURAR CLIENTE"
137 echo -e "n 033[0m"
138
139 echo -e "033[0;32m Instalando los paquetes necesarios 033[0m"
140 sleep 1
141
142 instalar nfs-utils rpcbind
143 actDem rpcbind start
144
145 echo -e "033[0;32m Comprobamos la informacion 033[0m"
146 sleep 1
147 rpcinfo -p
148
149 echo -e "033[1;34m n"
150 read -p " Presiona [ENTER] para continuar. " enterKey
151 echo -e "033[0m"
152 }
153
154 # GESTIÓN DE NFS : Montar
155 # Función : Se monta la máquina en el cliente
156 function montar
157 {
158 cabecera "NFS : MONTAR"
159 echo -e "n 033[0m"
160
161 read -p " Directorio Servidor : " directorioServer
162 read -p " Directorio Cliente : " directorioClient
163 read -p " IP Servidor : " IP
164 if [ -z "$IP" ]; then
165 IP="192.168.1.10"
166 fi
167
168 # Añadir aquí que si directorio = NULL entonces no hacer nada
169 mount -t nfs -o vers=3 $IP:$directorioServer $directorioClient
170
171 echo -e "033[1;34m n"
172 read -p " Presiona [ENTER] para continuar. " enterKey
173 echo -e "033[0m"
174 }
175
176 # GESTIÓN DE NFS : Desmontar
177 # Función : Se desmonta la máquina en el cliente
178 function umontar
179 {
180 cabecera "NFS : DESMONTAR"
181 echo -e "n 033[0m"
182
183 read -p " Directorio a Desmontar : " directorioClient
184
185 # Añadir aquí que si directorio = NULL entonces no hacer nada
186 umount $directorioClient
187
188 echo -e "033[1;34m n"
189 read -p " Presiona [ENTER] para continuar. " enterKey
190 echo -e "033[0m"
191 }
192
193 # GESTIÓN DE AUTOFS : instalarAutofs
194 # Función : Instala todos los paquetes necesarios
195 function instalarAuto
196 {
197 cabecera "OpenLDAP : INSTALAR PAQUETES Autofs"
198 echo -e "n 033[0m"
199
15
19. C. Seguridad
A continuación se muestra el código del script que fue creado para la otorgar una mayor seguridad
a la hora de la realización de la práctica. Ya que al realizarla siempre se paraba el demonio iptables.
Con este script, no nos haría falta pararlo tan sólo ejecutar el script (./iptablesScript) cada vez que se
iniciace el sistema.
[root@:~]# service iptables stop
Aunque tiene el inconveniente de que el servicio NFS no tiene puerto fijo, y se tendría que buscar
cada vez que se iniciace.
1 #!/bin/bash
2 ## SCRIPT de IPTABLES
3 ## Internet: eth1 - IP dinámica
4 ## Red Local: eth1 - 192.168.1.0/24
5
6 # Borrar reglas:
7 iptables -F
8 iptables -X
9 iptables -Z
10 iptables -t nat -F
11
12 # Política por defecto (-P) (aceptar):
13 iptables -P INPUT ACCEPT
14 iptables -P OUTPUT ACCEPT
15 iptables -P FORWARD ACCEPT
16 iptables -t nat -P PREROUTING ACCEPT
17 iptables -t nat -P POSTROUTING ACCEPT
18
19 # Permiso acceso local (-A anexar, -i interface, -j jump):
20 iptables -A INPUT -i lo -j ACCEPT
21
22 # Acceso al Servidor desde la red local (-s origen)
23 iptables -A INPUT -s 192.168.1.0/24 -i eth1 -j ACCEPT
24
25 # Enmascarando la ip de la red local con IP pública dinámica:
26 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
27
28 # Cerrar acceso al puerto LDAP salvo para localhost (-p protocolo, --dport puerto
entrada)
29 iptables -A INPUT -i lo -p tcp --dport 389 -j ACCEPT
30 iptables -A INPUT -i eth0 -p tcp --dport 389 -j REJECT
31
32 # Cerrar los accesos indeseados del exterior
33 iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 1:1024 -j DROP
34 iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p ucp --dport 1:1024 -j DROP
35
36 service iptables start
37
38 # Comprobamos el estado final de la máquina
39 iptables -L -n
18