Algunas veces no puede interesar ejecutar programas o procesos de forma remota en un servidor. Para poder hacer esto existe RPC.
Funcionamiento:
Una llamada RPC es inicializada por el cliente, quien manda una petición a un servidor remoto para que ejecute el procedimiento especificado con sus respectivos parámetros. El servidor remoto manda una respuesta al cliente y la aplicación continua su ejecución. Mientras el servidor ejecuta el procedimiento el cliente se bloquea hasta que el servidor termina y le avisa.
Hay muchas variaciones y sutiliesas en las distintas implementaciones de RPC, lo que hace que haya incompatibilidades entre ellos.
Una diferencia importante entre llamadas remotas y llamadas locales es que las primeras pueden fallar por problemas de conexión en la red. Estas llamadas deben lidiar con estas fallas sin saber a si realmente el procedimiento fue invocado. Es por esto que el código de estos procedimientos debe estar escrito en un lenguaje de bajo nivel.
El comando rpcinfo
Este programa da información de los programas RPC que tiene habilitado un servidor.
$rpcinfo -p
da información de la máquina local
$rpcinfo -p host
Da información del servidor host
Muestra información de todas las máquinas en la red local que están corriendo el servicio de Yellow Pages:
$rpcinfo -b ypserv 'version' | uniq
Donde 'version' es la versión actual de Yellow Pages obtenida de los resultados anteriores.
El blog de la comunidad de usuarios de Software Libre de la Facultad de Ciencias de la UNAM.
jueves, 16 de junio de 2011
lunes, 13 de junio de 2011
Configurar un servidor samba y compartir impresoras Linux-Windows
Esta vez vamos a compartir archivos e impresoras entre sistemas operativos tipo Linux y Güindows. Para esto sera necesario compartirlos por medio del sistema de archivos Samba.
http://www.samba.org/
Lo primero que tenemos que hacer es instalar los paquetes:
samba
samba-common
samba-client
Una vez instalados deberemos editar el archivo de configuración ubicado en /etc/samba/smb.conf
Para determinar que carpetas van a ser las que vamos a compartir. Por ejemplo, supongamos que queremos compartir toda la carpeta home del usuario juan.
Entonces deberemos proceder de la siguiente manera:
_____________________________________________________
[public]
comment = Public Folder
path = /home/juan
public = yes
writable = yes
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup
guest ok = yes
_______________________________________________________
Si queremos compartir archivos sin restricciones de usuarios lo podemos hacer así.
Dentro de este archivo vamos a buscar la linea que diga lo siguiente:
; security = user
Y la sustituimos por
security = SHARE
Reiniciamos el servidor samba con:
/etc/init.d/samba restart
Para poder tener acceso desde windows, debemos dar click en el programa "ejecutar" o "run" e introducir la dirección ip donde está Samba. En mi caso esta en: 192.168.1.64
Listo!
_____________________________________________________
Impresión
Modificar archivo de configuración de Cups para que soporte el protocolo de SAMBA.
Modificar el archivo de configuración de SAMBA para que soporte impresión.
Seguir la instrucciones en Windows para agregar impresora.
_____________________________________________________
Máquina vitual.
Si tienes windows en una máquina virtual y quieres compartir archivos e impresoras con otras máquinas dentro de la red local deberás configurar un puente. Qemo lo hace automático pero Virtualbox no.
Revisa http://www.dedoimedo.com/computers/virtualbox-network-sharing.html para más información.
http://www.samba.org/
Lo primero que tenemos que hacer es instalar los paquetes:
samba
samba-common
samba-client
Una vez instalados deberemos editar el archivo de configuración ubicado en /etc/samba/smb.conf
Para determinar que carpetas van a ser las que vamos a compartir. Por ejemplo, supongamos que queremos compartir toda la carpeta home del usuario juan.
Entonces deberemos proceder de la siguiente manera:
_____________________________________________________
[public]
comment = Public Folder
path = /home/juan
public = yes
writable = yes
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup
guest ok = yes
_______________________________________________________
Si queremos compartir archivos sin restricciones de usuarios lo podemos hacer así.
Dentro de este archivo vamos a buscar la linea que diga lo siguiente:
; security = user
Y la sustituimos por
security = SHARE
Reiniciamos el servidor samba con:
/etc/init.d/samba restart
Para poder tener acceso desde windows, debemos dar click en el programa "ejecutar" o "run" e introducir la dirección ip donde está Samba. En mi caso esta en: 192.168.1.64
Listo!
_____________________________________________________
Impresión
Modificar archivo de configuración de Cups para que soporte el protocolo de SAMBA.
Modificar el archivo de configuración de SAMBA para que soporte impresión.
Seguir la instrucciones en Windows para agregar impresora.
_____________________________________________________
Máquina vitual.
Si tienes windows en una máquina virtual y quieres compartir archivos e impresoras con otras máquinas dentro de la red local deberás configurar un puente. Qemo lo hace automático pero Virtualbox no.
Revisa http://www.dedoimedo.com/computers/virtualbox-network-sharing.html para más información.
domingo, 12 de junio de 2011
Monitoreo de visitas con Apache
Esta vez vamos a utilizar un programa para analizar de forma fácil y rápida los logs de Apache para ver cuantos usuarios se han conectado a nuestro servidor Web. utilizaremos la interfaz web que provee el mismo programa. Esta aplicación se llama visitors y esta en los repositorios de Debian y Ubuntu.
Más información en:http://packages.debian.org/unstable/web/visitors
Instalémoslo
$ aptitude -y install visitors graphviz
$ mkdir /var/www/visitors
Editemos el archivo /etc/apache2/sites-available/default
añadiendo lo siguiente:
# Para configuración de visitors
Order Deny,Allow
Deny from all
Allow from localhost
Allow from 192.168.1.0/24 #Para permitir acceso al log en todo el segmento 1 de mi red local.
# IP address you allow
Cámbialo por las direcciones que necesites.
Reiniciemos apache: /etc/init.d/apache2 restart
Usos!
Generemos el reporte:
$ visitors -A /var/log/apache2/access.log -o html > /var/www/visitors/index.html
Generar reporte de páginas visitadas
$ visitors -A -m 30 /var/log/apache2/access.log -o html --trails --prefix http://TUSERVIDOR > /var/www/visitors/trails.html
Generar gráfica de páginas visitadas
$ visitors /var/log/apache2/access.log --prefix http://TUSERVIDOR -V > /var/www/visitors/graph.dot
Utiliza el programa graphviz
$ dot -Tpng /var/www/visitors/graph.dot > /var/www/visitors/graph.png
¿Qué routers visitamos antes de conectarnos con un servidor?
La internet es una red hipercompleja por donde pasa todo tipo de información. Para conectarnos a un servidor particular (e.g www.duckduckgo.com) nuestros paquetes viajan por varias máquinas que van encaminando estos paquetes por la red hasta llegar al destino requerido. Para saber por donde va pasando esta información, se puede utilizar el comando traceroute.
Este comando esta en los repositorios de Debian y Ubuntu. Para más información visita: http://traceroute.sourceforge.net/
Una vez instalado su utilización es muy fácil.
Aquí les muestro la salida del comando haciendo una consulta para el servidor www.gmail.com
traceroute to www.gmail.com (74.125.224.214), 30 hops max, 60 byte packets
1 home (192.168.1.254) 4.878 ms 5.503 ms 5.775 ms
2 dsl-servicio-l200.uninet.net.mx (200.38.193.226) 19.806 ms 22.386 ms 27.846 ms
3 reg-mex-roma-13-ge2-0-0.uninet.net.mx (201.125.67.188) 29.120 ms 31.808 ms 32.177 ms
4 bb-la-onewilshire-10-pos0-4-2-0.uninet.net.mx (201.154.119.230) 68.827 ms 72.369 ms 72.704 ms
5 * * *
6 * 64.233.174.41 (64.233.174.41) 63.324 ms 51.401 ms
7 72.14.236.13 (72.14.236.13) 53.271 ms 55.641 ms 57.164 ms
8 74.125.224.214 (74.125.224.214) 59.162 ms 62.871 ms 63.266 ms
Con este comando nos podemos dar cuenta de posibles ataques de de suplantación de identidad.
Este comando esta en los repositorios de Debian y Ubuntu. Para más información visita: http://traceroute.sourceforge.net/
Una vez instalado su utilización es muy fácil.
Aquí les muestro la salida del comando haciendo una consulta para el servidor www.gmail.com
traceroute to www.gmail.com (74.125.224.214), 30 hops max, 60 byte packets
1 home (192.168.1.254) 4.878 ms 5.503 ms 5.775 ms
2 dsl-servicio-l200.uninet.net.mx (200.38.193.226) 19.806 ms 22.386 ms 27.846 ms
3 reg-mex-roma-13-ge2-0-0.uninet.net.mx (201.125.67.188) 29.120 ms 31.808 ms 32.177 ms
4 bb-la-onewilshire-10-pos0-4-2-0.uninet.net.mx (201.154.119.230) 68.827 ms 72.369 ms 72.704 ms
5 * * *
6 * 64.233.174.41 (64.233.174.41) 63.324 ms 51.401 ms
7 72.14.236.13 (72.14.236.13) 53.271 ms 55.641 ms 57.164 ms
8 74.125.224.214 (74.125.224.214) 59.162 ms 62.871 ms 63.266 ms
Con este comando nos podemos dar cuenta de posibles ataques de de suplantación de identidad.
sábado, 11 de junio de 2011
Dar permisos de administrador sólo a ciertos programas ejecutados por ciertos usuarios
En ocasiones, muchos programas necesarios para el trabajo de ciertos usuarios o grupos de usuarios necesitan ser ejecutados como root. Sin embargo debido a la política de seguridad de nuestra organización no podemos darle acceso a todo el sistema. Para solucionar esto, Linux cuenta con un comando llamado SUDOERS. Que una vez configurado nos ayudará a especificar permisos especiales para grupos o usuarios.
Descripción
SUDOERS es una lista en donde se agregan usuarios asociados a ciertos comandos qué sin esta configuración sólo podrían ser ejecutados por el root.
Básicamente se componen por aliases de comandos.
Hay cuatro tipos de alias:
User_Alias, Runas_Alias, Host_Alias y Cmnd_Alias.
User_Alias ::= NAME '=' User_List
Runas_Alias ::= NAME '=' Runas_List
Host_Alias ::= NAME '=' Host_List
Cmnd_Alias ::= NAME '=' Cmnd_List
NAME ::= [A-Z]([a-z][A-Z][0-9]_)*
Donde NAME es el nombre del comando a invocar.
User_List la lista de usuarios permitidos.
Host_List la lista de servidores permitidos.
Cmnd_List la lista de comandos.
Para mayor información revisa el manual de SUDOERS.
http://linux.die.net/man/5/sudoers
Ejemplo.
Tengo un servidor web con DNS dinámico. Para que asocie el ip dinámico que me da mi provedor de internet con un nombre (harpia.no-ip.org) debo estar ejecutando un comando llamado noip2 .
Sin embargo, estoy cansado de tener que ejecutar ese comando como root. Se puede solucionar de muchas formas pero dado todo lo que vimos con SUDOERS lo vamos a hacer así.
Práctica
Lo primero que pensamos es modificar el archivo sudoers ubicado en:
/etc/sudoers (cómo superusuario obviamente!)
ATENCION: el archivo originalmente no se podrá editar porque ni siquiera el dueño (root) tiene permisos de escritura. Si los cambiamos (sudo chmod o+w sudoers) habremos cambiado la configuración de sudoers y no podremos volver a utilizar el comando sudo! Por tanto ni siquiera podremos volver a editar sudoers para regresarlo a su forma original. Si te pasó esto revisa lo siguiente: http://kubuntuforums.net/forums/index.php?topic=3114059.0
También puedes volver a editar el archivo entrando al kernel a prueba de fallos.
Para realizar esto necesitaremos del comando visudo, un editor de texto que sólo modifica al archivo sudoers.
Ejemplo para apagar la computadora sin ser root
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
# Uncomment to allow members of group sudo to not need a password
# %sudo ALL=NOPASSWD: ALL
# Host alias specification
# User alias specification
User_Alias USERS = juan, juanlternate
# Cmnd alias specification
Cmnd_Alias APAGAR = /sbin/shutdown -h now, /sbin/halt, /sbin/reboot
Cmnd_Alias IP = /usr/local/bin/noip2
# User privilege specification
# Especificaciones de los usuarios
root ALL=(ALL) ALL
USERS ALL=NOPASSWD: APAGAR,/usr/local/bin/noip2
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
Descripción
SUDOERS es una lista en donde se agregan usuarios asociados a ciertos comandos qué sin esta configuración sólo podrían ser ejecutados por el root.
Básicamente se componen por aliases de comandos.
Hay cuatro tipos de alias:
User_Alias, Runas_Alias, Host_Alias y Cmnd_Alias.
User_Alias ::= NAME '=' User_List
Runas_Alias ::= NAME '=' Runas_List
Host_Alias ::= NAME '=' Host_List
Cmnd_Alias ::= NAME '=' Cmnd_List
NAME ::= [A-Z]([a-z][A-Z][0-9]_)*
Donde NAME es el nombre del comando a invocar.
User_List la lista de usuarios permitidos.
Host_List la lista de servidores permitidos.
Cmnd_List la lista de comandos.
Para mayor información revisa el manual de SUDOERS.
http://linux.die.net/man/5/sudoers
Ejemplo.
Tengo un servidor web con DNS dinámico. Para que asocie el ip dinámico que me da mi provedor de internet con un nombre (harpia.no-ip.org) debo estar ejecutando un comando llamado noip2 .
Sin embargo, estoy cansado de tener que ejecutar ese comando como root. Se puede solucionar de muchas formas pero dado todo lo que vimos con SUDOERS lo vamos a hacer así.
Práctica
Lo primero que pensamos es modificar el archivo sudoers ubicado en:
/etc/sudoers (cómo superusuario obviamente!)
ATENCION: el archivo originalmente no se podrá editar porque ni siquiera el dueño (root) tiene permisos de escritura. Si los cambiamos (sudo chmod o+w sudoers) habremos cambiado la configuración de sudoers y no podremos volver a utilizar el comando sudo! Por tanto ni siquiera podremos volver a editar sudoers para regresarlo a su forma original. Si te pasó esto revisa lo siguiente: http://kubuntuforums.net/forums/index.php?topic=3114059.0
También puedes volver a editar el archivo entrando al kernel a prueba de fallos.
Para realizar esto necesitaremos del comando visudo, un editor de texto que sólo modifica al archivo sudoers.
Ejemplo para apagar la computadora sin ser root
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
# Uncomment to allow members of group sudo to not need a password
# %sudo ALL=NOPASSWD: ALL
# Host alias specification
# User alias specification
User_Alias USERS = juan, juanlternate
# Cmnd alias specification
Cmnd_Alias APAGAR = /sbin/shutdown -h now, /sbin/halt, /sbin/reboot
Cmnd_Alias IP = /usr/local/bin/noip2
# User privilege specification
# Especificaciones de los usuarios
root ALL=(ALL) ALL
USERS ALL=NOPASSWD: APAGAR,/usr/local/bin/noip2
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
Nueva etapa del blog
El curso de administración de servidores se ha terminado, pero el blog sigue. A partir de ahora agregaremos más información referente a configuraciones, instalaciones y noticias relacionadas al mundo del software libre.
martes, 10 de mayo de 2011
Apache public\_html por usuarios
Sacado de:
Si tenemos una instlación de apache default. Deberemos de tener privilegios de superusuario para modificar el archivo userdir.conf ubicado en la carpeta: /etc/apache2/mods-available/
Ahi deberemos agregar la siguiente línea.
UserDir disabled
UserDir enable usuario1 usuario2
Esto permitirá un sitio web sólo para los usuarios 1 y 2 exclusivamente.
Una vez hecho esto procederemos a cargar los módulos. Para esto debemos crear un enlace simbólico entre mods-available y mods-enabled
sudo ln -s ../mods-available/userdir.load .
sudo ln -s ../mods-available/userdir.conf .
Una vez hecho esto reiniciamos el servidor apache con:
sudo /etc/init.d/apache2 restart
Listo!
Suscribirse a:
Entradas (Atom)