-
-
Save dinhoabreu/42cbb9758dc8d87e4f2407dac1d62c45 to your computer and use it in GitHub Desktop.
Bash - Applying Proteus baseline
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment