Todos los días se aprende algo nuevo… a ver, si alguien esta atento.. ( y me lee
)
Piensen qué debería devolver este comando, y luego ejecutenlo….
cat /etc/passwd | read linea; echo $linea
….comentarios?
Todos los días se aprende algo nuevo… a ver, si alguien esta atento.. ( y me lee
)
Piensen qué debería devolver este comando, y luego ejecutenlo….
cat /etc/passwd | read linea; echo $linea
….comentarios?
En mi actual trabajo, tuve la tarea de migrar de un Samba 3.0 a 3.5.
Entre varios líos diversos, el que quiero hablar ahora es sobre el formato de la DB. Menuda sorpresa me llevé.
Algún administrador de Samba ya debe saber lo que voy a escribir, pero igual lo hago para contextualizar el panorama.
Para que Samba y MS operen, Samba implementa algunas funcionalidades extra.
Particularmente, el mecanismo que usa para mapear los identificadores locales en las dos plataformas, los SIDs en Windows y los UIDs/GIDs en Linux.
Esta claro, que para operar sobre el mismo recurso en una plataforma u otra, debemos identificarlos de manera única. Para esto, samba tiene varias formas (dependiendo de la configuración, etc) de hacer este “mapeo” en los identificadores de Windows y Linux. A este mapeo, Samba lo llama IDMAP.
Como mencioné, hay varias formas de hacer este mapeo. La configurada es la de Winbind/NSS con una Db local en formato TDB (Trivial Database). El servidor a actualizar, actúa como file server y no tiene cuentas locales. Por lo cual, Samba obtiene las credenciales desde el controlador de dominio.
Para esto, Samba reserva un espacio (rango) de UIDs y GIDs para realizar el mapeo con los SIDs.
Algo que me enteré en el testeo de la migración, fue que el mapeo entre SID y UID/GID no es determinístico! Depende del orden en que el controlador devuelva los datos (!) :S
Recordar que el control de acceso a los archivos/directorios se hacen en base a estos UID/GID. Por lo que, si el mapeo se pierde, por alguna razón cualquiera, me quedé sin control de acceso, o peor aún, podría pasar que se entrevere todo.. caos total.
Yendo más al grano y lo más destacable: al actualizar Samba (yum install samba3x), se rompe la DB con el mapeo! :O ¿wtf!??
Parece que cambiaron el formato de la DB, antes se usaba TDB, y ahora LDB (L de light). Un nuevo formato más “LDAP-like”, más rápido, “más mejor” con todos los chuchis, como siempre…
Bien, pero… y mi DB anterior?? parece que samba no se da cuenta que existe un DB y no la migra :S
Debe ser porque se instala como un paquete aparte? y no es parte de un ‘update’ formalmente hablando? No lo sé.
Al final, lo que tuve que hacer fue:
# net idmap dump /var/cache/samba/winbindd_idmap.tdb > /root/idmap.backup
[...]
Paso i) Eliminar samba3.0
Paso i+1) Instalar samba 3.5…
[...]
# net idmap restore /root/idmap.backup
Es decir, exportarlo e importarlo.
Exactamente, le cambié el firmware a mi Linksys!
Que pasos segui?
Que cuidados hay que tener?
Realmente la interfaz web esta mucho mejor, y trae muchisimas funcionalidades extra! Además de la flexibilidad de poder instalar cualquier paquete que quieras!
Vayamos al grano, para instalar en debian, adivinen que tienen que hacer?
(Logeado como root…)
…y voilá! Ya esta instalado.
Ahora nos falta configurarlo adecuadamente…
Acá muestro mi archivo de configuración (/etc/ssh/sshd_config) pero un poco modificado (porque tengo otras cosas que no viene al caso), asi que puede ser que no funque porque no lo probé, pero no creo. Debería andar.
# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
LoginGraceTime 30
PermitRootLogin no
StrictModes yes
MaxStartups 3
#Version 2 only
PubkeyAuthentication yes# Don’t read the user’s ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
IgnoreUserKnownHosts yes
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
# Change to yes to enable tunnelled clear text passwords
PasswordAuthentication no
X11Forwarding no
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
KeepAlive yes
#UseLogin no
#MaxStartups 10:30:60
Banner /etc/issue.ssh
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
ClientAliveInterval 600
AllowGroups ssh
#Solo usamos IPv4
AddressFamily inet
###EOF
Voy a explicar lo que esta en negrita (que sería lo más relevante para mi)
Un consejo que yo no utilicé pero debería empezar a utilizar:
UseDNS <- Por lo que lei, es para anti spoofing. (además, suena lógico)
Bueno, esto lo escribi en 30′ asi que supongo que debe tener algun error… criticas sean bienvenidas!
* Edité lo que comentó Francisco
Debutamos!… arrancamos con un pequeño (¿tutorial?) firewall para linux, como no podía ser de otra manera utilizo iptables.
No importa que version de iptables tengas, esto debería andar (creo).
Para que quede claro como es la topología en mi casa:
{Internet} <— (Modem-Adsl) —-> (Switch) <—- (Linux)
Basicamente: Esta todo conectado al switch.
Aclaro que esto es un firewall para mi PC solamente, no actuo como router/gateway para
el resto de la red (que no la dibujé pero tmb estan conectados al switch).
Los servidores DNS me los dan dinámicamente mi ISP, por eso me fijo en el archivo
/etc/resolv.conf para saber cuales son.
Creo que por ahora es todo….
Mi firewall con iptables
#####
## Firewall by ^MaKaM^ (makam at makam dot org)
## Web: http://www.makam.org/
## Blog: http://blog.makam.org/
## Version 2.1.0
##
#####
##
## Este frw es MUY simple, no deja pasar casi nada.
## Solo las conexiones activas que pidió nuestra PC y
## las respuestas del servidor DNS.
## Este frw se tiene que activar DESPUES de levantar la ppp0
##
#####
IPTABLES=`which iptables`
INET="ppp0"
LAN="eth1"
SRC_TRABAJO="200.200.200.200/32"
NS=`grep "nameserver " /etc/resolv.conf | awk '{ print $2 }'`
## Reglas por defecto en cada tabla
# Por defecto, no aceptamos nada…
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
# Por defecto dejamos que salga cualquier cosa…
$IPTABLES -P OUTPUT ACCEPT
## Limpiamos….
$IPTABLES -F INPUT
$IPTABLES -F FORWARD
$IPTABLES -F OUTPUT
$IPTABLES -F -t nat
#Anti-Spoofing
$IPTABLES -A INPUT -i $INET -s 10.0.0.0/8 -j DROP
$IPTABLES -A INPUT -i $INET -s 192.168.0.0/24 -j DROP
$IPTABLES -A INPUT -i $INET -s 127.0.0.0/8 -j DROP
### Aca empieza la joda..
# Toda conexion que ya este establecida la acepto…
$IPTABLES -A INPUT -i $INET -m state –state ESTABLISHED,RELATED -j ACCEPT
# Acepto las peticiones de SSH desde mi trabajo…
$IPTABLES -A INPUT -i $INET -s $SRC_TRABAJO -dport 22 –syn -j ACCEPT
# Toda conexion que venga de la LAN la acepto…
$IPTABLES -A INPUT -i $LAN -s 10.1.0.0/8 -d 0/0 -j ACCEPT
# Toda conexion que venga de la interfaz de loopback la acepto…
$IPTABLES -A INPUT -i lo -s 0/0 -d 0/0 -j ACCEPT
# Servidor DNS
# Acepto toda entrada del Servidor DNS…
# Como no tengo servidor dns fijo, me tengo que fijar en el que me dio mi ISP (Anteldata)
for ip in $NS; do
$IPTABLES -A INPUT -p udp -s $ip/32 –source-port 53 -d 0/0 -j ACCEPT
done