159 lines
4.9 KiB
Bash
159 lines
4.9 KiB
Bash
|
#!/bin/bash
|
|||
|
|
|||
|
_DEST_FILE="audit.`hostname -f`.`date +%F-%H:%M`.md"
|
|||
|
exec > >(tee -a $_DEST_FILE) 2>&1
|
|||
|
|
|||
|
run_command() {
|
|||
|
local command=`$* 2> /dev/null`
|
|||
|
if [ -z "$command" ]; then
|
|||
|
echo ":warning: Warning ! :warning:"
|
|||
|
echo -e "\n\`\`\`bash"
|
|||
|
echo "Command \"$*\" did not return any result."
|
|||
|
echo -e "\`\`\`"
|
|||
|
else
|
|||
|
echo -e "\n\`\`\`bash"
|
|||
|
echo "$ $*"
|
|||
|
$*
|
|||
|
echo -e "\`\`\`"
|
|||
|
fi
|
|||
|
}
|
|||
|
|
|||
|
search_packages() {
|
|||
|
local packages=$*
|
|||
|
local command=`$_PKGMNGR_LIST | grep -E $packages`
|
|||
|
if [ -z "$command" ]; then
|
|||
|
echo "Search for \"$packages\" packages did not return any result(s)."
|
|||
|
else
|
|||
|
echo -e "\n\`\`\`bash"
|
|||
|
#echo $command
|
|||
|
$_PKGMNGR_LIST | grep -E $packages
|
|||
|
echo -e "\`\`\`"
|
|||
|
fi
|
|||
|
}
|
|||
|
|
|||
|
if [[ $EUID -ne 0 ]]; then
|
|||
|
echo -e "\`\`\`"
|
|||
|
echo -e "This script as better results when run as root."
|
|||
|
echo -e "With non-root user, it will still work, but some check won't pass."
|
|||
|
echo -e "\`\`\`"
|
|||
|
fi
|
|||
|
|
|||
|
echo -e "Hi! My name is `hostname -f`" and I am `uptime -p | sed "s/up/up since/"`". "
|
|||
|
if [[ -z `/usr/bin/lsb_release -d | grep -i debian` ]]; then
|
|||
|
_OS="Debian"
|
|||
|
_OS_VERSION=`lsb_release -d|sed "s/Description:\t//"`
|
|||
|
_PKGMNGR_LIST="dpkg -l"
|
|||
|
echo -e "I'm running with $_OS_VERSION, with a `uname -r` kernel (version `uname -v`).\n"
|
|||
|
elif [[ -z `/usr/bin/lsb_release -d | grep -i ubuntu` ]]; then
|
|||
|
_OS="Ubuntu"
|
|||
|
_OS_VERSION=`lsb_release -d|sed "s/Description:\t//"`
|
|||
|
_PKGMNGR_LIST="dpkg -l"
|
|||
|
echo -e "I'm running with $_OS_VERSION, with a `uname -r` kernel (version `uname -v`).\n"
|
|||
|
|
|||
|
elif [[ -f "/etc/centos-release" ]]; then
|
|||
|
_OS="Centos"
|
|||
|
_PKGMNGR_LIST="yum list installed"
|
|||
|
_OS_VERSION=`cat /etc/centos-release`
|
|||
|
echo -e "I'm running $_OS_VERSION with a `uname -r` kernel.\n"
|
|||
|
else
|
|||
|
echo -e "I'm running a `uname -r` kernel (version `uname -v`).\n"
|
|||
|
_OS="Unknown Linux"
|
|||
|
exit 0
|
|||
|
fi
|
|||
|
|
|||
|
echo -e "\n## System"
|
|||
|
echo -e "* Name: `hostname -f`"
|
|||
|
echo -e "* Uptime: `uptime -p | sed "s/up//"`."
|
|||
|
echo -e "* $_OS version: $_OS_VERSION"
|
|||
|
echo -e "* Kernel: `uname -a`"
|
|||
|
|
|||
|
echo -e "\n## CPU"
|
|||
|
echo -e "* Processor model: $(cat /proc/cpuinfo |grep "model name" | uniq | sed 's/model name.*\: //')"
|
|||
|
echo -e "* Core(s): $(cat /proc/cpuinfo |grep -c processor)"
|
|||
|
|
|||
|
echo -e "\n## Memory"
|
|||
|
run_command "free -m"
|
|||
|
|
|||
|
echo -e "\n## Disk(s)"
|
|||
|
run_command "df -h"
|
|||
|
run_command "cat /etc/fstab"
|
|||
|
run_command "mount"
|
|||
|
|
|||
|
echo -e "\n## Kernel"
|
|||
|
echo "#### Loaded kernel"
|
|||
|
run_command "uname -a"
|
|||
|
echo "#### Available kernel"
|
|||
|
if [[ $_OS = "Debian" ]]; then
|
|||
|
echo -e "\`\`\`bash"
|
|||
|
echo "$ $_PKGMNGR_LIST|grep linux-image | grep -v rc | grep -v meta-package |awk '{print $2\" (\"$3\")\"}'"
|
|||
|
$_PKGMNGR_LIST|grep linux-image | grep -v rc | grep -v meta-package |awk '{print $2" ("$3")"}'
|
|||
|
echo -e "\`\`\`"
|
|||
|
fi
|
|||
|
|
|||
|
if [[ $_OS = "Debian" ]]; then
|
|||
|
echo -e "\n## Debian sources"
|
|||
|
run_command "cat /etc/apt/sources.list"
|
|||
|
run_command "grep . -Hr /etc/apt/sources.list.d/"
|
|||
|
fi
|
|||
|
|
|||
|
echo -e "\n## Network"
|
|||
|
echo "#### Networking package(s) installed"
|
|||
|
search_packages "vlan|iproute|ifenslave"
|
|||
|
run_command "cat /etc/network/interfaces"
|
|||
|
run_command "cat /etc/network/interfaces.d/*"
|
|||
|
run_command "/sbin/ip a"
|
|||
|
run_command "netstat -tnlp"
|
|||
|
run_command "cat /etc/hosts"
|
|||
|
|
|||
|
echo -e "\n## Firewall"
|
|||
|
run_command "/sbin/iptables -L -n"
|
|||
|
run_command "/sbin/iptables -L -n -t nat"
|
|||
|
|
|||
|
echo -e "\n## HTTP"
|
|||
|
echo "#### HTTP package(s) installed"
|
|||
|
search_packages "apache|nginx|lighttp|varnish|haproxy|php"
|
|||
|
|
|||
|
echo -e "\n## Database"
|
|||
|
echo "#### Database package(s) installed"
|
|||
|
search_packages "mysql|maria|percono|postgre|sqlite"
|
|||
|
run_command "if [[ -f \"/etc/mysql/my.cnf\" ]]; then cat /etc/mysql/my.cnf | grep -v \"#\" ; fi"
|
|||
|
run_command "if [[ -f \"/etc/mysql/my.cnf\" ]]; then MYSQL_DATADIR=$(cat /etc/mysql/my.cnf |grep datadir | awk '{print $3}') && ionice -c 3 du -sh $MYSQL_DATADIR ; fi"
|
|||
|
|
|||
|
echo -e "\n## NoSQL"
|
|||
|
echo "#### NoSQL package(s) installed"
|
|||
|
search_packages "memcache|redis"
|
|||
|
|
|||
|
echo -e "\n## Email"
|
|||
|
echo "#### Email package(s) installed"
|
|||
|
search_packages "mail"
|
|||
|
|
|||
|
echo -e "\n## Virtualization"
|
|||
|
echo "#### Virtualization package(s) installed"
|
|||
|
search_packages "xen|virt|qemu|kvm"
|
|||
|
|
|||
|
echo -e "\n## Supervision"
|
|||
|
echo "#### Supervision package(s) installed"
|
|||
|
search_packages "nagios|nrpe|icinga|munin|netdata|cacti"
|
|||
|
|
|||
|
echo -e "\n## Cron"
|
|||
|
run_command "ls -lR /etc/cron*"
|
|||
|
run_command "grep . -Hr /var/spool/cron/crontabs/"
|
|||
|
|
|||
|
echo -e "\n## Users"
|
|||
|
run_command "getent passwd"
|
|||
|
|
|||
|
echo -e "\n## Process"
|
|||
|
echo "#### Systemctl"
|
|||
|
run_command "systemctl list-units"
|
|||
|
run_command "pstree"
|
|||
|
run_command "ps faux"
|
|||
|
|
|||
|
echo -e "\n## Backup"
|
|||
|
echo "#### Backup package(s) installed"
|
|||
|
search_packages "rsync|backup|bacula"
|
|||
|
run_command "find / -maxdepth 3 -type d -name '*backup*'"
|
|||
|
|
|||
|
echo -e "\n## Misc"
|
|||
|
echo "#### Other interresting package(s)"
|
|||
|
search_packages "sudo|ldap|ftp|bind|puppet|ansible|git|etckeeper|nfs|rabbit|supervisor|kibana|elastic"
|