Sync all scripts from website downloads — 352 scripts total

Includes updated JS challenge scripts with Claude-User whitelist,
same-site referer bypass, Blackbox-Exporter allowed bot, and all
new exporters, cheat sheets, and automation scripts.
This commit is contained in:
2026-05-25 03:31:08 +02:00
parent dbd6bf0324
commit a1a17e81a1
332 changed files with 174509 additions and 1106 deletions
+588
View File
@@ -0,0 +1,588 @@
#!/bin/bash
#############################################################
#### Nagios Core Installer ####
#### Automated source compilation of Nagios Core, ####
#### plugins, web server config, and systemd setup ####
#### ####
#### Author: Phil Connor ####
#### Contact: contact@mylinux.work ####
#### License: MIT ####
#### Version: 2.0 ####
#### ####
#### Usage: ./nagios-core-installer.sh [OPTIONS] ####
#############################################################
#
# Supported operating systems:
# - Ubuntu 20.04, 22.04, 24.04
# - Debian 11, 12
# - RHEL 8, 9
# - Rocky Linux 8, 9
# - Alma Linux 8, 9
#
# What this script does:
# 1. Installs build dependencies
# 2. Creates nagios user and nagcmd group
# 3. Downloads and compiles Nagios Core from source
# 4. Downloads and compiles Nagios Plugins
# 5. Configures Apache or Nginx with authentication
# 6. Optionally installs NRPE daemon
# 7. Enables and starts the systemd service
# 8. Validates configuration
#
set -euo pipefail
#########################
### Configuration ###
#########################
NAGIOS_VERSION="${NAGIOS_VERSION:-4.5.9}"
PLUGINS_VERSION="${PLUGINS_VERSION:-2.4.12}"
NRPE_VERSION="${NRPE_VERSION:-4.1.3}"
WEBSERVER="${WEBSERVER:-apache}"
NAGIOS_ADMIN_USER="${NAGIOS_ADMIN_USER:-nagiosadmin}"
NAGIOS_ADMIN_PASS=""
INSTALL_NRPE=false
NAGIOS_HOME="/usr/local/nagios"
BUILD_DIR="/tmp/nagios-build"
#########################
### Logging ###
#########################
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1" >&2
}
log_step() {
echo -e "${BLUE}[STEP]${NC} $1"
}
#########################
### Parse Arguments ###
#########################
show_help() {
cat <<EOF
Nagios Core Installer — Source Compilation
Usage: $0 [OPTIONS]
OPTIONS:
--version VERSION Nagios Core version (default: $NAGIOS_VERSION)
--plugins VERSION Nagios Plugins version (default: $PLUGINS_VERSION)
--webserver TYPE Web server: apache or nginx (default: apache)
--admin-user USER Web admin username (default: nagiosadmin)
--admin-pass PASS Web admin password (prompted if not set)
--with-nrpe Also install NRPE server components
--nrpe-version VERSION NRPE version (default: $NRPE_VERSION)
--help Show this help
EXAMPLES:
$0 # Install with defaults (Apache)
$0 --webserver nginx # Install with Nginx
$0 --version 4.5.9 --with-nrpe # Specific version + NRPE
$0 --admin-user admin --admin-pass s3cr3t
EOF
exit 0
}
parse_args() {
while [[ $# -gt 0 ]]; do
case "$1" in
--version) NAGIOS_VERSION="$2"; shift 2 ;;
--plugins) PLUGINS_VERSION="$2"; shift 2 ;;
--webserver) WEBSERVER="$2"; shift 2 ;;
--admin-user) NAGIOS_ADMIN_USER="$2"; shift 2 ;;
--admin-pass) NAGIOS_ADMIN_PASS="$2"; shift 2 ;;
--with-nrpe) INSTALL_NRPE=true; shift ;;
--nrpe-version) NRPE_VERSION="$2"; shift 2 ;;
--help) show_help ;;
*) log_error "Unknown option: $1"; exit 1 ;;
esac
done
if [[ "$WEBSERVER" != "apache" && "$WEBSERVER" != "nginx" ]]; then
log_error "Invalid webserver: $WEBSERVER (must be apache or nginx)"
exit 1
fi
}
#########################
### OS Detection ###
#########################
detect_os() {
if [[ ! -f /etc/os-release ]]; then
log_error "Cannot detect OS — /etc/os-release not found"
exit 1
fi
# shellcheck disable=SC1091
source /etc/os-release
OS_ID="${ID,,}"
OS_VERSION="${VERSION_ID%%.*}"
case "$OS_ID" in
ubuntu|debian)
OS_FAMILY="debian"
PKG_MGR="apt-get"
;;
rhel|rocky|almalinux|centos)
OS_FAMILY="rhel"
PKG_MGR="dnf"
;;
*)
log_error "Unsupported OS: $OS_ID"
exit 1
;;
esac
log_info "Detected OS: $PRETTY_NAME ($OS_FAMILY family)"
}
#########################
### Pre-flight ###
#########################
check_root() {
if [[ $EUID -ne 0 ]]; then
log_error "This script must be run as root"
exit 1
fi
}
prompt_password() {
if [[ -z "$NAGIOS_ADMIN_PASS" ]]; then
echo -n "Enter password for web admin user '$NAGIOS_ADMIN_USER': "
read -rs NAGIOS_ADMIN_PASS
echo
if [[ -z "$NAGIOS_ADMIN_PASS" ]]; then
log_error "Password cannot be empty"
exit 1
fi
fi
}
#########################
### Dependencies ###
#########################
install_dependencies() {
log_step "Installing build dependencies..."
if [[ "$OS_FAMILY" == "debian" ]]; then
apt-get update -qq
DEBIAN_FRONTEND=noninteractive apt-get install -y -qq \
autoconf gcc make unzip wget curl \
libgd-dev libssl-dev libperl-dev \
apache2-utils openssl
if [[ "$WEBSERVER" == "apache" ]]; then
DEBIAN_FRONTEND=noninteractive apt-get install -y -qq \
apache2 libapache2-mod-php php
else
DEBIAN_FRONTEND=noninteractive apt-get install -y -qq \
nginx php-fpm fcgiwrap
fi
else
$PKG_MGR install -y -q \
autoconf gcc gcc-c++ make unzip wget curl \
gd-devel openssl-devel perl-devel \
httpd-tools openssl
if [[ "$WEBSERVER" == "apache" ]]; then
$PKG_MGR install -y -q httpd php
else
$PKG_MGR install -y -q nginx php-fpm fcgiwrap
fi
fi
log_info "Dependencies installed"
}
#########################
### User Setup ###
#########################
create_nagios_user() {
log_step "Creating nagios user and nagcmd group..."
if ! getent group nagcmd &>/dev/null; then
groupadd nagcmd
log_info "Created group: nagcmd"
fi
if ! id nagios &>/dev/null; then
useradd -r -g nagcmd -d "$NAGIOS_HOME" -s /bin/false nagios
log_info "Created user: nagios"
fi
# Add web server user to nagcmd group
local www_user
if [[ "$OS_FAMILY" == "debian" ]]; then
www_user="www-data"
else
www_user="apache"
[[ "$WEBSERVER" == "nginx" ]] && www_user="nginx"
fi
usermod -aG nagcmd "$www_user" 2>/dev/null || true
usermod -aG nagcmd nagios 2>/dev/null || true
log_info "User setup complete"
}
#########################
### Compile Nagios ###
#########################
compile_nagios() {
log_step "Downloading and compiling Nagios Core $NAGIOS_VERSION..."
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
local tarball="nagios-${NAGIOS_VERSION}.tar.gz"
local url="https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-${NAGIOS_VERSION}/${tarball}"
if [[ ! -f "$tarball" ]]; then
wget -q "$url" -O "$tarball"
fi
tar xzf "$tarball"
cd "nagios-${NAGIOS_VERSION}"
./configure --with-command-group=nagcmd \
--with-httpd-conf=/etc/apache2/sites-enabled \
--with-nagios-user=nagios \
--with-nagios-group=nagcmd \
> /dev/null 2>&1
make all > /dev/null 2>&1
make install > /dev/null 2>&1
make install-init > /dev/null 2>&1
make install-commandmode > /dev/null 2>&1
make install-config > /dev/null 2>&1
if [[ "$WEBSERVER" == "apache" ]]; then
make install-webconf > /dev/null 2>&1
fi
log_info "Nagios Core $NAGIOS_VERSION compiled and installed to $NAGIOS_HOME"
}
#########################
### Compile Plugins ###
#########################
compile_plugins() {
log_step "Downloading and compiling Nagios Plugins $PLUGINS_VERSION..."
cd "$BUILD_DIR"
local tarball="nagios-plugins-${PLUGINS_VERSION}.tar.gz"
local url="https://github.com/nagios-plugins/nagios-plugins/releases/download/release-${PLUGINS_VERSION}/${tarball}"
if [[ ! -f "$tarball" ]]; then
wget -q "$url" -O "$tarball"
fi
tar xzf "$tarball"
cd "nagios-plugins-${PLUGINS_VERSION}"
./configure --with-nagios-user=nagios --with-nagios-group=nagcmd \
> /dev/null 2>&1
make > /dev/null 2>&1
make install > /dev/null 2>&1
log_info "Nagios Plugins $PLUGINS_VERSION compiled and installed"
}
#########################
### Web Server Config ###
#########################
configure_apache() {
log_step "Configuring Apache for Nagios..."
if [[ "$OS_FAMILY" == "debian" ]]; then
a2enmod rewrite cgi 2>/dev/null || true
cat > /etc/apache2/sites-enabled/nagios.conf <<'APACHECONF'
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/sbin">
Options ExecCGI
AllowOverride None
AuthType Basic
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
<Directory "/usr/local/nagios/share">
Options None
AllowOverride None
AuthType Basic
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
APACHECONF
else
cat > /etc/httpd/conf.d/nagios.conf <<'APACHECONF'
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/sbin">
Options ExecCGI
AllowOverride None
AuthType Basic
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
<Directory "/usr/local/nagios/share">
Options None
AllowOverride None
AuthType Basic
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
APACHECONF
fi
log_info "Apache configured"
}
configure_nginx() {
log_step "Configuring Nginx for Nagios..."
local php_sock
if [[ "$OS_FAMILY" == "debian" ]]; then
php_sock=$(find /var/run/php/ -name "php*-fpm.sock" 2>/dev/null | head -1)
[[ -z "$php_sock" ]] && php_sock="/var/run/php/php-fpm.sock"
else
php_sock="/run/php-fpm/www.sock"
fi
cat > /etc/nginx/conf.d/nagios.conf <<NGINXCONF
server {
listen 80;
server_name _;
root ${NAGIOS_HOME}/share;
index index.php index.html;
auth_basic "Nagios Access";
auth_basic_user_file ${NAGIOS_HOME}/etc/htpasswd.users;
location /nagios {
alias ${NAGIOS_HOME}/share;
}
location ~ \.cgi\$ {
root ${NAGIOS_HOME}/sbin;
rewrite ^/nagios/cgi-bin/(.*)\$ /\$1;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param AUTH_USER \$remote_user;
fastcgi_param REMOTE_USER \$remote_user;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
location ~ \.php\$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_pass unix:${php_sock};
}
}
NGINXCONF
log_info "Nginx configured"
}
configure_webserver() {
if [[ "$WEBSERVER" == "apache" ]]; then
configure_apache
else
configure_nginx
fi
# Create htpasswd file
htpasswd -cb "$NAGIOS_HOME/etc/htpasswd.users" "$NAGIOS_ADMIN_USER" "$NAGIOS_ADMIN_PASS"
chown nagios:nagcmd "$NAGIOS_HOME/etc/htpasswd.users"
chmod 640 "$NAGIOS_HOME/etc/htpasswd.users"
log_info "Web admin user '$NAGIOS_ADMIN_USER' created"
}
#########################
### NRPE Install ###
#########################
install_nrpe() {
if [[ "$INSTALL_NRPE" != "true" ]]; then
return
fi
log_step "Installing NRPE $NRPE_VERSION..."
cd "$BUILD_DIR"
local tarball="nrpe-${NRPE_VERSION}.tar.gz"
local url="https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-${NRPE_VERSION}/${tarball}"
if [[ ! -f "$tarball" ]]; then
wget -q "$url" -O "$tarball"
fi
tar xzf "$tarball"
cd "nrpe-${NRPE_VERSION}"
./configure --with-nagios-user=nagios --with-nagios-group=nagcmd \
--enable-command-args > /dev/null 2>&1
make all > /dev/null 2>&1
make install > /dev/null 2>&1
make install-config > /dev/null 2>&1
make install-init > /dev/null 2>&1
systemctl enable nrpe
systemctl start nrpe
log_info "NRPE $NRPE_VERSION installed and started"
}
#########################
### Systemd Setup ###
#########################
setup_systemd() {
log_step "Configuring systemd services..."
systemctl daemon-reload
# Enable and start Nagios
systemctl enable nagios
systemctl start nagios
# Enable and restart web server
if [[ "$WEBSERVER" == "apache" ]]; then
if [[ "$OS_FAMILY" == "debian" ]]; then
systemctl enable apache2
systemctl restart apache2
else
systemctl enable httpd
systemctl restart httpd
fi
else
systemctl enable nginx
systemctl restart nginx
systemctl enable fcgiwrap 2>/dev/null || true
systemctl start fcgiwrap 2>/dev/null || true
systemctl enable php-fpm 2>/dev/null || systemctl enable "php*-fpm" 2>/dev/null || true
systemctl restart php-fpm 2>/dev/null || systemctl restart "php*-fpm" 2>/dev/null || true
fi
log_info "Systemd services enabled and started"
}
#########################
### Validate Config ###
#########################
validate_config() {
log_step "Validating Nagios configuration..."
if "$NAGIOS_HOME/bin/nagios" -v "$NAGIOS_HOME/etc/nagios.cfg" > /dev/null 2>&1; then
log_info "Configuration validation passed"
else
log_warn "Configuration validation returned warnings — review with:"
log_warn " $NAGIOS_HOME/bin/nagios -v $NAGIOS_HOME/etc/nagios.cfg"
fi
}
#########################
### Cleanup ###
#########################
cleanup() {
log_step "Cleaning up build directory..."
rm -rf "$BUILD_DIR"
log_info "Build directory removed"
}
#########################
### Summary ###
#########################
show_summary() {
local ip
ip=$(hostname -I 2>/dev/null | awk '{print $1}')
[[ -z "$ip" ]] && ip="<server-ip>"
echo ""
echo "============================================="
echo " Nagios Core Installation Complete"
echo "============================================="
echo ""
echo " Nagios Core: $NAGIOS_VERSION"
echo " Plugins: $PLUGINS_VERSION"
echo " Web Server: $WEBSERVER"
echo " Install Path: $NAGIOS_HOME"
echo ""
echo " Web Interface: http://${ip}/nagios"
echo " Username: $NAGIOS_ADMIN_USER"
echo ""
if [[ "$INSTALL_NRPE" == "true" ]]; then
echo " NRPE: $NRPE_VERSION (installed)"
fi
echo ""
echo " Config dir: $NAGIOS_HOME/etc/"
echo " Validate: $NAGIOS_HOME/bin/nagios -v $NAGIOS_HOME/etc/nagios.cfg"
echo " Service: systemctl status nagios"
echo ""
echo "============================================="
}
#########################
### Main ###
#########################
main() {
parse_args "$@"
check_root
detect_os
prompt_password
install_dependencies
create_nagios_user
compile_nagios
compile_plugins
configure_webserver
install_nrpe
setup_systemd
validate_config
cleanup
show_summary
}
main "$@"