lunes, 23 de noviembre de 2015

Como crear una BD en MySQL desde linux

Lo primero que tenemos que hacer despues de tener instalado MySQL es entrar con el siquiente comando.
mysql -u root -p
Nos pedira la contraseña y si lo hemos hecho correctamente nos aparecerá lo siguiente.
mysql>
Para crear la base de datos utilizamos el siguiente comando sustituyendo "tutorial_database" por el nombre de nuestra base de datos que querramos.
CREATE DATABASE tutorial_database;
Si la base de datos existe nos mostrara el siguiente mensaje:
ERROR 1007 (HY000): Can't create database 'tutorial_database'; database exists
Para corregir esto utilizamos el comando:
CREATE DATABASE IF NOT EXISTS tutorial_database;
Y Nuestra base de datos se creara.
Para ver las bases de datos creadas en nuestro MySQL corremos el siguiente comando:
SHOW DATABASES;
Y el resultado sera algo similar a esto, donde nos enlistan todas las BD
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
| tutorial_database  |
+--------------------+
4 rows in set (0.00 sec)

viernes, 20 de noviembre de 2015

Como usar el export en Linux (Declarar Variables de entorno)

Como usar el comando export en Linux o Unix-like  para enviar variables de entorno al bash?

Usted puede exportar variables al bash usando el siguiente comando.

Syntaxis

El comando es el siguiente:
export VAR
Puede asignar el valor antes de exportar utilizando la siguiente sintaxis:
export VAR=value
O
VAR=value
export VAR
El comando de exportación se marca cada VAR para la exportación automática al entorno de posteriormente ejecuta comandos , es decir, hacer que el shell variable local VAR global.
Ejemplos
Para escribir la variable de shell llamada ruta local lo siguiente:
### export PATH ###
export PATH=$PATH:/usr/local/bin
echo "$PATH"
 
Set a new EDITOR variable:
 
export EDITOR=/usr/bin/vim
 
Es necesario añadir las declaraciones de exportación a ~/.profile or /etc/profile  . Esto exportará variables de forma permanente :
$ vi ~/.bash_profile
Archivo de ejemplo:
 
PATH=$PATH:$HOME/bin
export PATH
 
# set vim as a text editor
export EDITOR=/usr/bin/vim
 
# set colorful prompt 
export PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\] '
 
# set java_home
export JAVA_HOME=/usr/local/jdkH

Como resolver cuando sale este mensaje en linux /bin/sh^M: bad interpreter: No such file or directory

Si en algún momento les salió este error, y pasaron horas intentando ver que es, no son los únicos, a mi me paso. Entonces les cuento cual es el error.
El problema es cuando pasas algún .sh que utilices (por lo menos en mi caso), en algún momento lo pasaron por Windows, entonces algún símbolo extraño le puso.
Entonces para solucionar el problema hay que editar el .sh directamente desde Linux y crearlo directamente desde ahí, si el código es muy largo lo mejor es abrir un putty, en Windows editar el archivo con block de notas o el editor que quieran, copiar todo el código, y en putty, hacemos vi miscrip.sh, luego i (insertar), y luego botón derecho del mouse, esto pega todo lo copiado, y :wq, y listo, arreglado el problema.

Como crear un usuario y otorgarle permisos en MySQL

¿Qué representa el color rojo?

Las líneas que necesiten ser personalizadas por el usuario serán marcadas con rojo en este tutorial. El resto podrá ser copiado y pegado en su mayoría.

Acerca de MySQL

MySQL es un manejador de base de datos de código libre que atyda a los usuarios a almacenar, organizar y recolectar datos. Tiene variedad de opciones para otorgar a determinados usuarios permisos entre tablas y bases de datos, éste tutorial te dará una pequeña introducción a algunas de estas opciones.

¿Cómo crear un nuevo usuario?

En la parte 1 del tutorial de MySQL, hicimos todas las ediciones como usuario root, con acceso completo a todas las bases de datos. Como sea, en este caso hay mas restricciones que pueden ser requeridas, hay formas de crear usuarios con persmisos personalizados.
Vamos empezando por crear un usuario nuevo desde la consola de MySQL:
CREATE USER 'nombre_usuario'@'localhost' IDENTIFIED BY 'tu_contrasena';
Lamentablemente, a este punto el nuevo usuario no tiene permisos para hacer algo con las bases de datos. Por consecuencia si el usuario intenta identificarse (con la contraseña establecida), no será capaz de acceder a la consola de MySQL.
Por ello, lo primero que debemos hacer es porporcionarle el acceso requerido al usuario con la información que requiere.
GRANT ALL PRIVILEGES ON * . * TO 'nombre_usuario'@'localhost';
Los asteriscos en este comando hacen referencia a la base de datos y la tabla (respectivamente) a la cual el nuevo usuario tendrá acceso; específicamente este comando permite al usuario leer, editar, ejecutar y realizar todas las tareas en todas las bases de datos y tablas.
Una vez que has finalizado con los permisos que deseas configurar para tus nuevos usuarios, hay que asegurarse siempre de refrescar todos los privilegios.
FLUSH PRIVILEGES;
Tus cambios ahora surtirán efecto.

¿Cómo otorgar permisos de usuario diferentes?

Aquí está una pequeña lista del resto de los posibles permisos que los usuarios pueden gozar.
  • ALL PRIVILEGES: como mencionamos previamente esto permite a un usuario de MySQL acceder a todas las bases de datos asignadas en el sistema.
  • CREATE: permite crear nuevas tablas o bases de datos.
  • DROP: permite eliminar tablas o bases de datos.
  • DELETE: permite eliminar registros de tablas.
  • INSERT: permite insertar registros en tablas.
  • SELECT: permite leer registros en las tablas.
  • UPDATE: permite actualizar registros seleccionados en tablas.
  • GRANT OPTION: permite remover privilegios de usuarios.
Para proporcionar un permiso a usuario específico, puedes utilizar ésta estructura:
GRANT [permiso] ON [nombre de bases de datos].[nombre de tabla] TO ‘[nombre de usuario]’@'localhost’;
Si deseas darles acceso a cualquier base de datos o tabla, asegurate de insertar un asterisco (8) en lugar del nombre de la base de datos o tabla.
Cada vez que tu actualizas o cambias permisos, asegúrate de refrescar los privilegios mediante FLUSH PRIVILEGES;.
Si necesitas remover un permiso, la estructura es casi idéntica a la que los asigna:
REVOKE [permiso] ON [nombre de base de datos].[nombre de tabla] FROM ‘[nombre de usuario]’@‘localhost’;
Así como puedes borrar bases de datos con DROP, también puedes usar el comando DROP para borrar usuarios:
DROP USER ‘usuario_prueba’@‘localhost’;
Para probar el nuevo usaurio, debes cerrar sesión escribiendo quit y volviendo a iniciar sesión con éste comando en la consola:
mysql -u [nombre de usuario]-p

Como eliminar una base de datos en MySQL

  1. Delete a MySQL Database Step 1
    1
    Necesitarás un usuario que tenga permisos especiales para poder "eliminar" en la base de datos en cuestión. Si no tienes un usuario específico, puedes utilizar tu usuario “root”.
    Anuncio
  2. Delete a MySQL Database Step 2
    2
    Si utilizas el cliente de línea de comandos MySQL, introduce “mysql -u tuNombreDeUsuario -p” en el terminal.
  3. Delete a MySQL Database Step 3
    3
    Escribe la contraseña cuando te lo pida.
  4. Delete a MySQL Database Step 4
    4
    Una vez dentro del terminal de MySQL, introduce “DROP DATABASE nombreDeLaBaseDeDatos;”.
  5. Delete a MySQL Database Step 5
    5
    Puedes utilizar “SHOW databases;” para comprobar que la base de datos se haya eliminado.

miércoles, 18 de noviembre de 2015

Como saber que aplicacion tiene abierto cierto puerto en linux

Para saber que aplicacion tiene abierto y utilizando cierto puerto el que nosotros queramos lo unico que tenemos que hacer es correr la siguiente sentencia reemplazando el numero de puerto por el que necesitemos:

sudo netstat -ltnp | grep ':80'

Como monitorear los logs de BIND o Named en Linux

Estos son los comandos para monitorear el log del servicio de DNS

Primero corremos:
# rndc querylog

Ya una vez habilitada los logs corremos la siguiente sentencia

# tail -f /var/log/messages

Y por ultimo des habilitamos los logs cuando nos termina de servir.

# rndc querylog

Habilitar y deshabilitar el firewall en Ubuntu

  • Para deshabilitar el firewall, abre un terminal y ejecuta el comando siguiente:
    sudo ufw disable
  • Para habilitarlo:
    sudo ufw enable

Como consultar cuanto de memoria RAM tiene Linux

Siguiendo el hilo de entradas pasadas, sobre cosas que podemos hacer desde nuestra terminal, esta vez vamos a mostraros diferentes modos y comandos para conocer información de nuestra memoria RAM.
Aprovechando el potencial de nuestro terminal y conociendo los comandos adecuados o la ubicación del archivo que contiene la información, podemos conocerlo todo respecto al hardware de nuestro equipo y muchas otras cosas, claro.
Hoy nos centraremos un poco en nuestra RAM y en como podemos obtener información sin necesidad de instalar nada ni de un programa con entorno gráfico. Son solo unas pinceladas, pero espero que os sean útiles para conocer un poco más a fondo como funciona nuestra distro o para refrescar la memoria a quien ya lo sepa.
Para empezar creo que el mejor método es ir directamente a la fuente de información. Los sistemas GNU/Linux, tienen la “manía” de ser muy ordenados y de guardarlo todo en archivos, como por ejemplo los logs..
En este caso el archivo que nos interesa se encuentra en /proc y se llama meminfo, así que lo miramos con:
cat /proc/meminfo
Si queremos, también podemos usar free, que nos devolverá solo la información más interesante, le añadimos un -m al final para que nos la de en megas:
free -m
Pero si lo que queremos es saberlo todo acerca de la ram, detalles, fabricante, tipo, el máximo que soporta nuestro equipo, etc. Entonces usaremos dmidecode. Hay que usarlo como superusuario o root:
sudo dmidecode --type memory
Como ya supondréis, con estos comandos podemos ver todo tipo de información, como la de la CPU con, cat /proc/cpuinfo, o con dmidecode –type processor.

Comandos apt-get linux ubuntu

Siguiendo mi intención de acercar la terminal (esa cosa tan rara) a los nuevos usuarios, vamos a hablar del comando "apt-get".

apt-get es la herramienta que utiliza Debian y sus derivadas (Ubuntu incluida), para gestionar los paquetes instalables disponibles en los repositorios y aunque tenemos a nuestra disposición herramientas gráficas que nos facilitan las cosas, nunca está de más saber lo que podemos hacer con apt-get desde una terminal:



En Ubuntu, los comandos administrativos, como "apt-get", deben de ser ejecutados como superusuario, anteponiendo "sudo".


Uso:
sudo apt-get [opciones] orden [paquetes]
Ejemplos:
sudo apt-get [opciones] install paquete1 paqquete2 ...
sudo apt-get [opciones] remove paquete1 [paqquete2 ...
sudo apt-get [opciones] source paquete1 paquete2 ...
[opciones] se puede utilizar o no (ver el apartado correspondiente).


Comandos "apt-get":


1. Actualizar el listado de paquetes disponibles:
sudo apt-get update

2. Comprobar que todo ha ido bien tras la utilización de apt-get update:
sudo apt-get check

3. Instalar los programas deseados:
sudo apt-get install paquete

4. Reinstalar un programa:
sudo apt-get -reinstall install paquete

5. Actualizar solo los paquetes ya instalados que no necesitan, como dependencia, la instalación o desinstalación de otros paquetes:
sudo apt-get upgrade

6. Actualizar todos los paquetes del sistema, instalando o desinstalando los paquetes que sean necesarios para resolver las dependencias que pueda generar la actualización de algún paquete:
sudo apt-get dist-upgrade

7. Desinstalar un paquete:
sudo apt-get remove paquete

8. Desinstalar un paquete y elimina los archivos de configuración:
sudo apt-get remove --purge paquete

9. Resolver problemas con dependencias y paquetes rotos:
sudo apt-get -f install
Puede ser necesario reconfigurar dpkg con:
sudo sudo dpkg --configure -a

10. Para limpiar los paquetes descargados e instalados:
sudo apt-get clean

11. Para limpiar los paquetes viejos que ya no se usan:
sudo apt-get autoclean

12. Para buscar un paquete determinado:
sudo apt-cache search paquete

13. Descargar archivos fuente:
sudo apt-get source paquete

14. Configurar las dependencias de construcción para paquetes fuente:
sudo apt-get build-dep paquete

15. Seguir las selecciones de dselect:
sudo apt-get dselect-upgrade

16. Para conocer que paquetes hay instalados:
sudo apt-show-versions (-u)

17. Obtener más información de un paquete específico:
sudo apt-cache show paquete

18. Más información aún:
sudo apt-cache showpkg paquete

19. Para saber de que paquete depende:
sudo apt-cache depends paquete

20. Para encontrar el nombre de un paquete desde un archivo:
sudo apt-file search archivo

21. Listar el contenido de un paquete:
sudo apt-file list paquete

22. Para mantener al día esta función:
sudo apt-file update

23. Para mantener el sistema limpio de bibliotecas inútiles:
sudo apt-get autoremove

24. Actualizar la caché de paquetes (/var/cache/apt/pkgcache.bin), crea un nuevo árbol de dependencias:
sudo apt-get check

25. Mostrar un resumen de las dependencias no satisfechas en la caché de paquetes:
sudo apt-cache unmet

26. Mostrar una lista de todo lo que tenemos instalado en el sistema:
sudo apt-cache pkgnames -generate



Opciones:


-sSimula una acción.
-dSólo descarga.
-yNo pregunta y asume que si a todo.
-uMuestra paquetes actualizados.
-hMuestra texto de ayuda.
-qSalida registrable - sin indicador de progreso.
-qqSin salida, excepto si hay errores.
-fIntenta continuar sí la comprobación de integridad falla (dependencias rotas).
-mIntenta continuar si los archivos no son localizables.
-bConstruye el paquete fuente después de obtenerlo.
-VMuesta números de versión detallados.
-c=?Lee este archivo de configuración.
-o=?Establece una opción de configuración arbitraria.


Comando "apt":


Actualización: A partir de Ubuntu 14.04, el gestor de paquetes apt ("Avanced Package Tool") tiene nuevas opciones. Ya no es necesario escribir "apt-get" y se puede utilizar simplemente "apt", (apt seguirá funcionando).

1. Buscar y mostrar los paquetes instalados por su nombre:
sudo apt list
2. Buscar en las descripciones de los paquetes:
sudo apt search ...
3. Mostrar los detalles de un paquete:
sudo apt show paquete
4. Actualizar la lista de paquetes disponibles:
sudo apt update
5. Instalar un paquetes
sudo apt install paquete
6. Eliminar un paquete
sudo apt remove paquete
7. Actualizar el sistema actualizando paquetes
sudo apt upgrade
8. Actualizar todo el sistema eliminando, instalando o actualizando paquetes
sudo apt full-upgrade
9. Editar la información de las fuentes de software ("sources.list") llamando a nano o vim.
sudo apt edit-sources

Como activar el SSH en ubuntu.

En este manual hablaremos sobre el SSH y cómo configurarlo para acceder remotamente a nuestro equipo con GNU/Linux, también podremos acceder a nuestros routers si tienen firmwares basados en Linux como Tomato RAF.
¿Qué es SSH?
Las siglas corresponden a Secure SHell. Sirve para acceder a máquinas remotas, igual que hace telnet, pero de una forma segura ya que la conexión va cifrada. El transporte se hace mediante TCP, por tanto nos garantiza que las órdenes van a llegar a su destino (conectivo, fiable, orientado a conexión).
Seguridad
El cifrado de SSH proporciona autenticidad e integridad de los datos transmitidos por una red insegura como internet.
Utiliza llaves públicas para la autenticación en la máquina remota.
SSH no sólo sirve para usar comandos en máquinas remotas, sino para transferencias de ficheros de forma segura ya sea por SCP o sFTP y servicios de escritorio remoto.
Mirad 25 formas para sacarle partido al SSH

Instalación

Vamos a usar OpenSSH por tanto vamos a instalarlo:
sudo apt-get install openssh-server
Ahora procedemos a su configuración.

Comandos que debemos tener en cuenta

Para editar la configuración del servidor SSH debemos hacer en consola:
sudo gedit /etc/ssh/sshd_config
Para arrancar el servidor:
sudo /etc/init.d/ssh start
* Starting OpenBSD Secure Shell server sshd
Para parar el servidor:
sudo /etc/init.d/ssh stop
* Stopping OpenBSD Secure Shell server sshd
Para reiniciar el servidor:
sudo /etc/init.d/ssh restart
* Restarting OpenBSD Secure Shell server sshd

Configuración del servidor

Una vez instalado, vamos a configurar el servidor, hacemos en consola:
sudo gedit /etc/ssh/sshd_config
Y podremos editar sus opciones, os pongo mi fichero de configuración y una explicación de lo que podéis cambiar.
# Package generated configuration file
# See the sshd_config(5) manpage for details
# Ponemos el puerto a escuchar por el SSH, por defecto es el 22. Deberemos abrir un puerto en nuestro router redirigiendo hacia la IP interna de la máquina donde lo tengamos.
Port 1234
# Usaremos el protocolo 2 de SSH, mucho más seguro, por tanto forzamos a que siempre conecten por protocolo 2.
Protocol 2
# HostKeys for protocol version 2. El lugar donde se guardan las keys.
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 2048
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication, importante la parte PermitRootLogin…es vuestra decisión
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile    %h/.ssh/authorized_keys
# Don’t read the user’s ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don’t trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes
# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
#MaxStartups 10:30:60
#Banner /etc/issue.net
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
MaxAuthTries 2
Si usamos SFTP enjaulado debemos poner esto y comentar la línea (Subsystem sftp /usr/lib/openssh/sftp-server):
Subsystem sftp internal-sftp
Match user servidor
ChrootDirectory /home/jail/home
AllowTcpForwarding no
ForceCommand internal-sftp
Como podéis ver, usando openssh-server también tenéis levantado un servidor sFTP.

Enjaular un usuario con OpenSSH en Ubuntu

Imaginemos que queremos crear un usuario a nuestro amigo Sanobis, pero no queremos que pueda ver todos los archivos del sistema, es decir, vamos a enjaularle en su directorio /home/ únicamente.
Nos bajamos este archivo:
http://www.redeszone.net/app/uploads/cdn/down/soft/redes/make_chroot_jail.sh
Y lo ponemos en el directorio raíz por comodidad.
Le asignamos permisos 700
sudo chmod 700 make_chroot_jail.sh
A continuación escribimos:
bash make_chroot_jail.sh sanobis
Tecleamos yes, y a continuación metemos la clave que queramos que tenga (estamos creando un usuario nuevo).
Ahora, su directorio enjaulado es /home/jail/home/sanobis
Salimos y entramos por ssh y veremos que efectivamente no podrá salir de ese directorio. No hace falta que reiniciemos el servidor SSH.
Opciones adicionales de Seguridad
Podemos conectarnos al servidor sin usuario clave, utilizando un certificado RSA que proporcionará mucha más seguridad, pero como siempre que sucede en estos casos…es más incómodo y no siempre vas a llevar encima tu certificado, por tanto esta parte la voy a obviar.
Podemos también instalar el programa fail2ban para banear IPs que hagan muchos intentos de conexión fallidos (que metan mal la clave).
Podemos instalarlo poniendo
sudo apt-get install fail2ban
Ahora hacemos:
sudo gedit /etc/fail2ban/jail.local
Y pegamos esto:
[ssh]
enabled = true
port = 1234
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
Y lo iniciamos,paramos y reiniciando haciendo como si fuera el SSH, en este caso start=iniciar:
sudo /etc/init.d/fail2ban start
Para ver los LOGS de conexión haced esto:
cd /var/log/
gedit auth.log
También tenemos otro programa dedicado exclusivamente al SSH, se llama DenyHost y tiene una gran base de datos de IPs conocidas como atacantes. Con esto estaremos un poquito más seguros.
- See more at: http://www.redeszone.net/gnu-linux/servidor-ssh-en-ubuntu/#sthash.2Dxqfwgh.dpuf