Debian 9 Üzerine SOCKS5 Proxy Kurulumu

Dante SOCKS5 proxy aracının Debian 9 işletim sistemi üzerine nasıl kurulup yapılandırılacağını anlatacağım, çok basit bir şekilde istediğiniz sunucu üzerinden proxy çıkışı yapabileceksiniz. Kişiye özel hesap tanımlama imkanınız ve ip kısıtlaması gibi özellikleri de var.

Sisteme gerekli olan dante paketini dahil ediyoruz. Repoda güncel sürümü bulunmadığı için derlememiz daha iyi olacak ancak fark etmez bana diyenler olursa apt install dante-server ile kurulumu yapabilirler

apt update
apt install build-essential gcc make
wget http://www.inet.no/dante/files/dante-1.4.2.tar.gz
tar -xvf dante-1.4.2.tar.gz
cd dante-1.4.2
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-client --without-libwrap --without-bsdauth --without-gssapi --without-krb5 --without-upnp --without-pam
make
make install

Ardından servisini oluşturmamız gerekiyor bunun için nano /etc/init.d/danted de düzenleme yapacağız.

#! /bin/sh
### BEGIN INIT INFO
# Provides:          danted
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: SOCKS (v4 and v5) proxy daemon (danted)
# Description:       Starts or stops the Dante SOCKS proxy daemon.
#                    Its configuration is stored in the /etc/danted.conf file;
#                    see the danted.conf(5) manual page for details.
### 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

. /lib/lsb/init-functions

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/sockd
NAME=danted
DESC="Dante SOCKS daemon"
PIDFILE=/var/run/$NAME.pid
CONFFILE=/etc/$NAME.conf

test -f $DAEMON || exit 0

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 --oknodo --pidfile $PIDFILE \
        --exec $DAEMON -- -D
    echo "$NAME."
    ;;
  stop)
    echo -n "Stopping $DESC: "
    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE \
        --exec $DAEMON
    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.
    #
    #   If the daemon responds to changes in its config file
    #   directly anyway, make this a do-nothing entry.
    #
     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)
    if ! egrep -cve '^ *(#|$)' \
        -e '^(logoutput|user\.((not)?privileged|libwrap)):' \
        $CONFFILE > /dev/null
    then
        configured=''
    else
        configured='1'
    fi
    if start-stop-daemon --status --quiet --pidfile $PIDFILE \
      --exec $DAEMON; then
        if [ -n "$configured" ]; then
            echo "$DESC running"
        else
            echo "$DESC running, yet not configured?!"
        fi
    else
        if [ -n "$configured" ]; then
            echo "$DESC not running"
        else
            echo "$DESC not configured"
        fi
    fi
    ;;
  *)
    N=/etc/init.d/$NAME
    # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
    echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
    exit 1
    ;;
esac

exit 0

Danted uygulamasına erişim tanımlıyoruz.

chmod +x /etc/init.d/danted
update-rc.d danted defaults

Artık aşağıdaki servis komutlarını kullanabiliriz

systemctl status danted
systemctl start danted
systemctl stop danted

Kendi yapılandırmamızı yapacağımız için eski dosyayı yedekleyelim, ne olur ne olmaz bir yerde tekrar işimiz düşer google’da arama yaparak vakit kaybetmeyelim.

mv /etc/danted.conf /etc/danted.conf.bak

Yapılandırma dosyamızı nano /etc/danted.conf ile açalım ve aşağıdaki satırları ekleyelim.

logoutput: /var/log/socks.log
internal: eth0 port = 1080
external: eth0
clientmethod: none
socksmethod: username
user.privileged: root
user.notprivileged: 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
        command: bind connect udpassociate
        log: error connect disconnect
        socksmethod: username
}

socks block {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: connect error
}

Yapılandırmanın geçerli olabilmesi için servisi yeniden başlatalım.

systemctl restart danted

Şimdi sistemde var olan bir kullanıcı ile giriş yapılma imkanı var, tabii root kullanıcı ile giriş hoş olmaz bu sebeple yeni bir kullanıcı oluşturalım ve parola belirleyelim.

useradd mertcan -r
passwd mertcan

Ardından herhangi bir proxy aracı ile bağlantı sağlayıp kullanabilirsiniz.

Sistem Uzmanı, Linux Hacısı, El-Kernel

Yorum yapın