Skip to content
Snippets Groups Projects
Commit f68030eb authored by Tomáš Plesník's avatar Tomáš Plesník
Browse files

pridano generovani konfiguracnich souboru z sablon; pridan parametr -s pro...

pridano generovani konfiguracnich souboru z sablon; pridan parametr -s pro vyber adresare pro symlinky na bin adresar serveru; uprava helpu; pridano mazani tmp souboru pri zjistovani zavislych perl modulu ve funkci err; zmena nazvu server_dir na basedir
parent e03cfbcd
No related branches found
No related tags found
No related merge requests found
...@@ -14,15 +14,16 @@ VERSION="2.2" ...@@ -14,15 +14,16 @@ VERSION="2.2"
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
usage() usage()
{ {
echo "Usage: ${0##*/} -d <directory> -k <ssl_key_file> -c <ssl_cert_file> -a <ssl_ca_file> [-hV]" echo "Usage: ${0##*/} -d <directory> -k <ssl_key_file> -c <ssl_cert_file> -a <ssl_ca_file> [-s <directory>] [-hV]"
echo "-d <directory> installation directory" echo "-d <directory> installation directory of Warden server"
echo "-k <ssl_key_file> path to SSL certificate key file" echo "-k <ssl_key_file> path to SSL certificate key file"
echo "-c <ssl_cert_file> path to SSL certificate file" echo "-c <ssl_cert_file> path to SSL certificate file"
echo "-a <ssl_ca_file> path to CA certificate file" echo "-a <ssl_ca_file> path to CA certificate file"
echo "-s <directory> directory for symlinks to Warden server control scripts (optional)"
echo "-h print this help" echo "-h print this help"
echo "-V print script version number and exit" echo "-V print script version number and exit"
echo echo
echo "Example: # ./${0##*/} -d /opt -k /etc/ssl/private/server.key -c /etc/ssl/certs/server.pem -a /etc/ssl/certs/tcs-ca-bundle.pem" echo "Example: # ./${0##*/} -d /opt -k /etc/ssl/private/server.key -c /etc/ssl/certs/server.pem -a /etc/ssl/certs/tcs-ca-bundle.pem -s /usr/local/bin"
echo echo
echo "For more information about installation process, see README file (section Installation)." echo "For more information about installation process, see README file (section Installation)."
echo echo
...@@ -41,7 +42,7 @@ err() ...@@ -41,7 +42,7 @@ err()
{ {
echo "FAILED!" echo "FAILED!"
cat "$err" cat "$err"
rm -f "$err" rm -f "$err" "$modules_file"
echo echo
echo "Installation of $package_version package FAILED!!!" echo "Installation of $package_version package FAILED!!!"
exit 1 exit 1
...@@ -52,9 +53,9 @@ errClean() ...@@ -52,9 +53,9 @@ errClean()
{ {
echo "FAILED!" echo "FAILED!"
echo " -> Uninstalling server package ... OK" echo " -> Uninstalling server package ... OK"
rm -rf "$server_dir/"* > /dev/null 2>&1 rm -rf "$basedir/"* > /dev/null 2>&1 # BUG: smaze vse na co ma USER pravo
cat "$err" cat "$err"
rm -f "$err" rm -f "$err" "$modules_file"
echo echo
echo "Installation of $package_version package FAILED!!!" echo "Installation of $package_version package FAILED!!!"
exit 1 exit 1
...@@ -63,7 +64,7 @@ errClean() ...@@ -63,7 +64,7 @@ errClean()
paramsChck() paramsChck()
{ {
if [ -z "$server_dir" ]; then if [ -z "$basedir" ]; then
echo "Parameter -d <directory> is not set!" echo "Parameter -d <directory> is not set!"
exit 1 exit 1
fi fi
...@@ -88,13 +89,17 @@ paramsChck() ...@@ -88,13 +89,17 @@ paramsChck()
oldPackageChck() oldPackageChck()
{ {
echo -n "Checking previous Warden server installation ... "
old_package_version_file="${etc}/package_version" old_package_version_file="${etc}/package_version"
if [ -f "$old_package_version_file" ]; then if [ -f "$old_package_version_file" ]; then
old_package_version=$(< "$old_package_version_file") || err echo "FAILED!"
echo
old_package_version=$(< "$old_package_version_file")
echo "Sorry, but $old_package_version package is installed!" echo "Sorry, but $old_package_version package is installed!"
echo "For update of warden server package please use update.sh" echo "For update of warden server package please use update.sh"
exit 1 exit 1
fi fi
echo "OK"
} }
...@@ -105,6 +110,7 @@ perlChck() ...@@ -105,6 +110,7 @@ perlChck()
echo "OK" echo "OK"
else else
echo "FAILED!" echo "FAILED!"
echo
echo "Error: Perl interpreter is not installed!" echo "Error: Perl interpreter is not installed!"
exit 1 exit 1
fi fi
...@@ -124,111 +130,31 @@ modulesChck() ...@@ -124,111 +130,31 @@ modulesChck()
createWardenDir() createWardenDir()
{ {
echo -n "Creating Warden server directory ... " echo -n "Creating Warden server directory ... "
test -d "$server_dir" && test -w "$server_dir" || mkdir -p "$server_dir" 2> "$err" || err test -d "$basedir" && test -w "$basedir" || mkdir -p "$basedir" 2> "$err" || err
cp -R "${dirname}/warden-server/"* "$server_dir" 2> "$err" && echo "OK" || errClean cp -R "${dirname}/warden-server/"* "$basedir" 2> "$err" && echo "OK" || errClean
cp "${dirname}/uninstall.sh" "$server_dir" rm -f "${etc}/${server_conf_tmpl##*/}" "${etc}/${apache_conf_tmpl##*/}"
cp "${dirname}/uninstall.sh" "$basedir"
} }
makeServerConf()
{
echo -n "Creating server configuration file ... "
echo "#
# warden-server.conf - configuration file for Warden server
#
#-------------------------------------------------------------------------------
# BASEDIR - base directory of Warden server
#-------------------------------------------------------------------------------
\$BASEDIR = \"${server_dir}\";
#-------------------------------------------------------------------------------
# SYSLOG - enable/disable syslog logging
#-------------------------------------------------------------------------------
\$SYSLOG = 1;
#-------------------------------------------------------------------------------
# SYSLOG_VERBOSE - enable/disable logging in verbose mode (stack info added)
#-------------------------------------------------------------------------------
\$SYSLOG_VERBOSE = 1;
#-------------------------------------------------------------------------------
# SYSLOG_FACILITY - syslog facility
#-------------------------------------------------------------------------------
\$SYSLOG_FACILITY = \"local7\";
#-------------------------------------------------------------------------------
# DB_NAME - MySQL database name of Warden server
#-------------------------------------------------------------------------------
\$DB_NAME = \"warden\";
#-------------------------------------------------------------------------------
# DB_USER - MySQL database user of Warden server
#-------------------------------------------------------------------------------
\$DB_USER = \"warden\";
#-------------------------------------------------------------------------------
# DB_PASS - MySQL database password of Warden server
#-------------------------------------------------------------------------------
\$DB_PASS = \"\";
#-------------------------------------------------------------------------------
# DB_HOST - MySQL database host
#-------------------------------------------------------------------------------
\$DB_HOST = \"localhost\";
#------------------------------------------------------------------------------- doTemplate()
# MAX_EVENTS_LIMIT - server limit of maximum number of events that can be
# delivered to one client in one batch
#-------------------------------------------------------------------------------
\$MAX_EVENTS_LIMIT = 1000000;
#-------------------------------------------------------------------------------
# VALID_STRINGS - validation hash containing allowed event attributes
#-------------------------------------------------------------------------------
%VALID_STRINGS = (
\"type\" => [\"portscan\", \"bruteforce\", \"probe\", \"spam\", \"phishing\", \"botnet_c_c\", \"dos\", \"malware\", \"copyright\", \"webattack\", \"test\", \"other\", \"_any_\"],
\"source_type\" => [\"IP\", \"URL\", \"Reply-To:\"]
);" > "$server_conf" 2> "$err" && echo "OK" || errClean
}
makeApacheConf()
{ {
echo -n "Creating Apache configuration file ... " vars=""
echo "# while (($#)); do
# vars="'$1'=>'$2', $vars"
# warden-apache.conf - configuration file for the Apache server shift 2
# done
perl -e "my %repl=($vars); foreach my \$l (<>) {\$l =~ s/\$_/\$repl{\$_}/g for keys %repl; print \$l}"
SSLEngine on
SSLVerifyDepth 3
SSLVerifyClient require
SSLOptions +StdEnvVars +ExportCertData
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile $cert_file
SSLCertificateKeyFile $key_file
SSLCACertificateFile $ca_file
PerlOptions +Parent
PerlSwitches -I $lib
<Location /Warden>
SetHandler perl-script
PerlHandler Warden::ApacheDispatch
SSLOptions +StdEnvVars
</Location>" > "$apache_conf" 2> "$err" && echo "OK" || errClean
} }
createSymlinks() createSymlinks()
{ {
echo "Creating symbolic links to local bin path..." echo "Creating symbolic links to $symbin ..."
for file in "${bin}/"* for file in "${bin}/"*
do do
echo "- making symlink: ${local_bin}/${file##*/} -> $file" echo "- making symlink: ${symbin}/${file##*/} -> $file"
ln -s "$file" "${local_bin}/${file##*/}" ln -s "$file" "${symbin}/${file##*/}"
done done
} }
...@@ -237,40 +163,46 @@ createSymlinks() ...@@ -237,40 +163,46 @@ createSymlinks()
# MAIN # MAIN
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# read input # read input
while getopts "d:k:c:a:Vh" options; do while getopts "d:k:c:a:s:Vh" options; do
case "$options" in case "$options" in
d ) server_dir="$OPTARG";; d ) basedir="$OPTARG";;
k ) key_file="$OPTARG";; k ) key_file="$OPTARG";;
c ) cert_file="$OPTARG";; c ) cert_file="$OPTARG";;
a ) ca_file="$OPTARG";; a ) ca_file="$OPTARG";;
s ) symbin="$OPTARG";;
h ) usage;; h ) usage;;
V ) version;; V ) version;;
* ) usage;; * ) usage;;
esac esac
done done
# remove last char (slash) from name of directories
[[ $basedir == */ ]] && basedir="${basedir%?}"
[[ $symbin == */ ]] && symbin="${symbin%?}"
# params test # params test
paramsChck paramsChck
# set variables # set variables
err="/tmp/warden-err"
modules_file="/tmp/warden-modules.txt"
dirname=${0%/*} dirname=${0%/*}
package_version=$(< "${dirname}/warden-server/etc/package_version") || err bin="${basedir}/bin"
bin="${server_dir}/bin" lib="${basedir}/lib"
local_bin="/usr/local/bin" doc="${basedir}/doc"
etc="${server_dir}/etc" etc="${basedir}/etc"
server_conf="${etc}/warden-server.conf" server_conf="${etc}/warden-server.conf"
apache_conf="${etc}/warden-apache.conf" apache_conf="${etc}/warden-apache.conf"
lib="${server_dir}/lib" server_conf_tmpl="${dirname}/warden-server/etc/warden-server.conf.tmpl"
doc="${server_dir}/doc" apache_conf_tmpl="${dirname}/warden-server/etc/warden-apache.conf.tmpl"
err="/tmp/warden-err" package_version=$(< "${dirname}/warden-server/etc/package_version")
modules_file="/tmp/warden-modules.txt"
echo
echo "----------------------- Checking for Dependencies -----------------------"
# check if warden-server is installed # check if warden-server is installed
oldPackageChck oldPackageChck
echo
echo "------------------------- Dependencies check-in -------------------------"
# Perl interpreter test # Perl interpreter test
perlChck perlChck
...@@ -284,25 +216,37 @@ echo "------------------------- Installation process --------------------------" ...@@ -284,25 +216,37 @@ echo "------------------------- Installation process --------------------------"
createWardenDir createWardenDir
# create server configuration file # create server configuration file
makeServerConf echo -n "Creating server configuration file ... "
doTemplate \
_BASEDIR_ "$basedir" \
< $server_conf_tmpl \
> $server_conf && echo "OK" || errClean
# create Apache configuration file # create Apache configuration file
makeApacheConf echo -n "Creating Apache configuration file ... "
doTemplate \
# crate symlinks from warden server bin directory to /usr/local/bin _CERT_FILE_ "$cert_file" \
createSymlinks _KEY_FILE_ "$key_file" \
_CA_FILE_ "$ca_file" \
_LIB_ "$lib" \
< $apache_conf_tmpl \
> $apache_conf && echo "OK" || errClean
# crate symlinks from warden server bin to user path if -s option is set
[[ ! -z $symbin ]] && [[ -d $symbin ]] && [[ -w $symbin ]] && createSymlinks
echo echo
echo "Please check configuration files:" echo "Please check configuration files:"
echo " - $server_conf" echo " - $server_conf"
echo " - $apache_conf" echo " - $apache_conf"
echo echo
echo "Warden server directory: $server_dir" echo "Warden server directory: $basedir"
echo echo
echo "Please follow post-installation steps in ${doc}/INSTALL!" echo "Please follow post-installation steps in ${doc}/INSTALL!"
echo echo
echo "Installation of $package_version package was SUCCESSFUL!!!" echo "Installation of $package_version package was SUCCESSFUL!!!"
echo echo
# cleanup section # cleanup section
rm -f "$err" "$modules_file" rm -f "$err" "$modules_file"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment