Sistemas Operativos Avanzados
Sistemas Operativos Avanzados Karla Reyes Burgos
1
Sistemas Operativos Avanzados
Cuaderno de trabajo de
Sistemas Operativos Avanzados Autor Ing. Karla Reyes Burga Chiclayo 2012 Escuela de Ing. De Sistemas y Computación Facultad de Ingeniería Universidad Católica Santo Toribio de Mogrovejo
Copyright 2012, esta obra se publica bajo una licencia Creative Commons
Cuaderno de trabajo elaborado para la Escuela de Ing. De sistemas y Computación. Facultad de Ingeniería. Universidad Católica Santo Toribio de Mogrovejo – USAT está licenciado bajo una Creative Commons Reconocimiento-No-Comercial-Compartir Igual 3-0 Unported License.
2
Sistemas Operativos Avanzados
PRESENTACIÓN
La asignatura de Sistemas Operativos Avanzados es de naturaleza teórico - práctica y brinda a los participantes los conocimientos y habilidades que le permitan configurar y administrar servicios de información, apoyados principalmente en las capacidades inherentes a los Sistemas Operativos libres, esto le permitirá ser capaz de atender las necesidades de una organización, para la formulación e implementación de servicios.
Al concluir satisfactoriamente la asignatura, el estudiante estará en las condiciones de tener un entendimiento claro de los servicios de los Sistemas Operativos; aplicando principios de configuración sobre una plataforma de Software Libre.
3
Sistemas Operativos Avanzados
INDICE
Introducci贸n
5
CAPITULO I: Administraci贸n del Sistema
6
El administrador de Sistemas
6
Organizaci贸n de los Directorios en Linux
9
El Entorno de Texto
10
CAPITULO II: Configuraci贸n de Servicios
13
Servicio Web
13
Servicio Proxy
14
Servicio FTP
19
Referencias
21
4
Sistemas Operativos Avanzados
INTRODUCCIÓN
Las empresas modernas saben de las múltiples ventajas que se obtienen al incorporar tecnología y especialmente sistemas informáticos en sus procesos; éstos últimos son apreciados por que agilizan tiempos, mejoran la calidad, le proporcionan un mejor nivel en la toma de decisiones a los directivos, ajustan controles eficientes en su operación y por consecuencia les permiten dar un paso muy importante en el desarrollo de la organización; proporcionando respuestas ágiles y oportunas a sus clientes, construyendo una imagen de empresas confiables.
Para que estos sistemas sean altamente productivos, trabajan en base a los servidores y datos de los que dispone, sin embargo para que el éxito final dependa de los servicios informatizados que se ofrecen, es necesario contar con un administrador de sistemas quien es el responsable de su correcto funcionamiento y de su seguridad. Es poresto que el administrador debe ser una persona altamente capacitada, con amplios conocimientos en sistemas operativos, redes, programación y así también de seguridad informática.
En este cuaderno de trabajo se van a tratar los conceptos más importantes relacionados con la administración de sistemas: las diferentes funciones que realiza un administrador y los servicios que ofrecen los servidores. Su empleo es complementario a los recursos y actividades considerados en el aula virtual de la asignatura.
5
Sistemas Operativos Avanzados
CAPITULO I Administración del Sistema
El administrador de Sistemas Iniciamos este capítulo haciéndonos una pregunta, ¿Por qué necesitan ser administrados los sistemas?, podemos ensayar una respuesta: los sistemas necesitan ser operados por profesionales, éstos deben tener un mantenimiento y supervisión continua y constante para garantizar su seguridad y estabilidad, eso nos trae a la mente otra serie de cuestionamientos: ¿Qué tipo de profesional será ese?, ¿Cuál será su rol?, ¿Cuáles serán las normas éticas que lo deberá regir?
Según se refiere [1] un Administrador de sistemas es el profesional que tiene la responsabilidad de ejecutar, mantener, operar y asegurar el correcto funcionamiento de un sistema informático y/o una red de cómputo. El administrador de sistemas por lo general ha cursado un programa de estudio en el que se incluyen áreas del conocimiento en la ingeniería del software, además de gestión de redes y telecomunicaciones. Los administradores de sistemas son por lo regular miembros del departamento de tecnologías de información, electrónica o ingeniería de telecomunicaciones.
Respecto a las funciones [2] se nos indica que la primera regla del administrador de sistema es la de proporcionar y mantener acceso a los recursos del sistema. Independientemente de la plataforma informática de que se trate, todos los sistemas operativos proporcionan mecanismos para manipular recursos los cuales van desde los archivos, las aplicaciones, los dispositivos de E/S, el ancho de banda, los ciclos de la CPU, la memoria y el espacio en disco.
La importancia del cargo de administrador de sistema va evolucionando, por lo que
se ha
desarrollado una escala según la experiencia del profesional [3]:
Administrador Novato
Este tipo de administrador es capaz de explicar los procedimientos simples sea por escrito o verbalmente, se familiariza con los comandos de los sistemas operativos a utilizar y utiliza dispositivos de entrada y salida. Realiza rutinas o trabajos bajo supervisión de administradores de más alto rango 6
Sistemas Operativos Avanzados
Administrador de sistemas Junior Este administrador administra un sitio pequeño, uniforme o de igual manera ayuda a un sistema mayor, trabaja bajo la supervisión de administrador de sistemas Intermedio. Administrador de sistemas Intermedio Es independiente en la resolución de problemas pues maneja en si una auto dirección, tiene un buen entendimiento en sistemas operativos UNIX, tiene la habilidad de escribir scripts en un lenguaje administrativo como son por ejemplo VBScript, tiene la capacidad de manejar programas en lenguaje de programación de alto nivel como C.
Administrador de sistemas Senior Este administrador optimiza los procesos requeridos a utilizar en el sistema cual sea a administrar, tiene la facilidad en programar como en VBScript y de igual forma realizar pequeños programas en lenguajes de programación como son C y C#.
Este administrador administra sitios grandes pues cuanta con más experiencias que los otros administradores, establece y recomienda políticas sobre los usos de los sistemas y de igual forma también sus propios recursos.
El desarrollo de sus funciones deben respetar las normas éticas de su cargo las cuales han sido establecidas por USENIX, the Advanced Computing Systems Association [4]:
Código de la ética de los Administradores de Sistemas Nosotros, como administradores de sistemas profesionales, por la presente nos comprometemos a los más altos estándares de conducta ética y profesional, y estamos de acuerdo en guiarnos por este código ético, y animamos a que haga lo mismo cada administrador de sistemas. Profesionalidad •Mantendré una conducta profesional en el lugar de trabajo y no permitiré que mis asuntos o creencias personales causen que trate a la gente de una manera injusta o poco profesional. Integridad personal •Seré honesto en mis tareas como profesional y sobre mis competencias y el impacto de mis errores. Buscaré ayuda en otros cuando sea necesario. •Evitaré conflictos de intereses y prejuicios siempre que sea posible. Cuando se me pida consejo, si tengo un conflicto de interese o prejuicio, declararé lo que es apropiado, y me recluiré en mí mismo en caso de necesidad.
7
Sistemas Operativos Avanzados
Privacidad •Accederé a información privada en sistemas informáticos solo cuando sea necesario en el curso de mis funciones técnicas. Mantendré y protegeré la confidencialidad de cualquier información a la cual haya podido tener acceso, sin importar el método con el cual tuve conocimiento de ella. Normas y políticas •Me educaré a mí mismo y a otros en normas relevantes, regulaciones, y políticas con respecto a la ejecución de mis funciones. Comunicación •Me comunicaré con dirección, usuarios, y compañeros sobre asuntos informáticos de interés mutuo. Me esforzaré en escuchar y entender las necesidades de todas las partes. Integridad del sistema •Me esforzaré en asegurar la integridad, la fiabilidad, y la disponibilidad necesarias de los sistemas de los cuales soy responsable. •Diseñaré y mantendré cada sistema de manera que soporte el propósito del sistema para la organización. Educación •Continuaré poniendo al día y aumentando mis conocimientos técnicos y otras habilidades relacionadas con el trabajo. Compartiré mis conocimientos y experiencia con otros. Responsabilidad hacia la comunidad •Cooperaré con la comunidad para mantener la integridad de la red y de los recursos. Responsabilidad social •Como profesional informado, animaré la redacción y la adopción de políticas relevantes y de normas consecuentes con estos principios éticos. Responsabilidad ética •Me esforzaré en construir y mantener un lugar de trabajo seguro, sano, y productivo. •Daré el máximo para tomar decisiones consecuentes a la seguridad, la privacidad, y el bienestar de mi comunidad y del público, y divulgaré puntualmente los factores que puedan presentar riesgos o peligros no examinados. •Aceptaré y ofreceré críticas honestas sobre si el trabajo técnico es apropiado y acreditaré correctamente las contribuciones de otros. •Daré ejemplo, manteniendo un alto estándar y grado éticos de profesionalidad en el desarrollo de todos mis deberes. Apoyaré a colegas y a compañeros de trabajo a seguir este código ético. Draft del 12 de septiembre de 2003, aprobado el 18 de septiembre de 2003, por el Comité ejecutivo de SAGE y el 30 de septiembre de 2003, por el Ethics Working Group.
Revisa. Se recomienda que profundices este tema con la lectura del capítulo I del libro Administración de Sistemas Linux. de M Carling y otros [2] denominado “La primera regla”
8
Sistemas Operativos Avanzados
Organización de los Directorios en Linux En UNIX, Linux y sistemas similares como BSD, todos los archivos y directorios aparecen bajo el directorio raíz, “/” (El equivalente en el mundo Unix al C:\ de Windows) aun cuando se encuentren en distintos discos/dispositivos. En Linux/Unix no existen letras de discos (C:, D:, etc) Los dispositivos se 'montan' (empiezan a formar parte) del árbol de directorios del sistema:
Figura 1: Directorios de Linux Existe un estándar, el "Estándar de jerarquía de archivos" (FHS – Filesystem Hierarchy Standard) que intenta definir unas bases, para que tanto los programas del sistema, como los usuarios y administradores, sepan dónde encontrar lo que buscan. A continuación presentamos una lista con los directorios más importantes que conforman ésta jerarquía y para que se usan. Si desea ver su contenido puede usar el comando cd 'nombre del directorio'. Para acceder a los mismos puede usar el comando ls -l 'nombre del directorio'. o o o o o o o o o o o o o o
/ : Jerarquía primaria, la raíz o root, y directorio raíz o contenedor de todo el sistema de jerarquía. /bin/: comandos básicos para todos los usuarios del sistema. /boot/: archivos estáticos necesarios para el arranque del sistema. /dev/: dispositivos del sistema. /etc/: archivos de configuración del sistema y de las aplicaciones instaladas en el mismo. /home/: directorio para poner las carpetas home de los usuarios. /lib/: librerías esenciales para el núcleo del sistema y módulos /mnt/: punto de montaje temporal para dispositivos. /proc/: procesos y variables del núcleo del sistema. /root/: directorio home para el root del sistema. /sbin/: comandos especiales para el root del sistema. /tmp/: archivos temporales. Según la distribución utilizada (o la configuración que utilicemos) se borran al arrancar el sistema o cada cierto período de tiempo. /usr/: segunda estructura jerárquica, utilizada para almacenar todo software instalado en el sistema. /var/: directorio para los spoolers de impresión, archivos de log, etc. 9
Sistemas Operativos Avanzados Cuando ingresamos al sistema (log in) éste nos saluda con un prompt que luce así: $ El prompt que usted realmente vea en su sistema puede lucir un tanto diferente. Puede contener el nombre de host de su sistema hostname, el nombre de directorio actual de trabajo, ambos, etc. El programa que imprimió ese prompt en su pantalla se llama “shell” (cáscara en español), y es muy probable que su shell particular sea uno llamado bash.
Figura 2: Entorno de texto o línea de comandos de Linux Busca. Puedes revisar mayor información sobre el estándar FHS En http://www.pathname.com/fhs/pub/fhs-2.3.html y complementa lo indicado con http://es.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
El Entorno de Texto Bash, es un acrónimo para Bourne-again-shell (shell re-nacido), es el shell por defecto en la mayoría de los sistemas Linux. El trabajo de un shell es obedecer los comandos de manera que tú puedas interactuar con el sistema Linux. Puede revisar que bash estamos utilizando tipeando: $ echo $SHELL resultado -> /bin/bash Comencemos a usar bash para navegar alrededor de nuestro sistema de archivos filesystem. En el prompt, tipee lo siguiente (obviamente sin incluir el $): Comando cd $ cd / Con esto hemos dicho a bash que queremos trabajar en el directorio /, también conocido como root (raíz). Todos los directorios en el sistema forman un árbol, y / es considerado la raíz de este. cd abre al directorio donde trabajaremos, también conocido como “current working directory” (actual directorio de trabajo). 10
Sistemas Operativos Avanzados Comando pwd Para ver el directorio actual de trabajo de bash, escribamos: Comando ls Sirve para listar el contenido del directorio actual de trabajo Comando mkdir Puede ser usado para crear directorios nuevos. Comando touch El comando touch (tocar) sirve para crear un archivo. Crearemos el archivo archivoprueba en /tmp: $ cd /tmp $ touch archivoprueba Si el archivo no existiera, entonces se crea un archivo vacío nuevo. Tendrá entonces el archivo /tmp/archivoprueba Comando echo Ahora que el archivo existe, le agregaremos algunos datos. A esto podemos hacerlo mediante el comando echo (eco), que toma sus argumentos y los imprime en la salida estándar (standard output). Primero, sólo el comando echo: $ echo "primerarchivo" primerarchivo Redireccionamos el contenido: $ echo primerarchivo > archivoprueba Comando cat Para ver los contenidos de un archivo en una terminal, usemos el comando cat: $ cat archivoprueba primerarchivo Comando cp Bien. Ahora podemos hacer una invocación básica del comando cp para crear el archivo archivopruebacopia, siendo este una copia del original archivoprueba $ cp archivoprueba archivopruebacopia Si investigamos, veremos que son distintos archivos, pues sus números de inodos son diferentes $ ls -i archivoprueba archivopruebacopia xxxxxx1 archivoprueba xxxxxx2 archivopruebacopia 11
Sistemas Operativos Avanzados Comando mv Usemos ahora el comando mv para renombrar “archivoprueba” a “merenombraron”. El número de inodo permanecerá igual; sin embargo, el nombre del archivo que apunta a él si cambiaría: $ mv archivoprueba merenombraron $ ls -i merenombraron 648284 merenombraron Otros comandos:
id = datos sobre el usuario y el grupo que está utilizando. uname = datos generales de sobre el sistema en el que ésta, acompañarlo de atributos como –a. hostname = Muestra el nombre de la red, acompañado de atributos como –I, se ofrece número de IP del Host. w = Muestra a usuarios conectados en el instante.
Uso de Disco
du = permite conocer en disco el tamaño de archivos o directorios, acompañarlo de atributos como –sh.
df = permite conocer el espacio libre y ocupado de cada una de las unidades del sistema, sean estos discos duros o unidades extraíbles. Se suele acompañar de –h para obtener un formato más legible.
Editor de texto nano Es un sencillo editor de textos para el terminal que viene instalado por defecto en Ubuntu nano nombre_archivo donde nombre_archivo será el nombre del archivo que queramos editar. En caso de que el archivo no existiera, se creará un archivo vacío con ese nombre Para un listado de Comando con sus usos revisa la página de GUIA RÁPIDA DE COMANDOS LINUX del sitio Linux Total http://www.linuxtotal.com.mx/index.php?cont=info_admon_002
12
Sistemas Operativos Avanzados CAPITULO II Configuración de Servicios Linux ofrece multitud de servicios o servidores, estos pueden iniciar o arrancar junto con la carga del sistema o pueden después ser puestos a funcionar cuando se requieran (es lo mejor). Parte esencial de la administración de sistemas Linux es continuamente trabajar con los servicios que este proporciona, cosa que es bastante sencilla. Estudiaremos como iniciar/detener/reiniciar. Los servicios de un equipo GNU/Linux. Dentro de la carpeta ubicada en /etc o en /etc/rc.d dependiendo de la distribución, se encuentran una serie de scripts que permiten iniciar/detener la gran mayoría de los servicios/servidores que estén instalados en el equipo. Estos script están programados de tal manera que la mayoría reconoce los siguientes argumentos: o o o o
start stop restart status
En varias distribuciones, como Fedora o RedHat, existe el comando service, este comando permite también iniciar y/o detener servicios, con service se indica de la siguiente manera: #> service mysql status Checking for service MySQL: stopped Si se desea iniciarlo: #> service mysql start Starting service MySQL Servicio Web Actualmente, el servicio web es el servicio más popular, en Internet, al igual que el servicio de correo. El que desea tener presencia en Internet debe de tener su página web, la cual informará al mundo todo lo referente a su negocio. El servicio de WWW actualmente se presenta como una interfaz multimedia, sonidos, imágenes y clips de video los cuales proveen la fascinación de "Navegar en Internet". En Linux se puede implementar el servicio web con diversos programas: Apache Cherokee, Lighttpd y Thttpd.
Figura 3: programas para implementar el servicio web
13
Sistemas Operativos Avanzados [8] El servicio HTTP Apache es un servidor HTTPD de código abierto para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.12 y la noción de sitio virtual. Cuando comenzó su desarrollo en 1995 se basó inicialmente en código del popular NCSA HTTPd 1.3, pero más tarde fue reescrito por completo. Su nombre se debe a que Behelendorf quería que tuviese la connotación de algo que es firme y enérgico pero no agresivo, y la tribu Apache fue la última en rendirse al que pronto se convertiría en gobierno de EEUU, y en esos momentos la preocupación de su grupo era que llegasen las empresas y "civilizasen" el paisaje que habían creado los primeros ingenieros de internet. Además Apache consistía solamente en un conjunto de parches a aplicar al servidor de NCSA. Era, en inglés, a patchy server (un servidor "parcheado"). Apache es el servidor más popular en Internet puedes consultar estadísticas en Netcraft (http://www.netcraft.com)
Recomendable revisar el artículo “March 2009 Web Server Survey” http://news.netcraft.com/archives/2009/03/15/march_2009_web_server_survey.html Servicio Proxy El proxy es como una carpeta (gigante) de archivos temporales, en la que cuando una persona se conecta a Internet y pide una información, ésta se queda grabada en el proxy mientras te la envía, así si tú u otra persona vuelve a pedir la misma información, en lugar de ir a nuevamente al servidor desde donde ésta se obtuvo a buscarte la página (tomarse su tiempo, ocupar ancho de banda, etc), la baja directamente de proxy.
14
Sistemas Operativos Avanzados
Nota 1. El cliente realiza una petición (p. ej. mediante un navegador web) de un recurso de Internet (una página web o cualquier otro archivo) especificador por una URL. 2. Cuando el proxy caché recibe la petición, busca la URL resultante en su caché local. Si la encuentra, contrasta la fecha y hora de la versión de la página demandada con el servidor remoto. Si la página no ha cambiado desde que se cargó en caché la devuelve inmediatamente, ahorrándose de esta manera mucho tráfico pues sólo intercambia un paquete para comprobar la versión. Si la versión es antigua o simplemente no se encuentra en la caché, lo captura del servidor remoto, lo devuelve al que lo pidió y guarda o actualiza una copia en su caché para futuras peticiones.
Servidor Proxy Un proxy es un programa o dispositivo que realiza una tarea acceso a Internet en lugar de otra computadora. Un proxy es un punto intermedio entre un computador conectado a Internet y el servidor al que está accediendo. Cuando navegamos a través de un proxy, nosotros en realidad no estamos accediendo directamente al servidor, sino que realizamos una solicitud sobre el proxy y es éste quien se conecta con el servidor que queremos acceder y nos devuelve el resultado de la solicitud.
Características La palabra proxy se usa en situaciones en donde tiene sentido un intermediario. El uso más común es el de servidor proxy, que es un ordenador que intercepta las conexiones de red que un cliente hace a un servidor de destino. De ellos, el más famoso es el servidor proxy web (comúnmente conocido solamente
proxy .
Intercepta la navegación de los clientes por páginas web, por varios motivos posibles: seguridad, rendimiento, anonimato, etc. También existen proxies para otros protocolos, como el proxy de FTP. El proxy ARP puede hacer de enrutador en una red, ya que hace de intermediario entre ordenadores. Proxy (patrón de diseño) también es un patrón de diseño (programación) con el mismo esquema que el proxy de red. Un componente hardware también puede actuar como intermediario para otros. Como se ve, proxy tiene un significado muy general, aunque siempre es sinónimo de intermediario.
15
Sistemas Operativos Avanzados Ventajas En general los proxies hacen posible: Control: Solo el intermediario hace el trabajo real, por tanto se pueden limitar y restringir los derechos de los usuarios, y dar permisos sólo al proxy. Ahorro: Por tanto, solo uno de los usuarios (el proxy) ha de estar equipado para hacer el trabajo real. Velocidad: Si varios clientes van a pedir el mismo recurso, el proxy puede hacer caché: guardar la respuesta de una petición para darla directamente cuando otro usuario la pida. Así no tiene que volver a contactar con el destino, y acaba más rápido. Filtrado: El proxy puede negarse a responder algunas peticiones si detecta que están prohibidas. Modificación: Como intermediario que es, un proxy puede falsificar información, o modificarla siguiendo un algoritmo. Anonimato: Si todos los usuarios se identifican como uno sólo, es difícil que el recurso accedido pueda diferenciarlos. Pero esto puede ser malo, por ejemplo cuando hay que hacer necesariamente la identificación. Desventajas En general, el uso de un intermediario puede provocar: Abuso: Al estar dispuesto a recibir peticiones de muchos usuarios y responderlas, es posible que haga algún trabajo que no toque. Por tanto, ha de controlar quién tiene acceso y quién no a sus servicios, cosa que normalmente es muy difícil. Carga: Un proxy ha de hacer el trabajo de muchos usuarios. Intromisión: Es un paso más entre origen y destino, y algunos usuarios pueden no querer pasar por el proxy. Y menos si hace de caché y guarda copias de los datos. Incoherencia: Si hace de caché, es posible que se equivoque y dé una respuesta antigua cuando hay una a más reciente en el recurso de destino. En realidad este problema no existe con los servidores proxy actuales, ya que se conectan con el servidor remoto para comprobar que la versión que tiene en caché sigue siendo la misma que la existente en el servidor remoto. Ejemplo de Funcionamiento El usuario de un proveedor de servicios de Internet-PSI, (como Claro o Telefónica) manda una petición a Google la cual llega en un inicio al servidor Proxy que tiene este PSI, ésta petición no va directamente a la dirección IP del dominio de Google. Esta página concreta suele ser muy solicitada por un alto porcentaje de usuarios, por lo tanto el PSI la retiene en su Proxy por un cierto tiempo y crea una respuesta en mucho menor tiempo. Cuando el usuario crea una búsqueda en Google el servidor Proxy ya no es utilizado; el PSI envía su petición y el cliente recibe su respuesta, ahora sí desde Google.
16
Sistemas Operativos Avanzados SQUID Existe una variedad de paquetes de software para implementar Proxy en Linux. Squid es el servidor más popular y utilizado entre los sistemas operativos Linux Squid puede hacer proxy y caché con los protocolos HTTP, FTP,GOPHER y WAIS, Proxy de SSL, caché transparente, WWCP, aceleración HTTP, caché de consultas DNS, filtración de contenido y control de acceso por IP y por usuario. Las distribuciones de Linux incorporan el software Squid. En Ubuntu no se instala por defecto, pero se encuentra en sus repositorios, por lo que puede ser instalado a través de Synaptic, Aptitude o apt-get. Su página oficial es http://www.squid-cache.org/. Por defecto el puerto utilizado es el 3128. A través de este puerto recibirá las peticiones de los CLIENTES, únicamente aceptará peticiones de servicios (HTTP, HTTPS, FTP) no proporcionado soporte para el acceso a otros servicios SMTP, POP3, IRC, IMAP, TELNET, SSH (Si se requiere intermediar para cualquier protocolo distinto a HTTP, HTTPS, FTP, GOPHER y WAIS se requerirá hacer uso de un servidor SOCKS como Dante). Instalación Procedemos a la instalación sudo apt-get install Squid Archivos de Configuración
El archive de configuración es squid.conf ubicado en /etc/squid/squid.conf
La base de datos caché es generada en el directorio /var/spool/squid
Los eventos del servicio y su actividad es registrada en distintos archivos localizados en /var/log/squid
Para permitir el acceso a Squid a ciertas direcciones IP de la red local, deberemos crear un archivo que contenga dicha lista, en /etc/squid/listas/redlocal
Configuración Desde la terminal configuraremos el archivo squid.conf localizado en /etc/squid/squid.conf Editaremos los siguientes parámetros que se encuentran en el archivo:
http_port
cache_mem
cache_dir
Luego aquí mismo configuraremos una Lista de Control de Acceso y una Regla de Control de Acceso.
17
Sistemas Operativos Avanzados Configuración de Parámetros el Archivo Squid.Conf Parámetro http_port Este parámetro es utilizado para indicar el puerto a través del cual escuchará peticiones Squid. El valor predeterminado es 3128, es decir, Squid escuchará peticiones a través del puerto 3128/tcp. Squit permite el cambio de puerto a cualquiera que no haga conflicto con otro servicio, comúnmente se puede cambiar por el puerto 8080. http_port 3128 Parámetro cache_mem El parámetro cache_mem establece la cantidad ideal de memoria para lo siguiente:
Objetos en tránsito. Objetos frecuentemente utilizados (Hot). Objetos negativamente almacenados en el caché.
Los datos de estos objetos se almacenan en bloques de 4 Kb. El parámetro cache_mem especifica un límite máximo en el tamaño total de bloques acomodados, donde los objetos en tránsito tienen mayor prioridad. Sin embargo los objetos frecuentemente utilizados (Hot), y aquellos negativamente almacenados en el caché, podrán utilizar la memoria sin utilizar hasta que esta sea requerida. De ser necesario, si un objeto en tránsito es mayor a la cantidad de memoria especificada, Squid excederá lo que sea necesario para satisfacer la petición. Para asignar el valor se debe tener en cuenta que este debe ser aproximadamente 1/3 de la memoria total. De modo predeterminado, desde la versión 3.1 de Squid, se establecen 256 MB, que es más que suficiente para el 99% de las necesidades. Si se dispone de cantidad suficiente de RAM en el servidor (al menos 2 GB RAM), puede especificarse una cantidad mayor, o bien, si se dispone de una cantidad menor de RAM en el servidor (menos de 1 GB RAM), puede especificar una cantidad menor). cache_mem 170 MB *Para una memoria de 512 MB Parámetro cache_dir Este parámetro se utiliza para establecer que tamaño se desea que utilice Squid para almacenamiento de caché en el disco duro. De modo predefinido Squid utilizará un caché de 100 MB, dividido en jerarquías de 16 directorios subordinados, hasta 256 niveles cada uno: cache_dir ufs/var/spool/squid 100 16 256 Se puede incrementar el tamaño del caché hasta donde lo desee el administrador. Mientras más grande sea el caché, más objetos se almacenarán en éste y por lo tanto se consumirá menos el ancho de banda. La siguiente línea establece un caché de 2 GB: cache_dir ufs/var/spool/squid 2048 16 256
18
Sistemas Operativos Avanzados Servicio FTP Es uno de los servicios fundadores de Internet, File Transfer Protocol [10] permite mover uno o más archivos con seguridad entre distintas computadoras proporcionando seguridad y organización de los archivos así como control de la transferencia.
Figura 4: Servicio de Transferencia de Archivos Funcionamiento El servicio FTP es ofrecido por la capa de aplicación del modelo de capas de red TCP/IP al usuario, utilizando normalmente el puerto de red 20 y el 21. Un problema básico de FTP es que está pensando para ofrecer la máxima velocidad en la conexión, pero no la máxima seguridad, ya que todo el intercambio de información, desde el login y password del usuario en el servidor hasta la transferencia de cualquier archivo, se realiza en texto plano sin ningún tipo cifrado, con lo que un posible atacante puede capturar este tráfico, acceder al servidor, o apropiarse de los archivo transferidos. Para solucionar este problema SSH, que permiten transferir archivos pero cifrando todo el tráfico. Implementación En Linux existen dos programas preferidos para implementar éste servicio: ProFTPD y WU-FTPD; proporcionando funcionalidades básicas y algunas particularidades al servicio FTP. En nuestro caso emplearemos ProFTPD. ProFTPD usa un único archivo de configuración: “/etc/proftp/proftpd.conf” El archivo de configuración es muy similar al que tiene Apache. Puede ser fácilmente configurado como múltiples servidores FTP virtuales.
19
Sistemas Operativos Avanzados Instalación Procedemos a instalar con: sudo apt-get install proftpd Elegir la opción “independiente”
Figura 5: Pantalla de instalación proftopd
Lo primero que el administrador deberá determinar es cómo va a ejecutarse este servicio, si lo hará bajo inetd o en forma independiente (como un proceso más). La diferencia entre ambos métodos es mayormente la velocidad de ejecución que se obtendrá del servicio y la carga que se le dará al equipo. Utilizando inetd el equipo iniciará un proceso nuevo por cada pedido de ftp que llegue al equipo, mientras que ejecutándose en forma independiente, el proceso ya está inicializado por lo que no hay necesidad ejecutar un nuevo programa (simplemente se clona el proceso, generando una nueva instancia del mismo para atender al cliente ftp que inicio el requerimiento).
Configuramos el archivo proftpd.conf con: sudo nano /etc/proftpd/proftpd.conf
20
Sistemas Operativos Avanzados
Y agregamos al final del archivo:
DefaultRoot ~
Con ello cada usuario queda encerrado en su home
<Limit LOGIN> AllowUser alumno
Con esto indicamos que usuario está autorizado a ingresar
DenyAll </Limit>
Una vez hecho lo anterior guardamos el archivo de configuración y salimos del editor nano. Reiniciar el servidor Proftpd.conf
sudo nano /etc/proftpd/proftpd.conf
Revisa. Para mayores detalles, se recomienda que revises este tema con la lectura del capítulo de Samba del libro Instala, administra, securiza y virtualiza entornos LINUX de Ramos y otros [11]
21
Sistemas Operativos Avanzados
REFERENCIAS [1] Wikipedia, “Administrador de sistemas”. Mayo 2009. [Online]. Disponible en http://es.wikipedia.org/wiki/Administrador_de_sistemas
[2] M. Carling, S. Degler y J. Dennis. Administración de Sistemas Linux. Madrid: Prentice Hall Iberia, 1999.
[3] T. Darmohray. Job Descriptions for System Administrators: Core Job Descriptions 3d Edition Revised. 2012. [Online]. Disponible en http://www.usenix.org/lisa/books/job-descriptions-system-administrators-3d-edition [4] USENIX, the Advanced Computing Systems Association, "System Administrators „Code of Ethics". Setiembre 2003. [Online]. Disponible en http://www.usenix.org/lisa/system-administrators-code-ethics
[5] D. Quinlan, "Filesystem Hierarchy Standard". 2004. [Online]. Disponible en http://www.pathname.com/fhs/pub/fhs-2.3.html [6] Wikipedia, “Filesystem Hierarchy Standard”. Marzo 2008. [Online]. Disponible en http://es.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
[7] S. Durán, Linux Total: "GUIA RÁPIDA DE COMANDOS LINUX". 2005. [Online]. Disponible en http://www.linuxtotal.com.mx/index.php?cont=info_admon_002 [8] Wikipedia, “Servidor HTTP Apache”. Febrero 2010. [Online]. Disponible en http:/es.wikipedia.org/wiki/Servidor_HTTP_Apache [9] Wikipedia, “Proxy”. Octubre 2003. [Online]. Disponible en http:/es.wikipedia.org/wiki/Proxy [10] Wikipedia, “File Transfer Protocol”. Marzo 2002. [Online]. Disponible en http:/es.wikipedia.org/wiki/File_Transfer_Protocol
[11] A. Ramos; J. García-Moran; F. Picouto y Otros. 2009. México D.F: Alfaomega, 2009.
22