Cuando tienes más de 100 passwords para administrar se hace necesaria una herramienta de administración de password muy portable. Portable para Windows, portable para Linux, portable para la Blackberry o portable el iPhone. Cada uno de los técnicos accede a los passwords de una manera diferente.
Necesitamos por tanto que sea multiplataforma y multi-dispositivo. Que encripte lógicamente la información, que permita hacer grupos de password (servidores, access points, switches, etc), que permita adjuntar ficheros como puede ser una config de un Cisco, que permita búsquedas, que permita exportar a un Excel, que permita crear campos como la IP de un servidor o la fecha de la ultima actualización del servidor y sobre todo que sea opensource.
Pues bien, después de mucho probar la solución es: KeePass Password Safe.
Ahora cada vez que conectamos una Blackberry o un iPhone al portátil, sincronizamos el fichero de password automáticamente. Una maravilla…
keepass
27 de diciembre de 2009si quieres estos botones bajate miaddthis
por
amperis
a las
5:24 p. m.
1 comentarios
enviar por correo
suscribirse
url
ver reacciones
Etiquetas: administración, seguridad
run kiosco
20 de diciembre de 2009
Un kiosco en Linux es una máquina dispuesta en un stand para que los usuarios la puedan utilizar a modo de terminal de consulta. Por ejemplo si habéis ido alguna tienda de Pixmania, a la entrada hay un terminal (pantalla+teclado+ratón) donde solo tenéis acceso a su pagina Web para consultar sus productos.
En mi empresa hemos montado tres kioscos para que los empleados tengan acceso al "portal del empleado" y estén siempre al día de la noticias de la empresa. Una está en la cafetería, la otra en el restaurante y la otra aun no se donde irá.
Explico pues como montar una maquina de estas. La idea es que el Linux arranque automáticamente, cargue el firefox con la página de inicio y el usuario solo pueda consultar esta página. Naturalmente no podrá navegar por ningún otro sitio, no podrá reiniciarla, no podrá ejecutar ninguna aplicación, etc.
+ Instalaremos una versión ligera de Linux como Ubuntu Server. La idea es que cualquier maquina con poco disco (unos 2Gb) y memoria (unos 256Mb) nos pueda funcionar.
Haremos una instalación estándar y consideraremos los siguientes puntos:
1) Crear el usuario con nombre "operador". Este será el usuario con el que funcionará el
Kiosco.
2) No utilizar LVM ya que no es necesario.
3) Instalar OpenSSH Server. Es necesario para realizar un mantenimiento remoto del kiosco.
+ Actualizar la máquina e instalar un entorno X ligero como Blackbox (con 5Mb de RAM ya funciona):
operador@kiosko$ sudo passwd root operador@kiosko$ su root root@kiosko# apt-get update root@kiosko# apt-get upgrade root@kiosko# apt-get install x-window-system-core blackbox squid firefox mingetty flashplugin-nonfree+ Lo primero que haremos es configurar el Squid para decirle el conjunto de paginas Web por donde podrá navegar el kiosco. Si solo tenemos un kiosco el proxy lo instalaremos en la maquina local, si tenemos varios podemos instalar el proxy en uno de ellos y hacer que el resto de kioscos lo utilicen.
El usuario no puede escribir una URL ya que la pagina inicial le viene impuesta, el problema es que si la pagina contiene un link a otro site no controlado o no previsto, el usuario podrá navegar. Imagina que dentro de la pagina inicial encuentra un link a Google. Si accede a Google podrá navegar por donde quiera.
Para ello creamos el archivo "/etc/squid/kiosko_allow_sites.conf" y dentro colocaremos todos los dominios (incluidos nuestra pagina inicial) por donde queramos que navegue nuestro kiosco:
root@kiosko# cat kiosko_allow_sites.conf intranet.miempresa.com miempresa.com submiempresa.comAhora le decimos a Squid que acepte estos sites y que todo lo demás lo deniegue. Para ello editamos el /etc/squid/squid.conf. Dentro del "Defining an Access List", añadimos la ACL:
acl kiosko_allow_sites url_regex "/etc/squid/kiosko_allow_sites.conf"Ahora creamos la rule para aceptar estas sites y denegar el resto. Dentro de "Allowing or Denying access based on defined access lists" añadimos:
http_access allow kiosko_allow_sites http_access deny allAhora solo queda reiniciar Squid:
root@kiosko# /etc/init.d/squid restart+ Ya podemos arrancar el entorno X. Mientras tanto podemos ir conectándonos por SSH y terminar de configurar la maquina:
root@kiosko# startxPara arrancar Firefox manualmente, hacemos botón derecho en el ratón y ejecutamos xterm. En la ventana de consola podemos escribir "firefox" para ejecutarlo.
Una vez arrancado el Firefox lo configuramos para que siempre arranque nuestra pagina de inicio. Para ellos hacemos "Editar->Preferencias" y modificamos la "Pagina de Inicio".
Es aconsejable revisar todas las opciones de Firefox para no dejarnos nada. Por ejemplo:
1) cambiar la ruta de descargas de archivos a /tmp.
2) deshabilitar la barra de progreso de descargas
3) no recordar nunca los passwords
4) limpiar historial todos los dias
5) deshabilitar las actualizaciones
También debemos decirle a Firefox que utilice el proxy (Squid) que hemos configurado en el punto anterior. Para ello dentro de Preferencias vamos a Advanced->Network->Settings y añadimos:
HTTP Proxy: 127.0.0.1
Puerto: 3127
Otra cosa para configurar es deshabilitar la restauración de la sesión de Firefox al cerrar incorrectamente el navegador. Esto evita que cada vez que arranque el Firefox (al reiniciar el kiosco) pregunte si deseamos restaurar la ultima sesión:
1) En la URL escribimos "about:config" y pulsamos Enter
2) Buscamos "browser.sessionstore.resume_from_crash"
3) Hacemos doble click en el parámetro para ponerlo a false
También pondremos a false el parámetro "network.protocol-handler.external.mailto". Esto lo que hará es que cuando la pagina encuentre un link del tipo "mailto" este no funcione y no cargue ningún Webmail tipo GMail o Yahoo.
Tras finalizar la configuración de Firefox viene la parte más importante que es la instalación de un complemento de Firefox que nos permite eliminar las barras de navegación, la minimización de las ventanas, el botón derecho del ratón, etc: el R-Kiosk.
Lo debemos instalar accediendo a su descarga: https://addons.mozilla.org/en-US/firefox/addon/1659
Una vez arrancado Firefox con este complemento perderemos toda posibilidad de acceder a los menus y al escritorio la maquina. Si queremos arrancar con los menús de Firefox, tendremos que arrancarlo en safe-mode como se indica más abajo.
+ Hacer auto-login y arrancar el entorno grafico automáticamente.
Primero editamos "/etc/event.d/tty1" y cambiamos "exec /sbin/getty 38400 tty1" por "exec /sbin/mingetty –-autologin operador tty1". Esto lo que hace es el auto-login con el usuario "operador" creado durante la instalación.
Para arrancar las X editamos "/home/operador/.profile" y añadimos en la última linea un "startx".
+ Arrancar automáticamente Firefox. Creamos el archivo "/home/operador/.xinitrc". Este archivo se ejecuta cada vez que arranque el entorno gráfico:
root@kiosko# cat .xinitrc #!/bin/bash ## Arranque normal de Firefox firefox & ## Utilizar esta linea para arrancar Firefox en safe-mode ##firefox -safe-mode & . /etc/X11/Xsession root@kiosko# chown operador:operador .xinitrcNOTA: Si no queremos arrancar el R-Kiosk arrancaremos el Firefox con "firefox -safe-mode &".
+ También es necesario que el usuario no pueda hacer un "ctrl+alt+del" y reiniciar el kiosco. Para ello renombramos este archivo:
root@kiosko# cd /etc/envet.d root@kiosko# mv control-alt-delete control-alt-delete.disableOtras consideraciones: la máquina al arrancar es vulnerable a que un usuario pueda acceder. Por ejemplo, al arrancar el grub podría modificar los parametros de arranque, podría cambiar de tty mientras está cargado, o podría llegar a ejecutar un xterm antes de arrancar el Firefox.
Por esto unas modificaciones que podrías hacer tú es:
+ Modificar el grub para que el timeout sea 0 segundos.
+ Quitar todos los ttys no necesarios
+ No ejecutar ningún programa una vez dentro de Blackbox.
si quieres estos botones bajate miaddthis
por
amperis
a las
1:07 p. m.
1 comentarios
enviar por correo
suscribirse
url
ver reacciones
Etiquetas: linux
lvm: ponme un nuevo disco
14 de diciembre de 2009Actualmente tengo una maquina con un Oracle al que se le termina el espacio de disco. Tiene un disco de 68Gb en RAID1 montado por LVM (el /dev/sda). Hemos montado otro disco de 68Gb en RAID1 (el /dev/sdb) con la idea de ampliar el espacio del volum-group formado en la maquina.
Miramos primero que se ha reconocido el segundo disco:
root@virtuozo:~# ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 2009-12-11 11:50 /dev/sda brw-rw---- 1 root disk 8, 1 2009-12-11 11:50 /dev/sda1 brw-rw---- 1 root disk 8, 2 2009-12-11 11:50 /dev/sda2 brw-rw---- 1 root disk 8, 5 2009-12-11 11:50 /dev/sda5 brw-rw---- 1 root disk 8, 16 2009-12-12 16:39 /dev/sdb
Miramos cómo está montado el LVM en esta máquina. Miramos los Physical Volumen o los discos físicos que forman mi LVM:
root@virtuozo:~# pvscan
PV /dev/sda5 VG virtuozo.barcelona lvm2 [68.00 GB / 0 free]
Total: 1 [68.00 GB] / in use: 1 [68.00 GB] / in no VG: 0 [0 ]
Vemos que existe un volum-group llamado “virtuozo.barcelona” que está compuesto de la partición física /dev/sda5 de 68Gb.
Vemos ahora como está particionado este volum-group en diferentes logical-volum:
root@virtuozo:~# lvscan
ACTIVE '/dev/virtuozo.barcelona/root' [65.18 GB] inherit
ACTIVE '/dev/virtuozo.barcelona/swap_1' [2.82 GB] inherit
Está particionado en dos. La primera en “root” de 65Gb y la segunda es “swap_1” de 2Gb.
Ahora que tenemos esto presente, la idea de añadir un nuevo disco (el /dev/sdb) es aumentar el tamaño del logical-volum “root”, pasando de 65Gb a 133Gb aproximadamente.
Vamos pues. Lo primero que haremos es crear una única partición en /dev/sdb de system id “8e” (tipo LVM).
root@virtuozo:~# fdisk /dev/sdb The number of cylinders for this disk is set to 8908. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-8908, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-8908, default 8908): Using default value 8908 Command (m for help): t Selected partition 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Una vez creada la partición (ver ls –l /dev/sd*), la formateamos. En mi caso es formato ext3:
root@virtuozo:~# mkfs -t ext3 -c /dev/sdb1
Ahora ya podemos añadir nuestro nuevo disco al volum-group:
root@virtuozo:~# pvcreate /dev/sdb1 root@virtuozo:~# vgextend virtuozo.barcelona /dev/sdb1 root@virtuozo:~# pvdisplay --- Physical volume --- PV Name /dev/sda5 VG Name virtuozo.barcelona PV Size 68.00 GB / not usable 1.27 MB Allocatable yes (but full) PE Size (KByte) 4096 Total PE 17408 Free PE 0 Allocated PE 17408 PV UUID gextNx-qoAF-aNn9-1ARg-72bY-oQeY-sHaOQ7 --- Physical volume --- PV Name /dev/sdb1 VG Name virtuozo.barcelona PV Size 68.24 GB / not usable 454.00 KB Allocatable yes PE Size (KByte) 4096 Total PE 17469 Free PE 17469 Allocated PE 0 PV UUID dCibq8-B4TY-adnR-HR6j-iLv6-f15H-pBknpX
Para finalizar aumentamos el tamaño del logical-volum llamado “root”:
root@virtuozo:~# lvextend -l+17469 /dev/virtuozo.barcelona/root Extending logical volume root to 133.42 GB Logical volume root successfully resized root@virtuozo:~# lvscan ACTIVE '/dev/virtuozo.barcelona/root' [133.42 GB] inherit ACTIVE '/dev/virtuozo.barcelona/swap_1' [2.82 GB] inherit # resize2fs /dev/virtuozo.barcelona/root Filesystem Size Used Avail Use% Mounted on /dev/mapper/virtuozo.barcelona-root 133G 2.8G 123G 3% / varrun 1008M 84K 1008M 1% /var/run varlock 1008M 0 1008M 0% /var/lock udev 1008M 52K 1008M 1% /dev devshm 1008M 0 1008M 0% /dev/shm /dev/sda1 236M 26M 199M 12% /boot
Observar como utilizamos el parámetro +17469 para aumentar el espacio con los “Free PE” (Physical Extended) del nuevo disco que hemos añadido. También podríamos utilizar algo como “lvextend -L+68G /dev/virtuozo.barcelona/root”.
Esta es una tabla de todos los comandos que se pueden utilizar para LVM:
-------------------- Comandos de volúmenes físicos -------------------- pvchange | Cambia los atributos de un volumen físico pvcreate | Crea un volumen físico pvdata | Muestra información de depuración sobre un volumen físico pvdisplay | Muestra información sobre un volumen físico pvmove | Mueve extensiones físicas de un volumen físico a otro. pvscan | Localiza y enumera todos los volúmenes físicos -------------------- Comandos de grupos volumen -------------------- vgcfgbackup | Hace una copia del área del descriptor de grupo volumen vgcfgrestore | Recupera el área del descriptor de grupo volumen al disco vgchange | Cambia los atributos de un grupo volumen vgck | Comprueba la consistencia del área del descriptor de grupo volumen vgcreate | Crea un grupo volumen a partir de volúmenes físicos vgdisplay | Muestra los atributos de un grupo volumen vgexport | Exporta un grupo volumen del sistema vgextend | Añade volúmenes físicos a un grupo volumen vgimport | Importa un grupo volumen al sistema vgmerge | Combina dos grupos volumen vgmknodes | Combina un directorio y los archivos especiales de un grupo volumen vgreduce | Elimina volúmenes físicos de un grupo volumen vgremove | Elimina un grupo volumen vgrename | Renombra un grupo volumen vgscan | Localiza y enumera todos los grupos volumen del sistema vgsplit | Divide un grupo volumen -------------------- Comandos de volúmenes lógicos -------------------- lvchange | Cambia los atributos de un volumen lógico lvcreate | Crea un volumen lógico lvdisplay | Muestra los atributos de un volumen lógico lvextend | Incrementa el tamaño de un volumen lógico lvreduce | Reduce el tamaño de un volumen lógico lvremove | Elimina un volumen lógico lvrename | Renombra un volumen lógico lvscan | Localiza y enumera todos los volúmenes lógicos, creando /etc/lvmtab y /etc/lvmtab.d/* -------------------- Comandos del Administrador de Volúmenes Lógicos (LVM) -------------------- lvmchange | Cambia los atributos del sistema LVM lvmdiskscan | Localiza y enumera todos los discos disponibles, los dispositivos múltiples y las particiones lvmsadc | Recoge información sobre la actividad de LVM lvmsar | Muestra información sobre la actividad de LVM
si quieres estos botones bajate miaddthis
por
amperis
a las
4:06 p. m.
6
comentarios
enviar por correo
suscribirse
url
ver reacciones
Etiquetas: administración, linux, oracle, ubuntu
instalar oracle en linux y no morir en el intento (parte ii)
12 de diciembre de 2009
Es posible que al finalizar ya podamos acceder directamente a la consola de administración desde: http://ip_server:1158/em
Pero si reiniciamos veremos como Oracle no arranca por defecto. Hay muchos scripts por Internet para arrancar automáticamente la BBDD.
Lo que primero haremos es indicarle a Oracle que BBDD queremos arrancar al arrancar Oracle.
Editamos el /etc/oratab e indicamos que queremos que la única base de datos creada arranque:
dbora01:/u01/app/oracle/oracle/product/10.2.0:Y
Iniciar Oracle:
# su oracle # . oraenv (cargamos las variables de entorno) $ . oraenv ORACLE_SID = [oracle] ? dbora01 $ lsnrctl start (arrancamos el listener) $ dbstart (arrancamos la bbdd) $ emctl start dbconsole (arrancamos la consola de administración)
Podemos ver todos lo procesos que se arrancan:
$ ps -x Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.3/FAQ PID TTY STAT TIME COMMAND 6439 pts/0 S 0:00 bash 6469 ? Ssl 0:00 /u01/app/oracle/oracle/product/10.2.0/bin/tnslsnr LISTENER -inherit 6514 ? Ss 0:00 ora_pmon_dbora01 6516 ? Ss 0:00 ora_psp0_dbora01 6518 ? Ss 0:01 ora_mman_dbora01 6520 ? Ss 0:00 ora_dbw0_dbora01 6522 ? Rs 0:03 ora_lgwr_dbora01 6524 ? Ss 0:00 ora_ckpt_dbora01 6526 ? Ss 0:04 ora_smon_dbora01 6528 ? Ss 0:00 ora_reco_dbora01 6530 ? Ss 0:02 ora_cjq0_dbora01 6532 ? Ss 0:04 ora_mmon_dbora01 6534 ? Ss 0:00 ora_mmnl_dbora01 6536 ? Ss 0:00 ora_d000_dbora01 6538 ? Ss 0:00 ora_s000_dbora01 6542 ? Ss 0:00 ora_qmnc_dbora01 6544 ? Ss 0:00 ora_q000_dbora01 6546 ? Ss 0:00 ora_q001_dbora01 7029 pts/0 S 0:00 /u01/app/oracle/oracle/product/10.2.0/perl/bin/perl /u01/app/oracle /oracle/product/10.2.0/bin/emwd.pl dbc 7054 pts/0 Sl 0:28 /u01/app/oracle/oracle/product/10.2.0/jdk/bin/java -server -Xmx256M -XX:MaxPermSize=96m -XX:MinHeapFreeRa 7219 ? Ss 0:00 oracledbora01 (LOCAL=NO) 7226 ? Ss 0:01 oracledbora01 (LOCAL=NO) 7230 ? Ss 0:04 oracledbora01 (LOCAL=NO) 7235 ? Ss 0:02 oracledbora01 (LOCAL=NO) 7260 ? Ss 0:00 oracledbora01 (LOCAL=NO) 7274 ? Ss 0:00 oracledbora01 (LOCAL=NO) 7866 pts/0 Sl 0:01 /u01/app/oracle/oracle/product/10.2.0/bin/emagent 7897 ? Ss 0:01 oracledbora01 (LOCAL=NO) 7941 ? Ss 0:02 oracledbora01 (LOCAL=NO) 7973 ? Ss 0:04 oracledbora01 (LOCAL=NO) 8253 ? Ss 0:00 ora_j000_dbora01 8268 pts/0 R+ 0:00 ps -xEl primero que arrancamos es el listener. El listener es un servicio TCP que por defecto escucha en el 1521 y provee la conexión de clientes que necesitan realizar operaciones con la base de datos. Por ejemplo si tenemos una aplicación Java o PHP que desea realizar consultas contra la BBDD deberá contactar con el listener de Oracle pasándole su usuario/password y el SID de la base de datos.
La configuración del listener está en: $ORACLE_HOME/network/admin.
Luego levantamos la BBDD y con ello aparecen toda una serie de procesos llamados ora_*. Explicaré rápidamente algunos de estos procesos:
+ Ora_pmon: Es el Process Monitor. Es el encargado de limpiar los bufer y las caches que un usuario haya podido dejar sin liberar. Por ejemplo la conexión de red de un usuario cae y este tiene bloqueos de tablas, pmon libera las tablas, realiza rollbacks, etc de los recursos consumidos.
+ Ora_smon: Es el System Monitor. Es el encargado de recuperar la base de datos en caso de fallo de Oracle. Para ello utiliza los archivos de rehacer.
+ Ora_dbw: Es el Dabase Writer. Es proceso encargado de escribir en los ficheros fisicos los bloques de datos nuevos o modificados. Dependiendo del redimiento y necesidades de nuestro Oracle, podemos arrancar hasta 20 dbw.
+ Ora_lgwr: Es el Log Writer. Es el encargado de escribir los bloques del rehacer. Cuando tenemos una transacción primero se escriben los datos en los registros de rehacer antes que el ora_dbw los escriba finalmente en los ficheros de datos. Una transacción es correcta si ora_lgwr ha podido escribir los datos en sus archivos de rehacer.
Finalmente arrancamos la consola de administración que no es más que una aplicación Java (http://ip_server: 1158/em).
Ahora que parece que todo está arrancado vamos a conectarnos a la base de datos y hacer unas cuantas consultas de administración. No conectamos a la BBDD.
$ sqlplus /nolog > connect / as sysba Connected.
Veamos cuantas base de datos tenemos creadas:
SQL> select name, created, log_mode, open_mode, platform_name from v$database; NAME CREATED LOG_MODE OPEN_MODE --------- -------- ------------ ---------- PLATFORM_NAME -------------------------------------------------------------------------------- DBORA01 08/12/09 NOARCHIVELOG READ WRITE Linux IA (32-bit)
Vemos que tenemos una BBDD llamada DBORA01 y que está abierta para lectura/escritura.
Veamos cuantos tablespaces tiene esta base de datos:
SQL> select tablespace_name, contents from dba_tablespaces; TABLESPACE_NAME CONTENTS ------------------------------ --------- SYSTEM PERMANENT UNDOTBS1 UNDO SYSAUX PERMANENT TEMP TEMPORARY USERS PERMANENT EXAMPLE PERMANENT 6 rows selected.
Todos a excepción del EXAMPLE son los que nos encontraremos en una instalación estándar de Oracle. En el tablespace EXAMPLE encontraremos tablas de ejemplo para hacer pruebas.
Juguemos ahora con el schema SCOTT que se encuentra dentro del tablespace EXAMPLE. Para ello primero habilitamos el usuario que por defecto está cerrado:
SQL> ALTER USER scott ACCOUNT UNLOCK;
Entramos ahora con este nuevo usuario que por defecto tiene el password “tiger”.
$ sqlplus /nolog > connect scott/tiger
Veamos ahora su schema:
Sql> select * from cat; TABLE_NAME TABLE_TYPE ------------------------------ ----------- DEPT TABLE EMP TABLE BONUS TABLE SALGRADE TABLE SQL> select ename,job,sal from emp; ENAME JOB SAL ---------- --------- ---------- SMITH CLERK 800 ALLEN SALESMAN 1600 WARD SALESMAN 1250 JONES MANAGER 2975 MARTIN SALESMAN 1250 BLAKE MANAGER 2850 CLARK MANAGER 2450 SCOTT ANALYST 3000 KING PRESIDENT 5000 TURNER SALESMAN 1500 ADAMS CLERK 1100 ENAME JOB SAL ---------- --------- ---------- JAMES CLERK 950 FORD ANALYST 3000 MILLER CLERK 1300 14 rows selected.
¿Parece que Oracle funciona no?
si quieres estos botones bajate miaddthis
por
amperis
a las
1:29 p. m.
0
comentarios
enviar por correo
suscribirse
url
ver reacciones
Etiquetas: oracle
instalar oracle en linux y no morir en el intento (parte i)
8 de diciembre de 2009El éxito o fracaso de una instalación de Oracle en Linux consiste básicamente en leerse un único documento: la Quick Installation Guide. Para la correcta instalación debemos de cumplir una serie de requisitos de hardware, software, parámetros de kernel y directorio requeridos. Si fallamos en uno de ellos el proceso de instalación fallará.
Para el siguiente post instalaremos un Oracle 10g R2 para Linux x86. Para ello lo descargamos directamente de la Web de Oracle. También necesitaremos a mano su guía de instalación.
Primero de todo hemos de revisar los requisitos de hardware de nuestra versión de Oracle dentro de la guía. Para ello necesitaremos una maquina x86, con 1Gb de RAM mínimo y unos 4Gb de disco para el software base de Oracle. Todo lo que sea superior a esto lógicamente será mejor. Por otro lado debemos seleccionar un sistema operativo que esté dentro de los sistemas operativos soportados por Oracle: Red Hat Enterprise 3, 4, SUSE Enterprise 9 y Asianux 1 y 2.
Yo voy a seleccionar un clon de Red Hat 4 como es CentOS 4. Si tuviéramos esta máquina en producción y quisiéramos que Oracle nos diera soporte en caso de problemas tendríamos que optar necesariamente por un sistema Red Hat si no queremos que Oracle se desentienda.
Empezamos pues la instalación:
+ Realizamos una instalación tipo servidor de un CentOS 4.8. Seleccionamos un particionado automático que utilizará LVM, configuramos el TCP/IP, desactivamos el firewall y también el SELinux.
+ Al finalizar la instalación comprobamos que tenemos acceso a Internet y que tenemos espacio suficiente en el sistema:
# ping www.google.com # free (ver estado de la memoria y de la swap) # df –h (ver espacio libre en /)
+ Actualizamos el sistema e instalamos los paquetes requeridos para la instalación:
# yum update # yum groupinstall "X Window System" "GNOME Desktop Environment" # yum install \ setarch* \ compat-libstdc++* \ control-center* \ gnome-libs* \ gdb-6.1post* \ make* \ compat-gcc* \ compat-gcc-c++* \ glibc* \ glibc-common* \ glibc-devel* \ gcc* \ gcc-c++* \ compat-db* \ openmotif* \ libstdc++* \ libstdc++* \ sysstat* \ libaio* \ libaio-devel* # reboot
La instalación de Oracle utiliza un entorno de ventanas. Por este motivo he instalado el entorno gráfico en el servidor. Lógicamente en entorno solo lo arrancaremos para hacer la instalación, luego lo dejaremos apapagado.
+ Ahora creamos el usuario y los directorios necesarios para la instalación. Por defecto crearemos tres directorios: u01 (software base de oracle), u02 (archivos de la base de datos) y u03 (área de recuperación de datos).
# groupadd oinstall # groupadd dba # useradd -g oinstall -G dba oracle # passwd oracle # mkdir -p /u01/app/oracle # chown -R oracle:oinstall /u01/app/oracle # chmod -R 755 /u01/app/oracle # mkdir -p /u02/oradata # chown -R oracle:oinstall /u02/oradata # chmod -R 755 /u02/oradata # mkdir -p /u03/flash_recovery_area # chown -R oracle:oinstall /u03/flash_recovery_area # chmod -R 755 /u03/flash_recovery_area
+ Configuramos los parámetros del Kernel. Para ello editamos el /etc/sysctl.conf y añadimos las siguientes líneas:
kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 262144 net.core.rmem_max = 262144 net.core.wmem_default = 262144 net.core.wmem_max = 262144
+ Ahora añadimos las siguientes restricciones en los siguientes archivos:
En el /etc/security/limits.conf:
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
En el /etc/pam.d/login:
session required pam_limits.so
Y finalmente en el /etc/profile:
if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
Tras finalizar hacemos un reboot para cargar los nuevos parámetros del Kernel.
+ Ahora ya estamos en disposición de comenzar la instalación de Oracle. Para ello copiamos el “10201_database_linux32.zip” en una carpeta temporal. Por ejemplo en /usr/src/oracle10g.
Descomprimimos el software de Oracle:
# unzip /usr/src/oracle10g/10201_database_linux32.zip
+ Abrimos el entorno gráfico ya que el proceso de instalación de Oracle es en un entorno de ventanas.
# startx # hostname oracle.miserver.com # xhost oracle.miserver.com # su oracle $ cd /usr/src/oracle10g/database $ ./runInstaller
+ Una vez arranca el entorno gráfico de instalación hay que seguir las siguientes pantallas.
SimulacionInstalacion10gR2
+ Al finalizar la instalación no olvidarse de ejecutar (como root) los scripts de postinstalación tal como se recuerda.
# /u01/app/oracle/oraInventory/orainstRoot.sh # /u01/app/oracle/oracle/product/10.2.0/root.sh
si quieres estos botones bajate miaddthis
por
amperis
a las
4:48 p. m.
1 comentarios
enviar por correo
suscribirse
url
ver reacciones
Etiquetas: oracle
routing por diferentes proveedores
29 de noviembre de 2009Supongamos que tenemos un servidor (en este caso un servidor de VPN) que por cualquier razón su conexión a Internet (por el RouterA) se ha quedado pequeña. Hemos decidido comprar un nuevo router simétrico (el RouterB) para garantizar la calidad de la conexiones VPN para ciertas personas. Una grupo de personas se conectarán a la VPN por el RouterA y otros por el RouterB.
Este ejemplo es extensible a cualquier otro tipo de servicio que queramos ofrecer de forma que una parte del trafico va por un sitio y el otro por otro. La dificultad radica en que el tráfico debe volver por el mismo router por el que ha llegado.
Para realizar esto utilizaremos el comando "ip" que nos permite manipular las tablas de rutas, crear políticas de rutas y crear tuneles.
Veamos como está la tabla de rutas del servidor:
root# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 * 255.255.255.0 U 1 0 0 eth1
192.168.1.0 * 255.255.255.0 U 1 0 0 eth0
link-local * 255.255.0.0 U 1000 0 0 eth1
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
root# ip route show
192.168.2.0/24 dev eth1 proto kernel scope link src 192.168.2.2 metric 1
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.6 metric 1
169.254.0.0/16 dev eth1 scope link metric 1000
default via 192.168.1.1 dev eth0 proto static
Tanto el comando "route" e "ip route show" muestran la misma información. El comando "route" es la versión ligera del comando "ip route show".Cuando Linux necesita enrutar un paquete busca dentro de las tablas su camino. Por defecto hay tres tablas de enrutamiento: local, main y default.
root# ip rule list 0: from all lookup local 32766: from all lookup main 32767: from all lookup default
Veamos que hay dentro de cada una de ellas:
root# ip route list table local broadcast 192.168.1.0 dev eth0 proto kernel scope link src 192.168.1.6 broadcast 192.168.2.255 dev eth1 proto kernel scope link src 192.168.2.2 broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 local 192.168.1.6 dev eth0 proto kernel scope host src 192.168.1.6 broadcast 192.168.1.255 dev eth0 proto kernel scope link src 192.168.1.6 broadcast 192.168.2.0 dev eth1 proto kernel scope link src 192.168.2.2 local 192.168.2.2 dev eth1 proto kernel scope host src 192.168.2.2 broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 root# ip route list table main 192.168.2.0/24 dev eth1 proto kernel scope link src 192.168.2.2 metric 1 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.6 metric 1 169.254.0.0/16 dev eth1 scope link metric 1000 default via 192.168.1.1 dev eth0 proto static root# ip route list table default (vacia)
Ver como la tabla por defecto del sistema (la que vemos al hacer "route") se llama main.
Lo que vamos hacer es crear dos tablas más (lan1 y lan2) para que contengan las rutas para cada una de las diferentes salidas a Internet. Para ello editaremos el archivo /etc/iproute2/rt_table con el siguiente contenido:
root# cat /etc/iproute2/rt_tables # # reserved values # 255 local 254 main 253 default 0 unspec # # local # #1 inr.ruhep 10 lan1 20 lan2
Ahora crearemos las rutas que irán en cada una de estas tablas. Para que estas rutas se carguen en el sistema cada vez que arranquemos, la meteremos en /etc/rc.local:
root# cat /etc/rc.local #!/bin/sh -e ip rule add from 192.168.1.6 table lan1 ip route add 192.168.1.0/24 dev eth0 src 192.168.1.6 table lan1 ip route add default via 192.168.1.1 table lan1 ip rule add from 192.168.2.2 table lan2 ip route add 192.168.2.0/24 dev eth0 src 192.168.2.2 table lan2 ip route add default via 192.168.2.1 table lan2 exit 0 root# reboot
Estas órdenes aseguran que el tráfico que proviene de una interfaz, es contestado por la misma interfaz.
Una vez reiniciado el sistema vemos si las rutas se han cargado correctamente en el sistema:
root# ip rule list 0: from all lookup local 32764: from 192.168.2.2 lookup lan2 32765: from 192.168.1.6 lookup lan1 32766: from all lookup main 32767: from all lookup default root# ip route list table lan1 192.168.1.0/24 dev eth0 scope link src 192.168.1.6 default via 192.168.1.1 dev eth0 root# ip route list table lan2 192.168.2.0/24 dev eth0 scope link src 192.168.2.2 default via 192.168.2.1 dev eth1
Cuando un paquete llega al servidor este comprueba por orden si se cumple alguna de las reglas de tabla. Primero mira si se cumple "from 192.168.2.2". Si se cumple utiliza la tabla "lan2", de lo contrario pasará a ver si se cumple "from 192.168.1.6". Si se cumple utilizará la tabla "lan2". Por ultimo utilizará la tabla por defecto "main".
Para depurar y ver que todo funciona se puede utilizar el comando tcpdump y ver si el trafico pasa por una interfaz o u otra.
El siguiente escenario también lo podríamos utilizar por ejemplo para un servidor de correo donde queremos que el trafico del webmail (puerto 80 y 443) vaya por una ISP y el trafico al 25 vaya por otro ISP.
Más información:
+ Linux Advanced Routing & Traffic Control HOWTO
si quieres estos botones bajate miaddthis
por
amperis
a las
10:49 a. m.
2
comentarios
enviar por correo
suscribirse
url
ver reacciones
Etiquetas: internet, linux, networking
mi script de backups
8 de noviembre de 2009Cuando empiezas hacer copias de backups, se suele empezar por un pequeño tar, luego lo programas diariamente, te envías un report por correo, luego lo envías a otra maquina y finalmente terminas haciendo copias completas e incrementales.
El siguiente script en Bash es el que utilizo para realizar copias diarias. Se ejecuta cada día en un cron. Los sábados realiza un backup completo y el resto de dias un incremental. Realiza un backup en local y también lo envía por SSH a una máquina remota.
Descargar kbackup.sh.
#!/bin/bash ### modificar las variables segun las necesidades DATA_BACKUP="/etc/network /etc/ssh /etc/rc.local /var/log/syslog /var/log/auth.log /var/log/messages /var/log/dmesg /var/log/daemon.log" LOCAL_DST_BACKUP="/var/backuplocal" NAME_BACKUP="mi_srv" SEND_REMOTE_BACKUP="yes" REMOTE_DST_BACKUP="/var/backup/mi_srv" HOST_REMOTE_BACKUP="srvbackup.miempresa" DAY_FULL_BACKUP="Sun" ### variables especificas del script. No modificar _LIST="/tmp/backup$$.list" echo "kbackup.sh v0.1b, por amperis[@]gmail.com" echo case $1 in --help) echo "Sintaxis:" echo " # ./kbackup.sh " echo echo " --help: muestra la ayuda" echo " --exec: ejecuta el script" echo echo "Notas:" echo echo "1) Editar este script y modificar las variables necesarias." echo " DATA_BACKUP: Lista de directorio o fichero que de desean incluir en el backup." echo " LOCAL_DST_BACKUP: Directorio local donde se guardará la copia local del backup." echo " NAME_BACKUP: Nombre o prefijo del backup." echo " SEND_REMOTE_BACKUP: yes/no, indicar si queremos que el backup tambien se copie" echo " en un servidor remoto." echo " REMOTE_DST_BACKUP: Directorio remoto donde debe copiarse el backup." echo " HOST_REMOTE_BACKUP: Nombre de host o IP de la maquina remota que almacena el" echo " backup." echo " DAY_FULL_BACKUP: Día de la semana que queremos hacer el full backup" echo echo echo "2) Crear una tarea programada diaria para este script." echo echo " # crontab -e" echo " @daily /root/script/kbackup.sh | mail -s 'Report de Backup' admin@miempresa.com" echo echo "3) Para realizar el backup remoto es necesario que el servidor destino confie" echo " en cliente. Copia su llave al servidor (http://amperis.blogspot.com /2009/02/scp-entre-maquinas.html)" echo exit 0 ;; --exec) echo "-> Inciado a las `date +%H:%M:%S`h" if [ -d "$LOCAL_DST_BACKUP" ]; then set $(date) ## Backup completo. Se realiza solo los sabados if test "$1" = "$DAY_FULL_BACKUP" ; then echo "-> Ejecutando copia completa del $3 de $2 del $6" _NAME_BACKUP="$NAME_BACKUP-full-$6-$2-$3.tgz" tar cfzv "$LOCAL_DST_BACKUP/$_NAME_BACKUP" $DATA_BACKUP rm -f $LOCAL_DST_BACKUP/$NAME_BACKUP-incr* else ## Backup incremental, se realiza el resto de dias echo "-> Ejecutando copia incremental del $3 de $2 del $6 ..." find $DATA_BACKUP -depth -type f \( -ctime -1 -o -mtime -1 \) -print > $_LIST _NAME_BACKUP="$NAME_BACKUP-incr-$6-$2-$3.tgz" tar cfzTv "$LOCAL_DST_BACKUP/$_NAME_BACKUP" "$_LIST" rm -f "$_LIST" fi echo "-> Backup creado: $_NAME_BACKUP" ## Enviado el backup a un servidor externo if [ $SEND_REMOTE_BACKUP = "yes" ]; then echo "-> Enviando backup a $HOST_REMOTE_BACKUP" rsync -avz $LOCAL_DST_BACKUP/ -e ssh root@$HOST_REMOTE_BACKUP:$REMOTE_DST_BACKUP fi else echo "ERROR: El directorio $LOCAL_DST_BACKUP no existe" fi echo "-> Finalizado a las `date +%H:%M:%S`h" ;; *) echo "Utilice la opción --help para más información." ;; esac
si quieres estos botones bajate miaddthis
por
amperis
a las
1:46 p. m.
0
comentarios
enviar por correo
suscribirse
url
ver reacciones
Etiquetas: administración, linux, seguridad
actualizar versiones antiguas de ubuntu
25 de octubre de 2009Dentro de las actualizaciones de Ubuntu podemos ir a buscar estas en dos repositorios muy diferentes. Uno en http://archive.ubuntu.com/ y el otro en http://old-releases.ubuntu.com/. El primero de ellos es el repositorio oficial donde se encuentran las tres últimas versiones de Ubuntu que aun están en mantenimiento y actualización. En el otro repositorio se encuentran todas las distribuciones de Ubuntu de las que se ha dejando de dar mantenimiento.
Como regla general, Ubuntu presenta nueva versión cada medio año (6 meses) y da mantenimiento de ella un año y medio (18 meses). Existen excepciones en el manteamiento ya que hay versiones de Ubuntu etiquetadas como LTS (Long Term Support) donde se presta un manteniendo de cinco años. Estas han sido la 6.06 LTS y la 8.04 LTS.
Las versiones LTS permiten a los sysadmins montar servidores con altos periodos de vida sin necesidad de migrar de versión.
Si te ha dejado de funcionar el apt-get o el synaptic deberías comprobar si tú versión de Ubuntu se encuentra aún mantenida. Si no es así, deberías modificar tú source.list para que apt-get busque las actualizaciones dentro del old-releases.ubuntu.com.
En el siguiente ejemplo buscamos actualizaciones para la versión gutsy (7.10):
deb http://old-releases.ubuntu.com/ubuntu/ gutsy main restricted universe multiverse deb http://old-releases.ubuntu.com/ubuntu/ gutsy-updates main restricted universe multiverse deb http://old-releases.ubuntu.com/ubuntu gutsy-security main restricted universe multiverse deb http://old-releases.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse
si quieres estos botones bajate miaddthis
por
amperis
a las
4:41 p. m.
0
comentarios
enviar por correo
suscribirse
url
ver reacciones
test de velocidad entre dos puntos de red
1 de octubre de 2009
La idea es saber cómo se encuentran dos puntos de red distantes (por ejemplo entre un centro en Barcelona, otro en Madrid y separados por una FrameRelay, una MPLS o por Internet). Lógicamente también sirve para medir la velocidad entre dos puntos de una misma LAN.
Normalmente haríamos un ping con tamaños variables de los paquetes y observariamos los retardos o simplemente descargariamos de un punto a otro un archivo por ftp, por web o por carpetas compartidas.
Con la utilidad Netcps.exe podemos montar un control de velocidad de un extremo a otro. Simplemente basta con copiar el ejecutable en cada una de las maquinas y poner a funcionar uno como servidor y el otro como cliente. El cliente Netcps.exe se conectará al servidor Netcps.exe del otro extremo y realizará una descarga de 100Mb. Finalmente te dará una media de la velocidad de la linea.
Supongamos que hacemos las pruebas en una red Ethernet a 100Mbps (que son aproximadamente 12.5MB/s). Lanzamos el servidor en una maquina:
C:\>netcps -server NetCPS 1.0 - Entering server mode. Press ^C to quit Waiting for new connection...
Ahora lo lanzamos desde la maquina cliente para obtener la velocidad (la dirección 192.168.1.106 es el otro punto extremo):
C:\>netcps 192.168.1.106
NetCPS 1.0 - Entering client mode. Press ^C to quit
Connecting to 192.168.1.106 port 4455... Connected!
---> CPS 11483136.00 KPS: 11214.00 MPS: 10.95
Avrg CPS 11432359.00 KPS: 11164.41 MPS: 10.90
Peek CPS 11509760.00 KPS: 11240.00 MPS: 10.98
Done. 104857600 Kb transferred in 9.17 seconds.
Como resultado vemos que la velocidad obtenida es de 10.9MB/s que lógicamente tiene que estar muy cercano a los 12.5MB/s reales que es la LAN Ethernet.
Más información:
- Conversor de velocidades
si quieres estos botones bajate miaddthis
por
amperis
a las
7:21 p. m.
0
comentarios
enviar por correo
suscribirse
url
ver reacciones
Etiquetas: administración, internet, networking
activar spf en zimbra
22 de septiembre de 2009
Hay una persona que me matará cuando lea esta entrada. Seguro que me dirá algo como "¿cabroncete, después de 5 años me dices que no filtra por SPF?".
Se esperaba que con la versión 6 de Zimbra ya se trajera esto activado de serie... pero va ser que no. Y mucho peor, yo creía que ya lo traía de serie. Está muy bien que tú dominio ya esté preparado con los registros de SPF y esas cosas, ¿pero tú Zimbra los está utilizando?.
[root@zimbra ~]# dig txt google.com ... google.com. 3600 IN TXT "v=spf1 include:_netblocks.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all" ...
La respuesta es no. No tengo ni puta idea de por qué no lo está utilizando sabiendo desde hace años todo el problema del spam y concretamente del phishing.
Quien hace uso de esta funcionalidad dentro de todos los módulos Zimbra es el SpamAssessin. Es más, lo intenta cargar al arrancar:
# cat /opt/zimbra/conf/spamassassin/init.pre | grep SPF loadplugin Mail::SpamAssassin::Plugin::SPF
Lo que se intenta cargar es el módulo de Perl llamado "Mail::SPF::Query" que normalmente no está instalado en una distribución Linux, tampoco lo instala Zimbra y tampoco está como recomendación. ¿Raro no?.
Simplemente debemos instalar el módulo de Perl Mail::SPF::Query y todos los requisitos que previamente nos hace saber:
# perl -MCPAN -e shell cpan> install Mail::SPF::Query cpan> force install Mail::SPF::Query (utilizar este comando si hay algún problema durante la instalación)
Ahora solo queda reiniciar Zimbra y ver en el log como se hace uso del nuevo módulo de SPF:
# zcontrol stop && zmcontrol start
# cat /var/log/zimbra.log | grep SPF
Sep 22 21:57:52 zimbra amavis[31739]: extra modules loaded after
daemonizing/chrooting: Mail/SPF/Query.pm
Enviamos una par de emails de pruebas y miramos el cuerpo del mensaje. Uno utilizado el módulo SPF:
X-Spam-Status: No, score=1.763 tagged_above=-10 required=6.6
tests=[BAYES_50=0.001, HTML_MESSAGE=0.001, MISSING_SUBJECT=1.762,
SPF_PASS=-0.001] autolearn=no
Y el otro sin utilizar el módulo de Perl:
X-Spam-Status: No, score=0.463 tagged_above=-10 required=6.6 tests=[AWL=1.299, BAYES_00=-2.599, HTML_MESSAGE=0.001, MISSING_SUBJECT=1.762] autolearn=no
Ver como ahora hay un nuevo filtro llamado SPF_PASS.
Más información:
- http://www.zimbra.com/forums/administrators/33120-zcs-6-0-open-source-enable-spf.html
- http://wiki.zimbra.com/index.php?title=Improving_Anti-spam_system#SPF
- http://www.abuses.es/eswl/doc/spamassassin-eswl.pdf
si quieres estos botones bajate miaddthis
por
amperis
a las
8:52 p. m.
2
comentarios
enviar por correo
suscribirse
url
ver reacciones

suscribirse
para perder un rato
lo que leo
etiquetas
- administración (65)
- zimbra (61)
- linux (56)
- seguridad (56)
- networking (41)
- internet (35)
- postfix (24)
- tecnología (19)
- informatica (16)
- tonterias (16)
- php (15)
- google (14)
- cisco (13)
- mysql (12)
- windows (11)
- asterisk (9)
- general (7)
- apache (6)
- squid (5)
- bind (4)
- hacking (4)
- itil (4)
- oracle (4)
- ajax (3)
- sap (3)
- ubuntu (3)
- flickr (2)
- fotografía (2)
- blackberry (1)
- castelldefels (1)
- fonera (1)
- kirai (1)
- metadatos (1)
- samba (1)
- scp (1)
- seo (1)