Proteger directorio en apache

Conociendo la ubicación local del directorio a proteger, para este ejemplo se usara el directorio donde tengo configurado phpMyAdmin para acceder a la Base de Datos Mysql a traves de la web. El directorio se encuentra en:
/home/httpd/html/myadmin

Se accede desde la web desde:
http://localhost/myadmin/index.php

Editamos el siguiente fichero (respetar el punto de .htaccess), y lo guardamos en /home/httpd/html/myadmin
El punto (.htaccess y .htpasswd) delante del nombre de un fichero, convierte al fichero en oculto al hacer un listado.

En el siguiente codigo, le indicamos de donde tiene que leer el fichero con los usuarios y contraseñas con las que tenemos acceso a este directorio

——-Fichero: .htaccess———-
AuthUserFile  /home/httpd/html/myadmin/.htpasswd
AuthGroupFile /dev/null
AuthName «PhpMyAdmin Server»
AuthType Basic
 
Options All
<Limit GET POST PUT>
require valid-user
</Limit>
——-Fin Fichero————-

Este fichero hace referencia a un fichero en /home/httpd/html/myadmin/.htpasswd

Este fichero contiene los usuarios y contraseñas con las que tenemos acceso a este directorio (respetar el punto de .htpasswd)

Para generar este fichero usaremos la utilidad htpasswd, que genera un fichero de claves.

Para usarlo basta hacer:

[root@p90 myadmin]# htpasswd -c /home/httpd/html/myadmin/.htpasswd pepe
New password: (ponemos pepe como contraseña)
Re-type new password: 
Adding password for user pepe

Esto es lo que saldra en el fichero .htpasswd –> pepe:ZsXDr0J0KGuEo
La opción -c lo que hace es sobreescribir cada vez que lo ejecutais

Si quereis añadir nuevos usuarios basta hacer lo mismo sin la ‘-c’:

[root@p90 myadmin]# htpasswd /home/httpd/html/myadmin/.htpasswd tomas

 ———Fichero: .htpasswd———— 
 pepe:ZsXDr0J0KGuEo
——-Fin Fichero————-

Para poder usarlo tendremos que indicar al Apache que vamos a tener un directorio protegido. Para eso simplemente basta con añadir estas linias:

 <Directory «/home/httpd/html/myadmin»>
    AllowOverride All
</Directory>

Una vez hecho todo esto, solo necesitamo reiniciar el servidor Apache de la siguiente forma:

 [root@p90 myadmin]# cd /etc/rc.d/init.d/
[root@p90 init.d]# ./httpd restart
Shutting down http: [  OK  ]
Starting httpd: [  OK  ]

Comando find

Para localizar archivos con un nombre especifico desde un ruta especifica en toda la estructura interna de carpetas se utiliza:

find /home -iname ‘archivo.txt’

Este comando se puede utilizar para borrar el archivo ‘archivo.txt’ de forma recursiva en toda la estructura de directorios que se esta especificando.

find /home -iname ‘archivo.txt’ | xargs rm -rfv

Tuberías (pipes)

Podríamos representar cada programa como una «caja negra» que tiene una entrada y una salida que se pueden unir entre ellos.

El ejemplo que utilizamos se encuentra esquematizado en la figura 48 siendo la entrada estándar el teclado y la salida estándar «el terminal» o por simplicidad la pantalla.

redireccionio-diagrama-sort

Figura 48. Esquema de entrada y salida estándar del ejemplo

Vamos a suponer un caso ficticio donde necesitamos todas las definiciones de cada palabra en un texto. Primero las ordenamos alfabéticamente, luego utilizamos un comando ficticio llamado diccionario que toma palabras de la entrada estándar y las reescribe junto a su significado en la salida estándar.

Su esquema se ve en la figura 49. En este caso nombramos por separado las entradas y salidas estándares de los dos programas, pero la «unión» entre ambos programas se puede considerar como un sólo «tubo».

redireccionio-diagrama-diccionario

Figura 49. Esquema de entrada y salida estándar del ejemplo 2

En ese tubo, el flujo está en un estado intermedio, donde está ordenado, pero no tiene las definiciones de diccionario.

En la línea de comandos esto se escribe de la siguiente manera:

$ sort | dicccionario

Donde el caracter | representa la conexión entre la salida estándar de un programa y la entrada estándar de otro.

Con este fuerte y simple concepto se pueden concatenar gran cantidad de programas como si fuera una línea de producción en serie para generar resultados complejos.

Para mejorar nuestro ejemplo sacaremos las palabras repetidas, antes de mostrarlas con definiciones. Suponiendo que exista un programa llamado sacar-repetidas, la línea de comando sería:

$ sort | sacar-repetidas | diccionario

Simple, utilizando herramientas sencillas logramos algo un poco más complicado. El inconveniente que tenemos en este ejemplo es que hay que escribir aquello a procesar. Normalmente queremos utilizar archivos como entrada de nuestros datos. Es necesario un comando que envíe a salida estándar un archivo, así se procesa como la entrada estándar del sort y continúa el proceso normalmente. Este comando es cat. La sintaxis es simple cat nombre-de-archivo.

Quedando nuestro ejemplo:

$ cat archivo.txt | sort | sacar-repetidas | diccionario

… crea un glosario de las palabras que se encuentren en archivo.txt

La combinación de comandos es incalculable y brinda posibilidades enormes. Veamos algunos ejemplos.

Ejemplo 31. Uso de Tuberías

En el caso que se quieran buscar procesos con el string http:

$ ps ax | grep http
3343 ?        S      0:00 httpd -DPERLPROXIED -DHAV
3344 ?        S      0:00 httpd -DPERLPROXIED -DHAV
3975 ?        S      0:00 httpd -DPERLPROXIED -DHAV
12342 pts/6   S      0:00 grep http

Si queremos eliminar la ultima linea podemos volver a usar grep con la opcion -v

$ ps ax | grep http | grep -v grep
3343 ?        S      0:00 httpd -DPERLPROXIED -DHAV
3344 ?        S      0:00 httpd -DPERLPROXIED -DHAV
3975 ?        S      0:00 httpd -DPERLPROXIED -DHAV

Se pueden filtrar las líneas que contengan la palabra linux del archivo arch1.txt y luego mostrarlas en un paginador como less

$ cat arch1.txt | grep linux | less

Podemos enviar los resultados por correo a un amigo,

$ cat arch1.txt | grep linux | mail amigo@email.com

Comando du

Este comando informa al usuario de la cantidad de almacenamiento utilizado por los archivos especificados, posee varias opciones, su sintaxis es la siguiente:

du [opciones] [archivo…]

 

Sus opciones más significativas son:

-s
Muestra únicamente los tamaños de los archivos especificados en la línea de comandos.

-h
Muestra los tamaños de archivo en un formato más legible.

-c
Muestra en pantalla el espacio total ocupado por los archivos especificados.

-x
Omite en el conteo aquellos directorios que pertenezcan a otro sistema de archivos.

Ejemplo 8. Uso administrativo del comando du

El administrador de un servidor necesita saber el espacio en disco ocupado por los distintos directorios del sistema, para hacer limpieza. Para esto, se tiene en cuenta que no se deberán contar aquellos directorios que estén en su propio sistema de archivos, entonces se puede ejecutar de esta forma:

# du -sxh /*
6.8M    /bin
6.7M    /boot
351k    /dev
34M     /etc
2.8G    /home
43M     /lib
3.0k    /mnt
0       /proc
15M     /root
7.3M    /sbin
512     /swap
281k    /tmp
5.3G    /usr
758M    /var

Respaldar y Restaurar Base de Datos MySQL

Para respaldar y restaurar mediante una terminal de se utilizan los siguientes comandos:

Respaldar
Copia de estructura y datos:

mysqldump -uroot -p –opt database > database.sql

Copia solo datos:

mysqldump -u root -p –no-create-info database > database.sql

Copia solo estructura:

mysqldump -u root -p –no-data database > database.sql

Copia completa de base de datos:

mysqldump -uroot -p –force –opt –routines database > database.sql

Copia completa de varias base de datos:

mysqldump -uroot -p –force –opt –routines –databases database1 database2 > databases.sql

Restaurar
Para restaurar una copia de seguridad:

mysql -u root -p database < database.sql

¿Como especificar la direccion IP?

En ubuntu la configuración se especifica en /etc/network

DCHP

auto eth0
iface eth0 inet dhcp

IP Estatica

auto eth0
iface eth0 inet static
address 192.168.0.20
netmask 255.255.255.0
#broadcast 192.168.0.255
gateway 192.168.0.1
dns-nameservers 192.168.0.1 8.8.8.8 8.8.4.4

Con esta ultima linea al reiniciar se regenerara el archvo /etc/resolv.conf  con los nameserver especificados.

Realizados estos cambios es necesario actualizar la configuracion de la interfaz de red, esto se realiza mediante el comando

/etc/init.d/networking restart

Cabe destacar que dependiendo la distribución de linux que se este utilizando este comando o la ruta puede cambiar.