Best commit ever
This commit is contained in:
148
harden
148
harden
@@ -78,9 +78,11 @@ function install_packages {
|
||||
sudo apt install -y "$@" # Install the packages passed as arguments
|
||||
;;
|
||||
"dnf") # If the package manager is dnf
|
||||
sudo dnf upgrade -y # Update the package list
|
||||
sudo dnf install -y "$@" # Install the packages passed as arguments
|
||||
;;
|
||||
"zypper") # If the package manager is zypper
|
||||
sudo zypper update -y # Update the package list
|
||||
sudo zypper install -y "$@" # Install the packages passed as arguments
|
||||
;;
|
||||
*)
|
||||
@@ -96,7 +98,7 @@ function install_packages {
|
||||
# and store the ones that are indeed absent in another local array.
|
||||
# Then it will install the packages that are missing by invoking the install_packages function.
|
||||
function check_dependencies {
|
||||
local dependencies=(curl git sudo vim ssh whiptail) # Declare dependencies as a local array
|
||||
local dependencies=(curl git sudo vim ssh docker docker-compose wget) # Declare dependencies as a local array
|
||||
#> see what to do with name differences between distros if any <#
|
||||
local missing_dependencies=() # Declare missing_dependencies as a local array
|
||||
for dependency in "${dependencies[@]}"; do # Loop through the dependencies array
|
||||
@@ -107,76 +109,6 @@ function check_dependencies {
|
||||
[[ ${#missing_dependencies[@]} -ne 0 ]] && install_packages "${missing_dependencies[@]}"
|
||||
}
|
||||
|
||||
# The main function will call the check_dependencies function and exit if it fails.
|
||||
# It will also output a message to the user to let them know that the script has finished.
|
||||
function main {
|
||||
check_dependencies || exit 1 # Check dependencies and exit if it fails
|
||||
printf "%s" "Script finished" # Output message to the user
|
||||
}
|
||||
|
||||
# The am_i_root function will check if the user is root and exit if they are not.
|
||||
function am_i_root {
|
||||
if [[ $EUID -ne 0 ]]; then # Check if the user is root
|
||||
printf "%s" "Please run as root" # Output message to the user
|
||||
exit 1 # Exit with error code 1
|
||||
fi
|
||||
}
|
||||
|
||||
# The getArgs function will get the arguments passed to the script and store them in an array.
|
||||
# It will also check if the arguments are valid and exit if they are not.
|
||||
function getArgs {
|
||||
local args=() # Declare args as a local array
|
||||
while [[ $# -gt 0 ]]; do # Loop through the arguments
|
||||
case "$*" in # Use case to check for the arguments
|
||||
--help | -h) # If the argument is --help or -h
|
||||
printf "%s" "Usage: $SCRIPT_NAME [OPTION]..."
|
||||
;;
|
||||
--create-user | -cu) # If the argument is --create-user or -cu
|
||||
args+=("$1") # Add the argument to the args array
|
||||
shift # Shift the arguments
|
||||
case "$*" in
|
||||
--username=* | -u=*) # If the argument is --username=* or -u=*
|
||||
args+=("$1") # Add the argument to the args array
|
||||
shift # Shift the arguments
|
||||
;;
|
||||
--password=* | -p=*) # If the argument is --password=* or -p=*
|
||||
args+=("$1") # Add the argument to the args array
|
||||
shift # Shift the arguments
|
||||
;;
|
||||
*)
|
||||
printf "%s" "Invalid argument: $1"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
create_user "${args[@]}" # Call the create_user function with the args array as arguments
|
||||
;;
|
||||
--harden-ssh | -hs) # If the argument is --harden-ssh or -hs
|
||||
args+=("$1") # Add the argument to the args array
|
||||
shift # Shift the arguments
|
||||
harden_ssh "${args[@]}" # Call the harden_ssh function with the args array as arguments
|
||||
;;
|
||||
esac
|
||||
done
|
||||
printf "%s" "${args[@]}" # Output the args array
|
||||
}
|
||||
|
||||
# The createUser function will create a new user with the username and password passed as arguments.
|
||||
function createUser {
|
||||
# Declare username as a local variable and assign it the first argument passed to the function
|
||||
local username="$1"
|
||||
# Declare password as a local variable and assign it the second argument passed to the function
|
||||
local password="$2"
|
||||
# Check if the user already exists and exit if they do
|
||||
if id -u "$username" &> /dev/null; then
|
||||
printf "%s" "User already exists"
|
||||
exit 1
|
||||
fi
|
||||
# Create the user and add them to the sudo group
|
||||
useradd -m -G sudo "$username"
|
||||
# Set the user's password using printf to avoid the password being echoed to the terminal
|
||||
printf "%s" "$username:$password" | chpasswd
|
||||
}
|
||||
|
||||
# Global array of the service names to be restarted
|
||||
services=()
|
||||
|
||||
@@ -217,11 +149,81 @@ function hardenSSH {
|
||||
printf "%s" "File sshd_config not found or not readable"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
# The main function will call the check_dependencies function and exit if it fails.
|
||||
# It will also output a message to the user to let them know that the script has finished.
|
||||
function main {
|
||||
check_dependencies || exit 1 # Check dependencies and exit if it fails
|
||||
harden_ssh || exit 1 # Harden ssh and exit if it fails
|
||||
printf "%s" "Script finished" # Output message to the user
|
||||
}
|
||||
|
||||
# # The am_i_root function will check if the user is root and exit if they are not.
|
||||
# function am_i_root {
|
||||
# if [[ $EUID -ne 0 ]]; then # Check if the user is root
|
||||
# printf "%s" "Please run as root" # Output message to the user
|
||||
# exit 1 # Exit with error code 1
|
||||
# fi
|
||||
# }
|
||||
#
|
||||
# # The getArgs function will get the arguments passed to the script and store them in an array.
|
||||
# # It will also check if the arguments are valid and exit if they are not.
|
||||
# function getArgs {
|
||||
# local args=() # Declare args as a local array
|
||||
# while [[ $# -gt 0 ]]; do # Loop through the arguments
|
||||
# case "$*" in # Use case to check for the arguments
|
||||
# --help | -h) # If the argument is --help or -h
|
||||
# printf "%s" "Usage: $SCRIPT_NAME [OPTION]..."
|
||||
# ;;
|
||||
# --create-user | -cu) # If the argument is --create-user or -cu
|
||||
# args+=("$1") # Add the argument to the args array
|
||||
# shift # Shift the arguments
|
||||
# case "$*" in
|
||||
# --username=* | -u=*) # If the argument is --username=* or -u=*
|
||||
# args+=("$1") # Add the argument to the args array
|
||||
# shift # Shift the arguments
|
||||
# ;;
|
||||
# --password=* | -p=*) # If the argument is --password=* or -p=*
|
||||
# args+=("$1") # Add the argument to the args array
|
||||
# shift # Shift the arguments
|
||||
# ;;
|
||||
# *)
|
||||
# printf "%s" "Invalid argument: $1"
|
||||
# exit 1
|
||||
# ;;
|
||||
# esac
|
||||
# create_user "${args[@]}" # Call the create_user function with the args array as arguments
|
||||
# ;;
|
||||
# --harden-ssh | -hs) # If the argument is --harden-ssh or -hs
|
||||
# args+=("$1") # Add the argument to the args array
|
||||
# shift # Shift the arguments
|
||||
# harden_ssh "${args[@]}" # Call the harden_ssh function with the args array as arguments
|
||||
# ;;
|
||||
# esac
|
||||
# done
|
||||
# printf "%s" "${args[@]}" # Output the args array
|
||||
# }
|
||||
#
|
||||
# # The createUser function will create a new user with the username and password passed as arguments.
|
||||
# function createUser {
|
||||
# # Declare username as a local variable and assign it the first argument passed to the function
|
||||
# local username="$1"
|
||||
# # Declare password as a local variable and assign it the second argument passed to the function
|
||||
# local password="$2"
|
||||
# # Check if the user already exists and exit if they do
|
||||
# if id -u "$username" &> /dev/null; then
|
||||
# printf "%s" "User already exists"
|
||||
# exit 1
|
||||
# fi
|
||||
# # Create the user and add them to the sudo group
|
||||
# useradd -m -G sudo "$username"
|
||||
# # Set the user's password using printf to avoid the password being echoed to the terminal
|
||||
# printf "%s" "$username:$password" | chpasswd
|
||||
# }
|
||||
|
||||
# Call the main function
|
||||
main
|
||||
am_i_root
|
||||
# am_i_root
|
||||
|
||||
exit 0 # The right and proper way to exit a script
|
||||
|
||||
@@ -54,10 +54,10 @@ parser = argparse.ArgumentParser(
|
||||
prog='secdep.py',
|
||||
description='Manage cloud instances',
|
||||
)
|
||||
parser.add_argument('-l', '--list', help='List all instances', action='store_true')
|
||||
parser.add_argument('-l', '--list', help='List all instances or with -P PROVIDER list a provider\'s instances', action='store_true')
|
||||
parser.add_argument('-v', '--values', help='Change credential values', action='store_true')
|
||||
parser.add_argument('-P', '--provider', help='Cloud provider', choices=['gce', 'azure', 'aws'])
|
||||
parser.add_argument('-a', '--action', help='Action to perform on a single or all instances. Valid options are delete[all] start[all] stop[all] reboot[all]', choices=action_choices, metavar='ACTION')
|
||||
parser.add_argument('-a', '--action', help='Action to perform on a single provider with -P PROVIDER or all instances. Valid options are delete[all] start[all] stop[all] reboot[all]', choices=action_choices, metavar='ACTION')
|
||||
parser.add_argument('-c', '--create', help='Create an instance', action='store_true')
|
||||
parser.add_argument('-dep', '--deploy', help='Docker images to deploy', type=str, nargs='*', default=None, required=False)
|
||||
parser.add_argument('-I', '--listimages', help='List images', action='store_true')
|
||||
@@ -67,7 +67,7 @@ parser.add_argument('-i', '--image', help='Image to use')
|
||||
parser.add_argument('-s', '--size', help='Size of instance')
|
||||
parser.add_argument('-n', '--name', help='Name of instance')
|
||||
parser.add_argument('-g', '--region', help='Region to use')
|
||||
parser.add_argument('-y', '--yes', help='Do not ask for confirmation', action='store_true')
|
||||
parser.add_argument('-y', '--yes', help='Do not ask for confirmation during creation', action='store_true')
|
||||
parser.add_argument('-p', '--print', help='Also print node, image, location or size', action='store_true')
|
||||
parser.add_argument('-ssh', '--ssh', help='Connect to an instance using ssh', action='store_true')
|
||||
args = parser.parse_args()
|
||||
|
||||
Reference in New Issue
Block a user