Cómo escribir su propio script de verificación de seguridad de Linux
El contenido del script implica:
1. Verificar la hora de modificación del archivo de contraseña del sistema
2. Verificar si el servicio ssh está activado<. /p>
3. Verifique la política de configuración de acceso remoto SSH del sistema (host. Verifique si no hay contenido de archivo ejecutable en el sistema
9. Verifique si no hay contenido de archivo ejecutable en el sistema
9. Compruebe si hay algún contenido de archivo ejecutable en el sistema. ¿Existe el contenido del archivo ejecutable?
10. Compruebe el contenido del archivo ejecutable en Linux
Enumera algunos webshells de uso común, herramientas de escaneo EXP y Python y herramientas de rastreo. Si se encuentran dichos archivos relacionados, estos archivos se mostrarán o copiarán en el directorio /tmp/.
Por ejemplo, el herramienta de escaneo en Linux:
A **** son 172 archivos.
De hecho, el script completo es relativamente simple
buscar. escriba
instrucción if
comando awk
más
egrep
y otros comandos | grep -v " #". |awk -F' ' '{if($2!=90){print ""$1" en/etc/login.defs está configurado en "2" días, solicite al administrador que lo cambie a 90 días. "}}'
Desde aquí podemos ver que al abrir el archivo /etc/login.defs y buscar la palabra clave "PASS_MAX_DAYS", use el comando awk para filtrar el contenido con "" como delimitador para juicio. Si la segunda posición del delimitador $2 no es igual a 90, entonces se genera el contenido.
De manera similar, los resultados de cualquier filtrado del contenido del archivo se pueden mostrar utilizando este método.
Otro ejemplo:
Devolución de llamada "Ver qué usuarios no predeterminados existen en el sistema".
Devolución de llamada "root:x:" para usuarios recién creados , el valor es mayor que 500. Para los usuarios iniciales del sistema, el valor es menor o igual a 500. "
Más/etc /passwd |awk -F ":" '{if($3gt; 500){ print "El valor de "$1" en /etc/passwd es "$3". Pídale al administrador que confirme si la cuenta es normal."}}'
echo ----- -------- ------------------------------------------ -------- ---------
if declaración relacionada:
echo -------------- -------- ------------------------------------------ -------- --
echo "Verificar la integridad de los archivos del sistema 2 (verificación MD5)"
echo "Este proyecto obtiene los valores MD5 de algunos archivos clave y los coloca en la biblioteca, guardados de forma predeterminada en /etc/md5db.
"
echo "Si se ejecuta por primera vez, aparecerá md5sum:/sbin/portmap: No existe tal archivo o directorio."
echo "Cuando se repite la verificación por segunda vez, coincidirá con el valor MD5 en MD5DB para determinar si el archivo ha sido modificado. "
file="/etc/md5db"
if [ -e "$file" ]; entonces md5sum -c /etc/md5db 2gt; amp; 1;
else
md5sum /etc/passwd gt;gt;/etc/md5db
md5sum /etc/shadow gt;gt;/etc/md5db
md5sum /etc/group gt;gt;/etc/md5db
md5sum /usr/bin/passwd gt;gt;/etc/md5db
md5sum /sbin/portmap gt ;gt;/etc/md5db
md5sum /bin/login gt;gt;/etc/md5db
md5sum /bin/ls gt;gt;/etc/md5db
md5sum /bin/ps gt; /etc/md5db
md5sum /usr/bin/top gt;
fi p> p>
eco ------------------------------------------ ----- ----- ---------------------
Aquí, los valores MD5 de algunos archivos confidenciales La idea general es, primero, verificar si /etc/md5db existe. Si no existe, almacenar y guardar el valor MD5 del archivo relevante en el archivo /etc/md5db. la segunda vez, se compararán los valores MD5 de los dos tiempos y se guardará el valor MD5 en el archivo /etc/md5db.
Este archivo comparará el valor MD5 dos veces y alertará cuando. el valor MD5 cambia.
El script en sí no es complicado, así que publicaré algo para su referencia
#! >
eco " (__)"
eco " (oo)"
eco " /------\/"
echo " / | ||"
echo " * /\ ---/"
echo " ~~ ~~"
echo "... ."¿Estás listo?"......"
leer clave
echo "Advertencia: este script es solo una operación de verificación y no realiza ningún cambio en el servidor Los administradores pueden realizar la configuración adecuada basándose en este informe. "
echo "
leer clave
echo "Advertencia: este script es solo una operación de verificación y no realiza ningún cambio en el servidor.
echo --------------------------------------- control de seguridad del host -----------------------
echo "Versión del sistema"
uname -a
eco --------- -------------------------------------- --- --------------------
echo "La dirección IP de esta máquina es:"
ifconfig | grep --color "\([0-9]\{1, 3\}\ .\)\{3\}[0-9]\{1, 3\}"
eco ------------------------------------------------------ ----- -----------------------
awk -F":" '{si ($2!~/ ^! |^*/){print "("$1")"" es una cuenta desbloqueada, pídale al administrador que verifique si es necesario bloquearla o eliminarla."}}'/etc/shadow
eco - ----------------------------------------- --------- -----------------------
más /etc/login.defs grep -E | "PASS_MAX_DAYS" | grep -v "# " /etc/login.defs| grep -v "#" |awk -F'' '{if($2!=90){imprimir ""1" en /etc/login. defs está configurado en "2" días, solicite al administrador que lo cambie a 90 días }
echo ---------------------- ---------- ---------------------------------------- -----
más /etc/login.defs | grep -E "PASS_MIN_ LEN".| grep -v "#" |awk -F'' '{if($2!=6) {print "/etc/login.defs El "$1" está configurado en "2" caracteres; solicite al administrador que lo cambie a 6 caracteres.
}
eco ----------------------------------------- - ----------------------------------
más /etc/login.defs | grep - E "PASS_WARN_ AGE" | grep -v "#" |awk -F'' {if($2!=10){print "El "$1" dentro de /etc/login.defs está configurado en "$2" días, pídale al administrador que cambie el número de advertencia sobre la caducidad de la contraseña a 10 días."}}'
echo ------------------ ------ -------------------------------------------- ------ ----
grep TMOUT /etc/profile /etc/bashrc gt; /dev/null|| echo "El límite de tiempo de espera de inicio de sesión no está establecido, configúrelo agregando TMOUT =600 parámetro para /etc /profile o /etc/bashrc"
echo ---------------------------- ------ -------- --------------------------------
if ps - elf |grep xinet |grep -v "grep xinet"; entonces
echo "El servicio xinetd se está ejecutando, verifique si el servicio xinnetd se puede cerrar"
else
echo "xinetd El servicio no está abierto"
fi
echo ------------------ ---------- ---------------------------------------- -------
echo "Comprobar cuando se modifica el archivo de contraseña del sistema"
ls -ltr /etc/passwd
echo --- ------------- ------------------------------------- ------------- --------
echo "Compruebe si el servicio ssh está abierto"
if estado del servicio sshd | grep -E "escuchando en|activo\(en ejecución\)"; luego
echo "el servicio SSH ha sido abierto"
else
echo "el servicio SSH no se ha abierto"
fi
echo ----------------------- --------------------- --------------------------
echo "Verificar servicio TELNET"
si hay más /etc/xinetd.d/telnetd 2gt;amp;1|g
rep -E "disable=no"; luego
echo "el servicio TELNET está habilitado"
else
echo "el servicio TELNET no está habilitado"
fi
eco ------------------------------------- ---------- ------------------------------------
echo "Ver acceso remoto SSH al sistema Establecer política (lista de denegación host.deny)"
if more /etc/hosts.deny | grep -E "sshd:"; deny | grep -E "sshd"; luego
echo "La política de acceso remoto está configurada"
else
echo "La política de acceso remoto no está configurada"
p>
fi
eco ------------------------------------ ----------- ----------------------------