viernes, 30 de mayo de 2008

DHCP3 - Configuración básica

DHCP es nuestro servidor de direcciones IP dinámica, para que este trabaje hay que hacer unas cuantas configuraciones básicas como siguen:

Previas:
Disponer en nuestra maquina de una tarjeta de red adicional la cual debería de tener la dirección IP (10.10.10.1/8) de la red sobre la cual entregaremos las direcciones IP bajo demanda.

Instalación:

apt-get install isc-dhcp-server

Configuración:
El servicio DHCP solo debe de estar disponible en la red interna; solo se aceptan conexiones de esta, el archivo de configuración será:

* Editar el archivo: "/etc/default/isc-dhcp-server"

INTERFACESv4="enp0s8"


* Editar el archivo "/etc/dhcp/dhcpd.conf"

#Nombre de Dominio y direcciones de servidores de nombres
option domain-name "miDominio.com";
option domain-name-servers ipInternaServer, ipServidorNombresExterno;

# Reasigna direcciones a los clientes mal configurados
authoritative;

# Red en la que trabaja el servidor y rango de direcciones de la piscina
subnet 10.0.0.0 netmask 255.0.0.0 {
 option subnet-mask 255.0.0.0;
 option broadcast-address 10.255.255.255;
 option routers 10.10.10.1;
 pool {
   range 10.10.1.21 10.10.1.30;
 }
}

#Asignación única por mac de direcciones IP
host jefeLab {
  hardware ethernet 00:40:05:7F:F3:7E;
  fixed-address 172.25.0.102;
}


Reiniciar el servicio:
systemctl restart isc-dhcp-server

jueves, 29 de mayo de 2008

SQUID3 - configuración Básica

INSTALACIÓN:
apt-get install squid3

CONFIGURACIÓN:

******************************************************************
CONFIGURAR REGLAS DE IPTABLES

# IP del proxy
SQUIDIP=172.25.0.1

# puerto del proxy
SQUIDPORT=3129

iptables -t nat -A PREROUTING -s $SQUIDIP -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination $SQUIDIP:$SQUIDPORT
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t mangle -A PREROUTING -p tcp --dport $SQUIDPORT -j DROP
*********************************************************************
CONFIGURAR EL ARCHIVO
/etc/sysctl.conf

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

# Controls source route verification
net.ipv4.conf.default.rp_filter = 0

# Do not accept IP source route packets (we are not a router)
net.ipv4.conf.all.accept_source_route = 0

*********************************************************************
CONFIGURACION DE SQUID.CONF

Según orden de aparición mi configuración funciona y la comparto con uds.

# Squid normalmente escucha en el puerto 3128
# Pondremos IP interna del servidor : puerto opcion
http_port 172.25.0.1:3128 intercept


# Cache de accesos en log file
cache_access_log /var/log/squid/access.log


# memoria utlizada por Squid para realizar procesos
cache_mem 32 MB
***************************************************************************************

#Tamaño maximo de objetos almacenados en cache
maximum_object_size 10096 KB
***************************************************************************************

# Directorio de ubicacion de cache por defecto nroMB usados para almacenar directorios en primer y segundo nivel respectivamente
cache_dir ufs /var/spool/squid 700 16 256
***************************************************************************************

# Donde se almacena los mensajes del sistema
cache_log /var/log/squid/cache.log
***************************************************************************************

# Ubicacion del archivo de registro de archivos sacados de cache (cache_store_log none) se suguiere
cache_store_log /var/log/squid/store.log
***************************************************************************************

#Emula formato httpd para los archivos log (analisis de estadisticas webalizer)
emulate_httpd_log on
***************************************************************************************

#http_access allow Safe_ports
#http_access deny CONNECT SSL_ports
http_access allow CONNECT SSL_ports
***************************************************************************************

# LISTAS DE CONTROL DE ACCESO

http_access allow localhost
acl privilegio src "/etc/squid/IPprivilegio"
acl DAI src 172.25.0.0/16
acl contenidoNegado url_regex -i "/etc/squid/Negados"
acl appNegadas req_mime_type -i "/etc/squid/appNegadas"


#permitir acceso a docentes a todo
http_access allow privilegio
#denegar acceso a paginas al resto
http_access deny contenidoNegado
http_access deny all appNegadas
http_access allow DAI
http_access deny all
***************************************************************************************

#Para mostrar el nombre del host en errores de navegacion
visible_hostname willka
***************************************************************************************

#redirigir salida de paquetes por ACL
always_direct allow all
***************************************************************************************
#Habilitar emulacion httpd para sarg
emulate_httpd_log off

Los archivos de configuracion adicional tienen el contenido siguiente:
appNegadas
^application/x-msn-messenger$

IPprivilegio
172.25.0.101
172.25.0.102
172.25.0.103

Negados
www.hi5.com
xxx
sexo
p0rn

martes, 27 de mayo de 2008

ProFTPD

Para instalar el servicio lo haremos con:
apt-get install proftpd

Durante el proceso de instalación nos pedirá dos modos de operación por inetd crea un servicio por conexión e independiente cuando tenemos muchas conexiones, cosa de rendimiento.
Mi configuración es del tipo INDEPENDENTE.

ANONIMO
Primer Problema es habilitar la configuracion de FTP anonimo:
editando en archivo proftpd.conf en /etc/proftpd
quitando el comentario a las ultimas líneas (modo anónimo)

Reiniciando el demonio 
systemctl restart proftpd.service

Si al reiniciar tenemos problemas con las direcciones del tipo IPv6 solo tendremos que poner en off la opción en el proftpd.conf
UseIPv6 off

CARPETA.
Por defecto la carpeta de ftp anónimo se encuentra en /srv/ftp/, la cual podremos cambiarla de ubicación si lo deseamos, para ello hay que tener en cuenta que la nueva carpeta ftp tendrá como usuario y grupo a ftp:nogroup (chown ftp:nogroup carpetaNueva) y su contenido también, y editar las líneas de configuración anónima.

#< Anonymous ~ftp >
< Anonymous /nuevaRuta >


Reiniciar el demonio y todo listo.


PARA ENJAULAR.
  Cada usuario siempre se tiene que quedar dentro de su carpeta personal y no estar deambulando por las carpetas de otros usuarios sin permiso para ello solo se tendrá que descomentar.

DefaultRoot   ~

Apache2 - PHP5


INSTALACIÓN


root@server:~# apt-get install apache2



Instalando PHP5
root@server:~# apt-get install php5-common libapache2-mod-php5 php5-cli

CONFIGURACIÓN DE LOCALHOST
Cuando instalamos apache2 y probamos con un localhost si está todo bien aparece una página que nos dice IT WORKS con algunos detalles adicionales del servicio de apache.

Ahora si quisiéramos cambiar el directorio de nuestro index tendremos que editar alguna lineas en la configuración de apache2.

  1. Editar el archivo  "000-default.conf", el cual se encuentra en "/etc/apache2/sites-available/".
  2. Cambiamos a la nueva ruta.
  3. Agregamos Directorio con permisos.
#DocumentRoot /var/www
DocumentRoot /nuevaRuta
<Directory /home/INTERNET/www>
        Require all granted
<Directory>


REINICIAR EL SERVIDOR

root@server:~# apache2ctl graceful  ó

root@server:~# /etc/init.d/apache2 restart

HABILITANDO USUARIOS (public_html)


Si solo tenemos el modulo apache instalado lo único que será necesario ejecutar es:

root@server:~# a2enmod userdir

y se reinicia el servicio.

Si tiene PHP, se tiene que editar "/etc/apache2/mods-available/php5.conf" comentando de la siguiente manera:

#        php_admin_value engine Off

NOTA.- Si aún así en los usuarios cuando llamamos a un archivo .php el servidor pretende descargarlos, entonces procedemos a comentar todas la lineas del archivo php5.conf de /etc/mods-available/


ADVERTENCIA DE SERVIDOR NO ENCONTRADO

Algunas veces nuestro servicio apache2 nos mostrara este mensaje

"Could not reliably determine the server's fully qualified domain name. Using 127.0.0.1 for ServerName waiting apache2: Could not reliably determine server's fully qualified domain name 127.0.0.1 for ServerName"

Se evita este warning agregando una linea en:
/etc/apache2/apache2.conf
o
 /etc/apache2/httpd.conf

#El nombre, será el nombre del servidor o el que se desee.
ServerName <nombre>

domingo, 25 de mayo de 2008

Quitar MTA - Exim4


MTA (Mail Transfer Agent) es el gestor de correo electrónico y al arrancar el sistema este demora mucho tiempo, como yo no tengo un servidor de correo me parece tiempo desperdiciado el que se dedique a este agente, lo que hice entonces fue desinstalar el agente por defecto que es exim4 y todo lo que tenga que ver con su nombre, y asunto solucionado.

apt-get -y remove --purge exim4

sábado, 24 de mayo de 2008

Reiserfs, dispositivos y montaje

Resiserf es un sistema de archivos que resulta mucho mas optimo cuando se trata de almacenar archivos pequeños, tal es el caso de paginas web y sus imagenes, en comparacion con ext3 resulta siendo mas ventajoso.
Para formatear una particion o disco duro con este, solo hay que instalar el paquete reiserfsprogs y luego podremo usar el mkfs.reiserfs o mejor el gparted.
Para montar esta unidad:
1. Crearemos una carpeta /nuevoDisco en este se montara como referencia hacia el disco, lo que almacenemos no estara en la carpeta sino en el disco.
2. Montar nueva unidad, a diferencia de DOS que llama a sus unidaes A: B: C: D: etc en linux cambia la figura.
2.1. Si los discos son IDE.
/dev/hda -----> Disco Duro conectado como maestro en canal 1
/dev/hda# ---> particion primaria (1, 2, 3, 4) o extendida (5, 6, ... 16)
/dev/hdb -----> Disco Duro conectado como esclavo en canal 1
/dev/hdc -----> Disco Duro conectado como maestro en canal 2
/dev/hdd -----> Disco Duro conectado como esclavo en canal 2
2.2. Si los discos son SCSI
/dev/sda -----> Disco Duro scsi 1.
/dev/sdb -----> Disco Duro scsi 2.
2.3. Montando unidades.
#mount /dev/hdb /nuevoDisco
2.4. Desmontando unidades.
#umount /nuevoDisco
2.5 Si queremos que se monten al iniciar el sistema tednremos que editar en /etc/fstab, agregando nueva entrada o reemplazando una de las nuestras como para aumentar espacio en disco (/home /var), sino como otra unidad; sftab cuenta con 6 secciones:
/dev/hdb /puntoMontaje sistemaArchivos opcionesSistem errMontaje Check
por defecto entraremos asi:
/dev/hdb /nuevoDisco reiserfs defaults 0 0

jueves, 22 de mayo de 2008

QUOTA - Limitando el uso de disco

Cuando tenemos un servidor y muchos usuarios en el, el problema que se presenta a menudo es el uso y abuso de espacio en disco, la solucion entonces esta en la asignacion de quotas a los usuarios.

1. Montaremos las particiones involucradas con el uso de quotas, para ello editamos el archivo fstab
cat /etc/fstab
nos mostrara entre otros datos la linea que nos interesa editar:
/dev/hda1 /home ext3 defaults 1 1
editamos esta linea colocando soporte para quotas de usuario y grupo
/dev/hda1 /home ext3 defaults,usrquota,grpquota 1 1

2. Ahora reiniciamos el sistema para que levante la particion con el cambio.

3. Creamos los archivos de BD donde se almacenaran las quotas de usuario y grupo
touch /home/aquota.user
touch /home/aquota.group
chmod 600 /home/aquota.user /home/aquota.group

4. Instalamos el software de soporte de quotas
apt-get install quota quotatool

5. Poner limites a usuario jperez en 200Mb de limite advertido y 250 como máximo permitido
quotatool -u jperez -bq 200 -l '250Mb' /home

Para ver el uso de disco y quotas:
repquota /home

Migrar usuarios Linux - Debian

Son pocas las veces en las que vayamos a necesitar migrar nuestros usuarios de un servidor antiguo a otro nuevo pero aqui tenemos unos pasos simples para poder migrarlos.
hay que resaltar que en la nueva distribucion no debe de existir usuario alguno ya o de la distribucion antigua tendremos que eliminar al primero creado ya que su identificador sera 1000 y podria confundir al getor de usuarios de la nueva distribucion (me paso y ahora no se como eliminarlo ;)).

Servidor Antiguo.
1. Crear un directorio para migrar:
mkdir /root/migrar

2. filtrar las UID esto espara DEBIAN:
export UGIDLIMIT=1000

3. Copiar las contraseñas:
awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /root/migracion/passwd.mig

4. Copiar group:
awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534)' /etc/group > /root/migracion/group.mig

5. Shadow:
awk -v LIMIT=$UGIDLIMIT -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/passwd | tee - |egrep -f - /etc/shadow > /root/migracion/shadow.mig


6. Gshadow si existe:
cp /etc/gshadow /root/migracion/gshadow.mig

7. BackUp del Home y correo si tienen:
tar -zcvpf /root/migracion/home.tar.gz /home

En el nuevo servidor
En este servidor tendremos que hacer un backUp de los usuarios y contraseñas porsilas.
mkdir /root/users.bk
cp /etc/passwd /etc/shadow /etc/group /etc/gshadow /root/users.bk

Comenzamos con restaurar:
cd /root/migrar/
cat passwd.mig >> /etc/passwd
cat group.mig >> /etc/group
cat shadow.mig >> /etc/shadow
cat gshadow.mig >> /etc/gshadow

Extraemos el HOME
cd /
tar -zxvf /root/migracion/home.tar.gz

Por Ultimo reiniciar el sistema y todos los usuarios de antes estan copiados en el nuevo.

Script de Arranque

Las reglas de IPTABLES son buenos candidatos a ser script de arranque.

1. Crear el script
2. Cambiar los permisos de ejecución chmod 750
3. Copiarlo en el directorio /etc/init.d
4. Decirle a linux que inicie ese script al arrancar update-rc.d "NombreScript" defaults
4.1. Si lo queremos quitar del arranque le decimos: update-rc.d -f "NombScript" remove

Grub - Eliminar entradas, Recuperar

Lo primero sera determinar que entradas tenemos en nuestro linux.
dpkg --get-selections | grep linux-image

Ahora queremos eliminar las entradas y liberar espacio.
apt-get remove --purge linux-image-XXX
donde XXX son las imagenes de linux antiguas que queremos liberar.

RECUPERAR. (grub 2)
* Utilizar una distribucion cdlive con grub2
* Ver las particiones fdisk -l
* Buscar la particion "/" por lo general es sda1... montar en mnt "mount /dev/sda1 /mnt"
* Ahora montar el resto de dispositivios
mount --bind /dev /nmt/dev
mount --bind /dev/pts /nmt/dev/pts
mount --bind /proc /nmt/proc
mount --bind /sys /nmt/sys
* Para acceder como root chroot /mnt
* Cargar en grub grup-install --recheck /dev/sda (sda sin numero es el disco duro donde estan cargados los SO)
* Actualizar el grub update-grub2

miércoles, 21 de mayo de 2008

Linux Particiones

Siempre me pregunte como deberían de ser las particiones que un sistema linux debería de tener, como base tengo la siguiente estructura.

/ {etc, bin, sbin, lib, dev archivos para arrancar} 200MB recomendado.
/usr {bin, lib, shared} 6GB recomendado como servidor, uso de escritorio 500MB, es variable..
/var 3GB como uso de servidor, uso de escritorio son 40MB.
/tmp {Datos temporales de los programas}100MB.
/home Variable, para uso del resto de usuarios del sistema.
/swap {recomendado como el doble de memoria solo si tenemos menos 100MB máximo asignable es de 2GB}


Tipo de datos recomendado ext3 para discos mayores a 6GB.

UNA MODIFICACIÓN (2015):

/ 250Mb
/usr 4GB
/var 2GB
/swap 637MB
/tmp 343MB
/home resto del disco
/boot 255MB  (primaria no tiene que formar parte del LVM)

martes, 20 de mayo de 2008

Grub - Orden de arranque - Tiempo de espera

Si hemos trabajado durante mucho tiempo bajo Windows, y ahora cambiaremos a otro sistema operativo como podría ser Linux DEBIAN eth, (en mi caso), lo haremos de apoco para acostumbrarnos, luego de instalar nuestro Debian, el gestor de arranque será grub, con él, podremos escoger al inicio con que sistema entraremos, pero muchas veces mientras dure la mudanza querremos que uno de los sistemas entre primero y en un tiempo adecuado.

Solo tenemos que modificar desde linux el archivo menu.lst ubicado en /boot/grub/
y ubicar las entradas:
default num
donde num es el numero de orden de arranque del sitema(s) operativo(s) que tenemos instalado, por defecto esta el num = 0 linux luego el modo single user seria el num = 1 y otros nuevos kernels abajo del archivo separados por :
title
root
kernel
initrd
savedefault
luego los otros sistemas operativos WINDOWS por ejemplo.
si queremos que sea este ultimo en arrancar entonces la modificación en será num = 2;

Por ultimo, esta el tiempo que demorara en mostrar el menú grup al arrancar, para esto solo le daremos los segundos de espera, en mi caso sec = 2:
timeout sec
como para que me dé un tiempo para reaccionar y estar probando mi Debian.

GRUB 2
* Conocer el orden de arranque al inicio o ver el archivo "/boot/grub/grub.cfg" contarlos desde cero de arriba a abajo.
* Editar el archivo "/etc/default/grub" cambiamos la linea GRUB_DEFAULT=nroArranque
* Actualizar el grub con update-grub