Cómo configurar un proxy SOCKS5 en un Servidor Virtual (VPS)
08:12, 30.11.2022
Aunque los servidores proxy son muy similares en su función a la VPN, tienen una diferencia significativa: el tráfico no está encriptado, es decir, el nivel de seguridad será mucho menor que cuando se utilizan redes privadas virtuales. A pesar de ello, los servidores proxy se utilizan activamente porque este método permite:
- ocultar su dirección IP durante la comprobación básica;
- ocultar su ubicación real: los sitios que visita sólo registran la región donde se encuentra el servidor proxy;
- proteger su dispositivo de sitios no deseados, bloqueando aquellos sitios que se garantiza que son peligrosos, contienen malware, etc.
Pero debe entender que un servidor proxy no puede protegerle de métodos de detección avanzados, no cifra el tráfico y puede recoger datos sobre los usuarios. Si estos datos serán compartidos con terceros es una cuestión abierta, así que utilice sólo servidores proxy de confianza.
El siguiente artículo le dirá cómo configurar un proxy SOCKS5 en un servidor privado virtual, así como lo que existen variaciones de esta tecnología.
Qué tipos de proxies hay disponibles
Hay cinco tipos básicos de proxies:
- Proxies FTP - se utilizan para descargar datos en servidores FTP.
- CGI (anonimizadores) - por regla general, son sitios web a través de los cuales se puede acceder a cualquier otro sitio bloqueado. Es decir, si quieres, por ejemplo, visitar un sitio que está bloqueado en tu país, sólo tienes que ir al anonimizador del sitio, e introducir la URL deseada en el campo de la dirección. No es necesario instalar nada en tu ordenador, todo se hace a través de la nube. El único inconveniente es que puede costar dinero.
- SMTP, POP3 e IMAP son tecnologías utilizadas para enviar y recibir correo electrónico.
- Los proxies HTTP y HTTPS son necesarios para la navegación web.
- SOCKS5: es un servicio que redirige el tráfico saliente y entrante de Internet a través de un servidor proxy remoto. Enmascara su dirección IP real, oculta la geolocalización y evita las filtraciones accidentales de información confidencial: la opción óptima para eludir la censura regional para VPS.
La tecnología más avanzada y masiva es SOCKS5, y también es la más adecuada para utilizarla junto con VPS.
Cómo configurar un proxy SOCKS5 en un servidor virtual con Ubuntu 18 y superior
Reconozcámoslo, no va a ser rápido ni fácil. Pero si sigue nuestras instrucciones claramente, no le llevará mucho tiempo ni esfuerzo.
En primer lugar, alquila un VPS basado en Ubuntu 18.04.4 LTS (https://www.hostzealot.com/vps/os-ubuntu ). Es fácil: póngase en contacto con su proveedor de alojamiento y dígale qué plan le interesa. Ellos le ayudarán a encontrar el mejor VPS o VDS para usted individualmente.
A continuación, conéctese al servidor como administrador y actualice los paquetes:
apt update apt full-upgrade
Descubra lo que es la versión del paquete del servidor Dante SOCKS en sus repositorios:
apt search dante-server dante-server/jammy 1.4.2+dfsg-7build4 amd64 SOCKS (v4 and v5) proxy daemon (danted)
Ahora instale Dante:
apt install dante-server
Y pongalo en el arranque automático:
systemctl is-enabled danted enabled
Ahora abra el archivo de configuración /etc/danted.conf en modo de edición y escriba allí los parámetros necesarios. Ejemplo de contenido:
logoutput: syslog stdout /var/log/sockd.log #logoutput: stderr internal: ens3 port = 1080 external: ens3 socksmethod: username #socksmethod: username none user.privileged: root user.unprivileged: nobody user.libwrap: nobody client pass { from: 0.0.0.0/0 to: 0.0.0.0/0 log: error connect disconnect } client block { from: 0.0.0.0/0 to: 0.0.0.0/0 log: connect error } socks pass { from: 0.0.0.0/0 to: 0.0.0.0/0 log: error connect disconnect } socks block { from: 0.0.0.0/0 to: 0.0.0.0/0 log: connect error }
Hay que aclararlo un poco:
- logoutput - define el mecanismo de registro de las conexiones (en nuestro ejemplo, todo pasará por el registro estándar del sistema).
- user.privived - otorga derechos de root al servidor para comprobar los permisos.
- user.uncitationd - necesario para bloquear la ejecución del servidor como un usuario sin privilegios.
- internal - especifica el puerto en el que se ejecuta el servicio, así como las direcciones IP que pueden conectarse.
- external - define la interfaz de red para las conexiones salientes.
Ahora vamos a crear el usuario que utilizará nuestro servidor SOCKS5. Hay que añadirlo al grupo de proxy:
useradd -s /bin/false proxyuser && sudo passwd proxyuser usermod -aG proxy proxyuser
A continuación, en el firewall, permitimos que el puerto TCP 1080 se conecte a los clientes:
sudo ufw allow 1080/tcp
Esto completa la configuración del proxy SOCKS5 en el VPS. Después de eso comprueba la conexión a través de Dante - utiliza algún navegador gratuito antidetección con soporte SOCKS5: por ejemplo, Dolphin Anty o cualquier otro similar.
Instalación del servidor SOCKS Dante en Ubuntu 16.04
En versiones tan antiguas de Ubuntu, la versión por defecto de Dante Server 1.1.19 está desfasada y no funciona con login y password. Es decir, el acceso al proxy se regula únicamente modificando las reglas iptables. Por lo tanto, en primer lugar, tenemos que instalar y configurar el conjunto necesario de software y dependencias:
apt-get install -y autoconf automake libtool pkg-config checkinstall libwrap0 libwrap0-dev libpam0g-dev
A continuación, creamos un directorio para seguir trabajando y nos dirigimos a él:
mkdir dante && cd ~/dante
Ahora ve al sitio oficial de los desarrolladores y descarga la última versión de Dante. También puede hacerlo a través de la línea de comandos:
wget https://www.inet.no/dante/files/dante-1.4.2.tar.gz
Descomprima y navegue hasta el directorio correspondiente:
tar -zxvf dante-1.4.2.tar.gz cd dante-1.4.2
Establezca la configuración del montaje:
./configure --prefix=/etc/dante
Debería terminar con algo así:
Configure status: Client: Enabled Server: Enabled Preloading: Enabled Libwrap: Enabled BSD Auth: Disabled, usable bsd_auth.h not found PAM: Enabled GSSAPI: Not found/disabled KRB5: Not found/disabled SASL: Not found/disabled UPNP: Not found/disabled Compatability: issetugid setproctitle strlcpy strvis Modules: redirect: Not found bandwidth: Not found ldap: Not found
El siguiente paso es compilar las fuentes:
make
Ahora puede instalar el servidor construido. La mejor manera de hacerlo es a través de checkinstall:
checkinstall # Нажмите y, затем Enter для создания каталога с документацией. The package documentation directory ./doc-pak does not exist. Should I create a default set of package docs? [y]: y Preparing package documentation...OK # Описание можно не прописывать, везде жмите Enter Please write a description for the package. End your description with an empty line or EOF. >>
Cuando la instalación haya terminado, se creará un paquete deb (dante_1.4.2-1_amd64.deb), que puede ser instalado en otra máquina virtual en cualquier momento, pero ahora ya no es necesario preconfigurar ni ensamblar.
Si necesita eliminar un paquete instalado, utilice el comando
dpkg -r dante
Cómo configurar la ejecución automática de un servidor
Vaya a /etc/init.d/ y cree un script llamado sockd:
nano /etc/init.d/sockd
Su contenido debería ser el siguiente:
#! /bin/sh ### BEGIN INIT INFO # Provides: sockd # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start the dante SOCKS server. # Description: SOCKS (v4 and v5) proxy server daemon (sockd). # This server allows clients to connect to it and # request proxying of TCP or UDP network traffic # with extensive configuration possibilities. ### END INIT INFO # # dante SOCKS server init.d file. Based on /etc/init.d/skeleton: # Version: @(#)skeleton 1.8 03-Mar-1998 miquels@cistron.nl # Via: https://gitorious.org/dante/pkg-debian PATH=/sbin:/usr/sbin:/bin:/usr/bin NAME=sockd DAEMON=/etc/dante/sbin/$NAME DAEMON_ARGS="-D" PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME DESC="Dante SOCKS daemon" CONFFILE=/etc/$NAME.conf # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.2-14) to ensure that this file is present # and status_of_proc is working. . /lib/lsb/init-functions set -e # This function makes sure that the Dante server can write to the pid-file. touch_pidfile () { if [ -r $CONFFILE ]; then uid="`sed -n -e 's/[[:space:]]//g' -e 's/#.*//' -e '/^user\.privileged/{s/[^:]*://p;q;}' $CONFFILE`" if [ -n "$uid" ]; then touch $PIDFILE chown $uid $PIDFILE fi fi } case "$1" in start) if ! egrep -cve '^ *(#|$)' \ -e '^(logoutput|user\.((not)?privileged|libwrap)):' \ $CONFFILE > /dev/null then echo "Not starting $DESC: not configured." exit 0 fi echo -n "Starting $DESC: " touch_pidfile start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ $DAEMON_ARGS \ || return 2 echo "$NAME." ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON [ "$?" = 2 ] && return 2 echo "$NAME." ;; reload|force-reload) # # If the daemon can reload its config files on the fly # for example by sending it SIGHUP, do it here. # # Make this a do-nothing entry, if the daemon responds to changes in its config file # directly anyway. # echo "Reloading $DESC configuration files." start-stop-daemon --stop --signal 1 --quiet --pidfile \ $PIDFILE --exec $DAEMON -- -D ;; restart) # # If the "reload" option is implemented, move the "force-reload" # option to the "reload" entry above. If not, "force-reload" is # just the same as "restart". # echo -n "Restarting $DESC: " start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON sleep 1 touch_pidfile start-stop-daemon --start --quiet --pidfile $PIDFILE \ --exec $DAEMON -- -D echo "$NAME." ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; *) N=/etc/init.d/$NAME # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $N {start|stop|restart|status|force-reload}" >&2 exit 1 ;; esac exit 0
Guarde los cambios y no olvide hacer que este script sea ejecutable:
chmod +x /etc/init.d/sockd
Recarga todos los demons:
systemctl daemon-reload
Y puede añadir sockd a la ejecución automática:
systemctl enable sockd systemctl start sockd
Y por último, comprueba todo:
systemctl status sockd
A partir de ahora puede gestionar el servidor proxy SOCKS con los comandos estándar de systemctl.
Conclusión
Por supuesto, los métodos descritos no son los más fáciles de llevar a cabo, aquí se necesita cierta comprensión de los principios de las utilidades y protocolos descritos. Como alternativa, puedes utilizar una VPN de pago: le ahorrará muchos dolores de cabeza y le permitirá eludir los bloqueos regionales de forma segura, manteniendo el anonimato y la privacidad totales.