Este script faz algumas alterações para melhorias no sistema dedicado a segurança .
Nele configuracao a chamada execute e rollback , para executar e voltar backup caso seja necessário
./hardening.sh execute
./harning.sh rollback
O uso deste script é de responsabilidade total de quem estiver executando , sempre tenha certeza do que está rodando em sua máquina.
#!/bin/bash #FAJLINUX Hardening start() { echo $'Executando hardening!' echo "1. Checando alguns pacotes basicos que nao deverao estar no servidor" for package in inetd ypserv tftp-server telnet-server rsh-serve do if ! rpm -qa | grep $package >& /etc/null; then echo "package $package nao esta instalado" else echo "The $package nao esta instalado. Removendo agora." yum erase $package fi done sleep 2 echo " " echo "2. Checking configuracoes do SELINUX" x=`cat /etc/sysconfig/selinux | grep ^SELINUX | head -n 1 | awk -F= '{print $2}'` if [ $x == disabled ] then cp /etc/sysconfig/selinux /etc/sysconfig/selinux.bkp echo "SElinux esta desabilitado" echo "Alterando para permissive" sed -i 's/^SELINUX=disabled/SELINUX=permissive/' /etc/sysconfig/selinux sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/sysconfig/selinux else echo "SElinux está setado para opcao permissive" fi sleep 2 echo " " cp /etc/login.defs /etc/login.defs.bkp echo "3. Alterando paramentos de periodo de troca de senha" sed -i '/^PASS_MAX_DAYS/c\PASS_MAX_DAYS 60' /etc/login.defs sed -i '/^PASS_MIN_DAYS/c\PASS_MIN_DAYS 1' /etc/login.defs sed -i '/^PASS_MIN_LEN/c\PASS_MIN_LEN 8' /etc/login.defs sed -i '/^PASS_WARN_AGE/c\PASS_WARN_AGE 15' /etc/login.defs echo "Mudanca nos arquivos foram feitas /etc/login.defs foram feitas" sleep 2 echo " " echo "4. Verificando contas com senhas vazias:" x=`awk -F: '($2 == "") {print}' /etc/shadow | wc -l` if [ $x -lt 1 ] then echo "Sem contas com senha vazias" else echo "Reverifique suas contas, pois foram encontrados contas sem senha" fi sleep 2 echo "5. Checando se contas Non-Root tem UID setado para 0:" x=`awk -F: '($3 == "0") {print}' /etc/passwd | awk -F: '{print $1}'` if [ $x == root ] then echo "Nao ha conta com o UID 0 fora o ROOT" else echo "***** Revise suas contas , pois existem contas UID 0" fi sleep 2 echo " " echo "6. Voce quer realizar ajustes no SSH ? Tenha certeza que voce tem uma conta sudo (Sim ou Nao) " read resposta if [ $resposta == "Sim" ] then cp /etc/ssh/ssh_config /etc/ssh_config.bkp echo PermitRootLogin no >> /etc/ssh/ssh_config sed -i 's/#AllowTcpForwarding yes/AllowTcpForwarding no/g' /etc/ssh/ssh_config sed -i 's/#X11Forwarding no/X11Forwarding no/g' /etc/ssh/ssh_config sed -i 's/X11Forwarding yes/#X11Forwarding yes/g' /etc/ssh/ssh_config sed -i 's/#StrictModes yes/StrictModes yes/g' /etc/ssh/ssh_config sed -i 's/#IgnoreRhosts yes/IgnoreRhosts yes/g' /etc/ssh/ssh_config sed -i 's/#HostbasedAuthentication no/HostbasedAuthentication no/g' /etc/ssh/ssh_config sed -i 's/#RhostsRSAAuthentication no/RhostsRSAAuthentication no/g' /etc/ssh/ssh_config service sshd restart sleep 2 else echo "Continuando hardening..." fi echo "7. Linux kernel hardening:" cp /etc/sysctl.conf /etc/sysctl.conf.backup echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.conf echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.conf echo "net.ipv4.conf.all.forwarding = 0" >> /etc/sysctl.conf echo "net.ipv4.conf.all.mc_forwarding = 0" >> /etc/sysctl.conf echo "net.ipv4.conf.default.log_martians = 1" >> /etc/sysctl.conf echo "net.ipv4.conf.all.log_martians = 1" >> /etc/sysctl.conf echo "net.ipv4.tcp_max_syn_backlog = 4096" >> /etc/sysctl.conf echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf sleep 2 echo "Alteracoes em /etc/sysctl.conf foram feitas." sysctl -p & sleep 1 echo " " echo "8. desabilitando os usuarios 'lp' e 'game' do arquivo passwd:" sed -i 's/^lp/#lp/' /etc/passwd sed -i 's/^games/#games/' /etc/passwd sed -i 's/^lp/#lp/' /etc/group sed -i 's/^games/#games/' /etc/group echo "Users are disabled" sleep 1 echo " " echo "*****************************************************************************" > /etc/motd echo -e "!!!CUIDADO!!!\n" >> /etc/motd echo " Este sistema é para o uso de apenas pessoal autorizado da empresa e todos os acessos estão sendo monitorados " >> /etc/motd echo "*****************************************************************************" >> /etc/motd cp /etc/issue /etc/issue.net echo "O baner foi alterado." sleep 1 echo "10. Desabilitando o crtl alt del e acertando o init" cp /etc/inittab /etc/inittab.bkp sed -i 's/id:5:initdefault:/id:3:initdefault:/g' /etc/inittab sed -i 's/ca::ctrlaltdel:/#ca::ctrlaltdel:/g' /etc/inittab } rollback() { rm -rf /etc/sysconfig/selinux cp /etc/sysconfig/selinux.bkp /etc/sysconfig/selinux rm -rf /etc/login.defs cp /etc/login.defs.bkp /etc/login.defs rm -rf /etc/ssh/ssh_config cp /etc/ssh/ssh_config.bkp /etc/ssh_config sed -i 's/^lp/lp/' /etc/passwd sed -i 's/^games/games/' /etc/passwd rm -rf /etc/inittab cp /etc/inittab.bkp /etc/inittab } case "$1" in execute) start ;; rollback) stop ;; *) echo $"Use estas opcoes $0 {execute|rollback}" exit 1 esac exit $?