kyd1980
Usuario (Argentina)

¿Que es Apache? Este pequeña Aplicacion/Servicio es muy conocida en el ambiente Gnu/Linux y muy utilizada por muchos. Y si estamos pensado trabajar o simplemente montar nuestras propias paginas web eh a aqui la herramientas que estabas buscando. Gracias a Apache podremos montar nuestro propio Servidor Web , y con ello poder administrar o crear nuestras propias paginas web, ya sea en html,php,ruby,perl,etc. No solo es un Servidor Web, ya que gracias sus módulos podemos realizar otras cosas mas como poder acceder a ficheros,ejecutar nuestros script's, usar distintos métodos de autenticacion para aumentar la seguridad,trabajar con cifrado a través de SSL,etc. Naturalmente con solo instalar Apache ya basta para tener nuestro propio servidor web, pero tenerlo así solamente seria un desperdicio de toda su potencia y ademas seguramente llegara un punto que te darás cuenta que no te alcanza, por eso se suele combinar con otras aplicaciones como php , mysql,etc. Ahora... ¿Como hago para tener mi propio servidor web? Primero que nada seria cuestion de instalar la aplicacion y el metodo dependera de la distribucion con la cual estes trabajando. Algunos Ejemplos : * Aptitude install nombre_paquete * Yum install nombre_paquete * Pacman -S nombre_paquete * Emerge nombre_paquete Nota : Naturalmente el paquete se llama : Apache2 pero para mas seguridad o para cotejar que asi es como realmente se llama la aplicacion con tomarse 5 segundos haciendo un search no se nos va a caer el mundo. Una vez terminado el proceso de instalacion se nos crearan los archivos de configuracion de apache y los correspondientes script's del mismo. - Los Archivos de configuracion seguramente esten en /etc/apache2 - El Directorio Raiz por defecto sera /var/www Algo a tener en cuenta que por ahí algun día lo ven o algunos ya lo vieron es que apache corre como ROOT y sabemos que todo servicio de red no DEBE ejecutarse como ROOT. Pero para todo esto ahí un porque ya que esto no es tan así. Si bien apache corre como root solo lo hace para inicializar el servicio ya que toda servicio debajo del puerto 1000 debido a lo establecido en POSIX debe ser ejecutado como root, pero una vez que el servicio esta online apache se encarga de generar procesos hijos(www-data) los cuales serán los que realmente atiendan a las peticiones del servidor. Ahora con apache instalado si vamos a nuestro browser y tipeamos localhost.com nos mostrara nuestro propia pagina web montada en nuestro servidor sin que tengamos que hacer nada de nada, ya que por defecto viene configurado un VirtualHost y también un index en el Directorio Raíz. ¿VirtualHost , Index? El index sera el arhivo que contenga nuestra pagina web que puede estar diseñada en html,php,etc. y lo vamos a encontrar en /var/www que es el DocumentRoot por defecto. Y nuestro VirtualHost sera aquel que nos permita administrar/Configurar NUESTRAS paginas web's ya que gracias a el podemos tener distintos sites en una misma ip cada una totalmente independiente. Podemos encontrar nuestros VirtualHost en 2 lugares que no son iguales , ya que depende del lugar donde se encuentren va a funcionar nuestro site o no. Lo encontramos en : - /etc/apache2/sites-avalaible/nombre_Vhost -/etc/apache2/sites-enabled/nombre_Vhost En /Sites-avalaible vamos a encontrar nuestros sites en etapa de elaboracion. y En /Sites-enabled vamos a encontrar nuestros sites en producción. ----------------------------------------------------------------------------------------------- En nuestro archivo /etc/apache2/apache.conf vamos a tener nuestra configuración global, ya que podemos tener una configuración independiente por cada Vhost. Seguramente alguna de las opciones con las cuales nos encontremos sean : - ServerName : : Establece el nombre con el cual se conoce el servidor así mismo. - ServerRoot : Directorio/s donde van a estar los archivos de configuración. - DocumentRoot : Directorio donde se encuentra los archivos que apache servirá a los clientes. - PidFile : Fichero donde se almacena el PID (Process ID). - User/Group : Estable el usuario y el grupo con el cual se ejecuta apache. - ErrorLog : Fichero donde se almacenan los errores. - Listen : Puerto en el que escucha apache. - DirectoryIndex : Establece los nombres de fichero que serviran como indice al acceder a un directorio. Estos son algunos de los que pueden llegar a encontrarse pero no son todos. Ahora ,antes de empezar a trabajar con nuestros Vhost tenemos que tener en cuenta que como comentaba antes tener apache para albergar un sitio web seria un desperdicio de toda su potencia ya que atravez de una misma ip podemos albergar muchos sitios. Y como sabemos cada sitio tendra un nombre pero todos siempre responderan a la misma ip y para eso vamos a tener que tener configurado un servidor DNS , aunque tampoco es necesario ya que podemos hacer que nuestros /etc/hosts mapee nuestra ip a x cantidad de nombres, un ejemplo de ellos seria : - cat /etc/hosts 127.0.0.1 localhost 10.0.0.1 www.dominio1.com www.dominio2.com www.dominiox.com Después tenemos distintas maneras de configurar nuestros Vhost los cuales pueden ser configurados por IP,Puerto,Nombre o una combinación de ellos. Vhost Configurados por IP Supongamos que nuestro servidor web atiende 2 ip (Podríamos tener 2 Placas de Red) y acá una de ella le queremos asignar un sitio web. Abrimos el archivo Vhost de configuracion situado en : - vim /etc/apache2/sites-avalaible/default Nota : default es el nombre por defecto pero podemos ponerle el que mas nos guste. <VirtualHost 10.0.0.10> ServerName www.dominio1.com --> Nombre del Dominio. DocumentRoot /var/www/dominio1 --> Directorio de Archivos. ErrorLog /var/log/apache2/error.log --> Archivo Log de Errores. TransferLog /var/log/apache2/access.log --> Archivo Log de Accesos. </VirtualHost> <VirtualHost 10.0.0.20> ServerName www.dominio2.com DocumentRoot /var/www/dominio2 ErrorLog /var/log/apache2/error.log TransferLog /var/log/apache2/access.log </VirtualHost> Vhost Configurados por Puerto <VirtualHost 10.0.0.10:80> --- > Puerto de Escucha 80 ServerName www.dominio1.com --> Nombre del Dominio. DocumentRoot /var/www/dominio1 --> Directorio de Archivos. ErrorLog /var/log/apache2/error.log --> Archivo Log de Errores. TransferLog /var/log/apache2/access.log --> Archivo Log de Accesos. </VirtualHost> <VirtualHost 10.0.0.10:8080> --- > Puerto de Escucha 8080 ServerName www.dominio1.com DocumentRoot /var/www/dominio1/intranet ErrorLog /var/log/apache2/error.log TransferLog /var/log/apache2/access.log </VirtualHost> Vhost Configurados por Nombre NameVirtualHost 10.0.0.10 <VirtualHost www.dominio1.com> ServerName www.dominio1.com DocumentRoot /var/www/dominio2 ErrorLog /var/log/apache2/error.log TransferLog /var/log/apache2/access.log </VirtualHost> Y también podemos tener una mezcla de ellos. NameVirtualHost 10.0.0.10 <VirtualHost www.dominio1.com> ServerName www.dominio1.com DocumentRoot /var/www/dominio1 ErrorLog /var/log/apache2/error.log TransferLog /var/log/apache2/access.log </VirtualHost> <VirtualHost 10.0.0.20:80> ServerName www.dominio2.com DocumentRoot /var/www/dominio2 ErrorLog /var/log/apache2/error.log TransferLog /var/log/apache2/access.log </VirtualHost> <VirtualHost 10.0.0.20:8080> ServerName www.dominio2.com DocumentRoot /var/www/dominio2/intranet ErrorLog /var/log/apache2/error.log TransferLog /var/log/apache2/access.log </VirtualHost> <VirtualHost 10.0.0.3o> ServerName www.dominio3.com DocumentRoot /var/www/dominio3 ErrorLog /var/log/apache2/error.log TransferLog /var/log/apache2/access.log </VirtualHost> Autenticacion Ahora que ya sabemos como definir un Vhost , lo unico que restaria seria modificar nuestro index situado en DocumentRoot a nuestro criterio. Pero que pasa si yo tengo varias paginas web y quiero restringir el acceso a ellas porque no quiero que todos los usuarios de mi compania,por ej logren acceder a ellos. Tengan en cuenta que esa otra pagina va a ser un Vhost distinto y va a contener otro otro index o quizas no , simplemente sea un contenedor de archivos para que puedan hacer uso ciertas personas. Imaginemos el siguiente escenario : - ls /home/user1/web index.php --> archivo privado --> Directorio - ls /home/user1/web/privado tux.jpg backup.tar.gz prueba.sh Lo que vamos a hacer es que cuando algun usuario quiera acceder a /privado tenga que autenticarse de alguna manera y para ello trabajaremos con alguna de nuestros 2 tipos de autenticaciones (Basica/Digest). Vhost con una Autenticacion basica - vim /etc/apache2/sites-avalaible/misitio <VirtualHost *:80> --> El * es equivalente a todos/as ServerName www.misitio.com DocumentRoot ~/web --> ~ hace referencia a /home/usuario <Directory ~/web/privado> AuthType Basic AuthName "Zona Restringida" AuthUserFile /etc/apache2/usuarios AuthGroupFile /etc/apache2/grupos require valid-user </Directory> </VirtualHost> Analizemos un poquito lo que acabamos de hacer, con el directorio ya creado en ~/web/privado definimos que este mismo no sea accedido por cualquiera sino que sea a travez de un usuario y contraseña. Aunque todo esto va a viajar por texto plano(tener en cuenta ya que con cualquier sniffer podemos capturar la misma). - AuthType : Define el tipo de autenticacion puede ser Basica o Digest. - AuthName : Define una leyenda a aparecer en el cuadro de dialogo al intentar acceder. - AuthUserFile : Define la ruta del archivo donde estan almacenado los usuarios. - AuthGroupFiel : Idem AuthUserFile pero para los grupos. - Require : El metodo de validacion que puede ser : * valid-user * user user1 user2 userx * group grp1 grp2 grpx * user user1 user2 grp1 grp2 Para crear los usuarios vamos a necesitar de htpasswd que ya viene con apache. - htpasswd -c (crea el archivo sino existe) /etc/apache2/usuarios user1 (nombre.usuario) Para crear los grupos creamos el archivo manualmente con la siguiente estructura : nombre_grupo1 : user1 user2 nombre_grupo2 : user3 user4 Vhost con una Autenticacion Digest Veiamos antes que nuestro contraseña iba a viajar por texto plano que era algo totalmente inseguro , asi como dejar el archivo /etc/apache2/usuarios sea accedido y/o modificado por cualquiera. Ahora en lugar de enviar la contraseña por texto plano o en base 64 con Digest las contraseñas no viajan por la red. Al pedir un recurso compartido, el servidor envia un numero (noonce) y con ese numero , la URI y la contraseña el browser realiza el Digest. Es Decir, un calculo basado en MD5 que le da un numero muy raro y dificil de obtener sin la contraseña y con esto se reduce el riesgo de captura de contraseña. Lo 1r0 que tenemos que hacer es cargar el modulo con a2enmod nombre_modulo o directamente llamarlo desde el Vhost. - vim /etc/apache2/sites-avalaible/misitio <VirtualHost *:80> ServerName www.misitio.com DocumentRoot ~/web <Directory ~/web/privado> AuthType Digest AuthName "privado" AuthUserFile /etc/apache2/usuarios Require valid-user </Directory> </VirtualHost> Para crear los usuarios vamos a necesitar de htdigest. - htdigest -c /etc/apache2/usuarios nombre_entorno_protegido usuario Nota : Tener en cuenta que para que digest funcione a la hora de la creacion el nombre del entorno protegido tiene que ser igual al mismo. En nuestro caso seria : - nombre_entorno_protegido = privado. Aunque estos son los 2 metodos de autenticacion podemos hacer un poquito mas fuerte nuestra configuracion dando permisos especiales a nuestros entornos de la siguiente manera : <VirtualHost *:80> ServerName www.misitio.com DocumentRoot ~/web <Directory ~/web/privado> AuthType Digest AuthName "privado" AuthUserFile /etc/apache2/usuarios Require valid-user Order Deny,Allow --> Establece un Orden. Deny From all --> También se puede hacer por ip/nombre. Allow From 10.0.0.x (IP) www.google.com (nombre). </Directory> </VirtualHost> Como hemos visto pudimos montar nuestra propia web , pudimos montar una sección donde almacenamos ficheros entre otros y lo combinamos con Basic/Digest y a través de unos permisos especiales. Ademas de esto podemos mejorar la configuracion de nuestros indices para hacernos la vida un poco mas sencilla. <VirtualHost *:80> ServerName www.misitio.com DocumentRoot ~/web <Directory ~/web/privado> AuthType Digest AuthName "privado" AuthUserFile /etc/apache2/usuarios Require valid-user Order Deny,Allow Deny From all Allow From 10.0.0.x www.google.com IndexOptions FancyIndexing --> Establece las opciones para los indices. IndexIgnore *.jpg *.rar *.sh --> Establece que ficheros no aparecen. AddDescription "Script's del Sistema" *.sh --> Añade una descripcion. AddIcon --> Asocia un icono a un fichero o tipos de ficheros. </Directory> </VirtualHost> ¡¡¡¡Pero esto no es todo Gente!!!! Tambien tenemos la posibilidad de trabajar con script's via web gracias a CGI (Common Gateway Interface). Es una herramienta que nos perminte ejecutar contenido dinamico, a través de ello podemos ejecutar cualquier programa del OS del server. Sera la aplicacion quien se encargue de generar el html o lo que querramos que el servidor web entrege al cliente. Es IMPORTANTE que en todo CGI se especifique la cabecera y despues se deje un espacio en blanco : - echo "content-type : text/plain" echo Ahora generaremos nuestro script, lo que yo hice para probar fue algo muy sencillo. - vim ~/web/info.cgi ------------------------------------------------ #!/bin/bash echo "content-type : text/plain" echo tail -f /var/log/apache2/error.log ------------------------------------------------ Ahora nos queda configurar nuestro Vhost para informarle como trabajar con CGI de la siguiente manera. Include /etc/apache2/mods-avalaible/cgi.load ScripAlias /cgi/ ~/web/ <VirtualHost *:80> ServerName www.misitio.com DocumentRoot ~/web </VirtualHost > Ahora cuando vallamos a www.misitio.com/cgi/info.cgi veremos como esta corriendo un tail del error.log de apache. Otra posibilidad puede ser que necesitemos que nuestros usuarios ejecuten/suban script ,lo cual es obviamente muy PELIGROSO!!! pero si no nos queda otra configuraremos el Vhost de la siguiente manera. <Location /cgi> AddHandler cgi-script cgi Options +ExecCgi --> Permite la ejecución de Script's para el directorio. </Location> Logging Algo a tener muy en cuenta a la hora de trabajar con Apache es que podemos y debemos darle importancia a los logs del sistema o de cada site , ya que se pueden configurar indivualmente y esto nos va a ayudar a poder resolver nuestros problemas de manera mucho mas rapida y evitarnos dolores de cabeza y evitar hacer preguntas sin sentido que a veces molestan un poco ya que la gente no se toma el tiempo para averiguar lo que realmente pasa. Tengan en cuenta que nosotros somos como ustedes y tenemos las mismas herramientas que ustedes. - ErrorLogin --> Fichero con informacion de Errores. - TransferLog --> Fichero con informacion de los accesos. - LogLevel --> Establece el nivel de detalle para el log de Errores y sus variantes son: . Emerg - Alert - Crit - Error - Warn - Notice - Info - Debug - LogFormat --> Define un formato para log de Acceso o Personalizado - CustomLog --> Establece fichero y formato para Log Personalizado. Re-direcciones En ocaciones nos va a pasar que por ahi es necesario mover las cosas de sitio. Hay que mover directorios de un lado a otro , transladar ficheros,etc, pero queremos que nuestros cliente sigan accediendo a nuestro site. Por ello justamente es que nacen las redirecciones y tenemos varias maneras de hacerlo. Alias - Con ello podemos acceder a directorios que estan dentro o fuera del mismisimo DocumentRoot de la siguiente manera. * Alias /publico /var/www/sitio_fuera_DocumentRoot * Alias /tesoreria ~/web/privado/bancos/tesorería Redirect - Asocia una URL vieja con una URL nueva * Redirect /publico http://www.taringa.net Rewrite - Es una herramienta mas completa ya que nos permite aplicar las 2 configuraciones vistas anteriormente y mucho mas. Sirve mucho para cuando tenemos una URL del tipo: http://www.test.com/prog.php?opcion=1... y verlas como www.test.com/opc La configuracion seria la siguiente (Todo dentro del Vhost): * Cargamos el modulo : Include /etc/apache2/mods-avalaible/rewrite.load o a2enmod rewrite. RewriteEngine on RewriteLog /ruta/nombre_log RewriteLogLevel 9 RewriteRule /opc http://www.taringa.net RewriteRule /opc prog.php?opcion=1 La indica que es un proceso final, si se aplica no se seguiran aplicando mas reglas. SSL(Secure Socket Layer) Llega un momento en donde depende el ambiente en el cual estemos trabajando necesitamos hacer que la informacion viaje de tal manera que no sea legible, de poder cifrar la misma por si ahi algun sniffer por ahi y tambien para garantizar la privacidad y la identidad de las comunicaciones web. Tengan en cuenta que no es lo mismo tener un site como un blog que tener un site que administre los usuarios, las cuentas bancarias,etc. El modulo SSL ya viene por defecto con la instalacion de Apache , solo ahi que chequear si esta activo en /etc/mods-enabled/SSL.load Ahora lo siguiente, vamos a necesitar de OpenSSL para poder generar nuestros propios certificados y auto-firmados ya que en mi caso estoy en un entorno de pruebas y no necesito de una CA(Entidad Certificadora) pero llegado al caso que estemos en un ambiente de produccion sera recomendable poder trabajar con alguna CA (Verisign , Thawte, CertSign,FNMT,etc) que nos provea de un certificado ya que de no ser asi nuestros browser nos emergeran una alerta sobre el certificado que esta siendo usado por ese site ya que no puede reconocer dicho certificado, podemos aceptar ese certificado si queremos pero ahi que tener en cuenta puede ser un pishing y nosotros al aceptar el certificado y ingresando en la misma web podemos estar regalando toda nuestra informacion sensible a un tercero que dios sabe que hara con esa informacion. De todas maneras , si queremos generar nuestro propio certificado y auto-firmarlo lo haremos de la siguiente manera : 1ro - Generamos nuestra llave para poder firmar nuestro certificado. * openssl genrsa -des3 -out millave.key 2048 2d0 - Generamos nuestro certificado * openssl req -new -key millave.key -out cert.csr 3ro - Ahora con nuestra llave y nuestro certificado creamos el certificado auto-firmado. * openssl x509 -req -days 365 in cert.csr -signkey millave.key -out cert.crt Ahora con nuestro propio certificado podemos pasar a configurar el Vhost. Cargamos los modulos en el Vhost o con a2enmod y dsp en el Vhost : <VirtualHost *:443> - Activamos SSL --> SSLEngine ON - Le decimos donde se almacena nuestro certificado --> SSLCertificateFile /ruta_cert - Le decimos donde se almacena nuestra llave --> SSLCertificateKeyFile /ruta_key </VirtualHost> Consejos Apache es un servidor muy seguro pero todo siempre va a depender de nosotros mismo por mas seguro que sea una aplicacion/servicio si esta mal configurada no sirve de nada, bueno , con apache pasa lo mismo. Mantenerse al Dia Como todos sabemos nada es perfecto y puede fallar pero justamente aqui lo bueno de poder disponer el codigo fuente del programa y de la gran comunidad que hay detras de todo esto ,que al reportarse un agujero de seguridad no se tarda mucho en poder solucionar ese inconveniente. Protege los ficheros de configuracion Asi como sus archivos de configuracion y sus sub-directorios solo necesitan ser accedidos por ROOT y nadie mas. Vigila los Logs Una de las grandes herramientas que tiene un administrador es poder hacer uso de los logs y sacarle el maximo provecho para poder revertir la situacion. CGI y SSI Estos no son mas que dolores de cabeza y solo se recomienda usarlo en el caso que sea extremadamente necesario. Una mala configuración podria provocar un gran agujero de seguridad. Back-up Ten en cuenta que lo mas importante con todo lo que trabajamos es la informacion sensible que manejamos , una denegacion de servicio DDOS nos puede dejar congelado nuestro server por un par de horas ,pero eso no seria tan grave , lo peor seria que gracias a un tercero nuestra informacion sensible se viera corrompida , por eso es muy IMPORTANTE! que siempre tengas 1 o 2 back-up's en medios distintos de ser posible de tu informacion sensible.
Bueno.... ¿ Brother's como estan ? Como previamente habia hecho un tutorial de instalacion de mi distribucion/proyecto gentoo ahora lo que traigo es algo muchisimo mas rapido y consiso para los que les interese. Aclaro que es solo a mera observacion ya que no explicare cada paso ni que estoy haciendo en cada paso, digamos que es una guia para los que tengan un poco mas de conocimiento o simplemente deseen hacerlos aquellos que no pero que se pongan a leer un poco de que hace en cada paso ya que la idea no es que hagan copy/paste porque estamos en Gnu/Linux para aprender y pensar un poquito. Y todo esto para que tengan un entorno gentoo en unas horitas y no como a muchos que nos tardamos 1 semana entre que instalamos y leemos la guia de gentoo.org. Ahora los pasos a seguir *- Para hacer esto van a necesitar un live cd cualquiera o pueden usar el de gentoo que solo pesa 121MB (http://mirrors.kernel.org/gentoo/releases/x86/autobuilds/current-iso/ ) -* 1 - Preparar Disco (Particion y Formateo) * Fdisk , mkfs.* , swapon 2 - Configurar sus parametros para poder tener acceso a inet. * Dhcpd , Dhclient , /etc/resolv.conf 3 - Ajustar Fecha y Hora * date 4 - Montar nuestro / en mnt/gentoo * mount /dev/sdaX /mnt/gentoo 5 - Descargar y descomprimir tarball y portage dentro de / ( links http://www.gentoo.org/main/en/mirrors.xml ) * releases/x86/autobuilds/ --> stage3 && tar xjvfp nombre_stage && snapshots/ --> portage (La ultima version) && tar xjvf nombre_portage -C /usr 6 - Configurar servidores de replica * mirrorselect 7 - Montar sistema de archivos /proc y /dev en / 8 - Copiar /etc/resolv.conf a /mnt/gentoo/etc/resolv.conf 9 - Hacer Chroot 10 - Actualizar Portage 11 - Elegir perfil / configurar USE's 12 - Configurar zona horaria. 13 - Descargar/Configurar nucleo 14 - Configurar OS * Fstab , /etc/conf.d/* , usuarios 15 - Instalacion y configuracion Grub 16 - Instalacion de Herramientas Esenciales * Bitacoras , Tareas programadas , Red , etc. 17 - Reinicio del OS Si Todo salio bien hasta este punto veremos nuestro pequeño Grub iniciar y despues de seleccionado nuestro OS estaremos en nuestro propio entorno Gentoo! Aunque esto es solo el principio de todo faltarian muchas cosas que instalar y configurar ( X11 , WM , GUI , etc ) y asi moldearlo a nuestras medidas y necesidades. Espero que halla sido de su agrado y REPITO esto son los pasos a seguir para tener nuestro entorno Gentoo en unas cuantas horitas ya que tendrian que ver bien como realizar cada paso y saber que es lo que estan haciendo. ¡Exitos a todos!
Buenas! En esta oportunidad quiero dar a conocer cual es la distribución a la cual le estoy dedicando mi tiempo. Si bien mis primeros pasos fueron a través de Ubuntu, y después de un par de días por Debian no me he quedado conforme del todo, si bien no me disgustaba nada ya que me parecia una distribución bastante sencilla, me recomendaron que pruebe Gentoo, que era para mi. Entonces decidí hacer caso y la verdad que no me arrepiento, es una distribución que lleva su tiempo y con la cual aprendes mucho pero ahí rumores que dicen que no es para cualquiera , sin embargo no estoy de acuerdo , todo aquel que quiere aprender y tiene un poco de tiempo bienvenido sea a este mundo. Gentoo : Es una distribución muy casera que la vas moldeando a tu medida y necesidades , ya que como primera medida para la instalación lo unico que necesitas es un sistema base , portage, y un kernel. Con estas 3 herramientas por decirlo de alguna manera ya estamos listo para tener nuestra propia distribución. El sistema de paquetes se basa en el codigo fuente de las aplicaciones(aunque también se puede usar paquetes precompilados ) y para configurar Gentoo se usan archivos de texto plano. Requisitos de Instalación Para la instalación no se requiere de mucho, simplemente de un Live cd gentoo o cualquier distribución, una conexion a internet(como en cualquier distribución) y una compu. - Cpu >686 - Memoria >256mb - Espacion en Disco >1.5bg - Swap >256mb Aunque una computadora de estas prestación es muy difícil de encontrar hoy en día. Si mientras realiza la instalación desea poder ver el manual online de Gentoo puede visitar el siguiente enlace : Una de "malas cosas" que tiene Gentoo es que tarda un poco a la hora de instalar una aplicación, porque recordemos que trabaja con la fuente directamente, entonces una ves descargada la tiene que compilar y luego proceder con la instalación de la misma y depende del paquete,del tamaño , de las opciones de compilación ,etc. Pero tengamos en cuenta que esto no nos impide seguir usando nuestro OS en otra terminal local o de manera remota. Configuracion de Red Previamente habíamos dicho que lo que íbamos a necesitar iba a ser un sistema base (Tarball), un gestor de paquetes (Portage) y un Kernel. Para ello necesitaremos configurar red sin importar la distribución que estemos usando.(En este caso un Live de Gentoo) Primero que nada vemos si automáticamente se nos han asignado algún parametro de red : > ifconfig Y nos va a dar información de nuestras Ethx,Wlanx,etc. Si vemos que se nos ha configurado nuestra interfaz solo resta hacer un ping a algun site y si obtenemos respuesta seguimos adelante , de lo contrario revisar el archivo /etc/resolv.conf. Tengamos en los parametros que tenemos que tener configurados para tener salida a la nube son : - IP - Mascara de Red - Broadcast - Puerta de Enlace - Dns Preparación de HDD Después de haber configurado nuestra salida a la nube tenemos que proceder a configurar nuestro HDD y la verdad es muy sencillo. La aplicacion que usaremos es fdisk. > fdisk -l --> Lista la tabla de particiones para todo los discos. Elegimos el HDD a utilizar y luego procedemos a configurarlo. > fdisk nombre_disco --> El que obtuvimos de la lista anterior. ej: /dev/sda Una vez dentro del menu es muy sencillo. > m --> Muestra la distintas opciones. > d --> Suprime particiones. > n --> Crea particiones > p --> Imprime la tabla de particiones > t --> Cambia el identificador de sistema de una particion > a --> Marca una particion como Booteable > q --> Sale sin guardar los cambios > w --> Guarda los cambios El esquema de como hacer un buen esquema de particionado va a depender de hacia que uso este designado el OS. Tener en cuenta lo siguiente: / --> La raiz del OS /home --> El espacio personal designado para un usuario /boot --> Particion de arranque (150mb bastaran) /swap --> Particion de Intercambio Nota : En Aquellos tiempos se hablaba de que espacio asignarle a la particion de intercambio (swap) y se llego a la conclusion de que lo ideal era Memoria_Totalx2 pero en estos tiempos que el problema no suele ser un gran inconveninente queda a criterio de uno en cuanto es el espacio a asignarle a la swap. Una vez hecho nuestro esquema de particiones ,(Tenga en cuenta que el de arriba es un ejemplo) necesitamos poder asignarle un formato para poder instalar nuestro sistema. > mke2fs -j /dev/sdax (X hace referencia a la particion) Esto lo que hara es asignarle el sistema de archivos Ext3 a la particion que designemos. NOTA : Ya que la estructura de nuestro hhd esta compuesto de la siguiente manera: - sdxy * sd : Es el disco , en este ejemplo hace referencia a una sata. * x : Numero de HDD * y : Numero de partición Luego procedemos a inicializar la particion Swap. > mkswap /dev/sdxy Y por ultimo activamos la Partición > swapon /dev/sdxy Montando Particiones Ahora que ya tenemos listo nuestro disco tenemos que montarlo en donde ustedes prefieran usando el comando mount. > mount /dev/sdxy /mnt --> Aqui montaremos la raiz del sistemas. > mount /dev/sdxy /mnt/boot --> Aqui montaremos nuestra particion arrancable. Bajando nuestro Tarball y Portage Primero que nada antes de bajar algo seria mejor que ajustemos la hora del sistema para que no halla ningún tipo de inconvenientes. > date--> Nos imprimira la fecha del sistema. > date MMDDHHmmAAAA --> M:Mes ; Dia ; H:Hora ; m:Minutos ; A:Año Luego de haber configurado Fecha/Hora ahi que proceder a situarnos en el sistema raiz (El cual creamos) y alli mismo descargar el tarball(sistema base) de la pagina oficial de Gentoo. > links http://www.gentoo.org/main/en/mirrors.xml Nota : Estamos en modo consola por eso para poder bajar algun file de inet vamos a necesitar de algun cliente web por consola y el que usamos previamente se llama links, si esta usando un live cd de gentoo ya viene instalado, sino depende de live cd tendrá que ver que comando usar para descargar aplicaciones. Si su arquitectura de i686 una vez accedido a la url tendremos que acceder a algun servidor de descarga argentina,brasil,etc(recomiendo brasil) release/X86/autobuilds y en este caso particular trabajaremos con el stage3. Una vez descargado pasamos a descomprimirlo. > tar xjpvf nombre_archivo.tar.bz2 Variables usadas : - x --> Extraer - j --> Opcion utilizada para los archivos .bz2 - p --> Que mantega los permisos que traer - v --> Nos muestrar por pantalla el proceso que esta realizando - f --> Para informar que extraemos un archivo Ahora procedemos a descargar nuestro portage del siguiente enlace : > links http://www.gentoo.org/main/en/mirrors.xml Volvemos a seleccionar nuestro servidor de descarga y en la carpeta snapshots seleccionamos el ultimo paquete (portage-latest.tar.bz2) y una vez logrado la descarga lo descomprimimos. > tar xjvf nombre_paquete.tar.bz2 -C /usr Tengan en cuenta que /usr hace referencia a el que se creo cuando se descomprimio el sistema base. Configurando nuestro entorno ChrooT Ahora que ya tenemos nuestro tarball y nuestro gestor de paquetes ahi que decirle a gentoo de que servidor va obtener la informacion de sus fuentes para asi poder instalar , eliminar , hacer actualizaciones,etc. Tendremos que configurar la variable GENTOO_MIRRORS de manera manual o podemos usar la aplicacion mirrorselect en la cual tendremos que elegir el servidor y después el se encargara de crear la variable en nuestro archivo de configuración. > mirrorselect -i -r -o >> /etc/make.conf Otra cosita importante es seleccionar el servidor RSYNC el cual se va a utilizar portage para actualizarse. > mirrorselect -i -r -o >> /etc/make.conf Una ves hecho esto podemos hacer un cat de /etc/make.conf y ver la nuevas variables creadas. Nota : Recuerden que estamos trabajando sobre nuestra hhd al cual le creamos las particiones y luego montamos (En este caso lo habiamos montado en /mnt) Ya estamos terminando ,lo que sigue a continuacion es copiar el archivo resolv.conf (Que contiene informacion de nuestros dns) de nuestro live cd a nuestro hdd. > cp /etc/resolv.conf /mnt/etc Ahora montamos nuestros sistema de archivos /proc /dev > mount -t proc none /mnt/proc > mount --rbind /dev /mnt/dev Buenisimo! Ahora que tenemos nuestras particiones inicializadas y el sistema base instalado nos restar hacer un chroot , pasar de nuestro entorno actual de instalacion (Live cd) a nuestro propio entorno. > chroot /mnt /bin/bash *Cambiamos la raiz del sistema. >env-update *Creamos las variables de entorno. >source /etc/profile *Cargamos las variables en memoria. ¡¡¡Finalmente!!! Tenemos nuestro propio entorno. Lo que sigue a continuación es actualizar nuestro arbol de portage >emerge --sync Siguiendo con esto mismo ahi que seleccionar un perfil en el caso que lo deseemos , tenga en cuenta que un perfil seria como una configuracion predeterminada a la cual nosotros accederiamos la cual conlleva a tener sus propias USE,CFLAGS,entre otras variables. Podemos ver una lista de perfiles o seguir usando el nuestro. >eselect profile list Y si deseamos poder trabajar con un perfil predefinido tendriamos que hacer lo siguiente. >eselect profile set nro_perfil USE Esta variable es muy importante y es una de las grandes ventajas que tiene Gentoo frente a otras distribuciones ya que nos va a permitir decirle a las aplicaciones con que sera compatible , por ejemplo si quisieramos que nuestras aplicaciones se compilen sin soporte para KDE porque realmente no nos interesa y vamos a trabajar con un WM o gnome en nuestro archivo de configuracion /etc/make.conf deberiamos definir la variable USE="-kde -qt4" al hacer esto reducimos el tamaño de una aplicacion , el tiempo de compilado,tiempo de carga , sus dependecias. Ahi una configuracion por defecto de USE y se encuentra en : >less /usr/portage/profile/perfil_elegido/linux/make.defaults Y podemos obtener mas informacion sobre las variables USE en : >less /usr/portage/profile/use.desc Es muy importante que se familiarice con esto ya que es muy importante que es lo que le va a ayudar a moldear su OS y si tiene que agregar/sacar parámetros a su variable USE recuerde que siempre lo deberá hacer en /etc/make.conf Configurando el Kernel Primero debe configurar su zona horaria para que su OS sepa donde esta ubicado copiando la informacion de /usr/share/zoneinfo a /etc/localtime Ej : > cp /usr/share/zoneinfo/America/Buenos_Aires /etc/localtime El eje sobre el cual se construyen toda las distribuciones es el nucleo. Es la capa entre las aplicaciones de usuarios y el hardware del OS. Gentoo proporciona a sus usuarios varias fuentes de nucles y puede verlas aqui : http://www.gentoo.org/doc/es/gentoo-kernel.xml Para los OS X86 ahí unas fuentes(gentoo-sources) que están modificadas para obtener algunas características adicionales. Una vez elegida las fuente procedemos a instalarlas , en mi caso : > emerge gentoo-sources Una vez instalado vera un enlace simbolico hacia la version de las fuentes de su kernel en /usr/src y con esto mismo vamos a poder pasar a la configuracion de nuestro kernel ,para ello debemos situarnos en el : > cd /usr/src/linux y despues pasamos a configurarlo a través de un menu interactivo > make menuconfig * Cabe aclarar que ahí que tener una pequeña idea de hardware para poder proceder a configurar el kernel. Y luego de haber terminado la configuracion procedemos a instalar y compilar nuestro nuevo nucleo. > make && make modules_install Y al terminar de compilar el nucle copiamos la imagen a /boot > cp /usr/src/arch/i386/boot/bzimage /boot/nombre_kernel nombre_kernel : Puede tener cualquier nombre pero tenga en cuenta que tiene que ser algo relacionado para poder identificarlo , ya que despues vamos a necesitar ese nombre para configurar nuestro grub. Ya que cuando configuremos nuestro kernel vamos a poder cargar nuestros modulos automaticamente , sino llegamos a configurar esa opcion , ahi un archivo en el cual podemos cargar nuestros modules de manera automatica y lo haremos en : > /etc/modules_autoload.d/kernel-2.6 En /lib/modules/version_kernel va a encontrar los modulos disponibles sino puede hacer una busqueda con : > find /lib/modules/version_kernel/ -type f -iname "*.o" -or -iname "*.ko" | less Solo ahi que editar el archivo previamente mencionado y agregar el nombre del modulo sin su extencion. Configurando el Sistema En linux toda la información referente a las particiones del sistema debe estar reflejada en /etc/fstab. Aqui encontraremos los puntos de montajes, como deben ser montadas y con que opciones. Lo unico que tenemos que hacer es editar el archivo /etc/fstab que se encuentrar por defecto siguiendo esta estructura. Dispositivo Punto_de_montaje Fs opciones dump fsck /dev/sda1 /boot Ext3 default 1 2 /dev/sda2 none swap sw 0 0 /dev/sda3 / Ext3 default 0 0 /dev/sda4 /home Ext3 user,rw,auto 0 0 Haciendo un man fstab , vamos a encontrar las distintas variantes para configurar nuestras opciones. Informacion de Red Podemos configurar nuestros Hostname en : > vim /etc/conf.d/hostname Configurar nuestros parametros de red, como nuestra interfaz de modo estatico: >vim /etc/conf.d/net Podemos decirle que obtenga nuestros parametros de red por dhcp o manualmente : config_ethx("dhcp" ) O config_ethx("10.x.x.x netmask 255.x.x.x broadcast 10.x.x.255" ) routes_ethx("default via puerta_enlace" ) La puerta de enlace se obtiene haciendo un route -n , la ip que diga UG significa U=activa,G=puerta enlace. En /etc/conf.d/net.examples --> vamos a encontrar ejemplos de configuracion. Y una vez realizado esto tenemos que agregarla a nuestro runlevel para que se cargue al iniciar el sistema de la siguiente manera : > rc-update add net.ethx default * rc-update =script * add = agrega * net.ethx = interfaz * dafault = nuestro run level con el cual estamos trabajando. Configuramos nuestro teclado en /etc/conf.d/keymaps Las opciones del reloj en /etc/conf.d/clock Despues en /etc/host puede tener su configuracion dns LOCAL Ya terminando con esto necesitamos configurar nuestro sistema de arranque, ahi que instalar nuestro el programa que iniciara el nucleo cuando arranque el sistema que puede ser lilo o grub, yo voy a elegir grun y en sencillamente 3 pasos tendremos todo configurado. Lo instalamos de la siguiente manera : >emerge grub Una ves instalado pasamos a editar el archivo de configuracion. > Vim /boot/grub/grub.conf # Cual título arrancar por defecto. 0 es el primero, 1 el segundo, etc. default 0 # Cuantos segundos esperar antes de arrancar el título por defecto. timeout 30 # Una bella, hermosa imagen para ensalzar las cosas un poco splashimage=(hd0,0)/boot/grub/splash.xpm.gz title Gentoo Linux 2.6.34-r1 # Partición donde se encuentra la imagen del núcleo (o sistema operativo) root (hd0,0) kernel /boot/nombre_kernel root=/dev/sda3 Despues de haber modificado nuestro archivo de configuracion pasamos a instalar el grub en el mbr haciendo lo siguiente. >grub grub> root (sdx,y) --> Especificar donde esta nuestro /boot grub> setup (sdx) --> Instalamos grub en el mbr grub> exit --> Salimos Antes de reiniciar el sistema lo que debemos hacer es instalar algunas aplicaciones como por ejemplo : Bitacoras : syslog-ng , metalog Demonios Cron : vixie-cron , dcron , fcron Herramientas de red : dhcp , dhcpd ,ssh Acuerdese que cada ves que instalada una aplicacion/servicio debe agregarla a sus runlevel sino lo tendra que iniciar manualmente en /etc/init.d/servicio start No olvide asignarle una contraseña a root , crear un usuario con su contraseña ya que es muy MUY importante no trabajar NUNCA como usuario root salvo cuando la situacion lo requiera. Con todo esto listo ya tenemos nuestro propio Gentoo listo para trabajar , solo restar reiniciar el sistema sin el live cd y ya estaremos frente a nuestro propio OS. Quedan cosas que instalar que ya quedan a criterio de cada uno(servidorX,WM,gestor de inicio de sesion,web client's,offimatica,etc) , recuerde que es una distribucion casera en la que uno mismo la va moldeando dia a dia hasta que valla quedando como uno mas le guste.

Hoy otro tip sencillo que por ahi a mas de uno le puede llegar a servir. Hace unos dias estaba en el trabajo y necesitaba un file de casa que estaba en una machine de la red local pero que no tenia acceso desde la nube hacia esa ip. Gracias a python y sus modulos podremos montar un pequeño servidor web y de esta manera compartir archivos. NOTA : La imagen previa contiene los pasos ,se ve chico en el post.Haciendo , click derecho --> ver imagen se ve bien el contenido.

Gente como andan ??? Les traigo algo cortito , sencillo y eficiente para algunos. Hoy estube tuneando un poco mi fluxbox y curioseando un poco zenity y xmessages se me ocurrio hacer un pequeño script que me permita seleccionar una imagen y ponerla como fondo de pantalla. No tengo conocimientos de scripting , ademas del script del post que subi aca de como cambiar el fondo de pantalla cada x cantidad de tiempo , este es el segundo script oficial,jaja. Entonces.... Basta de palabras y empezemos con lo que nos interesa. ------------------------------------------------------------------------------------------------ #!/bin/bash #--------------------------------------------- # Requisitos : # Fluxbox - zenity - Esetroot - Editor de texto ( vim / nano , etc) # # Entorno Probado : # Gentoo - Fluxbox # -------------------------------------------- # Extensiones soportadas # support="jpg png jpeg" # # Seleccionamos la imagen # picture=$(zenity --file-selection --filename="$/HOME" ) # #Obtenemos la Extension # extension=$(echo ${picture#*.}) # # Chequeamos que sea una imagen y de ser asi la usamos. # for i in ${support} do if [ ${i} = ${extension} ] ; then Esetroot -s ${picture} exit 0 fi done if [ ${i} != ${extension} ] ; then zenity --title='Atencion!' --info --text="No ha seleccionado una imagen valida" fi ------------------------------------------------------------------------------------------------ Nota : La aplicacion Esetroot viene dentro de una aplicacion llamada eterm. ¡Exitos! EDIT = No hay mucho para mostrar peru DUE queria un print o scroting de pantalla .
Despues de ver un post de @bcd0101 me decidi por hacer mi 1er conky , ya que siempre me daba fiaca tener que leer y me aburria rapido , pero bue le puse un poco de onda y para ser la version 1.0 de mi desktop me quedo lindo y se los comparto. Aplicaciones : - Fluxbox - Tint2 - Conky - ConkyForecast Saludos! Para los que pedian Wall : http://wallpaperhd.eu/wallpapers/asgard___realm_of_the_gods-1366x768.jpg
![[ Aporte ] Convertir fecha a formato unix.](https://storage.posteamelo.com/assets-adonis/assets/2017/01/07/F93.jpg-6CcFH4skCMP.webp)
Algo sencillo y rapidito. Esta mañana me sucedio que tengo un bardo en el dhcp , ip por aca ip alla. Tonces despues de encontrar una ip "supuestamen libre" , me fijo para ver cuando fue la ultima ves que se asigno ip a esa maquina. Tonces busco esa ip en el log del arpwatch : o si hacia una busqueda en el log del squid : ( a modo de ejemplo, no tiene que ver con la busqueda ) Como veran la hora no se ve a lo que estamos acostumbrados , tonces vamos a pasarla a un formato un poco mas legible. En fin , un tip sencillo para el que no sabia y para refrescar mi memoria.
Llegado el comentario de una amigo el otro dia y de cabrearme cada ves que queria hacer un filtro para mi correo. Al usar gmail me veia "obligado" a tener que usar un web client para crear los filtros. En fin , como me da pereza tener que usar un mail client con GUI decidi seguir trabajando con mutt y realizar los filtros por mi cuenta pero para esto necesitaba descargar los mails ( cosa que antes no hacia ) sea imap o pop3. Ahora : Fetchmail --> Descarga nuestro correo. Procmail --> Filtro para correo. Mutt --> Cliente de correo. Es todo muy sencillo de trabajar , primero que nada usaremos Fetchmail para descargar nuestro correo y aca les dejo un ejemplo de configuración. cat ~/.fetchmailrc ## Server poll "imap.gmail.com" protocol IMAP port 993 --> ( En caso de que usen GMAIL ) user "usuario" password "password" --> Credenciales. ## Options keep --> Dejo una copia en el Server. ssl --> Trabajo con SSL mda procmail --> El MDA que voy a usar para filtrar los correos. #fetchall --> Descarga todo el correo folder Inbox,Archivos,Chicas --> Carpetas en donde va a comprobar si hay mail. #set logfile "~/usuario/logs/fetchmail.log" --> Si necesitamos un log file de depuración. Ahora lo que necesito hacer es que cuando empieze a descargar el correo , este mismo se tome un desvio y pase por Procmail antes de llegar a destino. Para ello necesito tener 2 cosas : 1- echo "| /usr/bin/procmail" > .forward 2 - Mi archivo con los filtros . cat .procmailrc MAILDIR=$HOME/.maildir LOGFILE="~/logs/procmail/procmail.log" INBOX_FOLDER=${MAILDIR}/Inbox/ LISTAS_FOLDER=${MAILDIR}/gentoo/ ## Filtros :0 * ^From.*gentoo-user* ${LISTAS_FOLDER} :0 * ^To.*gentoo-user* ${LISTAS_FOLDER} ## El correo que venga de [email protected] lo envio a /dev/null ( util para descartar SPAM ) :0 * ^From.*[email protected] /dev/null ## El correo que llegue de [email protected] lo reenvio a [email protected] :0 * ^From.*[email protected] [email protected] ## El Resto Directo al INBOX :0 * .* ${INBOX_FOLDER} Con esto queda configurar nuestro mutt o el cliente que mas les guste para que entre a nuestro $MAILDIR y asi poder ver los mail. Nota: Otro dia si quieren les dejo la config de mutt.