#!/usr/bin/env bash # ################################################################## # Script para aplicar baseline da Proteus # # 12 Jan 2016 - Wendel Amix - v1.0 # ################################################################## # # Historico / Atualizacoes # # Data: 17/Jan/2017 - Wendel # # - Troquei o bash para o env bash, respeitando path unico de cada # servidor. Sendo assim removi o path completo dos comandos abaixo # - Adicionei novas vulnerabilidades baseadas no arquivo recebido # - Agora todas as vulnerabilidades sao feitas via funcao, facili- # tando o gerenciamento entre elas - tks Edison # - Adicionei aspas duplas em todas as variaveis para evitar # problemas com variaveis nulas por solicitacao do Railson # ################################################################## # Variaveis HOST=$(uname -n) SISTEMA=$(uname -s) IP=$(ip a | grep inet | grep -Ev 'inet6|127.0' | awk -F 'FS' 'BEGIN {FS=" "; ORS="|"} {print $2}') HOJE=$(date +"%Y%m%d") LOG=/tmp/CL_${HOST}_${HOJE}.log DNS="127.0.0.1" DNS2="127.0.0.1" SERVICOS=/amb/global/proteus/servicos.txt SUID_ARQUIVOS=/amb/global/proteus/suid_arquivos.txt ESCRITA_ARQUIVOS=/amb/global/proteus/escrita_arquivos.txt SERV_AUTORIZADOS="127.0.0.1(rw,sync) 127.0.0.1(ro)" # Verificacoes must_root () { if [[ $(id -u) != 0 ]]; then echo "[x] Precisa ser root..." exit 1 fi } log_exist () { if [[ -f "$LOG" ]]; then rm -f "$LOG" fi } # Vulnerabilidades system_ctrlaltdel () { echo "Vulnerabilidade: reiniciar sistema via ctrl alt del" if [[ -f /etc/inittab ]]; then grep -q ctrlaltdel /etc/inittab && sed -i."${HOJE}" '/ctrlaltdel/s/^/#/' /etc/inittab && echo "[x] Aplicada com sucesso /etc/inittab" || (sed -i."${HOJE}" '$a\\n#ctrlaltdel' /etc/inittab && echo "[x] Aplicada com sucesso /etc/inittab") elif [[ -f /etc/init/control-alt-delete.conf ]]; then grep -q control-alt-delete /etc/init/control-alt-delete.conf && sed -i."${HOJE}" '/control-alt-delete/s/^/#/' /etc/init/control-alt-delete.conf && echo "[x] Aplicada com sucesso /etc/init/control-alt-delete.conf" || (sed -i."${HOJE}" '$a\\n#control-alt-delete' /etc/init/control-alt-delete.conf && echo "[x] Aplicada com sucesso /etc/init/control-alt-delete.conf") else echo "[x] Nao aplicada. Arquivo nao encontrado." fi } dns_spoofing () { echo "Vulnerabilidade: dns: spoofing" if [[ -f /etc/resolv.conf ]]; then sed -i."${HOJE}" '/nameserver/s/^/#/;$anameserver '"${DNS}"'\nnameserver '"${DNS2}"'' /etc/resolv.conf echo "[x] Aplicada com sucesso" else echo "[x] Nao aplicada. Arquivo nao encontrado." fi } sysctl_interfaces_spoofing () { echo "Vulnerabilidade: sysctl: interfaces spoofing" if [[ -f /etc/sysctl.conf ]]; then grep -q net.ipv4.conf.all.rp_filter /etc/sysctl.conf && sed -i."${HOJE}" 's/.*net.ipv4.conf.all.rp_filter.*/net.ipv4.conf.all.rp_filter=1/g' /etc/sysctl.conf && echo "[x] Aplicada com sucesso" || (sed -i."${HOJE}" '$a\\nnet.ipv4.conf.all.rp_filter=1' /etc/sysctl.conf && echo "[x] Aplicada com sucesso") else echo "[x] Nao aplicada. Arquivo nao encontrado." fi sysctl -w net.ipv4.conf.all.rp_filter=1 > /dev/null } sysctl_icmp_accept () { echo "Vulnerabilidade: sysctl: icmp accept" if [[ -f /etc/sysctl.conf ]]; then grep -q net.ipv4.icmp_echo_ignore_broadcasts /etc/sysctl.conf && sed -i."${HOJE}" 's/.*net.ipv4.icmp_echo_ignore_broadcasts.*/net.ipv4.icmp_echo_ignore_broadcasts=1/g' /etc/sysctl.conf && echo "[x] Aplicada com sucesso" || (sed -i."${HOJE}" '$a\\nnet.ipv4.icmp_echo_ignore_broadcasts=1' /etc/sysctl.conf && echo "[x] Aplicada com sucesso") else echo "[x] Nao aplicada. Arquivo nao encontrado." fi sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/null } sysctl_forward_ipv4 () { echo "Vulnerabilidade: sysctl: forward ipv4 sendo permitido" if [[ -f /etc/sysctl.conf ]]; then grep -q net.ipv4.conf.all.accept_redirects /etc/sysctl.conf && sed -i."${HOJE}" 's/.*net.ipv4.conf.all.accept_redirects.*/net.ipv4.conf.all.accept_redirects=0/g' /etc/sysctl.conf && echo "[x] Aplicada com sucesso" || (sed -i."${HOJE}" '$a\\nnet.ipv4.conf.all.accept_redirects=0' /etc/sysctl.conf && echo "[x] Aplicada com sucesso") else echo "[x] Nao aplicada. Arquivo nao encontrado." fi sysctl -w net.ipv4.conf.all.accept_redirects=0 > /dev/null } sysctl_forward_ipv6 () { echo "Vulnerabilidade: sysctl: forward ipv6 sendo permitido" if [[ -f /etc/sysctl.conf ]]; then grep -q net.ipv6.conf.all.accept_redirects /etc/sysctl.conf && sed -i."${HOJE}" 's/.*net.ipv6.conf.all.accept_redirects.*/net.ipv6.conf.all.accept_redirects=0/g' /etc/sysctl.conf && echo "[x] Aplicada com sucesso" || (sed -i."${HOJE}" '$a\\nnet.ipv6.conf.all.accept_redirects=0' /etc/sysctl.conf && echo "[x] Aplicada com sucesso") else echo "[x] Nao aplicada. Arquivo nao encontrado." fi sysctl -w net.ipv6.conf.all.accept_redirects=0 > /dev/null } sysctl_redirect_allowed () { echo "Vulnerabilidade: sysctl: redirecionamento de pacotes sendo permitido" if [[ -f /etc/sysctl.conf ]]; then grep -q net.ipv4.conf.all.send_redirects /etc/sysctl.conf && sed -i."${HOJE}" 's/.*net.ipv4.conf.all.send_redirects.*/net.ipv4.conf.all.send_redirects=0/g' /etc/sysctl.conf && echo "[x] Aplicada com sucesso" || (sed -i."${HOJE}" '$a\\nnet.ipv4.conf.all.send_redirects=0' /etc/sysctl.conf && echo "[x] Aplicada com sucesso") else echo "[x] Nao aplicada. Arquivo nao encontrado." fi sysctl -w net.ipv4.conf.all.send_redirects=0 > /dev/null } sysctl_bogus_error () { echo "Vulnerabilidade: sysctl: protecao contra pacotes bogus nao ativada" if [[ -f /etc/sysctl.conf ]]; then grep -q net.ipv4.icmp_ignore_bogus_error_responses /etc/sysctl.conf && sed -i."${HOJE}" 's/.*net.ipv4.icmp_ignore_bogus_error_responses.*/net.ipv4.icmp_ignore_bogus_error_responses=1/g' /etc/sysctl.conf && echo "[x] Aplicada com sucesso" || (sed -i."${HOJE}" '$a\\nnet.ipv4.icmp_ignore_bogus_error_responses=1' /etc/sysctl.conf && echo "[x] Aplicada com sucesso") else echo "[x] Nao aplicada. Arquivo nao encontrado." fi sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1 > /dev/null } sysctl_reply_router () { echo "Vulnerabilidade: sysctl: resposta para anuncio de roteadores" if [[ -f /etc/sysctl.conf ]]; then grep -q net.ipv6.conf.all.accept_ra /etc/sysctl.conf && sed -i."${HOJE}" 's/.*net.ipv6.conf.all.accept_ra.*/net.ipv6.conf.all.accept_ra=0/g' /etc/sysctl.conf && echo "[x] Aplicada com sucesso" || (sed -i."${HOJE}" '$a\\nnet.ipv6.conf.all.accept_ra=0' /etc/sysctl.conf && echo "[x] Aplicada com sucesso") else echo "[x] Nao aplicada. Arquivo nao encontrado." fi sysctl -w net.ipv6.conf.all.accept_ra=0 > /dev/null } sysctl_log_martians () { echo "Vulnerabilidade: sysctl: ausencia de logs pacotes suspeitos" if [[ -f /etc/sysctl.conf ]]; then grep -q net.ipv4.conf.all.log_martians /etc/sysctl.conf && sed -i."${HOJE}" 's/.*net.ipv4.conf.all.log_martians.*/net.ipv4.conf.all.log_martians=1/g' /etc/sysctl.conf && echo "[x] Aplicada com sucesso" || (sed -i."${HOJE}" '$a\\nnet.ipv4.conf.all.log_martians=1' /etc/sysctl.conf && echo "[x] Aplicada com sucesso") else echo "[x] Nao aplicada. Arquivo nao encontrado." fi sysctl -w net.ipv4.conf.all.log_martians=1 > /dev/null } sysctl_randomize_swap () { echo "Vulnerabilidade: sysctl: sistema grava dados em memoria virtual de forma nao aleatoria" if [[ -f /etc/sysctl.conf ]]; then grep -q kernel.randomize_va_space /etc/sysctl.conf && sed -i."${HOJE}" 's/.*kernel.randomize_va_space.*/kernel.randomize_va_space=1/g' /etc/sysctl.conf && echo "[x] Aplicada com sucesso" || (sed -i."${HOJE}" '$a\\nkernel.randomize_va_space=1' /etc/sysctl.conf && echo "[x] Aplicada com sucesso") else echo "[x] Nao aplicada. Arquivo nao encontrado." fi sysctl -w kernel.randomize_va_space=1 > /dev/null } nfs_fstab () { echo "Vulnerabilidade: nfs: shares sem suids" if [[ -f /etc/fstab ]]; then sed -i."${HOJE}" '/nfs/s/defaults/defaults,nosuid/g' /etc/fstab echo "[x] Aplicada com sucesso" fi } audit_files_dir () { echo "Vulnerabilidade: permissoes de arquivos de auditagem" for a in /var/adm/* /var/log/*; do if [[ -f "$a" ]]; then chmod 640 "$a" echo "[x] Arquivos corrigidos para 640: $a" elif [[ -d "$a" ]]; then chmod 750 "$a" echo "[x] Diretorios corrigidos para 750: $a" fi done } logrotate_create () { echo "Vulnerabilidade: logrotate: permissoes arquivos logrotate.d/logrotate.conf" for a in /etc/logrotate.conf /etc/logrotate.d/*; do if [[ -f "$a" ]]; then sed -i."${HOJE}" '/create/s/^/#/;/{/a\ \ \ \ create 0640' "$a" echo "[x] Arquivos corrigidos: $a" fi done } nfs_shares () { echo "Vulnerabilidade: nfs: shares vulneraveis" if [[ -f /etc/exports ]]; then sed -i."${HOJE}" '/repo/s/$/'"${SERV_AUTORIZADOS}"'/g' /etc/exports echo "[x] Aplicada com sucesso caso o compartilhamento repo " else echo "[x] Nao aplicada. Arquivo nao encontrado." fi } trust_files () { # REFAZER echo "Vulnerabilidade: arquivos de confianca com permissoes incorretas" if [[ -f /etc/hosts.equiv ]]; then chmod 600 /etc/hosts.equiv echo "[x] Arquivo /etc/hosts.equiv corrigido" else echo "[x] Arquivo /etc/hosts.equiv nao existe" fi local line awk -F":" '{print $6}' < /etc/passwd | sort -u | while IFS= read -r line; do if [[ -f $line/.netrc || -f $line/.rhosts ]]; then chmod 600 "$line"/.netrc "$line"/.rhosts &> /dev/null echo "[x] Arquivos .netrc e/ou .rhosts corrigidos dos usuarios: $line" else echo "[x] Nao aplicada arquivos nao encontrados" fi done } file_at_allow () { echo "Vulnerabilidade: criacao do arquivo at.allow com usuarios autorizados" if [[ ! -f /etc/at.allow ]]; then touch /etc/at.allow echo "[x] Arquivo /etc/at.allow criado com sucesso" elif [[ -f /etc/at.allow ]]; then echo "[x] Arquivo ja existe." fi } banners_motd () { echo "Vulnerabilidade: banners motd" if grep -Eiq 'debian|buntu|mint' /etc/*release; then chmod -x /etc/update-motd.d/* echo "[x] Nao e baseado em Debian, pulando update-motd.d" fi for a in /etc/motd /etc/issue /etc/issue.net; do if [[ -f "$a" ]]; then echo ""Uso restrito a usuarios autorizados"" | tee -a "$a" > /dev/null echo "[x] Arquivo motd/banners corrigidos: $a" else echo "[x] Arquivo nao encontrado: $a" fi done } sudoers_syslog () { echo "Vulnerabilidade: sudoers: sem syslog" if [[ -f /etc/sudoers ]]; then sed -i."${HOJE}" '$a\\nDefaults syslog=authpriv,syslog_goodpri=info,syslog_badpri=info' /etc/sudoers echo "[x] Aplicada com sucesso" fi } pam_su () { echo "Vulnerabilidade: pam: uso indevido do su" if [[ -f /etc/pam.d/su ]]; then sed -i."${HOJE}" '$a\\nauth required /lib/security/pam_wheel.so group=wheel use_uid' /etc/pam.d/su echo "[x] Aplicada com sucesso" fi } profile_tmout () { echo "Vulnerabilidade: profile: incluir TMOUT no profile" if [[ -f /etc/profile ]]; then sed -i."${HOJE}" '$a\\nTMOUT=900\nexport TMOUT' /etc/profile echo "[x] Aplicada com sucesso" fi } ftp_valid_user () { echo "Vulnerabilidade: ftp: anonimo nao autorizado" if [[ -f /etc/ftpusers ]]; then sed -i."${HOJE}" '/^/d' /etc/ftpusers echo ftp > /etc/ftpusers echo "[x] Aplicada com sucesso" else echo "[x] Nao aplicada. Arquivo nao encontrado." fi } dns_version_perm () { echo "Vulnerabilidade: dns: esconder versao e permissoes de configs incorretas" if [[ -f /amb/local/dns/named.conf ]]; then sed -i."${HOJE}" '/options {/a\ \ \ \ \ \ \ \ version "DNS server";' /amb/local/dns/named.conf chmod 750 /amb/local/dns/*.conf echo "[x] Aplicada com sucesso" elif [[ -f /etc/named.conf ]]; then sed -i."${HOJE}" '/options {/a\ \ \ \ \ \ \ \ version "DNS server";' /etc/named.conf for a in /etc/nscd.conf /etc/rndc.conf /etc/rndc.key /etc/named.conf /etc/bind/*; do if [[ -f "$a" ]]; then chmod 750 "$a" fi done echo "[x] Aplicada com sucesso" else echo "[x] Nao aplicada. Arquivo nao encontrado." fi } sshd_rhosts () { echo "Vulnerabilidade: sshd: desabilitar suporte rhosts sshd" if [[ -f /etc/ssh/sshd_config ]]; then sed -i."${HOJE}" 's/.*IgnoreRhosts.*/IgnoreRhosts yes/g;s/.*RhostsRSAAuthentication no/RhostsRSAAuthentication no/g' /etc/ssh/sshd_config echo "[x] Aplicada com sucesso" fi } sshd_version () { echo "Vulnerabilidade: sshd: habilitar versao 2 sshd" if [[ -f /etc/ssh/sshd_config ]]; then sed -i."${HOJE}" 's/.*Protocol [0-9]/Protocol 2/g' /etc/ssh/sshd_config echo "[x] Aplicada com sucesso" fi } sshd_startups () { echo "Vulnerabilidade: sshd: maximo de sessoes simulnateneas" if [[ -f /etc/ssh/sshd_config ]]; then sed -i."${HOJE}" 's/.*MaxStartups [0-9]/MaxStartups 5/g' /etc/ssh/sshd_config echo "[x] Aplicada com sucesso" fi } sshd_empty_passwords () { echo "Vulnerabilidade: sshd: desabilitar login usuario sem senha" if [[ -f /etc/ssh/sshd_config ]]; then sed -i."${HOJE}" 's/.*PermitEmptyPasswords.*/PermitEmptyPasswords no/g' /etc/ssh/sshd_config echo "[x] Aplicada com sucesso" fi } sshd_keep_alive () { echo "Vulnerabilidade: sshd: desabilitar sessoes inativas" if [[ -f /etc/ssh/sshd_config ]]; then sed -i."${HOJE}" 's/.*TCPKeepAlive.*/TCPKeepAlive yes/g' /etc/ssh/sshd_config echo "[x] Aplicada com sucesso" fi } sshd_privilege_separation () { echo "Vulnerabilidade: sshd: servico com privilegios de super-usuario desnecessarios" if [[ -f /etc/ssh/sshd_config ]]; then sed -i."${HOJE}" 's/.*UsePrivilegeSeparation.*/UsePrivilegeSeparation yes/g' /etc/ssh/sshd_config echo "[x] Aplicada com sucesso" fi } sshd_alive_interval () { echo "Vulnerabilidade: sshd: espera sessoes inativas muito alto" if [[ -f /etc/ssh/sshd_config ]]; then sed -i."${HOJE}" 's/.*ClientAliveInterval.*/ClientAliveInterval 900/g;s/.*ClientAliveCountMax.*/ClientAliveCountMax 0/g' /etc/ssh/sshd_config echo "[x] Aplicada com sucesso" fi } samba_guest () { echo "Vulnerabilidade: samba: ausencia de autenticacao para acesso aos compartilhamentos" if [[ -f /amb/local/samba/smb.conf ]]; then sed -i."${HOJE}" '/global]/a\ \ \ \ \ \ \ \ guest ok = no' /amb/local/samba/smb.conf echo "[x] Aplicada com sucesso arquivo /amb" elif [[ -f /etc/samba/smb.conf ]]; then sed -i."${HOJE}" '/global]/a\ \ \ \ \ \ \ \ guest ok = no' /etc/samba/smb.conf echo "[x] Aplicada com sucesso arquivo /etc" else echo "[x] Nao aplicada. Arquivo nao encontrado." fi } samba_null_pw () { echo "Vulnerabilidade: samba: autenticacao de usuarios com senha nula" if [[ -f /amb/local/samba/smb.conf ]]; then sed -i."${HOJE}" '/global]/a\ \ \ \ \ \ \ \ null Passwords = no' /amb/local/samba/smb.conf echo "[x] Aplicada com sucesso arquivo /amb" elif [[ -f /etc/samba/smb.conf ]]; then sed -i."${HOJE}" '/global]/a\ \ \ \ \ \ \ \ null Passwords = no' /etc/samba/smb.conf echo "[x] Aplicada com sucesso arquivo /etc" else echo "[x] Nao aplicada. Arquivo nao encontrado." fi } samba_encrypt_pw () { echo "Vulnerabilidade: samba: criptografia de senhas desabilitadas" if [[ -f /amb/local/samba/smb.conf ]]; then sed -i."${HOJE}" '/global]/a\ \ \ \ \ \ \ \ encrypt passwords=yes' /amb/local/samba/smb.conf echo "[x] Aplicada com sucesso arquivo /amb" elif [[ -f /etc/samba/smb.conf ]]; then sed -i."${HOJE}" '/global]/a\ \ \ \ \ \ \ \ encrypt passwords=yes' /etc/samba/smb.conf echo "[x] Aplicada com sucesso arquivo /etc" else echo "[x] Nao aplicada. Arquivo nao encontrado." fi } postfix_validate_email () { echo "Vulnerabilidade: postfix: verificacao de validade de email" if [[ -f /amb/local/postfix/main.cf ]]; then grep -q disable_vrfy_command /amb/local/postfix/main.cf && sed -i."${HOJE}" 's/.*disable_vrfy_command.*/disable_vrfy_command = yes/g' /amb/local/postfix/main.cf && echo "[x] Aplicada com sucesso arquivo /amb" || (sed -i."${HOJE}" '$a\\ndisable_vrfy_command = yes' /amb/local/postfix/main.cf && echo "[x] Aplicada com sucesso arquivo /amb") elif [[ -f /etc/postfix/main.cf ]]; then grep -q disable_vrfy_command /etc/postfix/main.cf && sed -i."${HOJE}" 's/.*disable_vrfy_command.*/disable_vrfy_command = yes/g' /etc/postfix/main.cf && echo "[x] Aplicada com sucesso arquivo /etc" || (sed -i."${HOJE}" '$a\\ndisable_vrfy_command = yes' /etc/postfix/main.cf && echo "[x] Aplicada com sucesso arquivo /etc") else echo "[x] Nao aplicada. Arquivo nao encontrado." fi } sendmail_blame_verification () { echo "Vulnerabilidade: sendmail: verificacao de permissao de arquivos desativada" if [[ -f /amb/local/sendmail/sendmail.cf ]]; then sed -i."${HOJE}" 's/.*DontBlameSendmail.*/O DontBlameSendmail=safe/g' /amb/local/sendmail/sendmail.cf echo "[x] Aplicada com sucesso arquivo /amb" elif [[ -f /etc/mail/sendmail.cf ]]; then sed -i."${HOJE}" 's/.*DontBlameSendmail.*/O DontBlameSendmail=safe/g' /etc/mail/sendmail.cf echo "[x] Aplicada com sucesso arquivo /etc" else echo "[x] Nao aplicada. Arquivo nao encontrado." fi } sendmail_view_queue () { echo "Vulnerabilidade: sendmail: visualizacao da fila de emails irrestrita e permissao incorretas do diretorio da fila de emails" if [[ -L /usr/sbin/sendmail ]]; then ls -l /usr/sbin/sendmail | awk -F" " '{print $11}' | xargs chmod 0700 echo "[x] Aplicada com sucesso linksimbolico" elif [[ -f /usr/sbin/sendmail ]]; then chmod 0700 /usr/sbin/sendmail echo "[x] Aplicada com sucesso binario" elif [[ -d /var/spool/mqueue ]]; then chmod 0700 /var/spool/mqueue else echo "[x] Nao aplicada. Arquivo nao encontrado." fi } sendmail_help () { echo "Vulnerabilidade: sendmail: help mostrando infos do sistema" if [[ -f /amb/local/sendmail/sendmail.cf ]]; then sed -i."${HOJE}" 's/.*HelpFile.*/O HelpFile=\/etc\/mail\/empty.txt/g' /amb/local/sendmail/sendmail.cf touch /etc/mail/empty.txt echo "[x] Aplicada com sucesso arquivo /amb" elif [[ -f /etc/mail/sendmail.cf ]]; then sed -i."${HOJE}" 's/.*HelpFile.*/O HelpFile=\/etc\/mail\/empty.txt/g' /etc/mail/sendmail.cf touch /etc/mail/empty.txt echo "[x] Aplicada com sucesso arquivo /etc" else echo "[x] Nao aplicada. Arquivo nao encontrado." fi } sendmail_restrict () { echo "Vulnerabilidade: sendmail: verificacao de validade de email, processamento da fila de emails nao restritiva e visualizacao da fila de emails irrestrita" if [[ -f /amb/local/sendmail/sendmail.cf ]]; then sed -i."${HOJE}" '/PrivacyOptions/s/$/,novrfy,noexpn,restrictqrun,restrictmailq/' /amb/local/sendmail/sendmail.cf echo "[x] Aplicada com sucesso arquivo /amb" elif [[ -f /etc/mail/sendmail.cf ]]; then sed -i."${HOJE}" '/PrivacyOptions/s/$/,novrfy,noexpn,restrictqrun,restrictmailq/' /etc/mail/sendmail.cf echo "[x] Aplicada com sucesso arquivo /etc" else echo "[x] Nao aplicada. Arquivo nao encontrado." fi } sendmail_greeting () { echo "Vulnerabilidade: sendmail: esconder versao" if [[ -f /amb/local/sendmail/sendmail.cf ]]; then sed -i."${HOJE}" 's/.*SmtpGreetingMessage.*/O SmtpGreetingMessage=/g' /amb/local/sendmail/sendmail.cf echo "[x] Aplicada com sucesso arquivo /amb" elif [[ -f /etc/mail/sendmail.cf ]]; then sed -i."${HOJE}" 's/.*SmtpGreetingMessage.*/O SmtpGreetingMessage=/g' /etc/mail/sendmail.cf echo "[x] Aplicada com sucesso arquivo /etc" else echo "[x] Nao aplicada. Arquivo nao encontrado." fi } services_unnecessary () { echo "Vulnerabilidade: servicos desnecessarios" if grep -Eiq 'debian|buntu|mint' /etc/*release; then echo "Debian/*buntu" local line while IFS= read -r line; do update-rc.d "$line" disable echo "[x] Servicos desativados: $line" done < "$SERVICOS" elif grep -Eiq 'centos|oracle|fedora|redhat' /etc/*release | grep -Eiq '5|6'; then echo "RH5/RH6" local line while IFS= read -r line; do chkconfig "$line" off echo "[x] Servicos desativados: $line" done < "$SERVICOS" else echo "RH7" local line while IFS= read -r line; do systemctl disable "$line" echo "[x] Servicos desativados: $line" done < "$SERVICOS" fi } suid_unnecessary () { echo "Vulnerabilidade: suid em arquivos desnecessarios" local line while IFS= read -r line; do if [[ -f "$line" ]]; then chmod -s "$line" echo "[x] Arquivos que foram removidos o suid: $line" fi done < "$SUID_ARQUIVOS" } files_other_unnecessary () { echo "Vulnerabilidade: escrita para grupo em arquivos desnecessarios" local line while IFS= read -r line; do if [[ -f "$line" ]]; then chmod og-w "$line" echo "[x] Arquivos que foram removidos a escrita para grupo e outros: $line" fi done < "$ESCRITA_ARQUIVOS" } ntp_not_working () { # VALIDAR DEBIAN echo "Vulnerabilidade: ntp: ausencia de sincronia data/hora" if grep -Eiq 'debian|buntu|mint' /etc/*release; then echo "Debian/*buntu" update-rc.d ntpd enable ntpstat if ! ntpstat; then service ntpd restart echo "[x] Servico iniciado" elif ntpstat; then echo "[x] Servico esta funcionando" fi elif grep -Eiq 'centos|oracle|fedora|redhat' /etc/*release | grep -Eiq '5|6'; then echo "RH5/RH6" chkconfig --level 235 ntpd on ntpstat if ! ntpstat; then service ntpd restart echo "[x] Servico iniciado" elif ntpstat; then echo "[x] Servico esta funcionando" fi else echo "RH7" systemctl enable ntpd.service ntpstat if ! ntpstat; then systemctl restart ntpd.service echo "[x] Servico iniciado" elif ntpstat; then echo "[x] Servico esta funcionando" fi fi } main () { if [[ $SISTEMA = "Linux" ]]; then echo "Inicio correcao de vulnerabilidades" echo "Hostname: ${HOST} - Sistema: ${SISTEMA} - IPs: ${IP} - Data: $(date +%d/%m/%Y-%T)" must_root system_ctrlaltdel dns_spoofing dns_version_perm sysctl_interfaces_spoofing sysctl_icmp_accept sysctl_forward_ipv4 sysctl_forward_ipv6 sysctl_redirect_allowed sysctl_bogus_error sysctl_reply_router sysctl_log_martians sysctl_randomize_swap audit_files_dir logrotate_create nfs_fstab nfs_shares trust_files file_at_allow banners_motd sudoers_syslog pam_su profile_tmout ftp_valid_user # services_unnecessary # suid_unnecessary # files_other_unnecessary # ntp_not_working sshd_rhosts sshd_version sshd_startups sshd_empty_passwords sshd_keep_alive sshd_privilege_separation sshd_alive_interval # samba_guest samba_null_pw samba_encrypt_pw postfix_validate_email sendmail_blame_verification sendmail_view_queue sendmail_help sendmail_restrict sendmail_greeting else echo "Hostname: ${HOST} - Sistema: ${SISTEMA} - IPs: ${IP} - Data: $(date +%d/%m/%Y-%T)" echo "Sistema nao suportado" return 1 fi } log_exist main >> "$LOG" 2>&1