Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/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 route get 8.8.8.8 | awk -F 'FS' 'BEGIN {FS=" "; ORS="|"} {print $7;exit}')
- 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 "Precisa ser root. Saindo"
- exit 0
- 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"
- 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"
- fi
- # for a in $(awk -F":" '{print $6}' < /etc/passwd | sort -u); do
- # if [[ -f $a/.netrc || -f $a/.rhosts ]]; then
- # chmod 600 "$a"/.netrc "$a"/.rhosts &> /dev/null
- # echo "[x] Arquivos .netrc e/ou .rhosts corrigidos dos usuarios: $a"
- # fi
- # done
- 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: $a"
- 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"
- 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
- cat < "$SERVICOS" | while IFS= read -r line; do
- update-rc.d "$line" disable
- echo "[x] Servicos desativados: $line"
- done
- elif [[ "$(grep -Eiq 'centos|oracle|fedora|redhat' /etc/*release | grep -Eiq '5|6')" ]]; then
- echo "RH5/RH6"
- local line
- cat < "$SERVICOS" | while IFS= read -r line; do
- chkconfig "$line" off
- echo "[x] Servicos desativados: $line"
- done
- else
- echo "RH7"
- local line
- cat < "$SERVICOS" | while IFS= read -r line; do
- systemctl disable "$line"
- echo "[x] Servicos desativados: $line"
- done
- fi
- }
- suid_unnecessary ()
- {
- echo "Vulnerabilidade: suid em arquivos desnecessarios"
- local line
- cat < "$SUID_ARQUIVOS" | while IFS= read -r line; do
- if [[ -f "$line" ]]; then
- chmod -s "$line"
- echo "[x] Arquivos que foram removidos o suid: $line"
- fi
- done
- }
- files_other_unnecessary ()
- {
- echo "Vulnerabilidade: escrita para grupo em arquivos desnecessarios"
- local line
- cat < "$ESCRITA_ARQUIVOS" | 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
- }
- ntp_not_working ()
- {
- # Aplicar p/ DEBIAN LIKE
- echo "Vulnerabilidade: ntp: ausencia de sincronia data/hora"
- if [[ "$(grep -Eiq 'centos|oracle|fedora|redhat' /etc/*release | grep -Eiq '5|6')" ]]; then
- echo "RH5/RH6"
- chkconfig ntpd on
- ntpstat
- if ! ntpstat; then
- ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
- echo "[x] Servico iniciado"
- elif ntpstat; then
- echo "[x] Servico esta funcionando"
- fi
- else
- echo "RH7"
- systemctl enable ntpd
- ntpstat
- if ! ntpstat; then
- ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
- 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
- log_exist
- system_ctrlaltdel
- dns_spoofing
- 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
- nfs_fstab
- audit_files_dir
- logrotate_create
- nfs_shares
- trust_files
- file_at_allow
- banners_motd
- sudoers_syslog
- pam_su
- profile_tmout
- ftp_valid_user
- dns_version_perm
- 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
- # services_unnecessary
- # suid_unnecessary
- # files_other_unnecessary
- # ntp_not_working
- else
- echo "Hostname: ${HOST} - Sistema: ${SISTEMA} - IPs: ${IP} - Data: $(date +%d/%m/%Y-%T)"
- echo "Sistema nao suportado"
- exit
- fi
- }
- main >> "$LOG" 2>&1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement