Tener cuidado al actualizar
In: Uncategorized · Tagged with: kernel, success, upgrade
Pasar de timestamp a fecha humana en los logs de squid
Complicado:
perl -p -e 's/^([0-9]*)/"[".localtime($1)."]"/e' <access.log | less
In: Uncategorized · Tagged with: access.log, error.log, squid, tai64nlocal, timestamp
Actualizar server
Hoy me llamaron para que actualice un server, hay que comprar hardware nuevo y reinstalar el sistema operativo, me meti para ver el estado actual:
[root@cgco root]# cat /etc/issue
Fedora Core release 1 (Yarrow)
Kernel \r on an \m
[root@cgco root]# uname -r
2.4.22-1.2199.nptl
[root@cgco root]# free -m
total used free shared buffers cached
Mem: 123 119 3 0 38 33
-/+ buffers/cache: 47 76
Swap: 258 0 258
Que capo el server! y anda perfecto despues de todo este tiempo, creo que nunca habia visto un server con kernel 2.4
SysAdmin day
Un sysadmin desenpaquetó el server para esta página, lo armó, le instaló un sistema operativo, lo configuró y parchó por seguridad y se aseguró de que la corriente, y el aire acondicionado esté funcionando correctamente en el cuarto, lo monitoreó permanentemente, configuró todo el software, y los backups por si acaso algo saliera mal.
Un sysadmin instaló los routers, tendió los cables, configuró las redes, levantó un firewall, y observó y guió cada salto de datos que fue por los cables, fibra óptica e incluso por el aire para llevarle internet a este webserver.
Un sysadmin se asegura que tu conexión de red es segura, estable, abierta y funciona correctamente. Un sysadmin se asegura que tu computadora funciona sanamente en una red sana. Un sysadmin realiza backups para estar preparado contra desastres humanos o tecnológicos, mantiene las puertas cerradas contra amenazas y crackers, y mantiene las impresoras funcionando, sin importar cuantas copias de informes de impuestos manda a imprimir la gente de administración.
Un sysadmin se preocupa por los virus, spam, spywares, pero tambien a bajas de tensión, incendios e inundaciones.
Cuando el mailserver se cae a las 2 am un domingo, el sysadmin es avisado, se levanta y se va a trabajar.
Un sysadmin es un profesional, que planea, se preocupa, hackea, arregla, defiende, protege y crea buenas redes de computadores, para que te lleguen tus datos, para que puedas trabajar, para acercarte el potencial de la informática, cada vez mas cerca de la realidad.
Entonces si podés leer esto, dale gracias a tu sysadmin, y date cuenta que él es solamente uno de los cientos o posiblemente miles de personas que hacen posible que ese correo de tu tia de Córdoba, ese SMS de tu hijo que está en el colegio, esa llamada de tu amigo de Australia y esta página de internet, funcionen correctamente.

¡Muestra tu aprecio!
Este Viernes 30 de Julio de 2010, es la onceava edición del Dia de apreciación al SysAdmin, dale a tu Administrador de Sistemas algo que muestre tu aprecio a su duro trabajo y dedicación.
Considera todas esas tareas abrumadoras y largas horas de trabajo (incluso los fines de semana). Recuerda este dia para reconocer todas esas ayudas a tu lugar de trabajo. Y dale las gracias por hacer las cosas que hace por vos y por tu empresa.
Prevenir fork bombs
Hoy casualmente lei un artículo donde hablaban de las fork bombs, basicamente es un script recursivo que usa todos los recursos disponibles del sistema creando infinitos sub-programas que bloquean el sistema eventualmente haciéndole un ataque DOS. En una pc de escritorio común esto puede llevar solo unos segundos. El script más simple es el siguiente:
:(){ :|:& };:
Esta es la explicación del código sacada de wikipedia:
:() # define ':' -- whenever we say ':', do this:
{ # beginning of what to do when we say ':'
: # load another copy of the ':' function into memory...
| # ...and pipe its output to...
: # ...another copy of ':' function, which has to be loaded into memory
# (therefore, ':|:' simply gets two copies of ':' loaded whenever ':' is called)
& # disown the functions -- if the first ':' is killed,
# all of the functions that it has started should NOT be auto-killed
} # end of what to do when we say ':'
; # Having defined ':', we should now...
: # ...call ':', initiating a chain-reaction: each ':' will start two more.
Por lo menos a mi me parece muy interesante ya que ni siquiera es necesario ser super-usuario para ejecutar el script, cualquier pc o servidor que no esté preparado contra esto es vulnerable y muy facil de atacar.
Una forma de prevenir el ataque de una fork bomb es limitar el número máximo de procesos que un usuario puede ejecutar, afortunadamente linux tiene un archivo de configuración que está en /etc/security/limits.conf que permite setear un máximo de procesos por usuario o por usuario de un grupo.
La sintaxis es realmente muy simple y agregando la siguiente linea se limitará el número máximo de procesos permitidos de cualquier usuario en el grupo “users” en 300:
@users hard nproc 300
Para saber cuánto es el límite actual establecido por el sistema en una terminal: (para el usuario actual)
$ ulimit -u
Hay otras formas para evitar estos scripts pero son módulos para instalar, y realmente lo veo mucho mas seguro y simple editar el archivo que dije mas arriba
In: linux · Tagged with: attack, bomb, dos, fork, limits.conf, ulimit
Camara ip Allnet All2201
El usuario y contraseña de la camara ip Allnet All2201 por defecto es:
user: administrator
password:
UNA HORA ESTUVE ADIVINANDO.
En la página del fabricante no sale, lo busqué por todos lados
In: Uncategorized · Tagged with: all2201, allnet, camara, default, ip, password
Gentoo en mi netbook Samsung N150
Que tal, hace unos dias me compré una Netbook Samsung N150 y la verdad que me ha gustado mucho, nunca tuve una notebook ni netbook, ya que no realmente no lo veia como un gasto necesario, pero ultimamente me hacia falta una pc portátil para llevar a todos lados y que me sirviera mas que nada para tirar un ping o hacer pruebas de red. Bastante jugo le saqué a mi iPhone que se defendió como pudo con wifi.
Finalmente me decidí por comprarme una netbook debido a su bajo precio y prestaciones ajustadas pero que me venian perfecto para lo que necesitaba. Conseguí este modelo usado a un buen precio y poco uso (apenas 2 meses), por lo que no lo dudé ni un segundo.

El dueño anterior tenia dualboot con Windows 7 Home (el que trae la netbook por defecto) y un Ubuntu Lucid Lynx, antes de comprarla busqué la compatibilidad con linux y encontré que funcionaba todo perfecto. Igualmente la probé con el ubuntu que ya tenia y andaba todo bien. A mi nunca me gustó mucho gnome asi que lo primero que hice fue borrarle el disco y bajarme el ubuntu para netbooks, lo grabé en un pendrive y lo instalé, no tuve ni un solo problema y andaba todo perfecto, pero no me gustaba el entorno gráfico, queria usar dwm y para hacerlo andar con GDM se me complicaba mucho y al final me calenté y me pasé a Arch que ya lo habia usado antes y me sorprendió su gran velocidad al instalar paquetes.
Una cosa que me gusta de Archlinux es que está todo muy bien documentado, aparte habia una documentación exclusivamente para mi netbook por lo que, segui unos cuantos pasos y pude instalarlo, pero la verdad tuve problemas con la X, no me andaba, o no me andaba el touchpad ni el teclado, hice varias cosas, probando varias versiones de kernels y varias versiones del driver de la placa de video, hasta me configuré una xorg.conf a mano hasta que lo hice andar. Cuando terminé con la X tenia que hacer andar la placa wifi, me lei miles de guias y no lo pude hacer andar, me decia WPA Authentication Fail por mas que pusiera bien la clave o me conectara a una red sin clave.
Así que me volvi a calentar y dije, me instalo gentoo y listo. Asi que abrí la vieja y conocida guia de instalacion de Gentoo, me baje la iso del livecd y la pasé a un usb con esta guia, bootié la iso y empece a compilar.
No tuve ningun problema al compilar todo, el .config del kernel lo dejo acá.
Instalación de Gentoo
# grep bogo /proc/cpuinfo
bogomips : 3325.05
bogomips : 3324.82
# grep MemTotal /proc/meminfo
MemTotal: 1020184 kB
# hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 1544 MB in 2.00 seconds = 772.66 MB/sec
Timing buffered disk reads: 156 MB in 3.00 seconds = 51.93 MB/sec
Mi make.conf:
CHOST="i686-pc-linux-gnu"
CFLAGS="-O2 -march=core2 -mtune=generic -mssse3 -mfpmath=sse -fomit-frame-pointer -pipe"
CXXFLAGS="${CFLAGS}"
USE="v4l2 qt4 dbus X -kde -gnome apache2 readline nptl unicode gd ncurses bash_completion pam acl python gtk gtk2 qt alsa curl mysql logrotate ftp latin1 bash-completion -arts opengl nptlonly gif jpeg png extensions xml -ipv6 -berkdb -fortran php samba mp3 sox vorbis vchroot tiff -cups win32codecs tk nsplugin -xfce nptonly video_cards_intel video_cards_vesa qt3support madwifi xosd"
FEATURES='ccache parallel-fetch'
LINGUAS="es es_AR es_ES es_LA"
GENTOO_MIRRORS="http://gentoo.osuosl.org/ http://distro.ibiblio.org/pub/linux/distributions/gentoo/ http://www.gtlib.gatech.edu/pub/gentoo"
SYNC="rsync://rsync.br.gentoo.org/gentoo-portage"
MAKEOPTS="-j3"
INPUT_DEVICES="keyboard mouse"
VIDEO_CARDS="intel vesa"
ACCEPT_LICENSE="*"
X-Server
Instale la X y dwm:
# emerge -av xorg-server dwm dmemu xterm
Wireless
Y ahi nomas instalé wpa_supplicant para el wifi:
# emerge -av wpa_supplicant
Y con esta guia segui los pasos para configurar wpa_supplicant, en realidad lo importante es configurar bien el archivo /etc/wpa_supplicant/wpa_supplicant.conf, yo lo dejé asi:
# cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
Una vez que esté eso andando, abrimos una terminal como root y lanzamos wpa_gui, nos conectamos y anda todo perfecto :)
Despues hice un par de alias en mi .bashrc para poder ejecutar wpa_gui como usuario normal y edité el archivo sudoers para permitir ejecutar estos comandos sin poner la clave.
Webcam
Para hacer andar la webcam seguí esta guia, instalé el modulo en el kernel:
Multimedia devices --->
<M> Video For Linux
[*] Enable Video For Linux API 1 compatible Layer
[*] Video capture adapters --->
[*] V4L USB devices --->
<M> USB Video Class (UVC)
[*] UVC input events device support
Lo cargué:
# modprobe uvcvideo
Y lo probé con mplayer:
# mplayer tv:// -tv driver=v4l2
Andaba perfecto, para hacerlo andar con skype, tuve que hacer un chmod 777 a /dev/video0 porque por mas que me agregara al grupo de video no me reconocia la webcam
# chmod 777 /dev/video0
Esto es poco elegante pero bueno, nadie mas iba a usar mi notebook asi que no tengo miedo de que me toquen ese archivo
Con eso me quedó todo andando :D ahora estoy buscando alguna splashscreens para el booteo, después hago esa guia!
HOWTO Habilitar l7-filter en Ubuntu Karmic Koala
Por defecto los modulos de l7-filter (que permiten hacer reglas de iptables discriminando paquetes por capa 7, por ejemplo, para bloquear msn o skype) no vienen instalados en el kernel de linux. A partir de Ubuntu Lucid Lynx hay un paquete para instalar estos modulos haciendo apt, pero en las distribuciones anteriores no las hay.
Asi que hay que bajarse el kernel full y parcharlo, es bastante facil pero hay algunas cositas que hay que tocar para poder hacerlo andar:
Bajamos todo
# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.4.tar.bz2 http://iptables.org/projects/iptables/files/iptables-1.4.7.tar.bz2 http://enterprise.bih.harvard.edu/pub/tarpit-updates/iptables-1.4.2-tarpit.diff http://ufpr.dl.sourceforge.net/sourceforge/xtables-addons/xtables-addons-1.18.tar.bz2 http://ufpr.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.22.tar.gz http://ufpr.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2009-05-28.tar.gz
# for archive in *.bz2; do tar -jxf $archive;done
# for archive in *.gz; do tar -zxf $archive;done
Hacemos los links simbólicos para trabajar mas cómodos
# ln -s iptables-1.4.7 iptables
# ln -s xtables-addons-1.18 xtables-addons
# ln -s linux-2.6.33.4 linux
Y parchamos el kernel para habilitar layer7
# patch -p1 < ../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch
Luego configuramos el kernel y lo compilamos
# make menuconfig
# make
Una vez compilado copiamos el kernel compilado al directorio de grub, y lo renombramos como vmlinuz-version
cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.33.4
La parte de renombrarlo de esa manera es importante porque sino grub no va a reconocerlo como un kernel a la hora de updatearlo:
# update-grub
Reiniciamos y listo!
Para activar el modulo simplemente hacemos
# modprobe xt_layer7
In: linux · Tagged with: grub, iptables, karmic, kernel, koala, layer7, ubuntu
HOWTO Instalacion apache+tomcat y autenticación kerberos
En el trabajo están desarrolando un sistema web hecho en java, para que esto funcione se usa Tomcat … está desarrollado por Apache, pero no es tan robusto y configurable por este último, asi que me han pedido que apache sea el servidor y que en el caso de que sea necesario una aplicacion java, que le pase las peticiones a tomcat.
Además de eso tengo que instalar el modulo de autenticación kerberos que sirve para que el usuario y contraseña del dominio sirva para loguearse por apache.
Esta guía esta hecha en un CentOS ya que es el que usamos en estos servidores, pero deberia ser muy parecida para cualquier otra distro.
Instalación y configuración de apache y tomcat
Paso 1
Muy simple, solo hacemos:
# yum install httpd tomcat5
De esta manera ya tenemos instalado tomcat y apache, que corren en puertos diferentes (8180 y 80 respectivamente por defecto) ahora lo que vamos a hacer es instalar el conector jk que lo podemos descargar de la web:
Paso 2
# cd /usr/share/tomcat5/
# wget http://apache.xmundo.com.ar/tomcat/tomcat-connectors/jk/source/jk-1.2.30/tomcat-connectors-1.2.30-src.tar.gz
# tar xvzf tomcat-connectors*
# cd tomcat-connectors*
# /buildconf.sh
# ./configure --with-apxs=`which apxs`
# make
# make install
Paso 3
Ya tenemos instalado el módulo y ahora solo resta configurarlo, para esto tenemos que editar el archivo de configuración de apache para decirle que cargue el modulo que acabamos de instalar
# vim /etc/httpd/conf/httpd.conf
En la sección LoadModules añadimos:
LoadModule jk_module modules/mod_jk.so
Y al final del archivo añadimos esto:
JkWorkersFile "conf/workers.properties"
JkLogFile "logs/mod_jk.log"
JkLogLevel warn
JkMount /jsp-examples default
JkMount /jsp-examples/* default
JkMount es la linea que le dice a apache qué solicitudes debe pasarle a tomcat, en este caso he configurado “/jsp-examples” osea que siempre que accedamos a nuestro servidor por la url “http://localhost/jsp-examples” en lugar de acceder a ese directorio, apache va a mandar esa solicitud a tomcat, que la atenderá de la forma correcta, obviamente este es un directorio de ejemplo y en esa linea debemos especificar el directorio que nosotros vamos a usar
Paso 4
Ahora tenemos que crear un nuevo archivo en el directorio de configuración de apache llamado workers.properties:
# vim /etc/httpd/conf/workers.properties
workers.tomcat_home=/usr/share/tomcat5
workers.java_home=$JAVA_HOME
ps=/
worker.list=default
worker.default.port=8019
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1
A mi me costó configurar la opcion worker.default.port, lo que pasaba era que no se podia conectar al tomcat porque estaba mal configurado el puerto, mirando el log me di cuenta
# tail -f /var/log/httpd/mod_jk.log
[Wed May 05 21:36:47 2010][error] ajp_service::jk_ajp_common.c (1758): Error connecting to tomcat. Tomcat is probably not started or is listening on the wrong port. worker=default failed
En muchas guias salian diferentes puertos y tuve que probar hasta encontrar el que anduvo, tiré un nestat -natup y por suerte sólo eran 3 puertos los posibles, asi que probé y el que me funcionó a mi fue el 8019…
# netstat -natup | grep java | grep LISTEN
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 19985/java
tcp 0 0 :::8019 :::* LISTEN 19985/java
tcp 0 0 :::8180 :::* LISTEN 19985/java
Al final de todo iniciamos los servicios de apache y tomcat y listo.
Ya hemos terminado de configurar tomcat+apache, entonces ahora cuando accedamos a http://localhost/ veremos la web de bienvenida de apache, al visitar http://localhost:8180 la de tomcat y si accedemos a http://localhost/jsp-examples, apache enviará la petición a tomcat.
Instalación del módulo kerberos para apache
Paso 1
Ahora nos resta instalar el módulo que les comenté mas arriba, para esto primero tenemos que bajarlo desde su web y lo instalamos
# tar xvzf mod_auth_kerb*.tar.gz
# cd mod_auth_kerb-*.tar.gz
# ./configure --with-krb4=no --with-krb5=/usr/kerberos
# make
# make install
Paso 2
Luego agregamos esta linea al archivo de configuración de apache:
# vim /etc/httpd/conf/httpd.conf
Y de la misma forma que añadimos el modulo mod_jk, agregamos la linea para que ahora también cargue el modulo kerberos
LoadModule auth_kerb_module modules/mod_auth_kerb.so
Paso 3
Creamos un archivo keytab y lo hacemos legible por todos, esta será la entrada clave para el módulo, el formato del contenido es: HTTP/web_server_fullname@ACTIVE DIRECTORY_FULL_DOMAIN_NAME … las mayúsculas son importantes
# echo HTTP/intranet.example.com@EXAMPLE.COM > /etc/krb5.keytab
# chmod ugo+r /etc/krb5.keytab
Paso 4
Configuremos el archivo de configuración de Kerberos, reemplazando EXAMPLE.COM con el FQDN de tu dominio y dc-01/dc-02 con el FQDN de tus controladores de dominio (si es que difieren del anterior, en mi caso, el dominio y el controlador del dominio responden a example.com)
# vim /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes
[realms]
EXAMPLE.COM = {
kdc = EXAMPLE.COM:88
}
[domain_realm]
.example.com = example.com
example.com = example.com
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
Es IMPORTANTISIMO que respetemos las MAYÚSCULAS!! … tambien es importante que el hostname del server concuerde con el dominio, esto lo podemos averiguar haciendo:
# hostname -f
server.example.com
Si no tenemos bien el hostname, lo cambiamos en /etc/hosts, deberia quedar asi:
# vim /etc/hosts
127.0.0.1 localhost server server.example.com
Paso 5
Finalmente creamos el archivo .htaccess en el directorio de nuestra aplicacion web y le ponemos esto:
AuthName "Kerberos Login"
AuthType Kerberos
Krb5Keytab /etc/krb5.keytab
KrbAuthRealm EXAMPLE.COM
KrbMethodNegotiate off
KrbSaveCredentials off
KrbVerifyKDC off
Require valid-user
Y restarteamos apache
# /etc/init.d/httpd restart
Para probarlo podemos hacer lo siguiente
# kinit pablokbs
Password for pablokbs@EXAMPLE.COM: XXXXXXX
TROUBLESHOOTING
kinit(v5): KDC reply did not match expectations while getting initial credentials
Si no pongo el dominio lo lee del archivo keytab, con esto lo van a entender:
# kinit pablokbs@example.com
Password for pablokbs@example.com:
kinit(v5): KDC reply did not match expectations while getting initial credentials
# kinit pablokbs@EXAMPLE.COM
Password for pablokbs@EXAMPLE.COM:
Por eso dije que son MUY IMPORTANTES LAS MAYÚSCULAS
In: Uncategorized · Tagged with: apache, KDC reply did not match expectations while getting initial credentials, kerberos, mod_auth_kerb, mod_jk, tomcat
MRTG y SNMP
Mrtg es buenisimo para ver muchos datos de la pc, pero principalmente para el trafico de la red
# emerge -av net-snmp mrtg
Luego editamos el fichero /etc/snmp/snmpd.conf
com2sec local 127.0.0.1/32 public
com2sec local 192.168.1.0/24 public
group Luniel v1 local
group Luniel v2c local
group Luniel usm local
view all included .1 80
access Luniel "" any noauth exact all none none
syslocation argentina
syscontact xxxx <admin@lala.com>
Y para asegurarnos que snmp utilice este fichero y unicamente este fichero, editamos /etc/conf.d/snmpd
SNMPD_FLAGS="-C -c /etc/snmp/snmpd.conf"
Arrancamos el agente, y lo ponermos en el boot
# /etc/init.d/snmpd start
# rc-update add snmpd default
Con cfgmaker (que viene en el paquete de mrtg) creamos el archivo de configuracion
# /usr/bin/cfgmaker --output=/etc/mrtg/traffic.cfg --ifdesc=ip --ifref=descr --global 'WorkDir: /var/mrtg' --global 'Options[_]: bits,growright' public@localhost
Luego tiramos esta linea 3 veces ignorando los warnings
# /usr/bin/mrtg /etc/mrtg/traffic.cfg
Creamos el directorio mrtg dentro del directorio de apache
# mkdir -p /var/www/localhost/htdocs/mrtg/
Luego creamos el index.html para poder ver los graficos dibujados via web
# indexmaker --output=/var/www/localhost/htdocs/mrtg/index.html --sort=original /etc/mrtg/traffic.cfg
Y por ultimo agregamos esta linea al cron para que tome los datos cada 5 minutos:
# echo "*/5 * * * * root /usr/bin/mrtg /etc/mrtg/traffic.cfg" >> /etc/crontab


