MySQL remote root

Publicado por Allan Barcelos (última atualização em 08/06/2015)

[ Hits: 2.692 ]

Homepage: https://barcelos.dev

Download 6222.mysql-remot-root.tar.gz




Este script ajuda  no incremento da segurança na conexão com usuario root remoto em servidores MySQL.

Sua função:
Limita o acesso root ao servidor MySQL ao IP do administrador mesmo que esse IP seja dinâmico para tal utiliza como apoio o serviço No-IP ou similiar.

São dois arquivos:

- mysql-remote-root - deve ser copiado para o diretório /etc/init.d/
- mysql-remote-root-daemon - deve ser copiado para o diretório /usr/local/bin/

  



Esconder código-fonte

Arquivo 1: mysql-remote-root

#!/bin/bash
#
#
#
########################################################################################################################
#
# Escrito por: Allan R. A. Barcelos (Uberaba - Minas Gerais).
# E-mail: allan@barcelos.tk
# Debian GNU/Linux 6.0.1
#
# NOME
#   mysql-remote-root-daemon.sh
#
# DESCRIÇÃO
#   Atualiza IP remoto para acesso ao MySQL utilizando usuário ROOT.
#
# VERSÃO
#   0.1
#
# NOTA
#   Informações sobre a execução poderão ser encontradas em  /var/log/mysql/mysql-remote-ip-root.log.
#
#     Criando inicializadores para MySQL remote ROOT
#     update-rc.d  mysql-remote-root defaults
#
# MODIFICADO_POR    (DD/MM/YYYY)    Comentário
#
# allan.barcelos    01/06/2014  Primeira versão.
#
########################################################################################################################



typeset -x PID=$(pgrep mysql-remote)
LOCK=/tmp/mysql-remote-root-daemon.lock

do_start() {
        if [ -f /tmp/mysql-remote-root-daemon.lock ]
        then
                /usr/local/bin/mysql-remote-root-daemon &
                sleep 0.3
        else
                /usr/local/bin/mysql-remote-root-daemon &
                sleep 0.3
                typeset -x PID=$(pgrep mysql-remote
                echo "Iniciando o mysql-remote-root-daemon: Processo: $PID"
        fi
}

do_stop() {
        kill -15 $PID 2>/dev/null &
        rm $LOCK 2>/dev/null &
        echo "Parando o mysql-remote-root-daemon"
}

do_restart() {
        if [ -f /tmp/mysql-remote-root-daemon.lock ]
        then
                kill -15 $PID 2>/dev/null &
                echo "Reiniciando o mysql-remote-root-daemon: Processo: $PID"
                sleep 1
                /usr/local/bin/mysql-remote-root-daemon &
        else
                do_start
        fi
}

case "$1" in
        start)
                do_start
                ;;
        stop)
                do_stop
                ;;
        restart)
                do_restart
                ;;
        status)
                if [ -f /tmp/mysql-remote-root-daemon.lock ]
                then
                        echo "o mysql-remote-root-daemon está rodando com sucesso"
                else
                        echo "o mysql-remote-root-daemon está parado"
                fi
                ;;
        *)
                echo "*Modo de uso: /etc/init.d/mysql-remote-root (start|stop|restart|status)"
                ;;
esac








Arquivo 2: mysql-remote-root-daemon


#!/bin/bash
#
#
#
########################################################################################################################
#
# Escrito por: Allan R. A. Barcelos (Uberaba - Minas Gerais).
# E-mail: allan@barcelos.tk
# Debian GNU/Linux 6.0.1
#
# NOME
#   mysql-remote-root-daemon.sh
#
# DESCRIÇÃO
#   Atualiza IP remoto para acesso ao MySQL utilizando usuário ROOT.
#
# VERSÃO
#   0.1
#
# NOTA
#   Informações sobre a execução poderão ser encontradas em  /var/log/mysql/mysql-remote-ip-root.log.
#
#
# MODIFICADO_POR    (DD/MM/YYYY)    Comentário
#
# allan.barcelos    01/06/2014  Primeira versão.
#
########################################################################################################################

LOCK=/tmp/mysql-remote-root-daemon.lock
LOG=/var/log/mysql/mysql-remote-ip-root.log
YES=/tmp/on
MYSQL=/usr/bin/mysql


URL_NOIP="INFORME AQUI A URL NO-IP QUE ESTA SETADA NO COMPUTADOR QUE ESTA AUTORIZADO A ACESSAR COMO ROOT O SERVIDOR"
SENHA="SENHA DO USUARIO ROOT MYSQL"
DATETIME=$(/bin/date +"%d-%m-%Y %H:%M:%S")


#control_c () {
#        echo -e "\nacabou o daemon"
#        rm $YES 2>/dev/null
#        rm $LOCK 2>/dev/null
#        exit 0
#}

#trap control_c INT HUP TERM

echo "Iniciado o mysql-remote-root-daemon `date`" >> $LOG 2>/dev/null

if [ ! -f $LOCK ]
then
        touch $LOCK

        while true
        do
                sleep 30
                if [ -f $YES ]
                then
                        #echo "o arquivo $YES foi encontrado: `date`" >> $LOG
                        rm $YES 2>/dev/null
                        rm $LOCK 2>/dev/null
                        echo "Finalizado o mysql-remote-root-daemon `date`" >> $LOG 2>/dev/null
                        break
                fi




        /bin/ps -C mysqld > /dev/null #Verifica se o DAEMON MySQL esta ativo, caso contrario pode gerar erros.
        if [ $? = 0 ]
        then
            ##
            IP=$(ping -w 1 -c 1 $URL_NOIP | grep PING | awk -F: '{print $1}' | awk -F "(" '{ print $2 }' | awk -F ")" '{ print $1}')
            IP_COUNT=$($MYSQL -B -u root -p$SENHA --disable-column-names -e "SELECT COUNT(*) FROM mysql.user WHERE User = 'root' AND Host = '$IP'" mysql)


            if [ $IP_COUNT == 0 ] ; then

                OLD_IP=$($MYSQL -B -u root -p$SENHA --disable-column-names -e "SELECT  Host FROM mysql.user WHERE User = 'root'\
                AND Host REGEXP '^(((1[0-9]|[1-9]?)[0-9]|2([0-4][0-9]|5[0-5]))\.){3}((1[0-9]|[1-9]?)[0-9]|2([0-4][0-9]|5[0-5]))$' AND Host NOT LIKE '127%'" mysql)

                if [ $OLD_IP != "" ] 2> /dev/null ; then

                    $MYSQL -u root -p$SENHA -e "DROP USER 'root'@'$OLD_IP'";

                fi

                $MYSQL -u root -p$SENHA -e "CREATE USER 'root'@'$IP' IDENTIFIED BY '$SENHA'";
                $MYSQL -u root -p$SENHA -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'$IP' WITH GRANT OPTION";
                echo "$DATETIME Novo IP Remoto ROOT MySQL $IP" >> $LOG 2>/dev/null

            fi
            ##
        fi

        #echo "$DATETIME Sem alteracao" >>  $LOG

        done
else
        echo "O mysql-remote-root-daemon já está em execução"
        exit 0
fi

Scripts recomendados

iptables, sem frescuras!

Backup de Repositórios Subversion

Cálculo de Horas

Árvore de Natal do Julio Neves

Backup com rsync


  

Comentários
[1] Comentário enviado por fabio em 08/06/2015 - 14:14h

Legal, bem pensado! Parabéns.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts