Skip to content

Instantly share code, notes, and snippets.

@wendelhp
Last active January 18, 2017 18:26
Show Gist options
  • Save wendelhp/d5edd11e8ab60f0a5426f97cf96f23b9 to your computer and use it in GitHub Desktop.
Save wendelhp/d5edd11e8ab60f0a5426f97cf96f23b9 to your computer and use it in GitHub Desktop.

Revisions

  1. wendelhp revised this gist Jan 18, 2017. 1 changed file with 23 additions and 13 deletions.
    36 changes: 23 additions & 13 deletions CL_PROTEUS_LNX.sh
    Original file line number Diff line number Diff line change
    @@ -673,25 +673,35 @@ files_other_unnecessary ()

    ntp_not_working ()
    {
    # Aplicar p/ DEBIAN LIKE
    # VALIDAR DEBIAN
    echo "Vulnerabilidade: ntp: ausencia de sincronia data/hora"

    if grep -Eiq 'centos|oracle|fedora|redhat' /etc/*release | grep -Eiq '5|6'; then
    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 ntpd on
    chkconfig --level 235 ntpd on
    ntpstat
    if ! ntpstat; then
    ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
    service ntpd restart
    echo "[x] Servico iniciado"
    elif ntpstat; then
    echo "[x] Servico esta funcionando"
    fi
    else
    echo "RH7"
    systemctl enable ntpd
    systemctl enable ntpd.service
    ntpstat
    if ! ntpstat; then
    ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
    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
    nfs_fstab
    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
    dns_version_perm
    # 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
    # services_unnecessary
    # suid_unnecessary
    # files_other_unnecessary
    # ntp_not_working

    else

  2. wendelhp revised this gist Jan 17, 2017. 1 changed file with 59 additions and 60 deletions.
    119 changes: 59 additions & 60 deletions CL_PROTEUS_LNX.sh
    Original file line number Diff line number Diff line change
    @@ -22,7 +22,7 @@
    # Variaveis
    HOST=$(uname -n)
    SISTEMA=$(uname -s)
    IP=$(ip route get 8.8.8.8 | awk -F 'FS' 'BEGIN {FS=" "; ORS="|"} {print $7;exit}')
    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 "Precisa ser root. Saindo"
    exit 0
    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"
    (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"
    (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"
    (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"
    (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"
    (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"
    (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"
    (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"
    (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"
    (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"
    (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"
    (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
    if [[ -f "$a" ]]; then
    chmod 640 "$a"
    echo "[x] Arquivos corrigidos para 640: $a"
    elif [[ -d $a ]]; then
    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
    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"
    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"
    echo "[x] Arquivo /etc/hosts.equiv corrigido"
    else
    echo "[x] Arquivo /etc/hosts.equiv nao existe"
    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"
    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
    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
    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
    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"
    (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"
    (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
    if grep -Eiq 'debian|buntu|mint' /etc/*release; then
    echo "Debian/*buntu"
    local line
    cat < "$SERVICOS" | while IFS= read -r line; do
    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
    done < "$SERVICOS"
    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
    while IFS= read -r line; do
    chkconfig "$line" off
    echo "[x] Servicos desativados: $line"
    done
    done < "$SERVICOS"
    else
    echo "RH7"
    local line
    cat < "$SERVICOS" | while IFS= read -r line; do
    while IFS= read -r line; do
    systemctl disable "$line"
    echo "[x] Servicos desativados: $line"
    done
    done < "$SERVICOS"
    fi
    }

    @@ -651,33 +650,33 @@ suid_unnecessary ()
    echo "Vulnerabilidade: suid em arquivos desnecessarios"

    local line
    cat < "$SUID_ARQUIVOS" | while IFS= read -r line; do
    while IFS= read -r line; do
    if [[ -f "$line" ]]; then
    chmod -s "$line"
    echo "[x] Arquivos que foram removidos o suid: $line"
    fi
    done
    done < "$SUID_ARQUIVOS"
    }

    files_other_unnecessary ()
    {
    echo "Vulnerabilidade: escrita para grupo em arquivos desnecessarios"

    local line
    cat < "$ESCRITA_ARQUIVOS" | while IFS= read -r line; do
    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
    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
    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
    log_exist
    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"
    exit
    return 1

    fi

    }

    log_exist
    main >> "$LOG" 2>&1
  3. wendelhp revised this gist Jan 17, 2017. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions CL_PROTEUS_LNX.sh
    Original 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" 2>&1
    must_root
    log_exist
    system_ctrlaltdel
    dns_spoofing
    @@ -763,4 +763,4 @@ main ()

    }

    main
    main >> "$LOG" 2>&1
  4. wendelhp created this gist Jan 17, 2017.
    766 changes: 766 additions & 0 deletions CL_PROTEUS_LNX.sh
    Original 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