Copiar archivos a y de tu Android con adb

Puedes tener acceso a tu dispositivo android vía adb en la línea de comandos o Terminal. Un disppositivo Android necesitaría estar rooteado para poder accederlo.

adb se encuentra localizado en el directorio [android-sdks]/platform-tools. Sólo tendrías que agregar éste directorio a tu ruta de ejecución para tenes acceso directo a sus comandos.

adb permite emviar comandos a tu dispositivo Android, guiñar y enviar archivos a éste, brinda acceso al shell de Android y permite leer información de tu dispositivo.

Lo primero que tendrás que hacer es habilitar el modo debug de tu dispositivo y luego señalar y otorgarle acceso root a adb dentro del dispositivo, luego de eso, desde tu computador y con el dispositivo conectado:

$ adb devices
List of devices attached
00a719c8148ra068 device

Luego necesitas reclamar acceso root:

$ adb root
restarting adbd as root

Listo. Tenés acceso completo a tu dispositivo.

$ adb push <archivo_origen> <mnt/sdcard/directorio_destino>

$ adb pull </mnt/sdcard/archivo_origen> <directorio_destino>

$ adb uninstall <nombre_aplicacion>

Por ejemplo yo necesito con regularidad descargar las actualizaciones de Cyanogenmod 11 para aplicarlas a mi dispositivo Android. Para ello ejecuto:

$ adb push cm-11-20140109-NIGHTLY-e975.zip /mnt/sdcard/Downloads/

Espero les sea de ayuda.

Metiéndole seguridad a OpenSSH

Mi preferencia por descargar vía torrent y una que otra vulnerabilidad “social” de mi proveedor de Internet han hecho de un tiempo acá bastante común los intentos desde fuera por acceder a mi terminal. ¿Quiénes? ¿Cuándo? ¿Cómo? No importa, lo importante es que aprendamos a no creernos invulnerables e intocables sólo porque usamos GNU/Linux.

OpenSSH (o Secure Shell) se ha convertido en el estándar en acceso remoto, reemplazando así, a telnet como protocolo, esto porque la conexión es cifrada y las contraseñas no son enviadas en texto plano para que todo mundo las vea.

De cualquier manera, la configuración por defecto de SSH no es perfecta, y cuando se corre un servidor SSH existen algunos pasos sencillos que pueden darle robustez a la configuración. Créeme que sí.

Usa contraseñas/nombres de usuarios más fuertes

Una de las primeras cosas a notarse es que si tenés SSH corriendo y expuesto al mundo exterior lo más probable es que recibas registros de intentos por parte de lamers y hackers de adivinar tu usuario o contraseña. Típicamente un hacker hará un scan para el puerto 22 (el puerto por defecto en el que SSH “escucha”) queriendo encontrar máquinas con SSH corriendo, y luego intentará un ataque de fuerza bruta contra esto. Con fuertes contraseñas en su lugar es posible que cualquier ataque sea registrado y puesto en advertencia antes de que cualquiera logre un ingreso exitoso.

Por suerte ya usás contraseñas fuertes, pero si no, entonces prueba a escoger contraseñas que contengan:

  • Mínimo de 8 caracteres
  • Mezcla de minúsculas y mayúsculas
  • Mezclas de letras y números
  • Caracteres no alfanuméricos (p.e. caracteres tales como ! ” £ $ % ^, etc)

Si absolutamente no se puede prevenir a los usuarios de escoger contraseñas débiles, entonces considera generarlas de manera aleatoria o nombres de usuario difíciles de adivinar para tus cuentas de usuario. Si los chicos malos no pueden adivinar el usuario es más difícil que logren la contraseña por fuerza bruta. Sin embargo, esto es seguridad a travéz de oscuridad, y es mejor tener en cuenta que la información se puede escapar en el envío de correos electrónicos, por ejemplo.

Desactiva Ingresos de Root

Los ajustes del servidor SSH están alojados en /etc/ssh/sshd_config. Para desactivar los ingresos de root asegúrate de corregir la siguiente entrada:

# Prevent root logins:

PermitRootLogin no

y reinicia el servicio sshd:

service sshd restart

Si necesitas ingresos de root es preferible ingresar como usuario normal y luego usar su.

Limita los ingresos de usuarios

Los ingresos de SSH pueden ser limitados a ciertos usuarios que necesitan acceso remoto. Si tu máquina tiene muchas cuentas de usuarios en el sistema, entonces es preferible limitar el acceso remoto a las cuentas de usuarios que realmente lo necesitan, limitando de esta forma el impacto de un casual usuario que tenga una contraseña débil. Agrega usuarios separados por espacio en /etc/ssh/sshd_config. Por ejemplo:

AllowUsers alice bob

y reinicia el servicio sshd.

Desactiva el Protocol 1

SSH tiene dos protocolos que puede usar, protocolo 1 y protocolo 2. El más antiguo es el protocolo 1, es menos seguro y debería ser desactivado, a menos que específicamente lo requieras. Corrige como a continuación en el archivo /etc/ssh/sshd_config:

# Protocol 2,1
Protocol 2

y reinicia el servicio sshd.

Usa puertos no estándar

Por defecto SSH “escucha” conexiones entrantes en el puerto 22. Como ya habíamos dicho, para que el hacker determine si SSH corre en tu máquina, este intentará un scan en el puerto citado. Un método efectivo es correr SSH en un puerto no estándar. Cualquier puerto sin usarse servirá, aunque uno por encima del 1024 es preferible. Mucha gente escoge el 2222 como alternativa, a como normalmente se escoge el 8080 para el puerto HTTP. Por esta razón es probable que no sea la mejor respuesta, ya que cualquier hacker estaría haciendo scan al 2222 como buena medida. Es mejor escoger algún puerto aleatoriamentem, que sea alto y que no esté siendo usado por servicios conocidos. Para hacer el cambio, agrega la linea siguiente a tu archivo en /etc/ssh/sshd_config:

# Run ssh on a non-standard port:
Port 2345  #Change me

y reinicia el servicio sshd. No olvides de hacer cualquier cambio necesario en tu enrutador y cualquier regla en el firewall.

Para mayores detalles acerca de SELinux y las reglas del firewall, visita la página que me fue de utilidad.