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.