Skip to content

Instantly share code, notes, and snippets.

@wendelhp
Last active January 18, 2017 18:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save wendelhp/d5edd11e8ab60f0a5426f97cf96f23b9 to your computer and use it in GitHub Desktop.
Save wendelhp/d5edd11e8ab60f0a5426f97cf96f23b9 to your computer and use it in GitHub Desktop.
Bash - Applying Proteus baseline
#!/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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment