Initialer Import der Synology Scripts
This commit is contained in:
Executable
+251
@@ -0,0 +1,251 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
# Zielpfad für das Full-Chain-Zertifikat
|
||||
FULLCHAIN_CERT="/tmp/fullchain.crt"
|
||||
HOST_FQDN=$(hostname -f)
|
||||
HOST_NORMAL=$(hostname -s)
|
||||
DOMAIN=$(hostname -d)
|
||||
|
||||
# Name der Zertifikatsdateien
|
||||
ROOT_CERT="CERT_HEIMLAN_RootCA.crt"
|
||||
SUBCA_CERT="CERT_HEIMLAN_SubCA.crt"
|
||||
SERVER_CERT="CERT_${HOST_FQDN}.crt"
|
||||
SERVER_KEY="KEY_${HOST_FQDN}.pem"
|
||||
TMP=""
|
||||
KEY=""
|
||||
KEY_DIR=""
|
||||
LDAP_PASS="P@SSW0RD"
|
||||
# LDAP-Serverinformationen für mehrere Domänen (LDAPS)
|
||||
LDAP_SERVERS=(
|
||||
"HEIM.LAN|ldaps://dc.heim.lan|dc=heim,dc=lan|CN=Administrator,CN=Users,DC=heim,DC=lan|${LDAP_PASS}"
|
||||
"IOT.HEIM.LAN|ldaps://ipa.iot.heim.lan|dc=domain2,dc=com|uid=admin,cn=users,cn=accounts,dc=iot,dc=heim,dc=lan|${LDAP_PASS}"
|
||||
)
|
||||
# Funktion zum Kopieren der Zertifikate in die richtigen Pfade je nach Derivat und Typ
|
||||
copy_certificates() {
|
||||
echo "Kopieren der Zertifikate in die richtigen Pfade..."
|
||||
|
||||
# Betriebssystem erkennen
|
||||
if grep -q -i "ubuntu\|debian" /etc/os-release; then
|
||||
distro="Debian"
|
||||
elif grep -q -i "centos\|rhel\|red hat" /etc/os-release; then
|
||||
distro="CentOS"w
|
||||
else
|
||||
echo "Nicht unterstütztes Betriebssystem."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case $distro in
|
||||
Debian)
|
||||
SSL_DIR="/etc/nginx/ssl"
|
||||
TMP="/usr/local/share/ca-certificates"
|
||||
KEY="/etc/ssl/private/"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "***************** Eforderlichen Pakete werden installiert..... *********************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
sudo apt update
|
||||
sudo apt install -y nginx openldap-clients
|
||||
sudo apt install -y wget gnupg2 ca-certificates lsb-release
|
||||
sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev
|
||||
sudo apt install -y git
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "***************** Zusaetzlichen Pakete von GIT werden heruntergeladen...... *********************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
cd /usr/local/src
|
||||
sudo wget http://nginx.org/download/nginx-1.20.2.tar.gz
|
||||
sudo tar -zxvf nginx-1.20.2.tar.gz
|
||||
sudo git clone https://github.com/kvspb/nginx-auth-ldap.git
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "***************** Zusaetzlichen Pakete von GIT wird installiert...... *+++++********************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
sudo yum install -y epel-release
|
||||
sudo yum groupinstall -y "Development Tools"
|
||||
sudo yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
|
||||
sudo yum install -y git
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "***************** Sie sind auf einen Debian \ Ubuntu System...... ******************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
;;
|
||||
CentOS)
|
||||
SSL_DIR="/etc/nginx/ssl"
|
||||
TMP="/etc/pki/ca-trust/source/anchors/"
|
||||
KEY="/etc/pki/tls/private/"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "***************** Eforderlichen Pakete werden installiert..... *********************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
sudo yum install -y epel-release
|
||||
sudo yum install -y nginx openldap-clients openldap-servers
|
||||
sudo yum install -y epel-release
|
||||
sudo yum groupinstall -y "Development Tools"
|
||||
sudo yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
|
||||
sudo yum install -y git
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "***************** Zusaetzlichen Pakete von GIT werden heruntergeladen...... *********************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
cd /usr/local/src
|
||||
sudo wget http://nginx.org/download/nginx-1.20.2.tar.gz
|
||||
sudo tar -zxvf nginx-1.20.2.tar.gz
|
||||
sudo git clone https://github.com/kvspb/nginx-auth-ldap.git
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "***************** Zusaetzlichen Pakete von GIT wird installiert...... *+++++********************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
cd nginx-1.20.2
|
||||
sudo ./configure --add-module=/usr/local/src/nginx-auth-ldap
|
||||
sudo make
|
||||
sudo make install
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "***************** Sie sind auf einen Red Hat \ CentOS System...... *****************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
;;
|
||||
*)
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "***************** Sie fuehren dieses SCRIPT auf ein nicht dafür Ausgelegen System aus..... *****************"
|
||||
echo "***************** Bitte wenden Sie Sich an einen System Administrator..... *********************************"
|
||||
echo "***************** Dieses Script ird jetzt beendet..... *****************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
echo "*************************************************************************************************************"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Verzeichnisse erstellen, falls nicht vorhanden
|
||||
mkdir -p $SSL_DIR
|
||||
|
||||
# Zertifikate kopieren
|
||||
cp "$TMP/$ROOT_CERT" "$SSL_DIR/$ROOT_CERT"
|
||||
cp "$TMP/$SUBCA_CERT" "$SSL_DIR/$SUBCA_CERT"
|
||||
cp "$TMP/${SERVER_CERT}" "$SSL_DIR/${SERVER_CERT}"
|
||||
cp "$KEY/$SERVER_KEY}" "$SSL_DIR/${SERVER_KEY}"
|
||||
|
||||
echo "Zertifikate wurden nach $SSL_DIR kopiert."
|
||||
}
|
||||
|
||||
# Funktion zur Erstellung der LDAP-Serverkonfiguration
|
||||
create_ldap_config() {
|
||||
echo "Erstellen der LDAP-Konfigurationsdatei..."
|
||||
|
||||
LDAP_CONF="/etc/nginx/conf.d/ldap.conf"
|
||||
sudo tee $LDAP_CONF > /dev/null <<EOL
|
||||
# LDAP-Server-Konfiguration für mehrere Domänen
|
||||
EOL
|
||||
|
||||
for entry in "${LDAP_SERVERS[@]}"; do
|
||||
IFS='|' read -r -a server_info <<< "$entry"
|
||||
domain="${server_info[0]}"
|
||||
url="${server_info[1]}"
|
||||
base_dn="${server_info[2]}"
|
||||
bind_dn="${server_info[3]}"
|
||||
bind_password="${server_info[4]}"
|
||||
|
||||
cat <<EOL | sudo tee -a $LDAP_CONF
|
||||
ldap_server $domain {
|
||||
url $url/$base_dn?uid?sub?(objectClass=person);
|
||||
binddn "$bind_dn";
|
||||
binddn_passwd "$bind_password";
|
||||
group_attribute uniquemember;
|
||||
group_attribute_is_dn on;
|
||||
require valid_user;
|
||||
require valid_ssl;
|
||||
ssl_check_cert on;
|
||||
ssl_check_cert_cn on;
|
||||
ssl_cert $SSL_DIR/$ROOT_CERT;
|
||||
ssl_trusted_cert $SSL_DIR/$ROOT_CERT;
|
||||
}
|
||||
EOL
|
||||
done
|
||||
|
||||
echo "LDAP-Konfigurationsdatei wurde erstellt."
|
||||
}
|
||||
|
||||
# Funktion zur Installation und Konfiguration von Nginx
|
||||
install_configure_nginx() {
|
||||
echo "Installation und Konfiguration von Nginx..."
|
||||
|
||||
# Nginx-Konfigurationsdatei erstellen
|
||||
NGINX_CONF="/etc/nginx/conf.d/file_server.conf"
|
||||
sudo tee $NGINX_CONF > /dev/null <<EOL
|
||||
server {
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
|
||||
# Redirect to HTTPS
|
||||
location / {
|
||||
return 301 https://\$host\$request_uri;
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
server_name localhost;
|
||||
|
||||
ssl_certificate $SSL_DIR/$SERVER_CERT;
|
||||
ssl_certificate_key $SSL_DIR/$SERVER_KEY;
|
||||
ssl_trusted_certificate $SSL_DIR/$SUBCA_CERT;
|
||||
|
||||
root /usr/share/nginx/html;
|
||||
autoindex on;
|
||||
autoindex_exact_size off;
|
||||
autoindex_localtime on;
|
||||
|
||||
EOL
|
||||
|
||||
for entry in "${LDAP_SERVERS[@]}"; do
|
||||
IFS='|' read -r -a server_info <<< "$entry"
|
||||
domain="${server_info[0]}"
|
||||
|
||||
cat <<EOL | sudo tee -a $NGINX_CONF
|
||||
location /$domain/ {
|
||||
auth_ldap "Restricted $domain";
|
||||
auth_ldap_servers $domain;
|
||||
try_files \$uri \$uri/ =404;
|
||||
}
|
||||
|
||||
EOL
|
||||
done
|
||||
|
||||
cat <<EOL | sudo tee -a $NGINX_CONF
|
||||
}
|
||||
EOL
|
||||
|
||||
# Nginx-Konfiguration testen und neu starten
|
||||
sudo nginx -t && sudo systemctl restart nginx
|
||||
|
||||
echo "Nginx wurde erfolgreich installiert und konfiguriert."
|
||||
}
|
||||
|
||||
# Funktion zum Setzen der richtigen Berechtigungen
|
||||
set_permissions() {
|
||||
echo "Setzen der richtigen Berechtigungen für das SSL-Verzeichnis..."
|
||||
|
||||
sudo chown -R root:root $SSL_DIR
|
||||
sudo chmod -R 700 $SSL_DIR
|
||||
|
||||
echo "Berechtigungen wurden gesetzt."
|
||||
}
|
||||
|
||||
# Hauptskript
|
||||
main() {
|
||||
copy_certificates
|
||||
create_ldap_config
|
||||
install_configure_nginx
|
||||
#set_permissions
|
||||
echo "Setup abgeschlossen. Zugriff auf den Dateiserver unter https://localhost"
|
||||
}
|
||||
|
||||
main
|
||||
Reference in New Issue
Block a user