Red de conocimiento informático - Conocimiento informático - Cómo escribir su propio script de verificación de seguridad de Linux

Cómo escribir su propio script de verificación de seguridad de Linux

El contenido general del script: estadísticas de información básica (dirección IP, dirección MAC, información de puerto, información de servicio, etc.), verificación de seguridad del host (incluidos los puntos de control relacionados con el host requeridos por el tercero), estadísticas de rendimiento del sistema (no incluidas). en el análisis por el momento), código malicioso, Puntos de control como comprobaciones de programas.

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>

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 ------------------------------------ ----------- ----------------------------