viernes, 27 de septiembre de 2013

Configuración y uso de rsync contra un Ubuntu Server

Extraido: http://www.uhurulabs.com/2012/01/configuracion-y-uso-de-rsync-contra-un-ubuntu-server/
 
rsync es una aplicación que se puede encontrar en vuestros sistemas Linux, MacOS o  Windows y que permite sincronizar archivos y directorios entre dos máquinas de una red o entre dos carpetas de una misma máquina. Su uso es sencillo y es ideal para mantener al día copias de elementos utilizados por varias personas,  hacer copias de seguridad de nuestros datos de manera rápida y segura o mantener actualizada nuestra página web.
Puede funcionar de dos maneras:
  1. Instalando un daemon (un servicio) en nuestro servidor (donde tenemos los elementos a sincronizar) al cual accederemos mediante el protocolo rsync.
  2. Mediante un terminar remoto como SSH
Caso 1.El objetivo es instalar un daemon en nuestro servidor que atienda las peticiones de sincronización. Para ello los pasos a seguir son:
1.a) Instalar rsync. En general viene instalado de serie, y más en una versión server de Ubuntu, pero si no fuera así simplemente instálalo con Synaptic o mediante:
sudo apt-get install rsync
1.b) Hay que crear el fichero de configuración del daemon “/etc/rsyncd.conf”. En él definimos las caracterísiticas generales de la conexión, así como las de cada uno de los módulos o,  para definirlo mejor, las posibles ubicaciones de sincronización. El fichero tendrá una forma similar a esta
max connections = 2
log file = /var/log/rsync.log
timeout = 300

    [nombremodulo1]
    comment = Carpeta de documentos personales sobre Linux
    path = /carpeta/sobre/la/que/sincronizo/los/documentos/personales
    read only = yes
    list = yes
    uid = usuario1
    gid = usuario1  
    auth users = usuario1
    secrets file = /etc/rsyncd.secrets

    [nombremodulo2]
    comment = Carpeta de documentos Uhuru
    path = /carpeta/sobre/la/que/sincronizo/los/documentos/uhuru
    read only = yes   
    list = yes   
    uid = nobody
    gid = nogroup   
    auth users = usuario1 usuario2
    secrets file = /etc/rsyncd.secrets
Al principio del fichero se definen aquellas características generales de la conexión. En este caso aparecen el número de conexiones simultáneas, donde se va a ubicar el fichero log y el tiempo máximo de espera. En esta parte es posible indicar también algunas de las características que aparecen en los módulos para que todos ellos la hereden (salvo que se redefinan dentro de uno en concreto). Por ejemplo, en el código anterior, podríamos haber escrito en las características generales la configuración de secrets file o la opción list, ya que su valor es común para todos los módulos.
A continuación aparecen la definición y características del módulo. Los elementos más importantes son:
  • comment: un comentario sobre que se sincroniza con ese módulo.
  • path: el camino completo de la ubicación.
  • uid: nombre del usuario con el que rsync realizar las acciones.
  • gid: grupo con el que rsync realizará las acciones.
  • auth users: usuarios a los que se les está permitido la sincronización. Estos usuario en principio no tiene porque coincidir con ningún usuario del sistema.
  • secrets file: lo vemos en el apartado siguiente.
1.c)  Crear el fichero “/etc/.rsyncd.secrets”. Este fichero almacena parejas usuario:contraseña, que hacen relación a los usuarios definidos en el fichero “/etc/rsyncd.conf”. En nuestro caso podría ser algo como esto:
usuario1:mipassword1
usuario2:mipassword2
Obviamente este fichero, al ser texto plano,  ha de ser protegido contra “mirones”, ya que en caso contrario nuestras contraseñas quedan fácilmente accesibles. Es más rsync ni siquiera funcionará si no asignamos unos permisos adecuados a este fichero. Para ello:
sudo chmod 600 /etc/rsyncd.secrets
Es decir, el propietario debe ser el root y sólo puede ser leído por él.
1.d) Una vez configurado, sólo nos queda arrancarlo. Para ello lo mejor es utilizar xinetd, otro de los demonios que podemos encontrar en linux y que permite gestionar las conexiones de otros demonios bajo demanda.
Para ello lo primero es instalarlo (si es que no lo tienes aún):
sudo apt-get install xinetd
1.e) Configurar xinetd. Si no existe crea el fichero “/etc/xinetd.d/rsync” con el contenido siguiente.
service rsync
{
    disable = no
    socket_type = stream
    wait = no
    user = root
    server = /usr/bin/rsync
    server_args = --daemon
    log_on_failure += USERID
}
1.f) Comprobar el puerto por el que el servidor rsync escuchará. Para ello ves al fichero”/etc/services” y comprueba que la siguiente línea existe y no está comentada:
rsync 873/tcp
1.g) Reinicia el daemon xinetd. Para ello:
sudo /etc/init.d/xinetd restart
1.h) Ya tenemos el servidor funcionado. ¿Como lo usamos?. Sencillo, en local ejecutamos:
rsync -v --recursive --times --perms --links --delete /mi/carpeta/personal/local rsync://usuario1@miservidor/nombremodulo1
donde estamos haciendo una sincronización recursiva, preservando fechas y permisos de los archivos origen, incluyendo vínculos, borrando archivos que fueron borrados en el directorio origen. Todo ello desde un directorio origen /mi/carpeta/personal/local y utilizando el protocolo rsync contra el servidor miservidor, con el usuario1 y utilizando el módulo nombremodulo1
Caso 2. La segunda opción consiste en la utilización del terminal remoto seguro ssh.
El proceso de creación de clave pública y privada y configuración del terminal escapa de este tutorial.
En este caso no es necesaria la configuración del demonio en el servidor, tan sólo que rsync esté instalado en él. Para ejecutar la sincronización:
rsync -v --rsh=/usr/bin/ssh --recursive --times --perms --links --delete /mi/carpeta/personal/local usuario1@servidor:carpeta/destino/servidor
Tags: , , ,
Compartir en Facebook Compartir en Twitter

6 Comentarios a “Configuración y uso de rsync contra un Ubuntu Server”

  1. Jose dice:
    Un saludo a mis compañeros de hisx que leeran esto!
  2. Miguel dice:
    Hola , realice todos los pasos pero al realizar el punto 1.h) ,me pide la password pero me muestra error de autentificacion
    @ERROR: auth failed on module nombremodulo1
    rsync error: error starting client-server protocol (code 5) at main.c(1534) [sender=3.0.9]
    Cuando intento de un windows , reconoce la ruta pero también tengo problema con la autentificacion
    el archivo rsyncd.secrets esta con los permisos correspondientes
    salu2
  3. Carlos dice:
    Pues parece que lo que te está mostrando es un error de autenticación con lo que deberías comprobar si el fichero /etc/rsyncd.secrets es correcto y a su vez comprueba que el usuario definido en [nombremodulo1] está en /etc/rsyncd.conf
  4. Miguel dice:
    Gracias por la respuesta , finalmente era un problema de permisos en el archivo /etc/rsyncd.secrets y de permisos en las carpetas destino
    Gracias!!
  5. Sebasa dice:
    Estimados, quiero hacer una backup diferencial de la carpeta:
    /media/Archivos a la carpeta
    /media/Iomega
    quiero que los archivos se copien sin los permisos del propietario, como debo escrivir el comando?
    Gracias y saludos.
  6. arielcosta dice:
    Hola yo cambie la siguiente linea
    secrets file = /etc/rsyncd.secrets
    por esta otra
    secrets file = /etc/.rsyncd.secrets
    y me funciono
    muchas gracias por el tutorial, es muy bueno


jueves, 19 de septiembre de 2013

Añadir LLAVE-GPG a repositorios de ppa.launchpad.net en Ubuntu


Extraido: http://www.ubuntu-guia.com/2009/07/anadir-llave-gpg-repositorios-de.html

Hola a todos, soy Juanetebitel y vamos a ver cómo añadir llave GPG a los repositorios de ppa.launchpad.net

PPA, que significa Personal Package Archives, de launchpad son un sistema de repositorios para ubuntu, donde se pueden albergar proyectos personales de software con binarios precompilados para Ubuntu.

Cuando añadimos algún repositorio procedente de ppa.launchpad, si no le hemos instalado la llave GPG nos lanzará un error parecido a este:

Error de GPG: http://ppa.launchpad.net karmic Release Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 278228591C85B7A2



Nota: recordad los 8 últimos números, nos serviran más adelante.

Estas llaves fueron implementadas al sistema para mayor seguridad de sus repositorios (ej. pishing)

Las aplicaciones más utilizadas y testeadas siempre nos dará la llave , pero a veces no la podemos obtener por ser aplicaciones creadas por programadores o personas que sacan adelante proyectos muy interesantes o que simplemente la llave da error por cualquier motivo (Un ej. sería la instalación de VLC 1.0.0 para 64bits).


FORMA MANUAL

Vamos a Aplicaciones - Accesorios, abrimos una terminal y ponemos el siguiente comando:

gpg --keyserver subkeys.pgp.net --recv-key NUMERACION && gpg -a --export $PUBKRY | sudo apt-key add -

Donde pone "NUMERACION" ponemos los 8 últimos dígitos del final del error que nos lanzaba. Con la numeración del ejemplo anterior nos quedaría esto:

gpg --keyserver subkeys.pgp.net --recv-key 1C85B7A2 && gpg -a –export $PUBKRY | sudo apt-key add -

miércoles, 18 de septiembre de 2013

Cómo instalar módulos de Perl vía CPAN


Extraido desde: el sitio rm -rf

CPAN (Comprehensive Perl Archive Network) es una gran colección de software y documentación PERL, que permite de un modo extremadamente sencillo la instalación de módulos Perl.
El modo de instalación es bastante sencillo, en primera instancia, lanza como root el siguiente comando para seguir un asistente con una serie de preguntas bastante intuitivas y que en principio, con los parámetros que sugieren es posible seguir la instalación:
perl -MCPAN -e shell
Are you ready for manual configuration? [yes]
CPAN build and cache directory? [/home/alex/.cpan]
Cache size for build directory (in MB)? [10]
Perform cache scanning (atstart or never)? [atstart]
Cache metadata (yes/no)? [yes]
Your terminal expects ISO-8859-1 (yes/no)? [yes]
File to save your history? [/home/alex/.cpan/histfile]
Number of lines to save? [100]
Policy on building prerequisites (follow, ask or ignore)? [ask]
Where is your gzip program? [/bin/gzip]
Where is your tar program? [/bin/tar]
Where is your unzip program? [/usr/bin/unzip]
Where is your make program? [/usr/bin/make]
Where is your lynx program? [/usr/bin/lynx]
Where is your wget program? [/usr/bin/wget]
...
...
Una vez finalizadas las preguntas, automáticamente llegaremos a la consola de cpan a través de la cual podemos instalar módulos de forma sencilla:
cpan> install MODULE::NAME
ejemplo:
cpan> install Digest::MD5
Una vez hecho esto, CPAN automáticamente compilará el módulo.
Por supuesto, vía YUM podemos instalar CPAN de un modo rápido y sencillo si no estuviera instalado por defecto:
$ cpan
-bash: cpan: command not found
yum install perl-CPAN

miércoles, 11 de septiembre de 2013

Conectar MSSQL con PHP en Linux


Se quiere desarrollar una aplicación web en un servidor LAMP que muestre un reporte tomando datos de una base de datos (SQL Server 2005) que se encuentra en un Microsoft Windows Server 2003 R2.

Primeros pasos

Antes que nada, SQL Server tiene que aceptar usuarios SQL y sería bueno crear uno nuevo con permisos de lectura.

Server Authentication

  1. Abrir el SQL Server Management Studio.
  2. Click derecho -> Properties
  3. Ir a la página "Security"
  4. Marcar "SQL Server and Windows Authentication mode"
  5. Reiniciar SQL
[img_assist|nid=192|title=SQL Server Authentication Mode|desc=|link=none|align=center|width=625|height=531]

Crear usuario

  1. Click derecho en Security -> New -> Login
  2. Escribir el nombre que querramos
  3. ... la contraseña...
  4. En User Mapping elegir la base de datos y el permiso que se quiera.. en este caso: db_datareader.
[img_assist|nid=193|title=Crear usuario en SQL Server 2005|desc=|link=none|align=center|width=563|height=350]

Ahora Linux

Instalar extensión MSSQL de PHP
yum install php-mssql
y de paso, freetds
yum install freetds
Con freetds instalado, ya podemos probar si la configuración del SQL Server nos permite una conexión remota y si el usuario creado puede autenticarse con él.
tsql -S sqlserver -U ax -P *********

Probar PHP

<?php
 
  $myServer = "sqlserver";
  $myUser = "ax";
  $myPass = "**********";
  $myDB = "dbtest";
 
  //connection to the database
  $dbhandle = mssql_connect($myServer, $myUser, $myPass)
    or die("Couldn't connect to SQL Server on $myServer");
 
?>

miércoles, 4 de septiembre de 2013

Apache (internal dummy connection)

Extraido de: http://systemadmin.es/2012/04/apache-internal-dummy-connection

En los logs de servidores apache nos podemos encontrar con entradas similares a la siguiente:
127.0.0.1 - - [20/Nov/2010:09:06:11 +0100] "OPTIONS * HTTP/1.0" 200 - "-" "Apache (internal dummy connection)"
Tal y como viene documentado, se trata de un mecanismo interno de Apache que no podemos eliminar. Se sugiere en la documentación que lo podemos quitar de los logs de la misma manera que el w00tw00t.at.ISC.SANS.DFind:):
SetEnvIfNoCase User-Agent "Apache (internal dummy connection)" drop
Indicando que los logs no esten etiquetados con “drop” al guardarlos:
CustomLog "logs/access_log" combined env=!drop
O simplemente ignorarlo. Aún así, debemos tener en cuenta es que debe caer en un vhost que no haga ninguna operación, sino estaremos haciendo peticiones a una aplicación web. Para ello simplemente podemos añadir un vhost en un directorio vacío que sea el por defecto:
<VirtualHost *:80>
 DocumentRoot "/var/www/void"
        <Directory /var/www/void/>
            AllowOverride None
            Order deny,allow
            Allow from all
        </Directory>
</VirtualHost>
O en caso que no pueda ser, una RewriteRule que si el UserAgent es “Apache (internal dummy connection)” devuelva un 404:
RewriteCond %{HTTP_USER_AGENT} ^Apache\ .internal\ dummy\ connection.$
RewriteRule .* - [F,L]

martes, 3 de septiembre de 2013

Monitoring User Activity with psacct or acct

Extraido de http://beginlinux.com/blog/2010/01/monitoring-user-activity-with-psacct-or-acct/

Monitoring with psacct
An excellent program for monitoring users and applications is psacct.  This program will work in the background of your system recording what all users are doing on your system as well as the resources that are being consumed.  I originally started using this program when a client asked for a way to monitor his developers and what they were doing on the servers that they were working on.  psacct provided an excellent solution which told not only how long the developers were on the box but what commands they were using and how much of the resources they were using.  Another great application for this program is to use it to evaluate the resources that applications are consumed on your server.  So for example you could see the total resources consumed by apache, mysql, etc.  Whether you are a CentOS Administrator or an Ubuntu Server Administrator or a home user wanting to track activity on your machine, this is a good program to explore.

Install Process Accounting
yum install psacct
on Ubuntu
sudo apt-get install acct
Start Process Accounting
/etc/init.d/psacct start
Starting process accounting:                               [  OK  ]
on Ubuntu
sudo service acct start
Connect Time
The connect time in hours is based on logins and logouts.  The ac command provides a total.
ac
total      256.64
Accounting By Day
The system’s default login accounting file is /var/log/wtmp.
ac -d
Nov  1  total        8.78
Nov  3  total        6.15
Nov  6  total       13.68
Nov  7  total       15.50
Nov  8  total       10.54
Nov  9  total       10.56
Nov 10  total        8.41
Nov 13  total        8.66
—cut—
Today   total       19.33
Time Totals for Users
ac -p
root                                 5.83
mike                               251.29
total      257.13
Commands of Users
You can search out the commands of users with the lastcomm command which prints out the previously executed commands.
Explanation of Output:
Process  Flag    Username    Terminal   Time
ping         S       mike              pts/5      0.00 secs Thu Nov 30 13:39
Flags:
S -     executed as super-user
F -     executed after  but not following exec
D -     terminated with core file
X -     terminated with signal SIGTERM
lastcomm mike
bash                  X     mike     __         0.04 secs Thu Nov 30 12:49
bash                  X     mike     __         0.04 secs Thu Nov 30 12:57
ping                  S     mike     pts/5      0.00 secs Thu Nov 30 13:39
nmap                        mike     pts/4      4.01 secs Thu Nov 30 13:38
ping                  S     mike     pts/5      0.00 secs Thu Nov 30 13:37
ping                  S     mike     pts/5      0.00 secs Thu Nov 30 13:34
ping                  S     mike     pts/5      0.00 secs Thu Nov 30 13:34
bash                  X     mike     __         0.03 secs Thu Nov 30 13:28
bash                   F    mike     pts/6      0.00 secs Thu Nov 30 13:28
consoletype             mike     pts/6      0.00 secs Thu Nov 30 13:28
bash                   F        mike     pts/6      0.00 secs Thu Nov 30 13:28
id                                  mike     pts/6      0.00 secs Thu Nov 30 13:28
grep                            mike     pts/6      0.00 secs Thu Nov 30 13:28
bash               F        mike     pts/6      0.00 secs Thu Nov 30 13:28
grep                        mike     pts/6      0.00 secs Thu Nov 30 13:28
bash               F        mike     pts/6      0.00 secs Thu Nov 30 13:28
egrep                       mike     pts/6      0.00 secs Thu Nov 30 13:28
bash               F        mike     pts/6      0.00 secs Thu Nov 30 13:28
dircolors                   mike     pts/6      0.00 secs Thu Nov 30 13:28
bash               F        mike     pts/6      0.00 secs Thu Nov 30 13:28
Search Logs for Commands
Using the lastcomm command you will be able to view each use of an individual command.
lastcomm grep
grep                    mike     pts/6      0.00 secs Thu Nov 30 13:28
grep                    mike     pts/6      0.00 secs Thu Nov 30 13:28
grep                    mike     pts/5      0.00 secs Thu Nov 30 12:57
grep                    mike     pts/5      0.00 secs Thu Nov 30 12:57
lastcomm grep
grep                    mike     pts/7      0.00 secs Wed Mar 14 06:07
grep                    mike     pts/7      0.00 secs Wed Mar 14 06:07
grep                    root     pts/7      0.00 secs Wed Mar 14 05:39
grep                    root     pts/7      0.00 secs Wed Mar 14 05:39
grep                    root     pts/2      0.00 secs Wed Mar 14 05:16
Print Summary

The sa command will print a summary of commands that were executed.  It will also condense the information into a summary file called savacct which contains the number of times that the command was executed.  The useracct file keeps a summary of the commands by user.
Output Fields
cpu   -  sum of system and user time in cpu minutes
re    -  actual time in minutes
k     -  cpu-time averaged core usage, in 1k units
k*sec -  cpu storage integral (kilo-core seconds)
u     -  user cpu time in cpu minutes
s     -  system time in cpu minutes
/usr/sbin/sa
Print User Information
Use the -u option to provide information on individual users.
/usr/sbin/sa -u
/usr/sbin/sa -u
root       0.00 cpu      598k mem accton
root       0.00 cpu     1081k mem initlog
root       0.00 cpu      920k mem initlog
root       0.00 cpu     1172k mem touch
root       0.00 cpu     1402k mem psacct
mike       0.01 cpu     7282k mem kdeinit          *
mike       0.00 cpu     6232k mem gnome-panel      *
mike       0.02 cpu     4848k mem gnome-terminal
Display Number of Processes
An increase in these fields indicates a problem.  This prints the number of processes and the number of CPU minutes.  If these numbers continue to increase it is time to look into what is happening.
/usr/sbin/sa -m
195         220.31re           0.09cp     2220k
mike                                  65          198.37re           0.08cp     2135k
root                                  88          21.86re           0.00cp     1084k
postgres                              40          0.09re           0.00cp     4879k
smmsp                                 2           0.00re           0.00cp     1827k
Display All Names
This option will show each of the programs on your server so you may evaluate, real time, memory usage and which programs are running.
sa -a
221      83.36re       0.01cp     1414k
1       0.01re       0.00cp     1471k   rpmq
7       0.33re       0.00cp     2465k   sendmail*
1      40.78re       0.00cp     1844k   sshd
37       0.00re       0.00cp      964k   bash*
32       0.00re       0.00cp      604k   tmpwatch
27       0.00re       0.00cp     4984k   postmaster*
26       0.00re       0.00cp     1116k   df
15       0.00re       0.00cp      959k   id
11       0.00re       0.00cp      709k   egrep
8       0.00re       0.00cp      636k   sa
7       0.00re       0.00cp      817k   grep
6       0.00re       0.00cp      562k   ac
5       0.01re       0.00cp      789k   awk
3       0.41re       0.00cp     1219k   crond*
3       0.40re       0.00cp      674k   run-parts
3       0.00re       0.00cp      774k   dircolors
3       0.00re       0.00cp      673k   consoletype
2      40.98re       0.00cp     1344k   bash
2       0.14re       0.00cp     1628k   sshd*
2       0.00re       0.00cp      914k   logrotate
Sort by Percentage
This will provide the highest percentage users first.
sa -c
232  100.00%      83.36re  100.00%       0.01cp  100.00%     1482k
14    6.03%      41.09re   49.29%       0.01cp   58.82%      957k   ***other*
7    3.02%       0.33re    0.39%       0.00cp   41.18%     2465k   sendmail*
37   15.95%       0.00re    0.00%       0.00cp    0.00%      964k   bash*
32   13.79%       0.00re    0.00%       0.00cp    0.00%     4984k   postmaster*
32   13.79%       0.00re    0.00%       0.00cp    0.00%      604k   tmpwatch
31   13.36%       0.00re    0.00%       0.00cp    0.00%     1122k   df
15    6.47%       0.00re    0.00%       0.00cp    0.00%      959k   id
11    4.74%       0.00re    0.00%       0.00cp    0.00%      709k   egrep