mirror of
				https://github.com/CISOfy/lynis.git
				synced 2025-10-30 19:04:21 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			120 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| #################################################################################
 | |
| #
 | |
| #   Lynis
 | |
| # ------------------
 | |
| #
 | |
| # Copyright 2007-2015, Michael Boelen, CISOfy (michael.boelen@cisofy.com)
 | |
| # Web site: https://cisofy.com
 | |
| #
 | |
| # Lynis comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
 | |
| # welcome to redistribute it under the terms of the GNU General Public License.
 | |
| # See LICENSE file for usage of this software.
 | |
| #
 | |
| #################################################################################
 | |
| #
 | |
| # Memory and processes
 | |
| #
 | |
| #################################################################################
 | |
| #
 | |
|     InsertSection "Memory and processes"
 | |
| #
 | |
| #################################################################################
 | |
| #
 | |
|     # Test        : PROC-3602
 | |
|     # Description : Query /proc/meminfo
 | |
|     Register --test-no PROC-3602 --os Linux --weight L --network NO --description "Checking /proc/meminfo for memory details"
 | |
|     if [ ${SKIPTEST} -eq 0 ]; then
 | |
|         if [ -f /proc/meminfo ]; then
 | |
|             logtext "Result: found /proc/meminfo"
 | |
|             Display --indent 2 --text "- Checking /proc/meminfo" --result FOUND --color GREEN
 | |
|             FIND=`cat /proc/meminfo | grep "^MemTotal" | tr -s ' ' | awk '{ print $2" "$3 }'`
 | |
|             MEMORY_SIZE=`echo ${FIND} | awk '{ print $1 }'`
 | |
|             MEMORY_UNITS=`echo ${FIND} | awk '{ print $2 }'`
 | |
|             logtext "Result: Found ${MEMORY_SIZE} ${MEMORY_UNITS} memory"
 | |
|             report "memory_size=${MEMORY_SIZE}"
 | |
|             report "memory_units=${MEMORY_UNITS}"
 | |
|           else
 | |
|             logtext "Result: /proc/meminfo file not found on this system"
 | |
|         fi
 | |
|     fi
 | |
| #
 | |
| #################################################################################
 | |
| #
 | |
|     # Test        : PROC-3604
 | |
|     # Description : Query /proc/meminfo
 | |
|     Register --test-no PROC-3604 --os Solaris --weight L --network NO --description "Query prtconf for memory details"
 | |
|     if [ ${SKIPTEST} -eq 0 ]; then
 | |
|         logtext "Test: Searching /usr/sbin/prtconf"
 | |
|         if [ -x /usr/sbin/prtconf ]; then
 | |
|             Display --indent 2 --text "- Querying prtconf for installed memory" --result DONE --color GREEN
 | |
|             MEMORY_SIZE=`/usr/sbin/prtconf | grep "^Memory size:" | cut -d ' ' -f3`
 | |
|             MEMORY_UNITS=`/usr/sbin/prtconf | grep "^Memory size:" | cut -d ' ' -f4`
 | |
|             logtext "Result: Found ${MEMORY_SIZE} ${MEMORY_UNITS} memory"
 | |
|             report "memory_size=${MEMORY_SIZE}"
 | |
|             report "memory_units=${MEMORY_UNITS}"
 | |
|           else
 | |
|             Display --indent 2 --text "- Querying prtconf for installed memory" --result SKIPPED --color WHITE
 | |
|             logtext "Result: /usr/sbin/prtconf not found"
 | |
|         fi
 | |
|     fi
 | |
| #
 | |
| #################################################################################
 | |
| #
 | |
|     # Test        : PROC-3612
 | |
|     # Description : Searching for dead and zombie processes
 | |
|     # Notes       : Don't perform test on Solaris    
 | |
|     if [ ! "${OS}" = "Solaris" ]; then PREQS_MET="YES"; else PREQS_MET="NO"; fi
 | |
|     Register --test-no PROC-3612 --preqs-met ${PREQS_MET} --weight L --network NO --description "Check dead or zombie processes"
 | |
|     if [ ${SKIPTEST} -eq 0 ]; then
 | |
|         if [ "${OS}" = "AIX" ]; then
 | |
|             FIND=`${PSBINARY} -Ae -o pid,wchan,stat,comm | awk '{ if ($3 ~ /Z|X/) print $1 }' | xargs`
 | |
|           else
 | |
|             FIND=`${PSBINARY} x -o pid,wchan,stat,comm | awk '{ if ($3 ~ /Z|X/) print $1 }' | xargs`
 | |
|         fi
 | |
|         if [ "${FIND}" = "" ]; then
 | |
|             logtext "Result: no zombie processes found"
 | |
|             Display --indent 2 --text "- Searching for dead/zombie processes" --result OK --color GREEN
 | |
|           else
 | |
|             logtext "Result: found one or more dead or zombie processes"
 | |
|             logtext "Output: PIDs ${FIND}"
 | |
|             Display --indent 2 --text "- Searching for dead/zombie processes" --result WARNING --color RED
 | |
|             ReportSuggestion ${TEST_NO} "Check the output of ps for dead or zombie processes"
 | |
|         fi
 | |
|     fi
 | |
| #
 | |
| #################################################################################
 | |
| #
 | |
|     # Test        : PROC-3614
 | |
|     # Description : Searching for heavy IO based waiting processes
 | |
|     # Notes       : Don't perform test on Solaris
 | |
|     if [ ! "${OS}" = "Solaris" ]; then PREQS_MET="YES"; else PREQS_MET="NO"; fi
 | |
|     Register --test-no PROC-3614 --preqs-met ${PREQS_MET} --weight L --network NO --description "Check heavy IO waiting based processes"
 | |
|     if [ ${SKIPTEST} -eq 0 ]; then
 | |
|         if [ "${OS}" = "AIX" ]; then
 | |
|             FIND=`${PSBINARY} -Ae -o pid,wchan,stat,comm | awk '{ if ($3=="D") print $1 }' | xargs`
 | |
|           else
 | |
|             FIND=`${PSBINARY} x -o pid,wchan,stat,comm | awk '{ if ($3=="D") print $1 }' | xargs`
 | |
|         fi
 | |
|         if [ "${FIND}" = "" ]; then
 | |
|             logtext "Result: No processes were waiting for IO requests to be handled first"
 | |
|             Display --indent 2 --text "- Searching for IO waiting processes" --result OK --color GREEN
 | |
|           else
 | |
|             logtext "Result: found one or more processes which were waiting to get IO requests handled first"
 | |
|             logtext "More info: processes which show up with the status flag 'D' are often stuck, until a disk IO event finished. This can happen for example with network storage, where the connection or protocol settings are not logtext well configured."
 | |
|             logtext "Output: PIDs ${FIND}"
 | |
|             Display --indent 2 --text "- Searching for IO waiting processes" --result WARNING --color RED
 | |
|             ReportSuggestion ${TEST_NO} "Check process listing for processes waiting for IO requests"
 | |
|         fi
 | |
|     fi
 | |
| #
 | |
| #################################################################################
 | |
| #
 | |
| 
 | |
| wait_for_keypress
 | |
| 
 | |
| #
 | |
| #================================================================================
 | |
| # Lynis - Copyright 2007-2015, Michael Boelen, CISOfy - https://cisofy.com
 |