Mostrando las entradas con la etiqueta usuarios. Mostrar todas las entradas
Mostrando las entradas con la etiqueta usuarios. Mostrar todas las entradas

jueves, 20 de agosto de 2015

Crear usuario con minimos privilegios para realizar respaldo de MySQL

Este post es complemento del script para realizar respaldos mediante archivos crontab. Pero se puede utilizar de forma manual para realizar los respaldos.

1. Iniciar mysql y crear usuario

$ sudo mysql -u usuario -p 
mysql> CREATE USER usuario_respaldo@localhost IDENTIFIED BY "MiClave";


2. Asignamos los privilegios

mysql> GRANT SELECT, SHOW VIEW, RELOAD, REPLICATION CLIENT, EVENT, TRIGGER ON *.* TO usuario_respaldo@localhost;

Algunos privilegios no estan disponibles en versiones anteriores de MySQL:
  • EVENT, este privilegio es requerido para crear, modificar, eliminar o ver eventos del EVENT SHEDULER. Este privilegio fue agregado en MySQL 5.1.6
  • TRIGGER, este privilegio habilita las operaciones de los disparadores. Este privilegio fue agregado en MySQL 5.1.6
  • REPLICATION_CLIENT, este privilegio habilita el uso de SHOW_MASTER_STATUS y SHOW_SLAVE_STATUS. En MySQL 5.1.6 y versiones superiores habilita ademas el uso de la sentencia SHOW_BINARY_LOGS

3. Agregamos el privilegio para bloquear las tablas

mysql> GRANT LOCK TABLES ON *.* TO usuario_respaldo@localhost;

4. Probamos el respaldo de una base de datos
 
Nos salimos de mysql y probamos el comando mysqldump

$ mysqldump -u usuario_respaldo -p --databases dbmibase > dbmibase.sql

Si todo fue correcto en nuestro directorio debe existir nuestro respaldo dbmibase.sql.

jueves, 12 de febrero de 2015

Crear, eliminar o modificar usuarios en Linux

Aquí dejo algunos comandos básicos que serán útiles para crear, eliminar y/o modificar usuarios en nuestro sistema Linux.

Crear usuarios
Para crear un usuario usaremos el comando useradd:

$ sudo useradd -g migrupo -G ftp -s /bin/shell -d /home/micarpeta -m usuario_demo

he aquí una pequeña descripción de los parámetros
-d directorio home del usuario
-m crear carpeta home sino existe
-s shell del usuario
-g grupo primario al que pertenece el usuario
-G grupos a los que pertenece también el usuario

Se recomienda que el nombre del usuario lo  manejemos en minúsculas, podemos incluir también números y guiones. Una vez creado el usuario hay que utilizar el comando passwd para agregarle un password al usuario:

$ sudo passwd usuario_demo
Changing password for usuario_demo.
(current) UNIX password: 


Eliminar usuarios
Para eliminar usuarios usaremos el comando userdel:

$ sudo userdel usuario_demo

Este comando es mas sencillo, si queremos que además se borre el contenido de la carpeta home del usuario, hay que agregar el parámetro -r antes del nombre de usuario.


Modificar usuarios
Para modificar usuarios se utiliza el comando usermod:

$ sudo usermod -d /home/nuevacarpeta usuario_demo

los parámetros son parecidos a los de crear un usuario:
-d modificar home del usuario
-s modificar shell del usuario
-g modificar grupo primario al que pertenece el usuario
-G modificar grupos a los que pertenece también el usuario

miércoles, 14 de enero de 2015

Conectar a MySQL de forma remota

En la mayoría de los casos podemos acceder a MySQL a través de la consola o por medio de phpMyAdmin, pero sabemos que algunas funciones están limitadas por este medio, para ello necesitamos acceder a MySQL de forma remota.

Primero tendremos que comprobar que nuestro firewall (cortafuegos) del servidor no este impidiendo la comunicación con el puerto 3306 (normalmente el puerto de MySQL) en caso de ser así tendremos que desactivarlo o en su caso configurarlo adecuadamente para que permita el acceso al puerto.

Bueno una vez dicho esto describiremos los pasos para configurar el MySQL para acceder de forma remota.

1. Primero probaremos el puerto 3306 (normalmente el puerto de MySQL) a través de nuestro cliente:

telnet miip_o_eldominio.xxx.xxx 3306
conectandose a miip_o_eldominio.xxx.xxx...
No se pudo abrir la conexión al host, en puerto 3306: Error en la conexión

Como vemos en el ejemplo no tenemos acceso al puerto, aunque este desactivado el firewall o configurado adecuadamente, si no se permiten conexiones remotas en el MySQL no se podrá acceder.

2. Revisamos nuestro archivo my.cnf, que generalmente se encuentra en /etc/mysql/my.cnf

$ sudo nano /etc/mysql/my.cnf

Verificamos las variables bind-address y skip-networking. Si se encuentra skip-networking y no está comentada, la comentamos para que no tenga efecto y se permitan conexiones externas.

# comentamos esta linea
# skip-networking

Si encontramos bind-address = 127.0.0.1 o bind-address = localhost también hay que editarlo y cambiar el valor por el de la ip externa desde la que se quiera conectar (sólo se permite una), o por 0.0.0.0 para que cualquier dirección se conecte, en este ultimo caso habrá después que filtrarlas por otros medios (firewall o seguridad a nivel de control de acceso).

bind-address=0.0.0.0

3. Guardamos nuestro archivo y reiniciamos el MySQL.

Para Ubuntu, Debian
$ sudo service mysql restart

Para CentOS, Fedora
$ sudo service mysqld restart

4. Realizamos nuestra prueba de Telnet y nos tiene que permitir el acceso al puerto

telnet miip_o_dominio.xxx.xxx 3306
Conectando miip_o_dominio.xxx.xxx
5.5.9.riocp$%=+_:t0mysql_native_password

5. Una vez hecho esto realizamos una prueba de conexión para conectarnos de forma remota a nuestro servidor MySQL (puede realizarse con algún programa cliente), si aun así no es posible conectarse necesita verificar que el usuario ha sido creado correctamente.

Para ello verificamos en la base de datos mysql la tabla users, en el campo host el valor deberá sera la ip desde la cual deseamos conectarnos o en su defecto el % para que permita conectarse desde cualquier ip. Esto lo podemos realizar con la consola del MySQL.

mysql>GRANT ALL PRIVILEGES ON mibase.* to usuario@'%' IDENTIFIED BY 'elpassword';

Para ver mas sobre como crear usuarios checa el siguiente post:
http://mgermano.blogspot.mx/2014/04/crear-y-borrar-usuarios-de-mysql-por.html

viernes, 5 de diciembre de 2014

Mostrar y Revocar privilegios de MySQL

Hace unos días me encontré en la necesidad de revisar que privilegios tenían los usuarios de MySQL, así que me di a la tarea de investigarlo y les comparto una breve guía de como realizarlo.

1. Mostrar privilegios de un usuario
Ingresamos a nuestro servidor MySQL como ya lo hemos hecho anteriormente y solo bastara con escribir el siguiente comando:

mysql> SHOW GRANTS FOR miUser@localhost;

y se nos desplegara la información de los privilegios de este usuario

GRANT USAGE ON *.* TO 'miUser'@'localhost' IDENTIFIED BY PASSWORD '*519FB...'
GRANT SELECT, INSERT, UPDATE, DELETE ON `dbDatos`.* TO 'miUser'@'localhost'
GRANT ALL PRIVILEGES ON `miBase`.* TO 'miUser'@'localhost' 


2. Revocar privilegios
Para revocar privilegios se emplea la función REVOKE, su sintaxis es muy parecida a la de GRANT, he aquí la forma de utilizarla.

mysql> REVOKE ALL ON miBase.* FROM miUser@localhost

Este comando quitara todos los privilegios sobre todos los elementos de la base de datos miBase al usuario miUser.

Con REVOKE se pueden quitar privilegios sobre elementos en particular de las bases de datos. Su sintaxis de acuerdo al manual oficial de MySQL es:

REVOKE
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    FROM user [, user] ...

Para asignar privilegios y borrar usuarios, puedes consultar el siguiente enlace:
http://mgermano.blogspot.mx/2014/04/crear-y-borrar-usuarios-de-mysql-por.html

miércoles, 14 de mayo de 2014

Instalación y configuración de vsftpd en Linux

VSFTPD (Very Secure FTP Daemon) se utiliza para implementar servidores de archivos a través del protocolo de transferencia de archivos FTP (File Transfer Protocol), de esta forma tendremos un servidor rápido, ligero, seguro y de fácil configuración.

Instalación


Para instalarlo, solo tenemos que escribir el siguiente comando en nuestra consola:

Para CentOs, Fedora o RedHat
$ sudo yum -y install vsftpd

Para Ubuntu, Debian
$ sudo apt-get install vsftpd

Configuración


Una vez que tenemos instalado el vsftpd procederemos a configurarlo, crear usuarios y enjaularlos.

1. Editaremos el archivo vsftpd.conf que se encuentra en /etc/vsftpd/,

$ sudo nano /etc/vsftpd/vsftpd.conf

El archivo es fácil de entender, pero aquí explicaremos lo básico para configurar nuestro servidor FTP.

Usuario anónimo
Por defecto viene como YES, lo cambiamos a NO para no permitir el acceso de usuarios anónimos.
anonymous_enable=NO

Mensaje de Bienvenida
Aqui podemos colocar un mensaje de bienvenida al conectarse por FTP
ftpd_banner=Bienvenida al servidor FTP de pruebas

Permitir escritura en el servidor
Esta opción es importante ya que nos permitirá escribir en el servidor, por defecto viene como YES.
write_enable=YES

Sesiones locales
Permite que los usuarios locales puedan también iniciar sesión.
local_enable=YES

Enjaular usuarios
Aquí vienen tres lineas importante para enjaular a los usuarios y restringir el acceso a otras carpetas que no sean su directorio HOME.

Evita que los usuarios registrados puedan salir de su directorio HOME
chroot_local_user=YES

Habilita la lista de usuarios que serán enjaulados
chroot_list_enable=YES

Ruta de la lista de usuarios a enjaular, este archivo no existe lo crearemos después.
chroot_list_file=/etc/vsftpd/chroot_list

2. Creamos el archivo chroot_list en /etc/vsftpd/

$ sudo touch /etc/vsftpd/chroot_list
$ sudo nano /etc/vsftpd/chroot_list

En el archivo solo agregamos en forma de lista los usuarios a enjaular, una ves terminado de agregar, guardamos los cambios.
usuario1
usuarioftp2
otrousuario

3. Creamos los usuarios ftp
$ sudo useradd -d /var/www/html/homeusuario1 -s /bin/false -g ftp usuario1

-d, indicamos la carpeta HOME del usuario
-s, indicamos el shell del usuario
-g, indicamos el grupo al que pertenecerá el usuario

Nota:
Podemos colocar tanto /bin/false como /sbin/nologin en el shell del usuario con la finalidad de impedir el acceso al shell completo,  cada uno con algunas diferencias, /sbin/nologin evita la entrada por consola y ssh, en cambio /bin/false evita la entrada por consola, ssh y ftp, por eso en nuestro caso usaremos /bin/false ya que es mas restrictivo.

Sin embargo vsftpd utiliza PAM (Pluggable Authentication Modules) para autentificar a los usuarios y por ello no admite ningun shell que no este listado en /etc/shells, para ello tendremos que agregar este shell a nuestro archivo.

$ sudo nano /etc/shells

en el archivo agregamos /bin/false y guardamos los cambios
...
/bin/tcsh
/bin/csh
/bin/ksh
/bin/false
Sino realizamos estos cambio no podremos ingresar a través de FTP, mostrandonos un error de login del usuario.

4. Agregamos la contraseña al usuario
# passwd usuario1
Changing password for user usuario1
New UNIX password:

5. Iniciamos el servicio FTP
Iniciamos nuestro servicio vsftpd con cualquiera de los dos comandos:

# service vsftpd start
ó
# /etc/init.d/vsftpd start

Nota:
Es necesario verificar que el puerto 21 por TCP no este bloqueado en nuestro firewall, para ello tenemos que checarlo en nuestro servicio iptables.

6. Probamos nuestro servidor FTP
Podemos probar que todo funcione correctamente accesando a través de nuestro navegador con la IP de nuestro servidor (ftp://190.190.200.1)  donde se nos pedirá un usuario y contraseña que serán los que agregamos en el paso 4. Como observaremos solo tendremos acceso a nuestra carpeta HOME permitida.


Podemos también usar otro software como Filezilla© o el complemento Fireftp de Mozilla Firefox©.

Actualización 13/Abril/2016
Si se cuenta con un firewall perimetral para no abrir todos los puertos al permitir un FTP Pasivo, realizar las siguientes modificaciones:

1. Permitir un rango de puertos para la conexión del FTP Pasivo, para ello agregamos las siguientes lineas al archivo /etc/vsftpd/vsftpd.conf. El rango puede ser del 1024 al 65535, este rango es el que se debe habilitar en nuestro firewall perimetral.

pasv_min_port=60000
pasv_max_port=60009

2. Para no realizar más cambios a IPTABLES podemos utilizar el módulo Connection Track FTP, el cual abrira y cerrara el puerto (del rango definido) necesario para realizar la conexión mediante el siguiente comando:

/sbin/modprobe ip_conntrack_ftp

Si se desea que este comando sea persistente desde el inicio, habrá que agregar la línea anterior al archivo /etc/rc.local

miércoles, 9 de abril de 2014

Configurar usuario admin en Tomcat

Una vez que tenemos instalado nuestro servidor Tomcat, ahora es necesario configurar un usuario admin para subir, arrancar, detener o simplemente ver nuestras aplicaciones. Para ello tenemos que editar el archivo tomcat-users.xml que se encuentra en nuestra carpeta de configuración del Tomcat (por ejemplo /etc/tomcat6/).

Dentro de los tag <tomcat-users> creamos el role de manager, seguido de la linea donde agregamos los datos de usuario, quedando de la siguiente forma:

<!--
  NOTE:  By default, no user is included in the "manager-gui" role required
  to operate the "/manager/html" web application. If you wish to use this app,
  you must define such a user - the username and password are arbitrary.
-->
<tomcat-users>

    <role rolename="manager" description="Tomcat Manager"/>
    <user username="admin" password="MiPassword" roles="manager"/>

</tomcat-users>

Después de editar el archivo, guardarlo y reiniciar el Tomcat.

# service tomcat6 restart

Para usuarios del tomcat 7 los roles requeridos para administrar la aplicación fueron cambiados.

    <role rolename="manager-gui" description="Tomcat Manager"/>
    <user username="admin" password="MiPassword" roles="manager-gui"/>

Cabe mencionar que en tomcat7 existen roles específicos del manager:
  • manager-gui, interfaz gráfica en HTML y estatus de las aplicaciones
  • manager-script, interfaz en modo texto y estatus de las aplicaciones
  • manager-jmx, accesar al proxy JMX(Java Managment eXtensions) y estatus de las aplicaciones
  • manager-status, solo el estatus de las aplicaciones

jueves, 3 de abril de 2014

Crear y borrar usuarios de MySQL por consola

Existen 4 formas diferentes de crear y/o modificar usuarios en MySQL:
  1. La sentencia GRANT
  2. La sentencia CREATE USER
  3. Insertando directamente en la tabla user
  4. Utilizando un administrador de MySQL como SQLyog
He aquí unas recomendaciones para crear usuarios, según la documentación oficial de MySQL:
  • Los nombres de usuario pueden tener un máximo de 16 caracteres.
  • Si se utiliza el modificar directamente la tabla user, tener cuidado de no modificar la estructura de ninguna tabla de la base mysql.

CREAR USUARIOS:

Aquí veremos como crear usuarios con la primer opción: grant
La sentencia grant nos permite crear cuentas de usuarios para MySQL y darles permiso, esta información es almacenada en las tablas de la base mysql. Primero tenemos que ingresar a nuestro servidor de base de datos como root o con una cuenta con nivel de root.

$ mysql -u root -p

Con grant se pueden asignar permisos a diferentes niveles, he aquí algunos ejemplos:

Nivel Global
En este ejemplo se crea un usuario llamado usuario con la contraseña miclave que tiene permisos sobre todas las bases de datos de nuestro servidor
mysql> GRANT ALL ON *.* TO 'usuario'@'localhost' IDENTIFIED BY 'miclave';

Nivel de Base de datos
En este ejemplo se crea un usuario llamado usuario1 con la contraseña miclave que tiene permisos sobre todas las tablas de la base de datos mibase
mysql> GRANT ALL ON mibase.* TO 'usuario1'@'localhost' IDENTIFIED BY 'miclave';

Nivel de Tabla
En este ejemplo se crea un usuario llamado usuario2 con la contraseña miclave que tiene permisos sobre la tabla mitabla de la base de datos mibase
mysql> GRANT ALL ON mibase.mitabla TO 'usuario2'@'localhost' IDENTIFIED BY 'miclave';

Con grant podemos también indicar que tipo de permisos un usuario tendrá sobre un objeto, en el siguiente ejemplo creamos un usuario que tiene permisos de seleccionar e insertar en la tabla tabla1 de la base de datos mibase2:
mysql> GRANT SELECT, INSERT ON mibase2.mitabla1 TO 'miusuario'@'localhost' IDENTIFIED BY 'miclave';
Nota:
Después del @ nosotros indicamos el contexto del usuario, en los ejemplos anteriores todos los usuarios podrán conectarse solo por la maquina local (localhost), es decir, que se impedirá conectarse de forma remota. Si queremos que se conecte el usuario desde cualquier equipo tendra que agregar el caracter %.
mysql> GRANT ALL ON mibase.* TO 'usuario'@'%' IDENTIFIED BY 'miclave';
ELIMINAR USUARIOS

Para eliminar usuarios utiliza el comando DROP USER, para utilizar este comando debe tener el permiso global de CREATE USER o el permiso DELETE para la base de datos mysql. Para borrar una cuenta y sus permisos la sintaxis es la siguiente:

mysql> DROP USER miusuario;

Si tiene el mismo usuario en diferentes ámbitos, solo necesitara especificar el usuario deseado en el ámbito correcto:

mysql> DROP USER miusuario@localhost;

NOTA:
En MySQL 5.0.0 DROP USER solo borra cuentas que no tienen permisos, para eliminar completamente la cuenta incluyendo sus permisos en estas versiones, tendrá que usar SHOW GRANTS para ver que permisos tiene ese usuario y con REVOKE tendrá que revocar sus permisos. A partir de MYSQL 5.0.2 ya se pueden eliminar cuentas que tienen permisos.

PERMISOS

PermisoSignificado
ALLDa todos los permisos simples, excepto GRANT OPTION
ALTERPermite el uso de ALTER TABLE
CREATEPermite el uso de CREATE TABLE
CREATE USERPermite el uso de CREATE USER, DROP USER, RENAME USER y REVOKE ALL PRIVILEGES
CREATE VIEWPermite el uso de CREATE VIEW
DELETEPermite el uso de DELETE
DROPPermite el uso de DROP TABLE
INSERTPermite el uso de INSERT
SELECTPermite el uso de SELECT
UPDATEPermite el uso de UPDATE
GRANT OPTIONPermite dar privilegios

Entradas Populares