Как установить и настроить прокси-сервер Dante Socks5 в Debian / Ubuntu
Введение
В этом руководстве объясняется, как установить и настроить Dante Socks5 Proxy в Debian / Ubuntu. Перед началом установки вы должны выполнить следующие условия:Предпосылки
- Сервер с операционной системой Linux:
- Debian 9
- Ubuntu 18.04
- Корневой доступ
- SSH Инструменты
- Замазка для Windows
- OpenSSH в Linux / macOS (доступно по умолчанию)
Шаг 1 - Установите Dante
Шаг 1.1 - установка из APT
apt update
// Debian 9
apt install dante-server
// Ubuntu 18.04
apt install dante-server
Проверьте версию Dante:
// Debian 9
root@your_host:~# danted -v
Dante v1.4.1
// Ubuntu 18.04
root@your_host:~# danted -v
Dante v1.4.2
Шаг 1.2 - Установка из источника (необязательно)
Если вы хотите установить последнюю версию, следуйте инструкциям ниже. Обязательно удалите dante, если он уже установлен.В этом уроке мы используем Dante версии 1.4.2 (страницы загрузки)
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
root@your_host:~# /usr/sbin/sockd -v
Dante v1.4.2
nano /etc/init.d/danted
#! /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
chmod +x /etc/init.d/danted
update-rc.d danted defaults
systemctl status danted
systemctl start danted
systemctl stop danted
// Automatic Start Danted After Reboot
systemctl enable danted
Шаг 2 - Настройте Данте
Шаг 2.1 - Интернет-интерфейс
Мы должны проверить интерфейс сервера, в приведенном ниже примере сервер используетeth0
интерфейс.root@your_host:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:50:56:06:d1:d0 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.1/24 brd 10.0.0.1 scope global eth0
valid_lft forever preferred_lft forever
Шаг 2.2 - Настройка Dante
Прежде чем мы изменим конфигурацию, мы должны сделать резервную копию файла конфигурации, потому что в файле конфигурации есть информация о функциях каждой строки конфигурации.mv /etc/danted.conf /etc/danted.conf.bak
nano /etc/danted.conf
logoutput: /var/log/socks.log
internal: eth0 port = 1080
external: eth0
clientmethod: none
socksmethod: none
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
log: error connect disconnect
}
socks block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}
- Если ваш сервер не использует интерфейс eth0, измените его в разделе
internal
иexternal
. - Если вы используете общедоступный Wi-Fi, и оказывается, что нестандартный порт заблокирован, вы можете заменить его на другой порт, например
53
или443
, или изменить егоport = 1080
на желаемый порт.
systemctl start danted
systemctl status danted
Шаг 2.3 - Тест Dante Socks5
curl -x socks5://<your_ip_server>:<your_danted_port> ifconfig.co
root@your_host:~# curl -x socks5://10.0.0.1:1080 ifconfig.co
10.0.0.1
/var/log/socks.log
Шаг 3 - Ограничить доступ
Шаг 3.1 - Ограничение по имени пользователя
Вы можете ограничить доступ к вашему прокси-серверу, используя имя пользователя и пароль.Отредактируйте Danted Configuration
/etc/danted.conf
и измените этот раздел:# socksmethod: none // for non-authentication
socksmethod: username
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: bind connect udpassociate
log: error connect disconnect
socksmethod: username
}
systemctl restart danted
.Чтобы создать пользователя и пароль, используйте следующую команду:
useradd holu -r
passwd holu
curl -x socks5://<your_username>:<your_password>@<your_ip_server>:<your_danted_port> ifconfig.co
- С именем пользователя и паролем:
root@your_host:~# curl -x socks5://holu:2M6GTPkKubsrED5F@10.0.0.1:1080 ifconfig.co 10.0.0.1
- Без имени пользователя и пароля:
root@your_host:~# curl -x socks5://10.0.0.1:1080 ifconfig.co curl: (7) No authentication method was acceptable. (It is quite likely that the SOCKS5 server wanted a username/password, since none was supplied to the server on this connection.)
You can check the login for success or failure on your proxy server with the command `tail -10 /var/log/socks.log`
Example output of the command:
```bash
root@your_host:~# tail -10 /var/log/socks.log
Apr 19 12:15:16 (1555701316.599506) danted[1477]: info: pass(1): tcp/accept [: 203.0.113.1.36730 10.0.0.1.1080
Apr 19 12:15:16 (1555701316.625405) danted[1479]: info: pass(1): tcp/connect [: username%holu@203.0.113.1.36730 10.0.0.1.1080 -> 10.0.0.1.36730 104.28.19.94.80
Apr 19 12:15:16 (1555701316.808180) danted[1479]: info: pass(1): tcp/connect ]: 363 -> username%holu@203.0.113.1.36730 10.0.0.1.1080 -> 75, 75 -> 10.0.0.1.36730 104.28.19.94.80 -> 363: local client closed. Session duration: 0s
Apr 19 12:15:16 (1555701316.808231) danted[1479]: info: pass(1): tcp/accept ]: 363 -> 203.0.113.1.36730 10.0.0.1.1080 -> 75: local client closed. Session duration: 0s
Apr 19 12:15:20 (1555701320.794622) danted[1596]: info: pass(1): tcp/accept [: 203.0.113.1.36732 10.0.0.1.1080
Apr 19 12:15:20 (1555701320.796002) danted[1596]: info: block(1): tcp/accept ]: 203.0.113.1.36732 10.0.0.1.1080: error after reading 4 bytes in 0 seconds: client offered no acceptable authentication method
Шаг 3.2 - Ограничение по IP-адресу
В предыдущей конфигурации мы предоставили открытый доступ ко всем IP-адресам для подключения к нашему прокси-серверу. На этом этапе мы ограничим доступ только одним или несколькими IP-адресами.Отредактируйте Danted Configuration
/etc/danted.conf
и измените этот раздел:client pass {
from: 203.0.113.1/32 to: 0.0.0.0/0
log: error connect disconnect
}
203.0.113.1/32
это единственный IP-адрес, который вы хотите разрешить доступ к вашему прокси-серверу.
client pass {
from: 203.0.113.1/32 to: 0.0.0.0/0
log: error connect disconnect
}
client pass {
from: 198.51.100.1/32 to: 0.0.0.0/0
log: error connect disconnect
}
systemctl restart danted
.Если вы хотите предоставить доступ к диапазону или блоку IP-адресов, измените косую черту за IP-адресом на свой IP-блок.
Используйте следующую команду для проверки входа на прокси-сервер с незарегистрированным IP:
- Если вы используете аутентификацию по имени пользователя и паролю
root@your_host:~# curl -x socks5://holu:2M6GTPkKubsrED5F@10.0.0.1:1080 ifconfig.co curl: (7) Unable to receive initial SOCKS5 response.
* If you are not using username and password authentication
```bash
root@your_host:~# curl -x socks5://10.0.0.1:1080 ifconfig.co
curl: (7) Unable to receive initial SOCKS5 response.
Комментариев 1