Está en la página 1de 6

Miguel ngel Ortiz Chacn A01018615

Sistemas Operativos Prctica Final

9 de Mayo 2013

El sistema operativo seleccionado es Arch Linux instalado nativamente en una MacBook Pro 8.1. El bootloader instalado en la computadora es Refind, utilizando EFI-STUB para arrancar el sistema operativo de Linux. El booteo por EFI-STUB requiere aadir una carpeta llamada Arch Linux dentro de la particin de EFI la cul es /dev/sda1, que contenga un archivo de texto llamado refind.conf, el cual indica los siguientes parmetros del kernel: "Archlinux" "video=inteldrmfb i915.i915_enable_rc6=1 i915.i915_enable_fbc=1 i915.lvds_downclock=1 usbcore.autosuspend=1 h vga 773 root=/dev/sda3 ro pcie_aspm=force irqpoll quiet splash" Como se puede apreciar la particin de Arch Linux est en /dev/sda3. As mismo dicha carpeta debe contener el kernel de Linux con una extensin *.efi al final y el ramdisk. De esta forma EFI-STUB detectar el kernel que debe bootear pasando los parmetros indicados anteriormente. En mi caso mi tabla de particiones qued de la siguiente forma: /dev/sda1 -> Particin EFI /dev/sda2 -> Particin de Mac OS X /dev/sda3 -> Particin de Arch Linux /dev/sda4 -> Particin de Windows 8 Se puede ver que no hay una particin de swap, sin embargo utilizo un swap file como particin swap y se encuentra en el directorio raz. El objetivo de esta prctica final es tener un sistema operativo seguro, para ello se instalaron ciertos paquetes que son seguros y se desinstalaron algunos que pueden representar un riesgo si se encuentran presentes. Afortunadamente Arch Linux es una distribucin simple y ligera que al instalarse slo tiene los paquetes ms bsicos para su funcionamiento. La lista de paquetes instalados se encuentran en la siguiente liga: https://www.archlinux.org/groups/x86_64/base/ https://www.archlinux.org/groups/x86_64/base-devel/ En dicha lista slo se encuentran los paquetes bsicos de funcionamiento de Linux sin ninguno que represente algn riesgo de seguridad, tales como torrents, vino, vinagre, samba, smbclient, rlogin, telnet, rdae, rsh, talk, finger, entre otros. Inclusive viene sin interfaz grfica de usuario. La filosofa de Arch Linux es mantenerlo simple y permitir al usuario personalizarlo a su gusto. En mi caso instal dos ambientes de escritorio: XFCE y LXDE.

Una cuestin muy importante en la seguridad de un sistema operativo es la configuracin de cuentas de usuario. Durante la instalacin de Arch Linux se configur un usuario ROOT y un usuario normal llamado shagrath, que tienen contraseas seguras y diferentes en mi caso de ms de 10 caracteres alfanumricos incluyendo un caracter especial. En Arch Linux se pueden instalar paquetes automticamente o manualmente. El administrador de paquetes se llama pacman, a diferencia de fedora, para instalar paquetes automticamente se utiliza el comando yum y para la instalacin manual se utiliza el comando rpm. Pacman en Arch Linux funciona de ambas formas. Por ejemplo si se utiliza pacman -S paquete instala de la red el paquete requerido automticamente, anuncindote previamente las dependencias que instalar y preguntndote si proceder a instalar. Para instalar un paquete manualmente se utiliza pacman -U paquete.tar.xz. Para hacer una mostrar una lista de paquetes instalados se utiliza el comando pacman -Q. As mismo se pueden filtrar la lista aadiendo al comando lo siguiente: pacman -Q | grep -i nombre de paquete. Lo cul nos puede servir para buscar paquetes inseguros instalados en nuestra computadora. Para ver los archivos instalados de un paquete, se ejecuta el comando pacman -Ql nombre de paquete y nos devolver los archivos y los directorios donde fueron instalados dichos componentes para el funcionamiento de ese paquete. La lista oficial de Paquetes de Arch Linux es el siguiente URL: https://www.archlinux.org/packages/ La lista AUR (Arch User Repository) es el siguiente URL: https://aur.archlinux.org/ La primera lista se divide en las siguientes categoras: core, extra, community, communitytesting, multilib, multilib-testing y testing. La segunda lista no es oficial y los paquetes son los que los usuarios contribuyeron a la comunidad, la cual incluye muchos paquetes extras de otras distribuciones, sin embargo puede resultar peligroso, por lo tanto al seleccionar un paquete uno debe de fijarse en el PKGBUILD el cual es un script que contiene todo lo que se instalar de ese paquete. Un paquete importante a instalar es el JDK de Oracle, en vez del Open-JDK hecho por la comunidad de desarrolladores de Linux. Para instalarlo primero se debe localizar el paquete en los repositorios, en este caso lo encontramos en AUR. Primero observamos el PKGBUILD para verificar que no contenga alguna vulnerabilidad, despus se tiene que descargar el tarball que es un paquete tar.gz el cul contiene el PKGBUILD y otros ficheros con

informacin adicional para la instalacin. Despus descargamos el sources que es el paquete original de JDK de Oracle. Primero descomprimimos el tarball y copiamos el JDK original en la carpeta nueva que se cre al descomprimir. Despus ejecutamos en la terminal el comando makepkg el cual verificar las dependencias que se necesitan antes de crear el paquete para instalar con pacman. Si todo est bien se crear el paquete comprimido en formato .tar.xz, el cul ya se puede instalar con pacman -U paquete.tar.xz. Para aadir las variables de ambiente de Java para usarlo debemos editar nuestro archivo .bashrc y agregamos las siguientes lneas: export JAVA_HOME=/opt/java y export CLASSPATH=$JAVA_HOME/jre/lib/rt.jar:. Luego se aade a nuestras variables de ambiente en el PATH lo siguiente PATH = /bin : /sbin : /usr/bin: /usr/sbin: /usr/local/bin: usr/local/sbin :/home/shagrath/Lpc21isp:/home/shagrath/CodeSourcery/arm-2008q1/bin:$JAVA_HOME/bin export LD_LIBRARY_PATH = /lib64 :/usr/lib64 :/usr/local/lib64 :/lib :/usr/lib :/usr/local/lib. Guardamos los cambios, cerramos y abrimos la terminal y los cambios ya habrn surtido efecto. Para compilar un programa en Java se escribe el comando javac Nombre de la Clase.java, para ejecutarlo se usa java nombre de la clase. Para compilar un programa en C se ejecuta el comando gcc Nombre de los Archivos.c -o Ejecutable, para c++ es igual g++ Nombre de archivos y clases.cpp -o Ejecutable. Tambin podemos actualizar nuestro navegador de Firefox a la ltima versin en este caso buscando en los paquetes oficiales la ltima versin de Firefox, descargamos el paquete y lo instalamos con pacman -U, una cosa importante que se debe remarcar es que al seleccionar un paquete tanto en AUR como en los repositorios oficiales, la pgina nos provee de toda la informacin que se necesita para instalarlo, tal como sus dependencias y el cdigo fuente original si ste se encuentra disponible. Para instalar google chrome en nuestra computadora se tiene que buscar el paquete Chromium en la lista de AUR y se instala de la misma forma como el JDK. Por defecto el flash player ni el plugin de java vienen instalados en nuestro sistema para ser usados por nuestro navegador. Para eso se deben instalar y aadirlos a la carpeta de libreras mozilla firefox. Para el flash plugin se debe bajar de los repositorios oficiales el flashplugin e instalarlo con pacman. Automticamente se aadir la librera en la carpeta /usr/lib/mozilla/plugins/. En Arch Linux para el plugin de java se debe hacer una liga simblica en el mismo directorio de los plugins, para ello ejecutamos el comando ln libnpjp2.so apuntando al directorio /opt/java/jre/lib/amd64/libnpjp2.so. La comunidad de Linux siempre se preocupa por mejorar constantemente ya sea tanto en la estabilidad, seguridad y compatibilidad con el nuevo hardware. Por eso es que constantemente se hacen actualizaciones y mejoras al Kernel. Arch Linux es una distribucin de tipo rolling-release, lo que quiere decir que siempre se mantiene al da con el software en las ltimas versiones, inclusive en el Kernel, ya que cada 2 semanas en promedio sacan una

nueva versin. Para actualizar el Kernel en Arch Linux se va a la pgina de los repositorios oficiales de Arch y se buscan los paquetes Linux-3.8.x, Linux 3.8.x-headers, se descargan y se instalan con el paquete pacman -U. Automticamente se instala el Kernel nuevo en /boot, crea los nuevos ramdisk, los mdulos y los headers, inclusive si se tiene el grub bootloader actualiza la configuracin nueva. La ltima versin disponible en los repositorios a la fecha de hoy es la 3.8.11. Igualmente tenemos la ventaja de descargar el cdigo fuente de la ltima versin del kernel. Para ellos descargamos el ltimo stable release, a menos que sea un desarrollador del kernel puede descargar el mainline. Se descarga el cdigo fuente del sitio el cual viene comprimido como tar.xz y descomprimimos el cdigo. El proceso de la compilacin y la instalacin del nuevo kernel es como sigue, se debe hacer una limpieza con el comando make mrproper para limpiar de compilaciones previas, esto para evitar errores. Despus pasamos un archivo con parmetros y configuraciones sobre nuestro hardware al archivo .config, usando el comando zcat /proc/config.gz > .config. Ejecutamos el comando make menuconfig, este comando iniciar un men de configuraciones sobre el cual podemos aadir o quitar componentes ya sea para mejorar el desempeo o aumentar la compatibilidad con algn hardware nuevo. Despus de realizar cambios que hayan sido necesarios los guardamos y procederemos a compilar el kernel. Para disminuir el tiempo de compilacin podemos utilizar mayor nmero cores de nuestro cpu, para saber el nmero de cores podemos hacer un cat /proc/cpuinfo y buscamos donde dice siblings y ese es el nmero que debemos escribir para la compilacin. En mi caso menciona 4 por lo tanto ejecuto el comando make -j4 el cual aprovechar mi procesador al 100%. La compilacin durar aproximadamente de 30 minutos a 1 hora dependiendo de la capacidad de cada computadora. Terminada la compilacin el siguiente paso es instalarlo, primeramente se ejecuta como usuario root el comando make modules_install, el cul instalar todos los mdulos de kernel en el sistema, luego copiamos el kernel compilado y lo pasamos al directorio /boot cp -v arch/x86/boot/bzimage /boot/vmlinuz-linux-nombre del kernel. Luego el siguiente paso es generar el ramdisk. En Arch existe un comando llamado mkinitcpio, ejecutamos el siguiente comando mkinitcpio -k Nombre del Kernel -c /etc/mkinitcpio.conf -g /boot/initramfs-nombre del kernel. El siguiente paso, en mi caso particular, es montar la particin EFI y copiar en mi carpeta el nuevo kernel aadiendo la extensin .efi, el nuevo ramdisk y borraremos los archivos viejos. Otra cuestin importante en cuanto a seguridad es el de la cantidad de puertos redes que se tienen abiertos. Podemos conocer a nivel despus del firewall nuestros puertos visibles con el comando nmap -sU -sT localhost. Lo ideal es que no se tenga ningn puerto abierto lo cual fue posible lograr en Arch Linux. A menos que se requiere y se tengan levantados servicios como http (puerto 80), mysql (puerto 3306), https (puerto 443). Para conocer todos nuestros puertos que estn en servicio por alguna aplicacin ejecutamos el comando netstat -tanp pata filtrar solamente los servicios tcp y -uanp para filtrar solamente los udp. La salida de

dicho comando te despliega el nombre del proceso y la aplicacin que mantiene dicho puerto en servicio, la direccin local, el puerto en servicio, la direccin fornea y el estado del puerto. En el caso que se tenga algn puerto abierto de alguna aplicacin o demonio que est corriendo podemos darlo de baja. El nuevo estndar de los Linux para el control de servicios y demonios es systemctl. Dicho comando muestra todos los servicios que estn corriendo a nivel del sistema y controlan diversas funciones del sistema operativo. Para detener un servicio se ejecuta el comando systemctl stop nombre del servicio, tambin se puede arrancar nuevamente ejecutando systemctl start nombre del servicio. Para darlo de baja definitiva y no iniciarse al arrancar el sistema, est el comando systemctl disable nombre del servicio. Para volverlo arrancar desde el inicio del sistema se ejecuta systemctl enable nombre del servicio y systemctl start nombre del servicio . En mi caso tena activo el servicio ntp que sirve para sincronizar mi reloj con el de los servidores para tener la hora exacta. Utilizando el systemctl lo detuve y lo deshabilit systemctl stop ntpd y systemctl disable ntpd. Podemos levantar servicios de http en nuestra computadora con el servidor Apache. En Arch Linux se tiene que instalar la paquetera de los repositorios oficiales e instalarlo con pacman. El nombre de la paquetera se llama Apache. Despus de instalado para arrancar el servicio se usa el comando apachectl start. Podemos configurar el puerto de red sobre el que est trabajando editando el archivo de configuracin que se encuentra en /etc/httpd/conf/httpd.conf en la lnea que dice Listen 80 y podemos cambiarlo por cualquier otro que no este en uso. En caso de necesitar un servicio de http en otro puerto podemos instalar otro apache. Para ello descargamos de la pgina de apache el cdigo fuente de httpd. Descomprimimos el cdigo fuente y ejecutamos los siguientes comandos: ./configure prefix=/usr/local/, esto indica el directorio donde instalar apache. Al terminar el proceso ejecutamos make -j4 para compilar con todo el poder del procesador y al final ejecutamos la instruccin make install como root para instalar el programa en nuestro directorio seleccionado. Luego editamos su archivo de configuracin que est en /usr/local/apache2/conf/httpd.conf y editamos su Listen Port al 1025 por ejemplo. Luego ejecutamos el servicio en /usr/local/apache2/apachectl start. Tendremos otro servicio de http levantado en un puerto diferente. As mismo tambin podemos levantar SQL con mysql, este paquete se encuentra en AUR y se debe instalar usando el makepkg y el pacman -U. Al tenerse instalado se debe levantar el servicio usando el comando systemctl start mysqld. Para entrar a mysql usamos el siguiente comando mysql -u root -p. Estando dentro debemos configurar los usuarios de tal modo que no permitamos que se conecten a nuestras bases de datos remotamente. Para ello debemos seleccionar la base de datos mysql con use mysql; seleccionamos la tabla para ver la informacin con select * from users, para aadir nuestra contrasea de administrador ejecutamos update user set Password=PASSWORD(' Contrasea') where User='root' and Host='localhost'. Para eliminar a todos los dems usuarios ejecutamos el comando delete

from usere where Password=''; Para insertar un usuario que solo pueda insertar y ver registros usamos el comando insert into user values('localhost', 'dadi', PASSWORD(' Otra'), 'Y','Y','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','',' ','',0,0,0,0,'',''). De esta forma nos aseguramos que nadie se conecta remotamente y proteger nuestras bases de datos. Para hacer efectivos los cambios ejecutamos flush privileges. Para respaldar nuestras bases datos ejecutamos en la terminal el siguiente comando mysqldump -u root -p nombre de base de datos > respaldo.sql. Para restaurar o insertar una base de datos se ejecuta en la terminal mysql -u root -p < respaldo.sql. Para facilitar nuestra administracin de seguridad del sistema podemos instalar una interfaz grfica para el firewall. Por default en la mayora de los Linux vienen con un firewall bastante poderoso llamado ip tables. Podemos administrar nuestro ip tables en Arch Linux instalando el paquete firestarter que es la interfaz grfica de usuario. Firestarter se descarga de los repositorios oficiales y se instala con pacman. Para abrir el firestarter pide la contrasea de root del sistema, dentro de l podemos permitir o bloquear el acceso a ciertos puertos de ciertas LAN o IP, o as mismo bloquear el acceso de ciertas IP. En este caso bloquearemos el acceso remoto por secure shell que es el puerto 22 y permitimos el acceso por http del puerto 80 y 1025 de nuestro segundo servicio y el 443 del https. Estos son algunos de los pasos para tener configurado un equipo o servidor seguros, con el fin de proteger la integridad de nuestros usuarios a los que administramos, as como clientes, trabajadores y de la informacin que se maneja en los equipos informticos y de cmputo.

También podría gustarte