Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- #Author: Samir Ahmed
- #Date: 23.8.2014
- #Purpose: To harden the systems according to the ISO requirements
- ############users and ssh key names#############
- admin_list="admin1 admin2 admin3 admin4 admin5 admin6" #add the admins names to the list
- j=1
- for i in $admin_list
- do
- sysadmin[$j]=$i #this should be an admin name
- j=`expr $j + 1`
- done
- ############users and ssh key names#############
- #############putty keys########################
- putty_key1="${sysadmin[1]}_public_key"
- putty_key2="${sysadmin[2]}_public_key"
- putty_key3="${sysadmin[3]}_public_key"
- putty_key4="${sysadmin[4]}_public_key"
- putty_key5="${sysadmin[5]}_public_key"
- putty_key6="${sysadmin[6]}_public_key"
- #############system keys########################
- #######system puplic keys######
- linux_puplic_key1="${sysadmin[1]}_sys_public_key"
- linux_puplic_key2="${sysadmin[2]}_sys_public_key"
- linux_puplic_key3="${sysadmin[3]}_sys_public_key"
- linux_puplic_key4="${sysadmin[4]}_sys_public_key"
- linux_puplic_key5="${sysadmin[5]}_sys_public_key"
- linux_puplic_key6="${sysadmin[6]}_sys_public_key"
- #######system private keys######
- linux_private_key1="${sysadmin[1]}_sys_private_key"
- linux_private_key2="${sysadmin[2]}_sys_private_key"
- linux_private_key3="${sysadmin[3]}_sys_private_key"
- linux_private_key4="${sysadmin[4]}_sys_private_key"
- linux_private_key5="${sysadmin[5]}_sys_private_key"
- linux_private_key6="${sysadmin[6]}_sys_private_key"
- ############checking the existence of public keys#########
- if [ ! -f ${sysadmin[1]}_public_key ]
- then
- echo "putty ${sysadmin[1]}_public_key is not found"
- exit 155
- fi
- if [ ! -f ${sysadmin[2]}_public_key ]
- then
- echo "putty ${sysadmin[2]}_public_key is not found"
- exit 155
- fi
- if [ ! -f ${sysadmin[3]}_public_key ]
- then
- echo "putty ${sysadmin[3]}_public_key is not found"
- exit 155
- fi
- if [ ! -f ${sysadmin[4]}_public_key ]
- then
- echo "putty ${sysadmin[4]}_public_key is not found"
- exit 155
- fi
- if [ ! -f ${sysadmin[5]}_public_key ]
- then
- echo "putty ${sysadmin[5]}_public_key is not found"
- exit 155
- fi
- if [ ! -f ${sysadmin[6]}_public_key ]
- then
- echo "putty ${sysdmin6}_public_key is not found"
- exit 155
- fi
- ############checking the existence of public keys#########
- if [ ! -f $linux_puplic_key1 ]
- then
- echo "linux $linux_puplic_key1 is not found"
- exit 155
- fi
- if [ ! -f $linux_puplic_key2 ]
- then
- echo "linux $linux_puplic_key2 is not found"
- exit 155
- fi
- if [ ! -f $linux_puplic_key3 ]
- then
- echo "linux $linux_puplic_key3 is not found"
- exit 155
- fi
- if [ ! -f $linux_puplic_key4 ]
- then
- echo "linux $linux_puplic_key4 is not found"
- exit 155
- fi
- if [ ! -f $linux_puplic_key5 ]
- then
- echo "linux $linux_puplic_key5 is not found"
- exit 155
- fi
- if [ ! -f $linux_puplic_key6 ]
- then
- echo "linux $linux_puplic_key6 is not found"
- exit 155
- fi
- ############checking the existence of private keys#########
- if [ ! -f $linux_private_key1 ]
- then
- echo "linux $linux_private_key1 is not found"
- exit 155
- fi
- if [ ! -f $linux_private_key2 ]
- then
- echo "linux $linux_private_key2 is not found"
- exit 155
- fi
- if [ ! -f $linux_private_key3 ]
- then
- echo "linux $linux_private_key3 is not found"
- exit 155
- fi
- if [ ! -f $linux_private_key4 ]
- then
- echo "linux $linux_private_key4 is not found"
- exit 155
- fi
- if [ ! -f $linux_private_key5 ]
- then
- echo "linux $linux_private_key5 is not found"
- exit 155
- fi
- if [ ! -f $linux_private_key6 ]
- then
- echo "linux $linux_private_key6 is not found"
- exit 155
- fi
- >harden.log
- echo "hardening $HOSTNAME .." >> harden.log
- Groupadmin="sysadmin"
- grep -w $Groupadmin /etc/group 1>&2 > /dev/null
- if [ $? -ne 0 ]
- then
- groupadd $Groupadmin
- echo -e "done group creating \t\t\t\t\t\t\t\t\t\t\t `date`" >> harden.log
- fi
- grep -w ${sysadmin[4]} /etc/passwd 1>&2 > /dev/null
- if [ $? -ne 0 ]
- then
- useradd -g $Groupadmin -m ${sysadmin[4]}
- echo -e "done ${sysadmin[4]} creating \t\t\t\t\t\t\t\t\t\t\t `date`" >> harden.log
- else
- Groupvar=`grep -w ${Groupadmin} /etc/group | awk -F':' '{print $3}'`
- Uservar=`grep -w ${sysadmin[4]} /etc/passwd | awk -F':' '{print $4}'`
- if [ $Groupvar -ne $Uservar ]
- then
- usermod -g $Groupadmin ${sysadmin[4]}
- echo -e "user group changed \t\t\t\t\t\t\t\t\t\t\t `date`" >> harden.log
- fi
- fi
- grep -w ${sysadmin[1]} /etc/passwd 1>&2 > /dev/null
- if [ $? -ne 0 ]
- then
- useradd -g $Groupadmin -m ${sysadmin[1]}
- echo -e "done ${sysadmin[1]} creating \t\t\t\t\t\t\t\t\t\t\t `date`" >> harden.log
- else
- Groupvar=`grep -w ${Groupadmin} /etc/group | awk -F':' '{print $3}'`
- Uservar=`grep -w ${sysadmin[1]} /etc/passwd | awk -F':' '{print $4}'`
- if [ $Groupvar -ne $Uservar ]
- then
- usermod -g $Groupadmin ${sysadmin[1]}
- echo -e "user group changed \t\t\t\t\t\t\t\t\t\t\t `date`" >> harden.log
- fi
- fi
- grep -w ${sysadmin[2]} /etc/passwd 1>&2 > /dev/null
- if [ $? -ne 0 ]
- then
- useradd -g $Groupadmin -m ${sysadmin[2]}
- echo -e "done ${sysadmin[2]} creating \t\t\t\t\t\t\t\t\t\t\t `date`" >> harden.log
- else
- Groupvar=`grep -w ${Groupadmin} /etc/group | awk -F':' '{print $3}'`
- Uservar=`grep -w ${sysadmin[2]} /etc/passwd | awk -F':' '{print $4}'`
- if [ $Groupvar -ne $Uservar ]
- then
- usermod -g $Groupadmin ${sysadmin[2]}
- echo -e "user group changed \t\t\t\t\t\t\t\t\t\t\t `date`" >> harden.log
- fi
- fi
- grep -w ${sysadmin[6]} /etc/passwd 1>&2 > /dev/null
- if [ $? -ne 0 ]
- then
- useradd -g $Groupadmin -m ${sysadmin[6]}
- echo -e "done ${sysadmin[6]} creating \t\t\t\t\t\t\t\t\t\t\t `date`" >> harden.log
- else
- Groupvar=`grep -w ${Groupadmin} /etc/group | awk -F':' '{print $3}'`
- Uservar=`grep -w ${sysadmin[6]} /etc/passwd | awk -F':' '{print $4}'`
- if [ $Groupvar -ne $Uservar ]
- then
- usermod -g $Groupadmin ${sysadmin[6]}
- echo -e "user group changed \t\t\t\t\t\t\t\t\t\t\t `date`" >> harden.log
- fi
- fi
- grep -w ${sysadmin[3]} /etc/passwd 1>&2 > /dev/null
- if [ $? -ne 0 ]
- then
- useradd -g $Groupadmin -m ${sysadmin[3]}
- echo -e "done ${sysadmin[3]} creating \t\t\t\t\t\t\t\t\t\t\t `date`" >> harden.log
- Groupvar=`grep -w ${Groupadmin} /etc/group | awk -F':' '{print $3}'`
- Uservar=`grep -w ${sysadmin[3]} /etc/passwd | awk -F':' '{print $4}'`
- if [ $Groupvar -ne $Uservar ]
- then
- usermod -g $Groupadmin ${sysadmin[3]}
- echo -e "user group changed \t\t\t\t\t\t\t\t\t\t\t `date`" >> harden.log
- fi
- fi
- grep -w ${sysadmin[5]} /etc/passwd 1>&2 > /dev/null
- if [ $? -ne 0 ]
- then
- useradd -g $Groupadmin -m ${sysadmin[5]}
- echo -e "done ${sysadmin[5]} creating \t\t\t\t\t\t\t\t\t\t\t `date`" >> harden.log
- fi
- echo "############starting of new conf#############" >> /etc/login.defs_backup`date +%F`
- cp /etc/login.defs /etc/login.defs_backup`date +%S`
- echo "############starting of new conf#############" >> /etc/pam.d/system-auth_backup_`date +%F`
- cp /etc/pam.d/system-auth /etc/pam.d/system-auth_backup_`date +%s`
- sed -ie 's/^PASS_MAX_DAYS.*$/PASS_MAX_DAYS 90/;s/^PASS_MIN_DAYS.*$/PASS_MIN_DAYS 1/;s/^PASS_MIN_LEN.*$/PASS_MIN_LEN 8/' /etc/login.defs
- sed -ie 's/^password requisite.*$/password requisite pam_cracklib.so try_first_pass type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 retry=5/;s/^password sufficient.*$/password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5/' /etc/pam.d/system-auth
- ####keys deployment
- for i in $admin_list
- do
- mkdir -p /home/${i}/.ssh
- touch /home/${i}/.ssh/authorized_keys
- cat ${i}_public_key >> /home/${i}/.ssh/authorized_keys
- echo -e "${i} public key copied \t\t\t\t\t\t\t\t\t\t `date`" >> harden.log
- chown -R ${i}.${Groupadmin} /home/${i}/.ssh
- done
- #####systems keys addition
- for i in $admin_list
- do
- cp -f ${i}_sys_private_key /home/${i}/.ssh/id_rsa
- PubKey_Content="`cat ${i}_sys_public_key`"
- grep "$PubKey_Content" /home/${i}/.ssh/authorized_keys 2>&1 > /dev/null
- if [ $? -ne 0 ]
- then
- cat ${i}_sys_public_key >> /home/${i}/.ssh/authorized_keys
- fi
- chown -R ${i}.${Groupadmin} /home/${i}/.ssh
- chmod 600 /home/${i}/.ssh/id_rsa
- echo -e "${i} Linux keys copied \t\t\t\t\t\t\t\t\t `date`" >> harden.log
- done
- echo "############starting of new conf#############" >> /etc/ssh/sshd_config_backup_`date +%S`
- cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup_`date +%S`
- sed -ie 's/^PermitRootLogin yes.*$/PermitRootLogin no/' /etc/ssh/sshd_config
- grep "^PermitRootLogin no" /etc/ssh/sshd_config 1>&2 > /dev/null
- if [ $? -eq 0 ]
- then
- echo -e "Root login set to No \t\t\t\t\t\t\t\t\t\t\t `date`" >> harden.log
- else
- echo "PermitRootLogin no" >> /etc/ssh/sshd_config
- fi
- ######services#####
- service iptables stop
- chkconfig iptables off
- sed -ie 's/enabled/disabled/' /etc/selinux/config
- if [ -f /etc/init.d/vmware-tools ]
- then
- /etc/init.d/vmware-tools start
- fi
- cp -f banner /etc/banner
- grep '^Banner' /etc/ssh/sshd_config 1>&2 >/dev/null
- if [ $? -eq 0 ]
- then
- sed -ie 's/^Banner.*$/Banner \/etc\/banner/' /etc/ssh/sshd_config
- else
- sed -ie 's/^#Banner.*$/Banner \/etc\/banner/' /etc/ssh/sshd_config
- fi
- service sshd restart
- #############sudo################
- echo "############starting of new conf#############" >> /etc/ssh/sshd_config_backup_`date +%S`
- cp /etc/sudoers /etc/sudoers_`date +%S`
- cp -f sudoers /etc/sudoers >> harden.log
- mkdir -p /UNIXscripts
- chown -R ${sysadmin[1]}.${Groupadmin} /UNIXscripts
- chmod 770 /UNIXscripts
- echo "$HOSTNAME is hardened .." >> harden.log
Advertisement
Add Comment
Please, Sign In to add comment