Le brinda una comprensión más profunda del sistema de archivos de Linux (¡súper detallado!) (Solución de problemas de agotamiento del número de inode, recuperación de archivos eliminados accidentalmente y análisis de archivos de registro)
Hemos aprendido antes que cada archivo e inodo se corresponden entre sí, es decir, cada archivo tendrá un número de inodo, pero de esta manera, puede suceder que el inodo se haya agotado, pero el disco duro no esté lleno.
Una vez que esto sucede, ya no podemos crear nuevos archivos en el disco duro. Para que sea más intuitivo para que todos lo entiendan, el siguiente es un caso para simular la falla del número de archivos en el sistema de archivos de Linux.
1. Preparación
Cree un nuevo disco duro, cree la partición / dev / sdb1, tamaño de partición + 30M (no demasiado grande, aquí es solo un experimento de simulación, de lo contrario habrá demasiados números de inodo)
Formato, formato ext4 (xfs también funciona)
[root@localhost ~]# mkfs.ext4 /dev/sdb1
Puede haber una situación: después de que se crea y formatea la partición y se descubre que falta el archivo del disco, ¿qué debo hacer? En este momento, se recomienda reiniciar el sistema o ejecutar el comando "partprobe" para que el sistema operativo detecte la nueva tabla de particiones para evitar formatear la partición. Dañar los datos existentes en el disco duro
Crea un nuevo directorio y móntalo
Utilice el comando df con la opción "-i" para confirmar el uso del i-nodo en el sistema de archivos. Se puede ver que hay 7680 inodos
2. Simular la falla por agotamiento del nodo i
Escriba un script para simular el agotamiento de todos los i-nodos disponibles en / dev / sdb1 (7680)
Para obtener información detallada sobre el programa de secuencia de comandos más adelante, comprenda aquí
En este momento, verifique los inodos disponibles de la partición nuevamente y descubra que está llena, y luego crear un nuevo archivo no puede tener éxito, pero a través del comando df para ver la partición, solo "4%", hay mucho espacio libre; de esto, puede obtener: Disco La cantidad de archivos creados está limitada por el tamaño del disco y la cantidad de números de inodo
Entendemos el origen de la falla, luego el problema se puede resolver mejor, puede "ls -a" para ver todos los archivos (incluidos los archivos ocultos)
Luego, descubra los archivos pequeños que ocupan una gran cantidad de i-nodos en la partición y transfiéralos o elimínelos.
Para sistemas de archivos compartidos por muchos usuarios, se recomienda establecer cuotas de disco para usuarios relacionados (incluida la cantidad de archivos y espacio en disco)
2. Recuperar archivos borrados por error
Cuando muchos de nuestros usuarios comunes eliminan un archivo, en realidad no conocen el nodo de inodo y los datos del bloque, simplemente encuentran el archivo (nombre) y lo eliminan.
De hecho, Linux controla la eliminación de archivos a través del número de enlaces. Solo cuando no hay ningún enlace en un archivo, el archivo se eliminará por completo.
Para el sistema de archivos EXT en el sistema Linux, puede usar la herramienta de recuperación extundelete para recuperar archivos. Es una herramienta de recuperación de datos de Linux de código abierto que admite sistemas de archivos ext3 y ext4 (ext4 solo se puede recuperar en la versión CentOS6)
1. Preparación (compilar e instalar extundelete)
Puede continuar con la partición recién creada en este momento, pero primero desmóntela, luego vuelva a formatearla a "ext3" y luego móntela
[root@localhost test]# cd
[root@localhost ~]# umount /test/
[root@localhost ~]# mkfs.ext3 /dev/sdb1
...略
[root@localhost ~]# mount /dev/sdb1 /test/
Antes de compilar e instalar extundelete, debe instalar dos paquetes de dependencia (primero preste atención a si ha montado un espejo)
[root@localhost test]# ls
extundelete-0.2.4.tar.bz2 lost+found
[root@localhost test]# tar jxvf extundelete-0.2.4.tar.bz2 ##解压
...略
[root@localhost test]# ls
extundelete-0.2.4 extundelete-0.2.4.tar.bz2 lost+found
[root@localhost test]# cd extundelete-0.2.4/
[root@localhost extundelete-0.2.4]# ls
acinclude.m4 config.h.in depcomp Makefile.am README
aclocal.m4 configure install-sh Makefile.in src
autogen.sh configure.ac LICENSE missing
[root@localhost extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete ##进行配置,指定软件安装(工作)目录
Configuring extundelete 0.2.4
Writing generated files to disk
[root@localhost extundelete-0.2.4]# make && make install ##编译完成后进行安装
...略
[root@localhost extundelete-0.2.4]# cd /usr/local/extundelet
[root@localhost extundelet]# ls
bin
[root@localhost extundelet]# cd bin/
[root@localhost bin]# ls
extundelete
[root@localhost bin]# ln -s /usr/local/extundelet/bin/extundelete /usr/bin/ ##创建软链接,把前者文件放入/usr/bin目录中,让系统能识别extundelete的所有命令
2. Simular eliminar
Regrese al directorio / test / y cree un nuevo archivo en el directorio ("echo" significa salida, lo que equivale a crear cuatro archivos con el contenido de a)
[root@localhost bin]# cd /test/
[root@localhost test]# echo a>a
[root@localhost test]# echo a>b
[root@localhost test]# echo a>c
[root@localhost test]# echo a>d
[root@localhost test]# cat a
a
[root@localhost test]# cat b
a
[root@localhost test]# cat c
a
[root@localhost test]# cat d
a
[root@localhost test]# ls
a c extundelete-0.2.4 lost+found
b d extundelete-0.2.4.tar.bz2
Verifique qué archivos existen en el sistema de archivos / dev / sdb1, el i-nodo comienza desde 2 y 2 significa que el archivo es el primer directorio del sistema
[root@localhost test]# extundelete /dev/sdb1 --inode 2
...略
Would you like to continue? (y/n)
y ##你想继续吗,输入y继续
...略
File name | Inode number | Deleted status
. 2
.. 2
lost+found 11
extundelete-0.2.4.tar.bz2 12
extundelete-0.2.4 1921
a 13
b 14
c 15
d 16
##只列出关键内容,这里可以看到a、b、c、d的inode号都有了
Después de eliminar el archivo ay el archivo b, "ls" encontrará que no hay archivos ayb, y cuando ingresemos el comando "extundelete / dev / sdb1 --inode 2", encontraremos que los archivos ayb están en el estado Eliminado.
[root@localhost test]# rm -rf a b
[root@localhost test]# ls
c extundelete-0.2.4 lost+found
d extundelete-0.2.4.tar.bz2
[root@localhost test]# extundelete /dev/sdb1 --inode 2
...略
3. Realizar operaciones de recuperación
Primero regrese al directorio de inicio, desmonte / test /, y luego use para restaurar todo el contenido en el sistema de archivos / dev / sdb1. Después de ejecutar este comando, aparecerá un nuevo directorio en el directorio actual, que guarda los archivos restaurados
Hay muchos más usos de extundelete, los estudiantes interesados pueden verificar un uso más detallado a través de la ayuda.
Después de que el archivo se elimina por error, si se sobrescribe el número de inodo (el directorio se llena o se formatea), no se puede recuperar ni restaurar.
Tres, copia de seguridad y recuperación de archivos de tipo xfs
1. Información general
Nota: Es otro tipo, no eliminar y restaurar directamente, sino realizar copias de seguridad y restaurar
CentOS7 usa archivos de tipo xfs de forma predeterminada, y los archivos de tipo xfs se pueden respaldar y restaurar con las herramientas xfsdump y xfsrestore
Hay dos niveles de respaldo para xfsdump: 0 significa respaldo completo: 1-9 significa respaldo incremental
Copia de seguridad incremental: una vez completada la copia de seguridad, si hay contenido nuevo en el disco, solo hará una copia de seguridad del nuevo contenido, en lugar de realizar una copia de seguridad completa nuevamente.
El nivel de copia de seguridad predeterminado de xfsdump es 0.
2. Formato de comando
xfsdump -f 指定备份存放位置 要备份的路径或设备文件
3. Opciones comunes
-f: especifica el directorio del archivo de respaldo
-L: Especifique la etiqueta de la sesión (si no se especifica, se nos pedirá que la ingresemos directamente)
-M: especifique la etiqueta del dispositivo
-s: copia de seguridad de un solo archivo (la ruta no se puede seguir directamente)
4. Restricciones de uso
Solo se puede realizar una copia de seguridad del sistema de archivos montado
Debe usar la autoridad de root para operar
Solo se puede realizar una copia de seguridad del sistema de archivos XFS
Los datos después de la copia de seguridad solo pueden ser analizados por xfsrestore
5. Pasos operativos
Cree una nueva partición / dev / sdb2 con un tamaño de + 10G (opcional), formatéela como xfs y móntela en el directorio / data / recién creado
Simule la pérdida de datos y restaure archivos con el comando "xfsrestore"
[root@localhost opt]# cd -
/data
[root@localhost data]# ls
passwd xcf
[root@localhost data]# rm -rf *
[root@localhost data]# ls
[root@localhost data]# xfsrestore -f /opt/dump_sdb2 ./
...略
[root@localhost data]# ls
passwd xcf ##检查一下是否成功恢复
[root@localhost data]# cd xcf/
[root@localhost xcf]# ls
xcf.txt ##OK~
Cuarto, analice los archivos de registro
1. Función de registro
El archivo de registro es un archivo que se utiliza para registrar diversa información operativa en el sistema Linux, que es equivalente a un "diario"
Los diferentes archivos de registro registran diferentes tipos de información, como la hora de inicio de sesión del usuario, el error del programa, etc.
Al leer el registro, es útil diagnosticar y resolver fallas del sistema (documentado)
Además, cuando el host es atacado por piratas informáticos, el archivo de registro también puede ayudar a encontrar rastros dejados por el pirata informático (como la fuerza bruta para descifrar múltiples intentos de contraseña para iniciar sesión)
2. Clasificación de troncos
En el sistema Linux, los datos de registro incluyen principalmente los siguientes tres tipos:
Registros del kernel y del sistema:
Gestión unificada por el servicio del sistema rsyslog, de acuerdo con la configuración en su archivo de configuración principal /etc/rsyslog.conf para determinar dónde registrar los mensajes del kernel y varios mensajes del programa del sistema
Muchos programas en el sistema entregarán sus archivos de registro a la administración de registros de rsyslog, por lo que estos formatos son básicamente los mismos
Registro de usuario:
Registre la información de inicio y cierre de sesión del usuario del sistema
Incluyendo nombre de usuario, terminal de inicio de sesión, hora de inicio de sesión, host de origen, proceso que se está utilizando, etc.
Registro del programa:
Se utiliza para registrar diversa información de eventos durante la ejecución de este programa.
Archivos de registro administrados de forma independiente por varias aplicaciones, el formato de registro no es uniforme
Los archivos de registro del propio sistema operativo Linux y la mayoría de los programas de servidor se colocan en el directorio / var / log de forma predeterminada
3. Archivos de registro comunes
Para los archivos de registro en el sistema Linux, es necesario comprender sus usos respectivos, de modo que el problema se pueda encontrar más rápido y con mayor precisión cuando sea necesario, y se puedan resolver varias fallas a tiempo. Aquí hay algunos archivos de registro comunes
Archivo de registro
Introducción
Kernel y registro de mensajes públicos: / var / 1og / messages
Registre los mensajes del kernel de Linux y la información de registro público de varias aplicaciones, incluido el inicio, errores de E / S, errores de red, fallas de programas, etc.
Registro de tareas programadas: / var / log / cron
Registrar la información de eventos generada por la tarea programada de crond
Registro de inicio del sistema: / var / 1og / dmesg
Registre diversa información de eventos del sistema Linux durante el proceso de arranque
# Registro del sistema de correo: / var / log / maillog
Registre la actividad de correo electrónico que ingresa o envía al sistema
Registro de inicio de sesión de usuario: / var / 1og / secure
Registrar información de eventos de seguridad relacionada con la autenticación de usuarios
/ var / log / lastlog
Registre los eventos de inicio de sesión recientes de cada usuario; formato binario
/ var / log / wtmp
Registre cada inicio de sesión, cierre de sesión y eventos de inicio y apagado del sistema; formato binario (no puede leerlo de todos modos)
/ var / run / btmp
Registrar intentos de inicio de sesión incorrectos o fallidos y eventos de verificación; formato binario
Ingrese al directorio, "vim target" para ver el registro
4. Análisis de archivos de registro
Después de familiarizarse con los archivos de registro principales del sistema, introduzcamos los métodos de análisis para los archivos de registro.
El propósito de analizar el archivo de registro es examinar el registro para encontrar información clave, depurar el servidor y determinar la causa de la falla, etc.
Para la mayoría de los archivos de registro en formato de texto (como los registros del kernel y del sistema, la mayoría de los registros del programa), puede ver el contenido del registro siempre que utilice herramientas de procesamiento de texto como tail, more, less, cat, etc.
Para algunos archivos de registro en formato binario (como registros de usuario), es necesario utilizar comandos de consulta característicos
5. Registros del kernel y del sistema
Gestión unificada por el servicio del sistema rsyslog
Paquete: rsyslog-7.4.7-16.el7.x86_ 64
Archivo de configuración: /etc/rsyslog.conf
Programa principal: / sbin / rsyslogd
Ingrese "vim /etc/rsyslog.conf" para ingresar y ver el archivo de configuración
"* .info" significa que toda la información del nivel de información y superior se escribe en el archivo de registro correspondiente
"Mail.none" significa que la información sobre algo no se escribe en el archivo de registro
Nivel de prioridad de los mensajes de registro del kernel del sistema Linux (cuanto menor es el nivel de número, mayor es la prioridad, más importante es el mensaje):
Prioridad
Descripción
0
EMERG (emergencia): una situación que hará que el sistema anfitrión no esté disponible
1
ALERTA: problemas que deben resolverse de inmediato
2
CRIT (grave): una situación más grave
3
ERR (error): se produjo un error durante la operación
4
ADVERTENCIA: Eventos importantes que pueden afectar las funciones del sistema y deben recordar a los usuarios
5
AVISO (Nota): no afectará la función normal, pero debe prestar atención al evento
6
INFO: información general
7
DEBUG (depuración): información de depuración del programa o del sistema, etc.
Generalmente, en uso real, puede registrar hasta el nivel ERR (3, error). Es imposible registrar toda la información en el registro. Para mayor eficiencia, solo registre lo importante (es decir, el registro ordinario o el registro de errores, etc. Es el registro de errores, vea qué pasó con la falla)
6. Formato general de los registros cronológicos
El kernel y la mayoría de los mensajes del sistema se registran en el archivo de registro público / var / log / messages, mientras que algunos otros mensajes del programa se registran en sus propios archivos de registro independientes. Además, los mensajes de registro también se pueden grabar en un dispositivo de almacenamiento específico, o Enviar directamente al usuario especificado
Vea el contenido del archivo / var / log / messages de la siguiente manera
... Omitido
Cada línea representa un mensaje de registro y cada mensaje incluye cuatro campos
Etiqueta de hora: la fecha y hora en que se envió el mensaje
Nombre de host: el nombre de la computadora que generó el mensaje
Nombre del subsistema: el nombre de la aplicación que emitió el mensaje.
Mensaje: el contenido específico del mensaje.
En algunos casos, puede configurar rsyslog para enviar la información del registro a la impresora para imprimir mientras se graba el archivo de registro en el archivo, de modo que no importa cómo el intruso de la red modifique el registro, el rastro de la intrusión no se puede borrar.
rsyslog es un objetivo destacado que a menudo es atacado. Si se destruye, será difícil para los administradores encontrar intrusiones y rastros de intrusiones. Por lo tanto, preste especial atención a monitorear su demonio y archivos de configuración.
7. Análisis de registros de usuarios
Información de inicio de sesión y cierre de sesión de usuario guardada
/ varl / log / lastlog: eventos recientes de inicio de sesión de usuario
/ var / log / wtmp: inicio de sesión de usuario, cierre de sesión y eventos de inicio y apagado del sistema
/ var / run / utmp: información detallada de cada usuario actualmente conectado
/ var / log / secure: eventos de seguridad relacionados con la autenticación de usuarios
Estos archivos son archivos de datos binarios. No puede usar directamente herramientas de visualización de texto como tail y less para navegar. Debe usar comandos de consulta de usuario como users, who, w, last y lastb para obtener información de registro.
El comando de usuario indica que simplemente muestre el nombre del usuario que ha iniciado sesión actualmente, y cada nombre de usuario mostrado corresponde a una sesión de inicio de sesión; si un usuario tiene más de una sesión de inicio de sesión, su nombre de usuario se mostrará el mismo número de veces.
El comando who se usa para reportar la información de cada usuario actualmente conectado al sistema; usando este comando, el administrador del sistema puede ver qué usuarios ilegales existen en el sistema actual para auditarlos y procesarlos (el resultado predeterminado de quién incluye el nombre de usuario, Tipo de terminal, fecha de inicio de sesión y host remoto)
El comando w se usa para mostrar información sobre cada usuario en el sistema actual y el proceso que están ejecutando, y el contenido de salida será más rico
El último comando se utiliza para consultar los registros de los usuarios que han iniciado sesión con éxito en el sistema. El último estado de inicio de sesión se mostrará en la parte superior; si un usuario no autorizado ha iniciado sesión, puede saber que ha sido invadido
El comando lastb se usa para consultar los registros de usuario de inicios de sesión fallidos. Puede prestar atención a si alguien está descifrando su contraseña por la fuerza bruta; también puede obtener información relacionada en el registro de seguridad / var / log / secure (tail / var / log / secure)
8. Análisis del registro del programa
En los sistemas Linux, bastantes aplicaciones no utilizan el servicio rsylog para administrar los registros, sino que mantienen los registros del mismo por el programa.
Programa de servicio del sitio web httpd (servicio web): / var / log / httpd /
Grabe a través de los siguientes dos archivos de registro
access_ log // Registra los eventos de acceso de los clientes
error_ log // Registra los eventos de error
Servicio de proxy (equivalente a un mecanismo de servidor de caché para que los usuarios accedan nuevamente, reduciendo la carga concurrente del servidor): / var / log / squid /
access.log 、 cache.log
Debido a que el formato de registro de los diferentes programas es bastante diferente y no existe un formato uniforme estricto, no lo presentaré en detalle aquí.
El archivo de registro se escribirá dinámicamente y usted estará escribiendo constantemente cuando lo esté viendo. El registro seguirá creciendo, lo que afectará nuestra visualización. En este momento, necesita algunas herramientas profesionales de análisis de registros para ver (interesado Los estudiantes pueden aprender más al respecto)
9. Estrategia de gestión de registros (resumen)
En general, como administrador de sistemas profesional, siempre debe estar atento, prestar atención a todo tipo de situaciones sospechosas, verificar varios archivos de registro del sistema con regularidad y realizar copias de seguridad y archivos de manera oportuna.
Al verificar estos registros, una vez que se encuentran lugares no razonables, haga un registro de inmediato
Extienda el tiempo de ahorro de registro (¿conveniente para verlo usted mismo, y también conveniente para otros?), A través de operaciones como la copia de seguridad
Controle los derechos de acceso al registro (como cierta información confidencial, como números de cuenta, contraseñas y contraseñas, etc.)
Gestión centralizada de registros
Envíe el archivo de registro del servidor al servidor de archivos de registro unificado (para que lo encontremos)
Esto facilita la recopilación, clasificación y análisis unificados de la información del registro.
Evite de forma eficaz la pérdida accidental, la manipulación malintencionada o la eliminación de información de registro
Además, los registros a veces no son completamente confiables.Los piratas informáticos veteranos y altamente capacitados limpiarán la escena perfectamente después de la intrusión.
Entonces, para resumir, debemos ser capaces de aplicar los comandos del sistema anteriores de manera competente y flexible, y realizar revisiones y pruebas exhaustivas y completas, y recordar sacarlas de contexto.
¡Vamos, estudiantes a los que les encanta aprender!