Implementación de Servidores bajo el Sistema GNU/LINUX Ing. Alejandro Escalante aescalan@ine.gob.mx 9 de Marzo de 2006 INE- DARI Temario • Introducción • Perspectiva histórica •¿Qué es GNU/Linux? • Instalación • Preparativos • Hardware y software • Aspectos de configuración • Particiones y el disco duro • El proceso de instalación • Las cuentas de usuarios • Uso de comandos básicos • El software GNU/Linux • Actualización, archivos RPM • Configuración de red (LAN) • Configuración de servicios • web, vsftp, ssh, sftp • sendmail • squirrelmail I. Introducción a GNU/Linux Perspectiva histórica Hasta los comienzos de 1980 era común compartir y modificar código, para ser implementado en diferentes plataformas. Empresas comerciales comienzan a obligar a sus programadores a firmar contratos de confidencialidad para no revelar el código de los programas desarrollados. Quienes revelaran datos de esos programas serían considerados “piratas”. En 1984, un investigador del Laboratorio de Inteligencia Artificial del MIT, Richard Stallman, renuncia al mismo en contraposición a la prohibición a no poder compartir el código de programas entre colegas. Funda en ese momento una Fundación en apoyo al Software Libre. Free Software Fundation. Se plantea la siguiente pregunta: ¿ Hay algún programa que yo pueda realizar y compartir a una nueva comunidad? La respuesta no fue difícil de encontrar Sistema Operativo Así podría existir una nueva comunidad cooperando e invitar a cualquiera a unirse Un S.O. similar UNIX, para fácil migración de usuarios Nace de esta manera el Proyecto GNU GNU es un acrónimo recursivo de GNU´s Not UNIX El S.O. contaría para comenzar con: • Ensambladores • Compiladores • Depuradores • Editores de Texto • Aplicaciones • Etc. Introducción. Algunas fechas 1962 CTSS @ MIT: tiempo compartido y protección 1967 MULTICS @ MIT, Bell, GE: el SO más avanzado de su época. Multiusuario, multiproceso, árbol de ficheros, intérprete de órdenes (shell). 1973 UNIX@ Bell (Thompson, Ritchie) escrito en C 1978 3BSD @ Berkeley memoria virtual paginada 1980 4BSD @ Berkeley (DARPA) Internet 1984 GNU (Richard Stallman) Emacs 1988 X y NeWS: sistema de ventanas distribuido 1990 Normalización : Sun + AT&T, POSIX, XOPEN 1991 386BSD, Kernel Linux, versiones libres Introducción - Definiciones El Software Libre nada tiene que ver con su valor económico,sino con la Libertad. Free Software no es Software Gratis, sino Software Libre Para que un software sea considerado libre, debe cumplir con lo siguiente: • Libertad para ejecutar un programa con cualquier propósito • Libertad para modificar el programa y adaptarlo a sus necesidades • Libertad para distribuir copias gratuitamente • Libertad para distribuir versiones modificadas Para ello es necesario De esta manera Acceder al Código del Programa Toda la comunidad se beneficia Nace así el CopyLEFT. Su implementación jurídica es la GNU GPL General Public Licence - Licencia Pública General Introducción. Migración Algunas aplicaciones Oficina StarOffice OpenOffice Koffice AbiWord Gnumeric Bases de Datos PostgreSQL MySql DB2 (IBM) Oracle (Comercial) Informix (Comercial) Mail Evolution StarOffice Netscape Kmail Mozilla Navegadores Netscape Konqueror Galeon Firefox Mozilla Desarrollo Emacs Glade KDE Studio Kylix JBuider Soluciones Web Seguridad Informática - Servidores Apache - Desarrollo PHP – MySql - Servidores de Mail - SendMail - Libre de Virus - Firewalls - iptables - Proxy - Squid - Herramientas de Auditoria Introducción . ¿Qué es GNU/Linux? Comienzos de los 90 El S.O. GNU estaba casi listo. Surge la necesidad de un núcleo De manera totalmente independiente al Proyecto GNU, Linus Torvalds junto a un grupo de programadores había dado los primeros pasos en el desarrollo de un núcleo similar a MINIX y UNIX compatible. Linus pone a disposición ese kernel bajo las licencias GPL y pasa a ser parte del proyecto GNU Es gracias a LINUX que en la actualidad podemos ver funcionar un Sistema GNU Introducción - Características Principales • Sistema Operativo similar a UNIX. • Libre • Soporta 486, Pentium, AMD, Cyrix, SPARC, DEC, Alpha,PowerPC, Mac • Uso Personal (PC), Servidores y Estaciones de Trabajo • Soporta redes TCP/IP y otros protocolos Multi-Usuario, Multi-Tarea, MultiPlataforma Introducción. Mas de 80 Distintas Distribuciones REDHAT FEDORA DEBIAN KNOPPIX Es la más extendida – Eso da gran ventaja. Buenos entornos gráficos. Buen Soporte. Fácil instalar Preferida por los Programadores – Es la más grande “no comercial” – Aventaja a las demás en herramientas. Fácil instalación. SUSE Es amena. Buenas herramientas de administración. Buenos manuales en español. Viene con KDE. MANDRAKE Usa el mismo formato de archivos que RedHat y Suse (RPM) Es la más fácil de instalar. Trae GNOME. Se actualiza muy seguido. CENTOS Orientada a servidores en producción, sistema con soporte para grandes equipos, basado en RHEL II. Instalación de GNU/Linux Requerimientos mínimos de hardware • CPU 486, celeron, pentium, pentium pro, II, III, IV, centrino, AMD Athlon, Athlon XP, Familia x86 AMD64, Power PC, Itanium • Bus ISA, EISA, PCI, VESA, AGP, USB, FIREWIRE • RAM >256 Mb • HD >4Gb Aspectos de configuración • Aceptar licencia GPL • Espacio en disco, particiones • Tipo de instalación, personal, estación de trabajo, servidor • Uso horario,Idioma, teclado, red II. Instalación de GNU/Linux CENTOS • Es una distribución basada en Redhat Enterprise • Libre, orientado a servidor • El costo de RHEL es de 3,000 USD • Estabilidad • Compatibilidad • Actualizaciones • Soporte II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux II. Instalación de GNU/Linux Administración de Usuarios Metas de una administración correcta de usuarios Usuarios Propios de Linux Usuarios de Alto Privilegio Usuarios Privados: Grupos Privados: • Privacidad • Organización • Compartir recursos • Niveles de Privilegio Mail, FTP, Daemons, etc. Root, alguno que asigne Root Determinados por los permisos Usuarios con iguales privilegios useradd Agrega usuarios passwd Cambia la contraseña usermod Modifica datos de un usuario userdel Elimina usuarios chmod Cambia permisos Seguridad en LINUX 1) Seguridad Física • Políticas de contraseñas 2) Políticas de Seguridad • Políticas de respaldos • Determinación de niveles de Acceso • Políticas de bitácoras • No preocuparse por Virus Informáticos 3) Seguridad Lógica Nivel Software • Estar al tanto de vulnerabilidades y emparchar o actualizar software con fallas • Desactivar todos los servicios que no se utilicen • Cerrar puertos no utilizados • Contar con reglas de Firewall (iptables) • Programación Segura • Auditar permanentemente la Red La contraseña • Función de dispersión: consiste en un sistema de cifrado en un solo sentido. • Visible: /etc/passwd • Elegirla adecuadamente: – Evitar palabras del diccionario, nombres, números – Evitar palabras en idiomas comunes – Combinar letras con números – Elegir claves que tengan algún sentido (que sea fácil de recordar) – Cambiarla con cierta frecuencia Otras formas de acceder • Desde el entorno local en modo textual – máquina login: – Password: • Desde otro sistema de la red – En modo textual • ssh usuario@maquina – En modo gráfico • ssh –X usuario@maquina kcalc • scp archivo usuario@maquina:archivo Facilidades de interacción • Renombrar órdenes complicadas – alias rm=”/bin/rm -i” • Manejar la historia – Utilizar las flechas – history – !! (repetir la última orden) – !3 (repetir el 3) – !expre:p (busca la última orden ejecutada que empieza por expre) • Directorios de usuarios ~ ~alex • Completar el nombre de archivos <TAB> Tipos de órdenes • Informativas – man (por secciones), info, mozilla, lynx, gv – date, cal, ps, pwd • Ejecutivas – De usuario: lpr, cp, mv, rm – De sistema: sync, halt, reboot, shutdown • Procesadoras – editores (kedit, kwrite, nedit, pico, vi, emacs) – od, strings, head, tail, grep, awk – diff, find Sistema de ficheros • Uniforme – ficheros, directorios, dispositivos, comunicación – un fichero es una secuencia de bytes – el significado se lo da el programa que lo usa • sufijos y prefijos • tipo o números mágicos • Nombres largos • Maneja otros tipos de sistemas de ficheros – – – – – BSD 4.2 (dispositivos y particiones) CD-ROM (ISO, RockRide, Joliet) Memoria FAT 16, FAT 32 o NTFS Remotos (NFS, NetBios) Sistema de ficheros jerárquico • El sistema de ficheros es jerárquico – Se parte de una estructura mínima / – El resto se monta en alguna de las ramas • mount (también se puede ver con df) /dev/hda4 on / type ext2 (rw) none on /proc type proc (rw) /dev/hda2 on /usr type ext2 (rw) /dev/hda5 on /home type ext2 (rw) /dev/hdb2 on /windows type vfat (rw,noexec,nosuid) none on /dev/pts type devpts (rw,mode=0622) /dev/hdc on /mnt/cdrom type iso9660 (ro,noexec,nosuid,nodev,user=tomas) • Sistema de ficheros distribuido – monta dispositivos de otras máquinas como directorios locales. Navegación por el sistema de ficheros • Camino absoluto – Para acceder a un fichero hay que dar su camino absoluto desde la raíz del sistema. – cat /usr/share/doc/gcc-3.0/README – cd $HOME – cd ~ • Camino relativo – cd /usr/share/doc/gcc-3.0 – pwd – cat README – cd ../gzip ; cat README • ls -alrt directorio (ordenados por tiempo, incluidos .*) • ls -R directorio (clasificado y recursivo) Manipulación de ficheros mkdir directorios rmdir directorios crear directorios borra directorios rm ficheros rm -r nombres -i -f borra ficheros borra recursivo borra preguntando borra sin preguntar mv nombreA nombreB mv fichero directorio cambia nombres mover ficheros cp ficheroA ficheroB cp ficheroA directorioB copiar copiar a otro directorio cp -r directorioA directorioB -p -i copiar recursivo conservando atributos preguntando FIN Ing. Alejandro Escalante aescalan@ine.gob.mx