Last active
          January 18, 2017 18:26 
        
      - 
      
- 
        Save wendelhp/d5edd11e8ab60f0a5426f97cf96f23b9 to your computer and use it in GitHub Desktop. 
Revisions
- 
        wendelhp revised this gist Jan 18, 2017 . 1 changed file with 23 additions and 13 deletions.There are no files selected for viewingThis file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -673,25 +673,35 @@ files_other_unnecessary () 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" @@ -709,6 +719,7 @@ main () must_root system_ctrlaltdel dns_spoofing dns_version_perm sysctl_interfaces_spoofing sysctl_icmp_accept sysctl_forward_ipv4 @@ -717,10 +728,10 @@ main () 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 @@ -729,7 +740,10 @@ main () pam_su profile_tmout ftp_valid_user # services_unnecessary # suid_unnecessary # files_other_unnecessary # ntp_not_working sshd_rhosts sshd_version sshd_startups @@ -746,10 +760,6 @@ main () sendmail_help sendmail_restrict sendmail_greeting else 
- 
        wendelhp revised this gist Jan 17, 2017 . 1 changed file with 59 additions and 60 deletions.There are no files selected for viewingThis file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -22,7 +22,7 @@ # 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" @@ -36,8 +36,8 @@ SERV_AUTORIZADOS="127.0.0.1(rw,sync) 127.0.0.1(ro)" must_root () { if [[ $(id -u) != 0 ]]; then echo "[x] Precisa ser root..." exit 1 fi } @@ -57,14 +57,14 @@ system_ctrlaltdel () 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 @@ -90,8 +90,8 @@ sysctl_interfaces_spoofing () 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 @@ -107,8 +107,8 @@ sysctl_icmp_accept () 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 @@ -124,8 +124,8 @@ sysctl_forward_ipv4 () 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 @@ -141,8 +141,8 @@ sysctl_forward_ipv6 () 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 @@ -158,8 +158,8 @@ sysctl_redirect_allowed () 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 @@ -175,8 +175,8 @@ sysctl_bogus_error () 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 @@ -192,8 +192,8 @@ sysctl_reply_router () 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 @@ -209,8 +209,8 @@ sysctl_log_martians () 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 @@ -226,8 +226,8 @@ sysctl_randomize_swap () 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 @@ -250,10 +250,10 @@ 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 @@ -265,7 +265,7 @@ 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 @@ -278,7 +278,7 @@ nfs_shares () 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 @@ -291,21 +291,18 @@ trust_files () 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 } @@ -326,15 +323,17 @@ 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 } @@ -393,7 +392,7 @@ dns_version_perm () 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 @@ -526,14 +525,14 @@ postfix_validate_email () 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 @@ -622,27 +621,27 @@ 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 } @@ -651,33 +650,33 @@ 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 () { # 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 @@ -708,7 +707,6 @@ main () echo "Inicio correcao de vulnerabilidades" echo "Hostname: ${HOST} - Sistema: ${SISTEMA} - IPs: ${IP} - Data: $(date +%d/%m/%Y-%T)" must_root system_ctrlaltdel dns_spoofing sysctl_interfaces_spoofing @@ -757,10 +755,11 @@ main () 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 
- 
        wendelhp revised this gist Jan 17, 2017 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewingThis file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -707,7 +707,7 @@ main () 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 @@ -763,4 +763,4 @@ main () } main >> "$LOG" 2>&1 
- 
        wendelhp created this gist Jan 17, 2017 .There are no files selected for viewingThis file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,766 @@ #!/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" 2>&1 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