Download sistema operativo linux
Document related concepts
Transcript
SISTEMA OPERATIVO LINUX JOVITA INES OCHOA LUIS DAVID VALENCIA JUAN DIEGO OSSA JULIAN DAVID GOMEZ Gestion de redes de datos 298665 SENA – CTMA Medellin 2012 INTRODUCCIÓN Linux es un sistema operativo, compatible unix. Dos características muy peculiares lo diferencian del resto de sistemas que podemos encontrar en el mercado, la primera, es que es libre, esto significa que no tenemos que pagar ningún tipo de licencia a ninguna casa desarrolladora de software por el uso del mismo, la segunda, es que el sistema viene acompañado del código fuente. el sistema lo forman el núcleo del sistema (kernel) más un gran número de programas / bibliotecas que hacen posible su utilización. Muchos de estos programas y bibliotecas han sido posibles gracias al proyecto gnu, por esto mismo, muchos llaman a linux, gnu/linux, para resaltar que el sistema lo forman tanto el núcleo como gran parte del software producido por el proyecto gnu. LINUX Linux es, a simple vista un sistema operativo. Es una implementación de libre distribución UNIX para computadoras personales (PC), servidores, y estaciones de trabajo. Fue desarrollado para el i386 y ahora soporta los procesadores i486, Pentium, Pentium pro y Pentium II, así como los clones AMD y cyrix. También soporta maquinas basadas en SPARC, DEC alpha, powerPC/ powerMac y Mac. Como sistema operativo, Linux es muy eficiente y tiene un excelente diseño. Es multitarea, multiusuario, multiplataforma y multiprocesador; en las plataformas de Intel corre en modo protegido; protege la memoria para que un programa no pueda hacer caer el resto del sistema; carga solo las partes de los programas que usan; comparte la memoria entre programas aumentando la velocidad y disminuyendo el uso de la memoria, usa un sistema de memoria virtual por paginas; utiliza toda la memoria libre para cache, permite usar bibliotecas enlazadas tanto estáticas como dinámicamente; se distribuye con código fuente; usa hasta 64 consolas virtuales; tiene un sistema de archivos avanzado pero puede usar los de otros sistemas; y soporta redes tanto en TCP/IP y en otros protocolos. HISTORIA DE LINUX Linux hace su aparición a principios de la década de los noventa, era el año 1991 y por aquel entonces un estudiante de informática de la universidad de Helsinki, llamado Linus Torvalds empezó, como una afición y sin poderse imaginar a lo que llegaría este proyecto, a programar la primera línea de códigos de este sistema operativo llamado LINUX. Este comienzo estuvo inspirado en MINIX, un pequeño sistema de unix desarrollado por Andy Tanenbaum. Las primeras discusiones sobre Linux fueron en el grupo de noticias comp.os.minix, en estas discusiones se hablaba sobre todo del desarrollo de un pequeño sistema Unix para usuarios de Minix que querían mas. Linus nunca anuncio la versión 0.01 de Linux esta versión no era ni siquiera ejecutable, solamente incluía los principios del núcleo del sistema, estaba escrita en lenguaje ensamblador y asumía que uno tenía acceso a un sistema minix para su compilación. El 5 de octubre de 1991, linus anuncia la primera versión oficial de Linux versión 0.02. Con esta versión Linux pudo ejecutar bash y gcc pero no mucho mas funcionaba. En este estado de desarrollo ni se pensaba en los términos soporte, documentación, distribución, después de la versión 0.03, Linux salto en la numeración hasta el 0.10. Mas y mas programadores alo largo y ancho de internet empezaron a trabajar en el proyecto y después de sucesivas revisiones, Linux incremente el número de versión hasta 0.95. Un tiempo después la versión estaba en 0.99 y la versión 1.0 no llega hasta el 14 de marzo de 1994. Desde entonces no se a parado de desarrollar, la versión actual del núcleo es la 2.2 y sigue avanzando día a día con la meta de perfeccionar el sistema. LINUS TORVALDS Linus Benedict Torvalds nació en Helsinki, Finlandia, el año 1969. Empezó a "trabajar" con ordenadores a los 10 años, cuando su abuelo le compró un Comodore el año 1980. Éste buen señor era un matemático y estadista. Trabajaba a la Universidad y fue quién "enganchó" al mundo de los computadores a nuestro buen amigo Linus. Con el paso del tiempo, Linus pasó a tener un Sinclair QL, un gran ordenador de Clive Sinclair (creador del conocido Spectrum), que tenía algún pequeño error de diseño. Linus se sintió especialmente atraído por esta máquina, después de crear aplicaciones para éstacomputadora y de haber retocado su hardware con la finalidad de adaptarlo a sus necesidades. El problema que tenía dicha máquina era que los recursos eran insuficientes para poder llevar a la práctica los planes de Linus. Además, no era un equipo compatible. Así pues, el mes de enero de 1991 compró su primer PC, un 386. Retrocedamos otra vez en el tiempo, hasta 1988. Éste año fue cuando Linus entró a la Universidad. Este mismo año fue cuando un sistema operativo didáctico, basado en Unix y creado por Andy Tannenbaum, empezó a cobrar importancia. Dicho sistema operativo era el famoso Minix. Linus entró a formar parte de la comunidad de usuarios de Minix. Tannenbaum cometió un error en su sistema operativo. Era demasiado limitado, tanto técnicamente como políticamente, es decir, en ningún momento tuvo en cuenta la posibilidad de incluir Minix al proyecto GNU (creado el año 1983 por Richard Stallman). En realidad, la creación de Andy Tannenbaum estaba pensada para ser distribuida comercialmente. Su principal error fue ceder todos los derechos a Prentice Hall, que empezó a cobrar 150 dólares por licencia (unas 22.500 ptas. / 135.23 euros). Así pues, Linus tomó la decisión de cambiar esta política debido a que el sistema Minix era ideal para los estudiantes de sistemas operativos, y su precio era considerablemente alto. Llegamos de nuevo al año 1991, cuando Linus se acabó de comprar su primer 386. En aquellos momentos, la intención de nuestro amigo era clara: crear un nuevo Kernel de UNIX basado en el Kernel de Minix y modificarlo periódicamente de manera que fuera capaz de ejecutar aplicaciones GNU. A pesar de todo, no toda la vida del Sr. Linus ha estado dedicada exclusivamente al sistema operativo Linux... Actualmente Linus Torvalds vive desde el año 1997 en Santa Clara, California, junto con su esposa Tove y sus dos hijas, Patricia Miranda y Daniela. Le encanta jugar con sus dos pequeñas. Está trabajando para Transmeta, aunque nadie no sabe demasiado bien en qué trabaja. Parece ser que existe una cláusula en su contrato que le impide revelar dicha información. De todas formas, se sabe que Transmeta está desarrollando un nuevo procesador con un juego de instrucciones RISC capaz de ejecutar código x86. Tal vez una de las aficiones más conocidas de Linus es que le gusta la cerveza, más aún si es Guinness. Así lo demostraron los miembros del SVLUG (Silicón Valley Linux User Group) cuando Linus fue a visitarlos para llevar a cabo una conferencia y le regalaron una caja de cerveza... Poca cosa más de saber de este personaje que ha cambiado la forma de ver los ordenadores durante estos últimos años y que ha conseguido dar un buen empujón al proyecto GNU. CARACTERISTICAS DE LINUX Multitarea: la palabra multitarea describe la habilidad de ejecutar varios programas al mismo tiempo. Multiusuario: muchos usuarios usando la misma maquina al mismo tiempo. Multiplataforma: las plataformas en las que en un principio se puede utilizar Linux son 386-, 486-. Pentium, Pentium Pro, Pentium II,Amiga y Atari, también existen versiones para su utilización en otras plataformas, como Alpha, ARM, MIPS, PowerPC y SPARC. Multiprocesador: Soporte para sistemas con más de un procesador está disponible para Intel y SPARC. Funciona en modo protegido 386. Protección de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema. Carga de ejecutables por demanda: Linux sólo lee del disco aquellas partes de un programa que están siendo usadas actualmente. Política de copia en escritura para la compartición de páginas entre ejecutables: esto significa que varios procesos pueden usar la misma zona de memoria para ejecutarse. Cuando alguno intenta escribir en esa memoria, la página (4Kb de memoria) se copia a otro lugar. Esta política de copia en escritura tiene dos beneficios: aumenta la velocidad y reduce el uso de memoria. Memoria virtual usando paginación (sin intercambio de procesos completos) a disco: A una partición o un archivo en el sistema de archivos, o ambos, con la posibilidad de añadir más áreas de intercambio sobre la marcha Un total de 16 zonas de intercambio de 128Mb de tamaño máximo pueden ser usadas en un momento dado con un límite teórico de 2Gb para intercambio. Este límite se puede aumentar fácilmente con el cambio de unas cuantas líneas en el código fuente. La memoria se gestiona como un recurso unificado para los programas de usuario y para el caché de disco, de tal forma que toda la memoria libre puede ser usada para caché y ésta puede a su vez ser reducida cuando se ejecuten grandes programas. Librerías compartidas de carga dinámica (DLL's) y librerías estáticas. Todo el código fuente está disponible, incluyendo el núcleo completo y todos los drivers, las herramientas de desarrollo y todos los programas de usuario; además todo ello se puede distribuir libremente. Hay algunos programas comerciales que están siendo ofrecidos para Linux actualmente sin código fuente, pero todo lo que ha sido gratuito sigue siendo gratuito. Emulación de 387 en el núcleo, de tal forma que los programas no tengan que hacer su propia emulación matemática. Cualquier máquina que ejecute Linux parecerá dotada de coprocesador matemático. Por supuesto, si el ordenador ya tiene una FPU (unidad de coma flotante), esta será usada en lugar de la emulación, pudiendo incluso compilar tu propio kernel sin la emulación matemática y conseguir un pequeño ahorro de memoria. Soporte para muchos teclados nacionales o adaptados y es bastante fácil añadir nuevos dinámicamente. Consolas virtuales múltiples: varias sesiones de login a través de la consola entre las que se puede cambiar con las combinaciones adecuadas de teclas (totalmente independiente del hardware de video). Se crean dinámicamente y puedes tener hasta 64. Soporte para varios sistemas de archivo comunes, incluyendo minix-1, Xenix y todos los sistemas de archivo típicos de System V, y tiene un avanzado sistema de archivos propio con una capacidad de hasta 4 Tb y nombres de archivos de hasta 255 caracteres de longitud. Acceso transparente a particiones MS-DOS (o a particiones OS/2 FAT) mediante un sistema de archivos especial: no es necesario ningún comando especial para usar la partición MS-DOS, esta parece un sistema de archivos normal de Unix (excepto por algunas restricciones en los nombres de archivo, permisos, y esas cosas). Las particiones comprimidas de MS-DOS 6 no son accesibles en este momento, y no se espera que lo sean en el futuro. El soporte para VFAT (WNT, Windows 95) ha sido añadido al núcleo de desarrollo y estará en la próxima versión estable. Un sistema de archivos especial llamado UMSDOS que permite que Linux sea instalado en un sistema de archivos DOS. Sistema de archivos de CD-ROM que lee todos los formatos estándar de CD-ROM. TCP/IP, incluyendo ftp, telnet, NFS, etc. AppleTalk. Diversos protocolos de red incluidos en el kernel: TCP, IPv4, IPv6, AX.25, X.25, IPX, DDP, Netrom, etc. ¿Qué son las distribuciones de Linux? Una distribución es un modo de facilitar la instalación, la configuración y el mantenimiento de un sistema GNU/Linux. Al principio, las distribuciones se limitaban a recopilar software libre, empaquetarlo en disquetes o CD-ROM y redistribuirlo o venderlo. Ahora las grandes distribuciones -RedHat, SuSE, Caldera, Mandrake, Corel Linux, Turbo Linux.- son potentes empresas que compiten entre sí por incluir el último software, a veces también software propietario, con instalaciones gráficas capaces de auto detectar el hardware y que instalan un sistema entero en unos cuantos minutos sin apenas preguntas. Entre las distribuciones de GNU/Linux, destaca el proyecto Debian/GNU. Debian nace como una iniciativa no comercial de la FSF, aunque luego se independiza de ésta y va más allá del propio sistema GNU/Linux. Es la única de las grandes distribuciones que no tiene intereses comerciales ni empresariales. Son sus propios usuarios, muy activos, quienes mantienen la distribución de modo comunitario, incluidas todas sus estructuras de decisión y funcionamiento. Su objetivo es recopilar, difundir y promover el uso del software libre. Reúne el mayor catálogo de software libre, todos ellos probados, mantenidos y documentados por algún desarrollador voluntario. En una distribución hay todo el software necesario para instalar en un ordenador personal; servidor, correo, ofimática, fax, navegación de red, seguridad, etc. UBUNTU Ubuntu es un sistema operativo3 4 mantenido por Canonical y la comunidad de desarrolladores. Utiliza un núcleo Linux, y su origen está basado en Debian. Ubuntu está orientado al usuario novel y promedio, con un fuerte enfoque en la facilidad de uso y mejorar la experiencia de usuario. Está compuesto de múltiple software normalmente distribuido bajo una licencia libre o de código abierto. La actual interfaz de usuario de Ubuntu está compuesta por tres importantes elementos: una barra superior para indicadores de sistema y menús, un lanzador de aplicaciones al costado izquierdo, y un panel (o dash) que despliega lugares y aplicaciones. RED HAT ENTERPRISE LINUX Red Hat Enterprise Linux también conocido por sus siglas RHEL es una distribución comercial de Linux desarrollada por Red Hat. Es la versión comercial basada en Fedora que a su vez está basada en el anterior Red Hat Linux, de forma similar a como Novell SUSE Enterprise (SUSE Linux Enterprise Desktop y SLE Server) lo es respecto de OpenSUSE o Mandriva Corporate respecto de Mandriva Linux One. Mientras que las nuevas versiones de Fedora salen cada aproximadamente 6 meses, las de RHEL suelen hacerlo cada 18 o 24 meses. FEDORA Es una distribución Linux para propósitos generales basada en RPM, que se caracteriza por ser un sistema estable, la cual es mantenida gracias a una comunidad internacional de ingenieros, diseñadores gráficos y usuarios que informan de fallos y prueban nuevas tecnologías. Cuenta con el respaldo y la promoción de Red Hat. "Hablar de Fedora es hablar del rápido progreso del software libre y de código abierto." Durante sus primeras 6 versiones se llamó Fedora Core, debido a que solo incluía los paquetes más importantes del sistema operativo. La última versión es Fedora 17, puesta a disposición del público el 29 de mayo del 2012. El Proyecto Fedora fue creado a finales del 2003 cuando Red Hat Linux fue descontinuado. La última versión de fedora es Fedora 17, con fecha 29 de mayo de 2012 bajo el nombre de Beefy Miracle. DEBIAN Debian o Proyecto Debian es una comunidad conformada por desarrolladores y usuarios, que mantiene un sistema operativo GNU basado en software libre. El sistema se encuentra precompilado, empaquetado y en un formato deb para múltiples arquitecturas de computador y para varios núcleos. Nació como una apuesta por separar en sus versiones el software libre del software no libre. El modelo de desarrollo del proyecto es ajeno a motivos empresariales o comerciales, siendo llevado adelante por los propios usuarios, aunque cuenta con el apoyo de varias empresas en forma de infraestructuras. Debian no vende directamente su software, lo pone a disposición de cualquiera en Internet, aunque sí permite a personas o empresas distribuirlo comercialmente mientras se respete su licencia. El proyecto Debian fue fundado en el año 1993 por Ian Murdock, después de haber estudiado en la Universidad de Purdue. OpenSUSE OpenSUSE es el nombre de la distribución y proyecto libre auspiciado por SUSE Linux GmbH (una división independiente de TheAttachmateGroup) y AMD para el desarrollo y mantenimiento de un sistema operativo basado en Linux. Después de adquirir SUSE Linux en enero de 2004, Novell decidió lanzar SUSE Linux Professional como un proyecto completamente de código abierto, involucrando a la comunidad en el proceso de desarrollo. La versión inicial fue una versión beta de SUSE Linux 10.0, y la última versión estable es openSUSE 12.2. MOON OS MoonOS es un sistema operativo, una distribución Linux basada en Ubuntu y Debian GNU/Linux. La versión MoonOS 4, está basada en Ubuntu 10.10. MoonOS hereda de Ubuntu: El núcleo Linux El instalador LiveCD Los paquetes de software El repositorio de software El upstart. CentOS Distribución gratuita basada en Red Hat. 100% compatible con RHEL. Muy popular Soporte hasta 7 años. Actualizaciones con cierto retraso respecto a RHEL. Sólo soporta de forma oficial x86 y x86_64. Sin soporte técnico comercial. Muy estable. Repositorios de software oficial limitados. ¿Futuro de la organización incierto? APLICACIÓN DE LINUX EN EL MERCADO Aunque Linux es un software libre, es decir que se permite su copia y modificación, compañías como Red Hat y Novell reciben ingresos del suministro de actualizaciones y del servicio de soporte para Linux. Cada vez más, Linux está siendo también ofrecido como un paquete de software que puede ser fácilmente instalado en los mismos ordenadores personales que emplean Windows. En el 2008 el valor de Linux estaba estimado en 35.000 millones de dólares. LA ESTRUCTURA DE DIRECTORIOS GNU/LINUX La estructura de directorios en la que se organiza un sistema Linux es en forma de unúnico árbol de directorios y de forma jerarquiza. Cada disco partición o CD tiene su propia organización lógica y al mismo tiempo pertenece a la misma estructura lógica de todo el sistema. Para poder usar cualquier dispositivo se tiene que montar en un directorio existente, y aparecerá como el contenido de un directorio. Cada distribución Linux hace la modificación de un estándar a la hora de estructurar el árbol de directorios, para adaptarlo a sus propias necesidades. De todas formas el estándar es el siguiente: Esto permite realizar una gestión muy coherente ya que los dispositivos se comportan como directorios y así poder tener la seguridad mejor estructurada y poder asignar mejor el espacio de almacenamiento. Para esto hay que gestionar los usuarios y asignar a /home el espacio para cada uno. Además de que si es un servidor de correo o impresión debería tener /var con partición asignada también ya que ahí se mantiene toda la información y luego es fácil hacer y recuperar las copias de seguridad. COMANDO BÁSICOS DE LINUX Para el manejo de archivos: cd - sirve para cambiar el directorio compress - con este comando se comprimen archivos en formato .Z cp - hace una copia de un archivo chmod - cambia los permisos de un archivo o directorio chown - cambia el propietario del archivo o directorio df - muestra el espacio libre en disco du - muestra el espacio utilizado en disco fdformat - formatea un disquete fdisk - se utiliza para particiona unidades file - determina el tipo de archivo a través del análisis parcial de su contenido find - hace una búsqueda a un archivo determinado fsck - examina el sistema de archivos gzip - descomprime un archivo en formato GZip ln - crea un enlace simbólico o físico, dependiendo de la opción ls - lista el contenido de un directorio mkdir - crea un directorio mkfs - crea un nuevo sistema de archivos mkswap - crea un espacio de intercambio more - muestra el contenido de un archivo mount - monta una unidad o partición en el sistema de archivos mv - mueve un archivo y también se utiliza para renombrar pwd - devuelve la cadena correspondiente al directorio actual rm - borra un archivo rmdir - borra un directorio swapon - activa el espacio de intercambio swapoff - desactiva el espacio de intercambio tar - empaqueta o desempaqueta un archivo en formato .tar type - muestra la ubicación de un archivo señalando su "path" umount - desmonta una unidad o partición en el sistema de archivos PARA EL MANEJO DE PROCESOS: free - muestra la memoria libre y utilizada halt - apaga la maquina kill - mata un proceso señalando el número de éste ldd - muestra las librerías necesarias para ejecutar un proceso ps - muestra todos los procesos que se están ejecutando en el sistema pstree - muestra todos los procesos que se están ejecutando en el sistema, pero en forma de árbol reboot - reinicia el sistema shutdown - cierra el sistema top - monitorea procesos y el estado del sistema uname - muestra información del sistema PARA EL MANEJO DE USUARIOS: adduser - crea una cuenta de usuario chsh - este comando cambia la shell de un usuario groups - muestra el listado de grupos de usuarios del sistema id - muestra la información de usuario y grupo de un determinado usuario logout - se sale del sistema deslogueando al usuarui, peromitiendo iniciar sesión con otro usuario passwd - cambia la contraseña de un determinado usuario su - le da privilegios de root (administrador) a un usuario talk - permite hablar con otros usuarios users - lista los usuarios conectados al sistema who - muestra información de los usuarios conectados al sistema whoami - muestra nuestra información DE RED: ping - manda paquetes esperando una respuesta del lugar que le indiquemos ifconfig - muestras las tarjetas de red (Ethernet) iwconfig - muestra Las tarjetas de red (Wifi) host "destino" - muestra la IP del "destino" PARA EL MANEJO DE PAQUETES: rpm - "opcion" "paquete" - instala o desinstala el "paquete" dependiendo de la opción dpkg - "opcion" "paquete" - instala o desinstala el "paquete" dependiendo de la opción, este comando solo sirve para paquetes debian. tar - "opcion" "paquete" - comprime o descomprime el "paquete" de formato tar.gz, tar.tgz o tar.bz2 MC Midnight Commander es una aplicación que funciona en modo texto. La pantalla principal consiste en dos paneles en los cuales se muestra el sistema de ficheros. Se usa de un modo similar a otras aplicaciones que corren en el shell o interfaz de comandos de Unix. Las teclas de cursor permiten desplazarse a través de los ficheros, la tecla insertar se usa para seleccionar ficheros y las Teclas de función realizan tareas tales como borrar, renombrar, editar, copiar ficheros, etc. Las versiones más recientes de Midnight Commander incluyen soporte para el ratón para facilitar el manejo de la aplicación. Midnight Commander posee características tales como la capacidad de explorar el contenido de los ficheros RPM, trabajar con formatos de archivos comunes como si de un simple directorio se tratasen. Incluye un gestor de transferencias FTP o cliente del protocolo FISH. También incluye un editor llamado mcedit. Mcedit es un ejecutable independiente, el cual también puede ser usado de forma independiente a Midnight Commander. Esta aplicación permite visualizar el contenido de ficheros y disfrutar de características como la de resaltar la sintaxis para ficheros de código fuente de ciertos lenguajes de programación, y la capacidad de trabajar tanto en modo ASCII como en modo Hexadecimal. Midnight Commander también puede renombrar grupos de ficheros, a diferencia de otros gestores de ficheros que solamente pueden renombrar un fichero cada vez. Esto es interesante en la manipulación de largas colecciones de ficheros, por ejemplo, para ajustar los nombres a un nuevo sistema de nombrado. Midnight Commander también puede mover ficheros a otro directorio al mismo tiempo que lo renombra. Midnight Commander es incluido en la mayoría de las distribuciones Linux y se distribuye bajo la licencia pública general de GNU. WINE Permite la ejecución de programas diseñados para MS-DOS, y las versiones de Microsoft Windows 3.11, 95, 98, Me, NT, 2000, XP, Vista y 7. Características: Soporte para programas de la DOS y Windows (3.x/9x/NT/2000/XP/2003/Vista/2008/7). Soporte para llamadas de funciones de Windows de 64, 32 y 16 bits. familia MS- Soporte de sonido y entradas alternativas. Soporte de módems o dispositivos por puerto serie. Trabajo en red con Winsock TCP/IP. Diseñado para ser compatible con código para Windows de 32 bits. Programas de muestra Documentación generada automáticamente de las API Compilador fuente de 32 bits Capacidad parcial de codificación Unicode Internacionalización: Wine está disponible en 16 lenguas LINUX COMO ROUTER Si tenemos una maquina con Debian/Ubuntu instalado que tiene dos interfaces de red. Una de las interfaces está conectado a switch de nuestro LAN, la otra — al router de nuestro proveedor de Internet. CONFIGURACION DE LAS INTERFACES DE RED 1. Antes de todo nos deshacemos de network-manager: apt-get remove network-manager 2. Ahora modificamos /etc/network/interfaces: # The loopback network interface auto lo iface lo inet loopback # External auto eth1 iface eth1 inet dhcp # Internal auto eth0 iface eth0 inet static address 192.168.0.1 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 Como podemos ver hemos configurado la interfaz de red interna (eth0) para que tenga una IP estática privada (192.168.0.1/24), y la interfaz externa para que obtenga su configuración de red mediante dhcp. Para aplicar la configuración ejecutamos: /etc/init.d/networking restart ACTIVACION DE ENRUTAMIENTO Para convertir nuestro Linux en un router tenemos que modificar el archivo /etc/sysctl.conf. Hay que añadir la línea: net.ipv4.ip_forward = 1 Para aplicar la configuración ejecutamos: sudo sysctl –p CONFIGURACION DE SERVICIO NAT NAT es un mecanismo inventado para solucionar problema de falta de direcciones IPv4. La maquina que hace NAT oculta todos los equipos de la red local, haciendo las peticiones a Internet en sus nombres. Para configurar el servicio NAT en nuestra maquina con Linux añadimos dos reglas al firewall (iptables): iptables -P FORWARD ACCEPT iptables --table nat -A POSTROUTING -o eth1 -j MASQUERADE Para que estas reglas sobrevivan reboot, las tenemos que añadir también a /etc/rc.local. CONFIGURACION DEL SERVICIO DHCP El servicio DHCP sirve para la suministrar la configuración de red (IP, mascara, gateway, DNS) a los equipos de nuestra LAN. Para hacerlo hay que instalar un programa dnsmasq, que nos servirá para poner funcionando tanto el servicio DHCP como el DNS de cache. apt-get install dnsmasq La configuración es bastante simple. Tenemos que abrir el archivo /etc/dnsmasq.conf, vaciar su contenido y añadir estas lineas: listen-address=192.168.0.1 cache-size=300 dhcp-range=192.168.0.4,192.168.0.20,24h Especificamos la dirección IP en la que el programa va a escuchar las solicitudes DHCP y DNS, el tamaño máximo de cache y el rango de direcciones IPs dinámicas disponibles a los equipos de red local (dnsmasq es bastante inteligente para averiguar automáticamente el resto de los parámetros de configuración de red que tendrá que ir suministrando a los equipos de nuestra LAN). Reiniciamos el programa: sudo /etc/init.d/dnsmasq restart CONFIGURACION DEL SERVICIO DNS DE CACHE El servicio de DNS de cache hace la resolución de nombres de dominios a direcciones IP para los equipos de red local. Vamos a ponerlo funcionando con dnsmasq, el mismo programa que ya nos hace el DHCP. En principio no nos hara falta tocar la configuración de dnsmasq. El programa cogerá la configuración necesaria acerca de los servidores DNS desde el archivo /etc/resolv.conf. Ahora bien, en el principio de articulo hemos dicho que nuestra interfaz de red externa (eth1) obtendrá su configuración de red mediante DHCP del router de proveedor de Internet. Esto se supone que el contenido de /etc/resolv.conf se modificara automáticamente después de cada reboot. Así que vamos a configurar el programa-cliente DHCP de nuestro router para que incluye la IP de nuestro router en el archivo /etc/resolv.conf cada vez que obtenga la configuración de red. Modificaremos el archivo /etc/dhcp3/dhclient.conf. Allí habrá que buscar la linea: #prepend domain-name-servers 127.0.0.1; Y cambiarla por: prepend domain-name-servers 192.168.0.1; Hemos terminado la configuración. Para aplicarla ejecutamos el comando: sudo /etc/init.d/networking restart. VNC NC es un programa de software libre basado en una estructura cliente-servidor el cual permite tomar el control del ordenador servidor remotamente a través de un ordenador cliente. También llamado software de escritorio remoto. VNC no impone restricciones en el sistema operativo del ordenador servidor con respecto al del cliente: es posible compartir la pantalla de una máquina con cualquier sistema operativo que soporte VNC conectándose desde otro ordenador o dispositivo que disponga de un cliente VNC portado. La versión original del VNC se desarrolló en Reino Unido, concretamente en los laboratorios AT&T Olivetti Research Laboratory, en Cambridge, Reino Unido. El programa era de código abierto por lo que cualquiera podía modificarlo y existen hoy en día varios programas para el mismo uso. Muchos derivados modernos de él son software libre bajo licencia GNU General Public License. En la enseñanza, VNC sirve para que el profesor comparta su pantalla con los alumnos, por ejemplo en un laboratorio. También puede usarse para que un técnico ayude a un usuario inexperto, el técnico ve remotamente el problema que informa el usuario. El programa servidor suele tener la opción de funcionar como servidor HTTP para mostrar la pantalla compartida en un navegador con soporte de Java. En este caso el usuario remoto (cliente) no tiene que instalar un programa cliente de VNC, éste es descargado por el navegador ftautomáticamente. VNC es independiente de la plataforma - un cliente VNC en un sistema operativo pueden conectarse a un servidor VNC en la misma o de cualquier otro sistema operativo. Hay clientes y servidores tanto para muchos sistemas operativos basados en GUI como para Java. Varios clientes pueden conectarse a un servidor VNC al mismo tiempo. Los usos populares de esta tecnología incluyen soporte técnico remoto y acceso a los archivos presentes en el ordenador del trabajo desde la computadora de un hogar, o viceversa. SERVICIO FTP Un servidor FTP (File Transfer Protocol) nos permite básicamente el compartir o alojar archivos de cualquier tipo en un espacio virtual donde nosotros mismos u otros usuarios de cualquier parte del mundo podrán descargarlos mientras estos sigan dentro del servidor. Modos de un servidor FTP: FTP Anónimo: Es un servidor FTP abierto a todo el público, donde a pesar que se sigue pidiendo un usuario y contraseña, estos serían anonymous y su correo electrónico para poder ingresar, estos usuarios tendrán tanto el privilegio de leer, subir o descargar archivos del servidor. FTP Privado: Este servidor realiza las mismas funciones que el anónimo pero los usuarios que pueden ingresar al mismo son únicamente los que se encuentran dentro de la base de datos del sistema local sin expeción alguna. Paquetería necesaria Para montar nuestro servidor FTP vamos a uitlizar VSFTPD ( Very Secure File Transfer Protocol Daemon ) que actualmente se sitúa como el servidor más seguro y más utilizado en el mundo, además de contar con un método de configuración bastante fácil. Instalación Debian/Ubuntu: apt-get install vsftpd RedHat/Fedora: yum -y install vsftpd *Genérico: Descargamos el archivo desde http://vsftpd.beasts.org/ . Lo descomprimimos, configuramos y compilamos con las opciones predeterminadas e instalamos. tar xzvf vsftpd-2.0.5.tar.gz && cd vsftpd-2.0.5/ && make && make install Archivos de Configuración /etc/vsftpd.user_list : Es la lista que va a establecer que usuarios pueden o no utilizar el servicio. /etc/vsftpd/vsftpd.conf : Archivo de configuración.Configuración Vamos a abrir el archivo /etc/vsftpd/vsftpd.conf con permisos de admnistrador ( root ) utilizando nuestro editor de texto preferedio; puede ser mediante gedit, vi, pico, nano, etc... ( Podemos utilizar el comando sudo para abrir el editor con permiso de administrador) -Opción anonymous_enable. Esta opción nos permite establecer si el servidor aceptará o no acceso anónimos, se estable como valor "YES" o "NO". anonymous_enable=NO -Opción local_enable. Esta opción nos permite establecer si el servidor se combinará con la función de jaula o chroot, de esta manera se define si se permitarán accesos a los usuarios locales del sistema, los valores son "YES" o "NO". local_enable=NO -Opción write_enable. Con esto establecemos si se va a permitir escribir en el servidor. Los valores son "YES" o "NO". write_enable=YES -Opción ftpd_banner. Aquí podemos establecer un mensaje de bienvenida que se mostrará al usuario cada vez que se conecte. ftpd_banner=Bienvenido al servidor FTP. Control de Ancho de Banda -Opción anon_max_rate. Se utiliza para establecer el máximo de bytes por segundo para usuarios anónimos, el ejemplo muestra un máximo de 5kbps. anon_max_rate=5120 -Opción local_max_rate Igual que la opción anterior pero para usuarios locales. local_max_rate=5120 -Opción max_clientes. Establece el número de conexiones simultaneas al servidor. max_clients=10 -Opción max_per_ip. Establece el número de conexiones que se aceptarán al servidor desde la misma ipmax_per_ip=3Inicialización del Servidor Para ejecutar el servicio por primera vez ejecutamos con permisos de adminsitrador ( root ): /etc/init.d/vsftpd start Si hemos hecho algunos cambios a la configuración mientras el servidor está activo lo reiniciamos con: /etc/init.d/vsftpd restart Para detenerlo usamos: /etc/init.d/vsftpd stop SERVICIO WEB Servidor Web Apache Introducción El servidor HTTP Apache es un servidor HTTP de código abierto para plataformas Unix (BSD, GNU/Linux, etcétera), Windows y otras, que implementa el protocolo HTTP/1.1 (RFC 2616) y la noción de sitio virtual. Para ampliar la información sobre lo que es Apache aquí. Instalación Instalación por paquetes Para hacer funcionar el servidor en tu sistema debes instalar el paquete apache2. Para hacerlo desde una consola debes escribir : $sudo aptitude install apache2 En algunas versionde de ubuntu como en la 10.10 (es mi caso) es posible que tengas que hacerlo de la siguiente manera; escribiendo en tu consola: $sudo apt-get install apache2 si te pide el passwd ingresa el passwd del usuario que usas con privilegios de super usuario. Una vez terminada la instalación puedes comprobar que Apache funciona correctamente: Si estás en la misma máquina donde instalaste Apache, coloca en la barra de direcciones de tu navegador: http://localhost o http://127.0.0.1 Si te encuentras en una máquina distinta a la que instalaste Apache, debes colocar en la barra de direcciones de tu navegador: http://192.168.0.1 donde debes reemplazar 192.168.0.1 por la IP de la máquina en la que instalaste Apache. Esto te llevará a una página que nos redireccionará a http://localhost/apache2default/ o http://192.168.0.1/apache2-default/, dependiendo del caso, la cual nos indicará que el Servidor Apache ha sido instalado correctamente. Instalación usando Xampp for Linux XAMPP es un paquete que se instala facilmente Apache, MySQL, PHP, Perl, phpMyAdmin y un servidor FTP. Para instalarlo haz lo siguiente Descarga la ultima versión desde aquí http://mesh.dl.sourceforge.net/project/xampp/XAMPP%20Linux/1.7.3a/xampp-linux1.7.3a.tar.gz A la fecha la ultima version seria xampp-linux-1.7.3a.tar.gz. Abre un terminal y descomprime el paquete, éste se descomprimirá en la carpeta /opt $ sudo tar xvfz xampp-linux-1.7.3a.tar.gz -C /opt y listo Ahora, para arrancar el servidor, teclea en la consola: $ sudo /opt/lampp/lampp start Para ver si funciona, entra a el navegador de internet y teclea: http://localhost o http://127.0.0.1/ Luego entra al apartado de seguridad, en el menú, y ve cómo la puedes mejorar. Configuración Configuración Básica Configurar el redireccionamiento Lo primero que haremos será asegurarnos de bloquear el redireccionamiento que nos lleva de http://localhost/ a http://localhost/apache2-default/, para ello, debemos asegurarnos que el archivo /etc/apache2/sites-available/default tenga comentada la linea que dice algo como : RedirectMatch ^/$ /apache2-default/ Para ello teclea en la consola : sudo gedit /etc/apache2/sites-available/default una vez que nos abra el archivo buscamos la línea mencionada y la reemplazamos por esta : #RedirectMatch ^/$ /apache2-default/ y si quisiéramos redireccionar a otra parte, deberíamos reemplazarla por esta otra : RedirectMatch ^/$ /my-path/ donde my-path es la dirección donde estamos redireccionando, la cual debe estar dentro de la raíz de la WEB. Cambiando la raíz de la WEB La raíz de la WEB se encuentra por defecto en /var/www/, para cambiarla, debemos reemplazar cada aparición de /var/www/ por /my-path/ en el archivo /etc/apache2/sites-available/default, donde my-path es la ruta completa del directorio que deseamos que sea la raíz de nuestra WEB. Permitir los acentos en las páginas de nuestra WEB Para permitir los acentos en nuestras páginas, debemos asegurarnos que la siguiente línea : AddDefaultCharset UTF-8 aparezca descomentada en el archivo /etc/apache2/conf.d/charset. Resetear el servidor Apache Una vez efectuado algún cambio de las configuraciones es conveniente resetear el servidor Apache, para ello, en una consola escribimos : sudo /etc/init.d/apache2 restart Instalar phpmyadmin Aunque con la sola instalación de este paquete ya tendrías el servidor http Apache corriendo en tu sistema normalmente necesitarás para sacarle todo el provecho instalar también php. Veamos como hacerlo. instalar phpmyadmin abres una consola te logueas como root sudo aptitude install php5 resetea apache2 sudo /etc/init.d/apache2 restart instala algunos paquetes sudo aptitude install mysql-server sudo aptitude install libapache2-mod-auth-mysql sudo aptitude install php5-mysql le colocas contraseña a phpmyadmin antes de instalar sudo mysqladmin -u root password contraseña instalas phpmyadmin sudo aptitude install phpmyadmin creas un fichero sudo gedit /var/www/index.php en el fichero le colocas lo siguiente <?php phpinfo(); ?> reseteas apache sudo /etc/init.d/apache2 restart y abres tu navegador escribes http://localhost/phpmyadmin y listo Habilitar PHP para el servidor Para dotar a Apache de la funcionalidad de manejar páginas php debes instalar el paquete php5. Una vez instalado puedes crear un fichero de prueba para comprobar que funciona correctamente. Abre el Terminal y teclea allí la siguiente orden. $ sudo gedit /var/www/testphp.php En el nuevo fichero creado inserta la siguiente línea. <?php phpinfo(); ?> Guarda el fichero editado y ve a la siguiente dirección en tu navegador [1]. Deberías visualizar la información de php. Módulos adicionales Librería GD para manipulación de imágenes con PHP $ sudo aptitude install php5-gd SERVICIO DE BASE DE DATOS Introducción. MySQL™ es actualmente el servidor de base de datos más popular para los desarrollos web. Es muy rápido y sólido, son muchos los administradores que lo instalan, y sin embargo no tantos los que lo configuran correctamente, o que siquera saben que hay que configurarlo. Este manual es solo una referencia rápida para el procedimiento de instalación y configuración de un servidor MySQL™. La generación de tablas y el ingreso de datos dentro de los campos de éstas puede hacerse a través de mandatos SQL en el Shell de MySQL™, utilizando un fichero .sql (como en es caso de PHP NUKE y otras aplicaciones web) o bien utilizando clientes MySQL™, como son MySQLGUI, GtkSQL o Gmysql. Procedimientos. MySQL™ es incluido actualmente en la mayoría de las distribuciones de GNU/Linux de hoy en día, por lo que no habrá problema alguno en conseguir los binarios necesarios y propios de la distribución que se utilice. Bastará con instalar los incluidos en el CD de instalación o bien los disponibles entre los paquetes de actualización para la distribución que se utilice. Pregunte al sistema si se encuentran instalados los paquetes que componen MySQL™: rpm -q mysql mysql-server De no estar instalados, o bien si hay paquetes más recientes entre las actualizaciones disponibles, cambie a súper usuario o bien ingrese como root al sistema. Si utiliza Red Hat™ Enterprise Linux, procederemos a instalar lo necesario del siguiente modo: up2date -i mysql mysql-server Si utiliza White Box Enterprise Linux o bien otros clones de Red Hat™ Enterprise Linux, se ejecutar lo siguiente: yum -y install mysql mysql-server Lo anterior descargará las más recientes actualizaciones de seguridad de MySQL™ para Fedora™ Core, junto con todo lo que haga falta para satisfacer todas las dependencias de biblotecas y otro software. Si utiliza Red Hat™, CentOS o White Box Enterprise Linux 4.0, ejecute system-configsecuritylevel (mod gráfico), vaya a la pestaña de SELinux y en la sección de SELinux Service Protection habilite la casilla que dice Disable SELInux protection for mysqld daemon. De otro modo MySQL no podrá siquiera iniciar. Desactivar protección de SELinux para mysqld. La manera más apropiada de iniciar el servicio mysqld será ejecutado el siguiente mandato: /sbin/service mysqld start Procederemos a agregar a MySQL™ al los niveles de corrida 3, 4 y 5, de modo que la siguiente vez que se tenga que iniciar el equipo, MySQL™ se encuentre habilitado. /sbin/chkconfig --level 345 mysqld on Después de iniciado MySQL™ por primera vez, como root ejecute el mandato mysql: # mysql Esto nos ingresará directamente y sin mayor preámbulo al Shell de MySQL™, donde lo primero será asignar una contraseña cifrada al usuario root, ya que no es conveniente, de manera alguna y sin pretexto, dejar MySQL™ de este modo. Primero indicaremos que base de datos utilizar, en este caso será la principal y única existente, mysql: > use mysql Ahora haremos petición para que se muestren las tablas: > show tables; Procederemos hacer una petición para que se muestre el contenido de la tabla user: > select * from user; Esto hará que se vea, entre otras muchas cosas, lo siguiente: +-------------------------+----------+------------------+-------------+ | Host | User | Password | Select_priv | +-------------------------+----------+------------------+-------------+ | localhost | root | | Y | +-------------------------+----------+------------------+-------------+ Como se podrá ver, el usuario root no tiene asignada una contraseña, por lo que cualquiera que se identifique como root tendrá acceso. Asignaremos una contraseña del siguiente modo (sea cuidadoso con lo que teclea como contraseña): > update user set Password=PASSWORD('nuevo_password') where user='root'; Ejecute de nuevo el siguiente mandato: > select * from user; Notará que ahora hay un criptograma en el campo que corresponde a la contraseña de root. +-------------------------+----------+------------------+-------------+ | Host | User | Password | Select_priv | +-------------------------+----------+------------------+-------------+ | localhost | root |4593274b8e0d68j852| Y | +-------------------------+----------+------------------+-------------+ Refresquemos los privilegios a fin de que tomen efecto los cambios. > flush privileges Salgamos ahora a fin de regresar y poder probar la nueva contraseña. > quit Ingrese de nuevo al Shell de MySQL™: mysql Notará que ya no se puede acceder como antes, y regresa un mensaje de error. ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO) Ejecute ahora el mismo mandato, pero especificando un usuario (-u root) y solicitando se pregunte por una contraseña (-p): mysql -u root -p A continuación se le pedirá ingrese una contraseña, tras lo cual obtendrá de nuevo acceso al Shell de MySQL™ Creando y destruyendo bases de datos. Para crear una nueva base de datos, puede utilizarse el mandato mysqladmin con el parámetro create: mysqladmin -u root -p create dbejemplo Si queremos eliminar dicha base de datos, utilizamos el parámetro drop en lugar de create. mysqladmin -u root -p drop dbejemplo Otorgando permisos a los usuarios. En adelante el usuario root solo se utilizará para tareas administrativas y creación de nuevas bases de datos. Resultará conveniente delegar a los usuarios ordinarios el manejo de sus propias bases de datos. Una vez generada una base de datos, debemos determinar con que usuario y desde que equipo en la red local, se podrá tener acceso, así como los privilegios para modificar esta. Lo más común, y seguro, es asignar el acceso solo desde el mismo servidor (localhost), a menos que el desarrollo web o aplicación se localice en otro equipo. Genere un base de datos denominada directorio: mysqladmin -u root -p create directorio En seguida acceda al Shell de MySQL™ y ejecute lo siguiente, suponiendo que se desea asignar permisos sobre las tablas de la base de datos directorioal usuario jbarrios del equipo local: GRANT select, insert, update, create, alter, delete, drop ON directorio.* TO jbarrios@localhost IDENTIFIED BY 'password_del_usuario_jbarrios'; Al concluir, usted tendrá una base de datos "jbarrios" que podrá ser utilizada y modificada por el usuario jbarrios desde el servidor donde se encuentra instalada la base de datos, es decir, localhost. Esto establecerá un nivel de seguridad apropiado, y garantizará que de ser descifrada una contraseña de un usuario, está no podrá ser utilizada desde un equipo remoto. Si, por ejemplo, se requiere permitir el acceso a una base de datos jbarrios desde otro equipo en la red local con fines administrativos, podemos otorgar el acceso al usuario jperez del equipo que, según el DNS de la LAN, se denomina como maquina1.mi-red-local.org, es decir [email protected]. GRANT select, insert, update, create, alter, delete, drop ON directorio.* TO [email protected] IDENTIFIED BY 'password_del_usuario_jperez'; El muro corta-fuegos. MySQL™ escucha peticiones en el puerto 3306, tanto para TCP como para UDP. Puede implementar un Firewall o muro muro corta-fuegos que cierre dicho puerto, de modo tal que solo se puede acceder a MySQL™ desde la red local. Las siguientes líneas de ejemplo suponen que el servidor donde se encuentra instalado MySQL™ posee dos interfaces de red, eth0 y eth1, de las cuales la primera (eth0) corresponde a la interfaz de acceso hacia la red local y la segunda (eth1) corresponde a la interfaz de acceso hacia la red mundial. # MySQL™ /sbin/iptables -t filter -A INPUT -p tcp -s 0/0 -d 0/0 --dport 3306 i eht1 -j DROP /sbin/iptables -t filter -A INPUT -p udp -s 0/0 -d 0/0 --dport 3306 i eth1 -j DROP Si se requiere acceder remotamente hacia MySQL™ desde fuera de la red local, con fines meramente de administración, como sería algunos casos particulares, se requerirá añadir las siguientes líneas en el guión de Firewall o muro muro corta-fuegos a fin de abrir los puertos correspondientes. # MySQL™ /sbin/iptables -t filter -A INPUT -p tcp -s 0/0 -d 0/0 --dport 3306 j ACCEPT /sbin/iptables -t filter -A INPUT -p udp -s 0/0 -d 0/0 --dport 3306 j ACCEPT