RPM nos ofrece una utilidad muy valiosa que nos permite verificar la integridad y seguridad de todos los paquetes y aplicaciones instaladas en el sistema (con yum o rpm). Básicamente, lo que vamos a hacer es verificar todos los ficheros de todos los paquetes instalados en el sistema. La verificación consiste en comprobar la información de estos ficheros con la que hay almacenada en la base de datos rpm. Vamos a verificar el MD5 checksum, los permisos, el propietario y grupo, tamaño del fichero, etc. Para ello utilizaremos los parámetros –verify o -V.
De primeras podemos descartar los ficheros de configuración, ya que lo más normal es que su contenido cambie, aunque todavía podríamos revisar su configuración de permisos, propietario, etc.
Si queremos hacer una revisión de todos los ficheros del sistema, algo que lógicamente puede tardar bastante tiempo, utilizaremos el siguiente comando. Hay que tener en cuenta que en caso de no haber salida todo es correcto:
# rpm -Va
Si queremos hacer la revisión de un único paquete lo indicamos y quitamos el parámetro «a»:
# rpm -V telnet
Y si quisiéramos revisar un único fichero:
# rpm --verify --file /usr/bin/chcon
¿Y qué sucede si se detecta algún problema? Vamos a verlo. Voy a hacer un backup del binario /usr/sbin/apachectl y a reescribirlo:
# mv /usr/sbin/apachectl /usr/sbin/apachectl.BAK # touch /usr/sbin/apachectl # rpm -V --file /usr/sbin/apachectl S.5....T. c /etc/httpd/conf/httpd.conf S.5....T. /etc/rc.d/init.d/httpd S.5....T. c /etc/sysconfig/httpd SM5....T. /usr/sbin/apachectl
Como véis ahora sí que hay salida. Tenemos 8 puntos que se pueden convertir en otros caracteres cuando hay algo que no cuadra:
- 5: fallo en el checksum MD5
- S: discrepancia en el tamaño del fichero
- T: fecha de modificación distinta al original
- L: enlace simbólico
- D: dispositivo
- U: usuario
- G: grupo
- M: permisos
Así pues, en el ejemplo anterior vemos como el binario apachectl tiene un checksum MD5 distinto, distinto tamaño, fecha de modificación y de permisos. La «c» es de fichero de configuración.
Si queremos comprobar de una tacada la integridad de todos los binarios de /usr/sbin, es tan sencillo como:
# rpm -Va | grep "/usr/sbin" S.5....T. /usr/sbin/apachectl
Podemos añadir un mayor nivel de debug con el parámetro «v», «vv» más debug aún:
# rpm -Vv --file /usr/sbin/apachectl # rpm -Vvv --file /usr/sbin/apachectl
Como veis, esta es una buena y sencilla forma de asegurarnos que los binarios del sistema no han sido alterados y también de tener un control del estado de los ficheros de configuración, etc.
Hmm… No me aparece la Ruta /usr/sbin/apachectl , ¿para que Sistema Operativo y versión es?