Páginas

sábado, 17 de septiembre de 2011

Unir Linux a Active Directory

Unir Linux a un dominio Active Directory

Puede parecer mucha cosa, lo que lo que en realidad lo complica es que, por diseño, Windows dificulta la interoperatibilidad. Menos mal que los heroicos programadores de Linux, como el equipo Samba, hacen posible la interoperatibilidad y las redes mixtas.

Las cuentas de usuario son gestionadas en el servidor AD, disponibles para Linux a través de winbind y pam. De manera que no es necesario crear cuentas duplicadas en su máquina Linux.

Sus cuentas locales (en la máquina Linux), son invisibles para Active Directory. Permiten acceder libremente al servidor tanto de manera remota utilizando SSH, como localmente.

Después de tener Samba depurado y en marcha, será tan sencillo como hacer una réplica para los demás hosts Linux que necesiten ser miembros de AD. Dicho esto, para hacernos una idea del escenario::

Dominio: dominio.local

- Servidor nombre: srv-dcfs-01
- Server nombre FQDN del dominio: srv-dcfs-01.dominio.local
- IP Servidor: 192.168.3.1
- IP DNS: 192.168.3.1
- IP PC Linux: 192.168.3.55
- Cliente Linux nombre: maquina-01


En una red Windows gestionada por un dominio AD puede agregar hosts Linux que puedan acceder a los hosts Windows. Lo que quiere es que los equipos Linux sean auténticos mienbros del dominio y manejarlos como cualquier otro objeto AD, tener una entrada unificada para todos los hosts y gestionar usuarios Linux desde AD. Tiene un KDC Kerberos y su DNS en orden.

Paquetes necesarios. Hará falta tener instalados todos los paquetes cliente de Samba, Winbind y Kerberos y compilar en Samba soporte para Kerberos, LDAP, Active Directory y Winbind. Aquí está todo lo que necesita:

Samba 3.0.20 o superior
MIT kerberos 1.4 o superior
OpenLDAP
Winbind 3.0.20 o superior (forma parte de Samba pero pueden estar en distintos paquetes)

Soporte para los compilados en Samba:
Kerberos
LDAP
Winbind
Active Directory

Debian, Ubuntu, mantiene actualizados los binarios además de incluir las opciones necesarias. Es decir que está a un aptitude install.

Samba necesita sambacommon, samba-doc, smbclient y winbind.

Que versión de samba tengo instalada?

$ /usr/sbin/smbd --version
Version 3.5.8
$ /usr/sbin/winbindd --version
Version 3.5.8

Necesitamos los paquetes clientes krb5-config, krb5-doc, krb5-kdc, krb5-user, ldap-utils, ldapscripts, libldap2 y slapd.

Si quiere averiguar todas las opciones compiladas:
$ /usr/sbin/smbd -b | grep -i ldap
HAVE_KRB5_H
HAVE_LDAP
HAVE_LDAP_DOMAIN2HOSTLIST

$ /usr/sbin/smbd -b | grep -i krb5
HAVE_KRB5_H
HAVE_ADDRTYPE_IN_KRB5_ADDRESS
HAVE_KRB5

$ /usr/sbin/smbd -b | grep -i ads
WITH_ADS
WITH_ADS

$ /usr/sbin/smbd -b | grep -i winbind
WITH_WINBIND
WITH_WINBIND

También necesita cuenta(s) para usuario(s) y equipo(s) Linux en AD:

- Tener un servidor NTP (Protocolo de señales horarias de red) disponible para su LAN y los hosts sincronizados, (si, como las pelis de detectives "sincronizemos los relojes").

- Borrar todos los ficheros .tdb si existen y los localizados en /var/lib/samba. Si desea haga copia de seguridad.

- Detenga los demonios Samba y Winbind
# /etc/init.d/smbd stop
# /etc/init.d/winbind stop

- Crear un grupo Linux para las cuentas de equipo.
# groupadd machines

- Configurar /etc/hosts
Agregar
192.168.3.1 srv-dcfs-01.dominio.local srv-dcfs-01
192.168.3.55 maquina-01.dominio.local maquina-01

- Configurar /etc/resolv.conf
#/etc/resolv.conf
domain dominio.local
search dominio.local
nameserver 192.168.3.1
nameserver 192.168.3.2

Ahora pruebe a conectar con el KDC. kinit es parte del paquete kstart es decir que si no lo tiene tendrá que instalarlo. Fíjese que dominio.local debe estar en "mayusculas". En mi caso he utilizado la cuenta Administrator (en inglés), porque la instalación está en inglés:
# kinit Administrator@DOMINIO.LOCAL
Password for Administrator@DOMINIO.LOCAL

- Configurar Samba.

/etc/samba/smb.conf
#
[global]
workgroup = dominio
netbios name = debian-01
realm = DOMINIO.LOCAL
server string = Samba server one
security = ADS
encrypt passwords = yes

idmap uid = 10000-20000
idmap gid = 10000-20000
winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
winbind separator = +

log file = /var/log/samba/log
log level = 2
max log size = 50
hosts allow = 192.168.3.

[homes]
comment = Home Directories
valid users =%S
read only = No
browseable = No

- Configurar NSS.

#/etc/nssswitch.conf

passwd:       compat files winbind
group:          compat files winbind
shadow:       compat files

hosts:          files dns winbind

En este momento inicie Samba y Winbind. Una el pc Linux al dominio Active Directory y establezca una Machine Trust Account. con la cuenta de Administrator del servidor AD. Vamos al servidor AD de Windows (srv-dcfs-01).
Inicio, Ejecutar, cmd
C:>netdom add maquina-01

De vuelta a la máquina Linux:
# net ads join -U Administrator
Enter Administrator's password:
Using short domain name -- DOMAIN
Joined 'MAQUINA-01' to realm 'DOMINIO.LOCAL'

Debería haber una nueva cuenta de equipo con el nombre NetBIOS de su máquina Linux en Active Directory, en la carpeta equipos (o computer).

Comprobar la versión de Kerberos:

$ dpkg -l | grep krb5
ii  krb5-admin-server  1.6.dfsg.4~beta1-5lenny6   MIT Kerberos master server (kadmind)
ii  krb5-config  1.22   Configuration files for Kerberos Version 5
ii  krb5-kdc   1.6.dfsg.4~beta1-5lenny6   MIT Kerberos key server (KDC)
ii  krb5-pkinit 1.6.dfsg.4~beta1-5lenny6   PKINIT plugin for MIT Kerberos
ii  krb5-user   1.6.dfsg.4~beta1-5lenny6   Basic programs to authenticate using MIT Kerberos
ii  libkrb53    1.6.dfsg.4~beta1-5lenny6   MIT Kerberos runtime libraries

Lista de paquetes Debian:
$ apt-cache search krb5
krb5-clients - Secure replacements for ftp, telnet and rsh using MIT Kerberos
krb5-ftpd - Secure FTP server supporting MIT Kerberos
ssh-krb5 - secure shell client and server (transitional package)
krb5-admin-server - MIT Kerberos master server (kadmind)
krb5-config - Configuration files for Kerberos Version 5
krb5-doc - Documentation for MIT Kerberos
krb5-kdc - MIT Kerberos key server (KDC)
krb5-user - Basic programs to authenticate using MIT Kerberos
libkrb5-3 - MIT Kerberos runtime libraries
libpam-krb5 - Modulo PAM para MIT Kerberos

Si es necesario instalar Kerberos y kstart
$  sudo apt-get install krb5-{admin-server,kdc} kstart

Fichero de configuración:
# /etc/krb5.conf

 [libdefaults]
default_realm = DOMINIO.LOCAL
clockskw = 300

[realms]
DOMINIO.LOCAL = {
kdc =192.168.3.1
default_domain = dominio.local
admin_server = 192.168.3.1  
}

dominio.local = {
kdc = 192.168.3.1
default_domain = dominio.local
admin_server = 192.168.3.1
}

dominio = {
kdc = 192.168.3.1
default_domain = dominio
admin_server = 192.168.3.1
}

[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log

default = SYSLOG:NOTICE:DAEMON

 [domain_realms]
.dominio = dominio
.dominio.local = dominio

[appdefaults]
pam = {
ticket_lifetime = 1d
renew_lifetime =1d
forwardable = true
proxiable = false
retain_after_close = false
minimum_uid = 0 try_first_pass = true }

Por último, hay que configurar los PAM para permitir la autenticación vía winbind. Editar los siguientes ficheros para incluir los módulos winbind y el módulo pam_mkhomedir.so
- Configurar PAM.

# cp /etc/pam.d/login /etc/pam.d/login-back

auth requisite pam_securetty.so
auth requisite pam_nologin.so
auth required pam_env.so
auth sufficient pam_winbind.so
auth required pam_unix.so nullok use_first_pass

# cp /etc/pam.d/common-account /etc/pam.d/common-account-back


account requisite pam_time.so
account sufficient pam_winbind.so
account required pam_unix.so

# cp /etc/pam.d/common-session /etc/pam.d/common-session


session required pam_unix.so
session optional pam_lastlog.so
session optional pam_motd.so
session optional pam_mail.so standard noenv
session required pam_mkhomedir.so skel=/etc/skel umask=0027


Agradecimientos especiales a:
Joel Barrio Dueñas por su desinteresado trabajo "Servidores en Linux".
A Carla Schroder por su excelente libro "Redes en Linux".


Linux es genial!.

domingo, 14 de agosto de 2011

Migrar Gentoo a otra maquina

Este script adaptado por BrianW a partir de los creados por fdavid y nianderson lo he encontrado www.foro.ethek.com. Se utiliza para realizar una migración de un sistema Gentoo Linux a otra máquina. He decidido copiar y pegar el script completo, sin cambios.

Antes de realizar el copiado del archivo previamente generado en el pc origen iniciar con un live-cd de gentoo particionar y formatear el disco duro del ordenador al que queremos migrar, montar las particiones hacer un chroot y seguir los pasos para una instalación gentoo.

En principio otro ordenador con otros componentes de hardware necesitará recompilar el kernel, ajustar parámetros en el archivo /etc/make.conf, instalar grub, etc. Esto no es un tutorial, he migrado un sistema gentoo de un disco duro a otro en mi portátil por sustitución de disco, el nuevo es un SSD de 120Gb sata II, en ese caso utilicé fsarchiver para realizar imágenes de las particiones, las puse en un disco duro externo y luego restauré las imágenes con el fsarchiver (aplicación potente y versátil incluida en el system rescue cd de linux).

Especial atención a los directorios y archivos excluidos. Boot está en una partición que se monta automáticamente o no?. Indicar donde está la partición /boot. Caso que se encuentre en /dev/sda1 tendría que modificar mount /boot por  mount /dev/sda1 /boot. La opción para dividir el archivo .tar.bz2 resultante está comentada, con la capacidad de los discos duros actuales practicamente no se utiliza. Fíjese que la partición de arranque es copiada como /bootcpy primero es copiada y luego borrada. Es un script bash al estilo de Linux: sencillo, claro, transparente y fácilmente modificable.

Lo más interesante de todo esto es que los sistemas basados Linux no son temporales ni efímeros. Están hechos para siempre.


#!/bin/bash
    ##  Backup script for Gentoo Linux
    ##  Author: BrianW
    ##  Date: 2004.10.26.
    ##  Adapted from backupHome.sh by fdavid
    ##  Adapted from mkstage4.sh by nianderson

    ##  This is a script to create a custom stage 4 tarball (System and
    ##  boot backup)
    ##  I use this script to make a snapshot of my system. Meant to be 
    ## done weekly in my case

    ##  Please check the options and adjust to your specifics.

    echo -=- Starting the Backup Script...
    echo -=-

    echo -=- Setting the variables...

    ##  The location of the stage 4 tarball.
    ##  Be sure to include a trailing /
    stage4Location=/root/

    ##  The name of the stage 4 tarball.
    archive=$stage4Location$(hostname)-stage4.tar.bz2

    ##  Directories/files that will be exluded from the stage 4 tarball.
    ##
    ##  Add directories that will be recursively excluded, delimited 
    ## by a space.
    ##  Be sure to omit the trailing /
    dir_excludes="/dev /proc /sys /tmp /usr/portage /var/tmp /root /home"
    ##
    ##  Add files that will be excluded, delimited by a space.
    ##  You can use the * wildcard for multiple matches.
    ##  There should always be $archive listed or bad things will happen.
    file_excludes="$archive"
    ##
    ##  Combine the two *-excludes variables into the $excludes variable
    excludes="$(for i in $dir_excludes; do if [ -d $i ]; then echo -n " --exclude=$i
    /*"; fi; done) $(for i in $file_excludes; do echo -n " --exclude=$i"; done)"

    ##  The options for the stage 4 tarball.
    tarOptions="$excludes --create --absolute-names --preserve-permissions --bzip2 -
    -verbose --totals --file"

    echo -=- Done!
    echo -=-

    ##  Mounting the boot partition
    echo -=- Mounting boot partition, then sleeping for 5 seconds...
    mount /boot
    sleep 5
    echo -=- Done!
    echo -=-

    ##  Creating a copy of the boot partition (copy /boot to /bootcpy).
    ##  This will allow the archiving of /boot without /boot needing to
    ##  be mounted.
    ##  This will aid in restoring the system.
    echo -=- Copying /boot to /bootcpy ...
    cp -R /boot /bootcpy
    echo -=- Done!
    echo -=-

    ##  Unmounting /boot
    echo -=- Unmounting /boot then sleeping for 5 seconds...
    umount /boot
    sleep 5
    echo -=- Done!
    echo -=-

    ##  Creating the stage 4 tarball.
    echo -=- Creating custom stage 4 tarball \=\=\> $archive
    echo -=-
    echo -=- Running the following command:
    echo -=- tar ${tarOptions} ${archive} /
    tar ${tarOptions} ${archive} /;
    echo -=- Done!

    ##  Split the stage 4 tarball in cd size tar files.
    ##  To combine the tar files after copying them to your
    ##  chroot do the following: "cat *.tar.bz2 >> stage4.tar.bz2".
    ##  Uncomment the following lines to enable this feature.
    #echo -=- Splitting the stage 4 tarball into CD size tar files...
    #split --bytes=700000000 ${archive} ${archive}.
    #echo -=- Done!

    ##  Removing the directory /bootcpy.
    ##  You may safely uncomment this if you wish to keep /bootcpy.
    echo -=- Removing the directory /bootcpy ...
    rm -rf /bootcpy
    echo -=- Done!
    echo -=-

    ##  This is the end of the line.
    echo -=- The Backup Script has completed!



Linux es genial!.

sábado, 13 de agosto de 2011

Firewall Slackware

Fuentes: http://www.pello.info/filez/firewall/iptables.html
Redes en Linux: Carla Schroeder

Puestos a hacer vamos a establecer reglas iptables para un solo host en Slackware. Lo que cambia con respecto a gentoo es el directorio por defecto para iniciar el cortafuegos. Ya vimos como se hace en gentoo linux, en slackware los scripts que se inician con el sistema están ubicados en /etc/rc.d/. El nombre debe ir precedido de rc. Por lo tanto se llamará rc.firewall. La ruta de iptables para establecer las variables cambia a /usr/sbin/iptables. Luego al archivo /etc/rc.d/rc.firewall se le conceden permisos de ejecución.
# chmod +x /etc/rc.d/rc.firewall

El archivo /etc/sysctl.conf, (añadir los parámetros kernel), no está presente por defecto, pero se puede crear y poner en marcha ejecutando:
# /sbin/sysctl -e -p /etc/sysctl.conf

Contenido de los archivos:

###########inicio sysctl.conf############
net.ipv4.conf.default.rp_filter = 1
net.ipv4.ip_forward = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.arp_announce = 1
vm.swappiness = 10
###########final sysctl.conf#############

##############inicio firewall############
#!/bin/sh
##/etc/rc.d/rc.firewall
#script para una estacion de trabajo o portatil

#define variables
ipt="/usr/sbin/iptables"
mod="/sbin/modprobe"
ports="1:1024"
ipall="0.0.0.0/0"
red_A="10.0.0.0/8"
red_B="172.16.0.0/16"
red_D_MULT="224.0.0.0/4"
red_E_RES_NET="240.0.0.0/5"
loopback="127.0.0.0/8"
broad_src="0.0.0.0"
broad_dest="255.255.255.255"

#Flush all rules, delete all chains
$ipt -F
$ipt -X
$ipt -t nat -F
$ipt -t nat -X
$ipt -t mangle -F
$ipt -t mangle -X

#todos los contadores a cero
$ipt -Z
$ipt -t nat -Z
$ipt -t mangle -Z

#conjunto basico de modulos del kernel
$mod ip_tables
$mod ip_conntrack
$mod iptable_filter
$mod iptable_nat
$mod iptable_mangle
$mod ipt_LOG
$mod ipt_limit
$mod ipt_state
$mod ipt_MASQUERADE

#opcional para irc y ftp
#$mod ip_conntrack_irc
#$mod ip_conntrack_ftp

#politicas por defecto Incoming es rechazar todo,
#outgoing esta restringido
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
$ipt -P OUTPUT ACCEPT
$ipt -t nat -P OUTPUT ACCEPT
$ipt -t nat -P PREROUTING ACCEPT
$ipt -t nat -P POSTROUTING ACCEPT
$ipt -t mangle -P PREROUTING ACCEPT
$ipt -t mangle -P POSTROUTING ACCEPT

#esta linea es necesaria para la interfaz loopback
#e internos socket-based servicios trabajen correctamente.
$ipt -A INPUT -i lo -j ACCEPT

# rechazar intentos de conexion no iniciados desde el host
$ipt -A INPUT -p tcp --syn -j DROP

#Allow return traffic initiated from the host
$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Acceptar important ICMP packets
$ipt -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT

# Cerrar rangos de puertos privilegiados para paquetes que entran
$ipt -A INPUT -s $ipall -p tcp --dport $ports -j DROP
$ipt -A INPUT -s $ipall -p tcp --dport $ports -j DROP

# Cerrar puerto de gestion webmin
$ipt -A INPUT -s $ipall -p tcp --dport 10000 -j DROP

echo "Rechazar pqtes direcciones privadas"

# Rechazar paquetes que digan proceder o ir a direcciones
# privadas de redes A B y C
$ipt -A INPUT -s $red_A -j DROP
$ipt -A OUTPUT -d $red_A -j DROP

$ipt -A INPUT -s $red_B -j DROP
$ipt -A OUTPUT -d $red_B -j DROP

# Rechazar paquetes que digan proceder de la interfaz lo
$ipt -A INPUT -s $loopback -j DROP
$ipt -A OUTPUT -s $loopback -j DROP

# Rechazar pqtes de difusion mal formados
$ipt -A INPUT -s $broad_src -j DROP
$ipt -A INPUT -d $broad_src -j DROP

# Rechazar las direcciones de multidifusion de clase D que
# sean solo ilegales como direcciones de origen. La multi-
# difusion utiliza UDP
$ipt -A INPUT -s $red_D_MULT -j DROP
$ipt -A OUTPUT -s $red_D_MULT -j DROP
$ipt -A INPUT -d $red_D_MULT -j DROP
$ipt -A OUTPUT -d $red_D_MULT -j DROP

# Rechazar direcciones reservadas IP de clase E
$ipt -A INPUT -s $red_E_RES_NET -j DROP

echo "Direcciones reservadas por el IANA"

# Rechazar direcciones definidas como reservadas por el IANA
$ipt -A INPUT -s 1.0.0.0/8 -j DROP
$ipt -A INPUT -s 2.0.0.0/8 -j DROP
$ipt -A INPUT -s 5.0.0.0/8 -j DROP
$ipt -A INPUT -s 7.0.0.0/8 -j DROP
$ipt -A INPUT -s 23.0.0.0/8 -j DROP
$ipt -A INPUT -s 27.0.0.0/8 -j DROP
$ipt -A INPUT -s 31.0.0.0/8 -j DROP
$ipt -A INPUT -s 37.0.0.0/8 -j DROP
$ipt -A INPUT -s 39.0.0.0/8 -j DROP
$ipt -A INPUT -s 41.0.0.0/8 -j DROP
$ipt -A INPUT -s 42.0.0.0/8 -j DROP
$ipt -A INPUT -s 58.0.0.0/8 -j DROP
$ipt -A INPUT -s 60.0.0.0/8 -j DROP

$ipt -A INPUT -s 65.0.0.0/8 -j DROP
$ipt -A INPUT -s 66.0.0.0/8 -j DROP
$ipt -A INPUT -s 67.0.0.0/8 -j DROP
$ipt -A INPUT -s 68.0.0.0/8 -j DROP
$ipt -A INPUT -s 69.0.0.0/8 -j DROP
$ipt -A INPUT -s 70.0.0.0/8 -j DROP
$ipt -A INPUT -s 71.0.0.0/8 -j DROP
$ipt -A INPUT -s 72.0.0.0/8 -j DROP
$ipt -A INPUT -s 73.0.0.0/8 -j DROP
$ipt -A INPUT -s 74.0.0.0/8 -j DROP
$ipt -A INPUT -s 75.0.0.0/8 -j DROP
$ipt -A INPUT -s 76.0.0.0/8 -j DROP
$ipt -A INPUT -s 77.0.0.0/8 -j DROP
$ipt -A INPUT -s 78.0.0.0/8 -j DROP
$ipt -A INPUT -s 79.0.0.0/8 -j DROP

$ipt -A INPUT -s 80.0.0.0/8 -j DROP

$ipt -A INPUT -s 96.0.0.0/8 -j DROP

$ipt -A INPUT -s 112.0.0.0/8 -j DROP
$ipt -A INPUT -s 113.0.0.0/8 -j DROP
$ipt -A INPUT -s 114.0.0.0/8 -j DROP
$ipt -A INPUT -s 115.0.0.0/8 -j DROP
$ipt -A INPUT -s 116.0.0.0/8 -j DROP
$ipt -A INPUT -s 117.0.0.0/8 -j DROP
$ipt -A INPUT -s 118.0.0.0/8 -j DROP
$ipt -A INPUT -s 119.0.0.0/8 -j DROP
$ipt -A INPUT -s 120.0.0.0/8 -j DROP
$ipt -A INPUT -s 121.0.0.0/8 -j DROP
$ipt -A INPUT -s 122.0.0.0/8 -j DROP
$ipt -A INPUT -s 123.0.0.0/8 -j DROP
$ipt -A INPUT -s 124.0.0.0/8 -j DROP
$ipt -A INPUT -s 125.0.0.0/8 -j DROP
$ipt -A INPUT -s 126.0.0.0/8 -j DROP

$ipt -A INPUT -s 217.0.0.0/8 -j DROP
$ipt -A INPUT -s 218.0.0.0/8 -j DROP
$ipt -A INPUT -s 219.0.0.0/8 -j DROP
$ipt -A INPUT -s 220.0.0.0/8 -j DROP

echo " Bien. Verifique con iptables -nL"
#########FIN#############

Linux es genial!.

miércoles, 10 de agosto de 2011

IP fija Slackware

 Lo más comodo y fácil para asignar una ip fija (o dhcp) a nuestro slackware es utilizar la utilidad netconfig. Una interfaz gráfica sencilla nos pedirá los datos necesarios para ello. Pero realizar el proceso manualmente es más divertido y didáctico.  En este ejemplo la IP = 192.168.1.241 máscara de red = 255.255.255.0 puerta de enlace = 192.168.1.1 dns = 87.216.1.65, 87.216.1.66.

Primero hacemos una copia de cada uno de los ficheros involucrados. Los ficheros a editar (utilice su editor preferido) son:
/etc/rc.d/rc.inet1.conf
/etc/hosts
/etc/resolv.conf

# vi /etc/rc.d/rc.inet1.conf
# /etc/rc.d/rc.inet1.conf
# Config information for eth0:
IPADDR[0]="192.168.1.241"
NETMASK[0]="255.255.255.0"
USE_DHCP[0]=""
DHCP_HOSTNAME[0]=""

# Default gateway IP address:
GATEWAY="192.168.1.1"
:wq

# vi /etc/resolv.conf
# /etc/resolv.conf
# dns
search zapto.org
nameserver 87.216.1.65
nameserver 87.216.1.66
:wq

Para que el fichero no admita cambios:
# chattr +i /etc/resolv.conf
# lsattr /etc/resolv.conf
----i--------- /etc/resolv.conf

# vi /etc/hosts
#
# For loopbacking.
127.0.0.1        localhost
192.168.1.241        slackware.zapto.org slackware
# End of hosts.
:wq

Linux es genial!.

martes, 9 de agosto de 2011

Actualizar Slackware

Fuente: http://slackdhabyx.wordpress.com/

Mantener al día las actualizaciones de seguridad de Slackware de una manera sencilla

Slackpkg (http://slackpkg.org) es una utilidad para instalar y actualizar paquetes desde Internet, pudiendo así tener actualizado nuestro Slackware ya sea para la versión estable, como para la Current.

Para configurarlo solo se necesitan editar los archivos que se encuentran en la carpeta "/etc/slackpkg/"

Lo primero es configurar el mirror de donde obtener la información, para ello usamos nuestro editor preferido y eliminamos la almohadilla (#) de comentario de la línea del servidor que mejor se adecué a nuestras necesidades:

    # vi /etc/slackpkg/mirrors

Dentro de los grupos de mirrors me desplazo hasta el que corresponde a mi máquina:

# Slackware64 13.0

# Spain,
ftp://ftp.etse.urv.es/pub/linux/slackware/slackware64-13.0/
# France, 1Gbit
http://ftp.lip6.fr/pub/linux/distributions/slackware/slackware64-13.0/
ftp://ftp.lip6.fr/pub/linux/distributions/slackware/slackware64-13.0/

Luego de ésto pueden bajar la lista de paquetes disponibles con:

# slackpkg update

Si desean tener todas las actualizaciones de seguridad solo deberán ejecutar:

# slackpkg upgrade-all

o si solo desean actualizar cierta rama o algun paquete en especial pueden efectuar un upgrade por ejemplo de KDE asi:

    # slackpkg upgrade xfce

para la lista completa de funciones pueden ejecutar simplemente slackpkg o ver la página de los manuales.

Cuando un usuario de Slackware añade software a su sistema normalmente debe compilarlo, o bajar paquetes de algún lugar; siempre es mejor administrar lo que se instala por medio de la paquetería de slackware para que podamos desinstalar y actualizar fácilmente y sin problemas.

El problema viene cuando no disponemos de un Slackbuild, ya sea para la versión que necesitamos o por que simplemente no existe un paquete para el software; una solucion es hacer el paquete mediante makepkg; la mas recomendable es hacer nuestro propio Slackbuild y solo modificarlo para cada versión del software que instalemos.

Esto trae siempre otros problemas, ya que si por algún motivo no pusimos algún parámetro al configure o no configuramos adecuadamente el paquete, la recompilación del mismo nos lleva mucho tiempo, con lo cual hacer Slackbuilds de programas muy grandes suele ser tedioso.

La mejor solución es utilizar ccache, que es un programa que nos guardará una cache de lo que compilemos; con esto aceleraremos la compilación de programas, ya que si el codigo a compilar es identico a lo que ccache ya tiene, simplemente será reemplazado y solamente compilara lo nuevo.

Ccache no solo nos ayudará en la compilación de paquetes de software que descarguemos de internet; si trabajamos en el área de desarrollo de software basado en lenguaje C o C++ tendremos a la mano un buen programa que nos ahorrará mucho tiempo en la compilación, mas a la hora de eliminar bugs en programas grandes.

Mejorar aspecto de xterm
Abrir el archivo /etc/X11/app-defaults/XTerm y añadir al final del archivo las líneas que aparecen más abajo:

# cd /etc/X11/app-defaults/
# vi XTerm

XTerm*background: black
XTerm*foreground: green
XTerm*highlightcolor: red
XTerm*font: 9x15
XTerm*hiforecolor: white
XTerm*hibackcolor: #c06077
XTerm*geometry: 65x20
:wq

Linux es genial!.