четверг, 7 апреля 2016 г.

Установка SOCKS5 прокси SS5 на CentOS 7


1. Подготовим каталог:
# mkdir /opt/ss5
# cd /opt/ss5

2. Скачаем SS5:
wget http://sourceforge.net/projects/ss5/files/ss5/3.8.9-8/ss5-3.8.9-8.src.rpm
wget http://sourceforge.net/projects/ss5/files/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz

3. Установим зависимости:
# yum groupinstall 'Development Tools'
# yum install gcc automake autoconf libtool make pam-devel yum-utils openldap-devel openssl-devel



4. Проверим все ли зависимости установлены:
# yum-builddep ss5-3.8.9-8.src.rpm

5. Распаковываем исходники SS5 и устанавливаем:
# tar xvfz ss5-3.8.9-8.tar.gz
# cd ss5-3.8.9
# ./configure
# make
# make install
# cd /etc/opt/ss5/

5. Сделаем бекап конфигов:
# cp ss5.passwd ss5.passwd.bak
# cp ss5.conf ss5.conf.bak

6. Настройка SS5:
# vim ss5.conf

Несколько примеров настройки:
1) Разрешить без аутентификации доступ к socks-серверу в мир только со следующих адресов:
auth 0.0.0.0/0 - -
permit - 192.168.XXX.YYY/32 - 0.0.0.0/0 - - - - -
permit - 10.10.XXX.YYY/32 - 0.0.0.0/0 - - - - -

2) Разрешить без аутентификации доступ с socks-сервера в мир со всех адресов (открытый прокси):
auth 0.0.0.0/0 - -
permit - 0.0.0.0/0 - 0.0.0.0/0 - - - - -

3) Разрешить доступ только с аутентификацией, например, пользователю user с паролем password доступ с socks-сервера в мир
auth 0.0.0.0/0 - u
permit u 0.0.0.0/0 - 0.0.0.0/0 - - - - -

И надо добавить самого юзера и пароль:
# vim ss5.passwd
user password

7. Запуск SS5-сервера и проверка запущен ли он:
# ss5 -u root -b 0.0.0.0:1080
# netstat -tulpan | grep ss5
tcp        0      0 0.0.0.0:1080            0.0.0.0:*               LISTEN      33026/ss5
# ps auxfww | grep ss5 | grep -v grep 
root      33026  0.0  0.2 103324  2128 ?        S    03:21   0:00 ss5 -u root -b 0.0.0.0:1080

Лог работы SS5:
# tail -f /var/log/ss5/ss5.log

8. Настройка ротации лога:
# cat /etc/logrotate.d/ss5
/var/log/ss5/ss5.log {
daily
rotate 3
dateext
compress
missingok
notifempty
copytruncate
}

9. Настройка iptables:
Создадим новый чейн:
# iptables -N socks
# iptables -A INPUT -p tcp --dport 1080 -j socks
# iptables -A socks -j LOG --log-prefix "input socks: "

Если мы настраиваем SS5 для доступа только от отдельных IP-адресов, то пишем:
# iptables -A socks -s 192.168.XXX.YYY -j ACCEPT
# iptables -A socks -s 10.10.XXX.YYY -j ACCEPT

И на всякий случай, остальное дропаем:
# iptables -A socks -j DROP

Теперь, давайте проверим с другого сервера выполнить запрос через SS5 Proxy:
# curl --socks5 IP.IP.IP.IP:1080 --proxy-user user:password http://ipinfo.io/ip
IP.IP.IP.IP

В логе увидим /var/log/ss5/ss5.log:
[07/Apr/2016:04:25:13 EDT] [44792] sourc_IP user "CONNECT" STARTED 0 0 0 (source_IP:46794 -> dest_IP:80)
[07/Apr/2016:04:25:14 EDT] [44792] source_IP user "CONNECT" TERMINATED 245 75 2 (source_IP:46794 -> dest_IP:80)

В логе iptables /var/log/messages:
Apr  7 03:40:21 DS823087 kernel: input socks: IN=eth0 OUT= MAC=00:16:3e:1b:f6:c2:00:24:14:4a:a5:80:08:00 SRC=client_IP DST=server_IP LEN=52 TOS=0x00 PREC=0x00 TTL=55 ID=14809 DF PROTO=TCP SPT=28080 DPT=1080 WINDOW=58 RES=0x00 ACK FIN URGP=0 
Apr  7 03:40:21 DS823087 kernel: input socks: IN=eth0 OUT= MAC=00:16:3e:1b:f6:c2:00:24:14:4a:a5:80:08:00 SRC=client_IP DST=server_IP LEN=40 TOS=0x08 PREC=0x00 TTL=55 ID=22507 DF PROTO=TCP SPT=28080 DPT=1080 WINDOW=0 RES=0x00 RST URGP=0 

1 комментарий:

  1. Добрый день,настроил прокси по вашей статье. Но что то не получается организовать хождение через него.
    при попытке приложения яндекс диска синхронизироваться в лог сыпятся сообщения типа:
    tail -f /var/log/ss5/ss5.log
    [12/Jul/2016:16:37:57 MSK] [14884] 192.168.XX.YY "" "CONNECT" STARTED 0 0 0 (192.168.XX.YY:64033 -> 87.250.251.53:443)
    [12/Jul/2016:16:37:58 MSK] [14884] 192.168.XX.YY "" "CONNECT" TERMINATED 5489 832 1 (192.168.XX.YY:64033 -> 87.250.251.53:443)
    [12/Jul/2016:16:38:00 MSK] [14889] 192.168.XX.YY "" "CONNECT" STARTED 0 0 0 (192.168.XX.YY:64035 -> 87.250.251.53:443)
    [12/Jul/2016:16:38:00 MSK] [14889] 192.168.XX.YY "" "CONNECT" TERMINATED 4941 893 0 (192.168.XX.YY:64035 -> 87.250.251.53:443)
    [12/Jul/2016:16:38:00 MSK] [14890] 192.168.XX.YY "" "CONNECT" STARTED 0 0 0 (192.168.XX.YY:64036 -> 87.250.251.53:443)
    [12/Jul/2016:16:38:01 MSK] [14890] 192.168.XX.YY "" "CONNECT" TERMINATED 5489 832 1 (192.168.XX.YY:64036 -> 87.250.251.53:443)


    прокси настраивал для начала простой без авторизаций в iptables добавил правила следующего вида:
    iptables -N socks
    iptables -A INPUT -p tcp --dport 1080 -j socks
    iptables -A socks -s 192.168.XX.YY -j ACCEPT
    iptables -A socks -j LOG --log-prefix "input socks: "
    iptables -A socks -j DROP

    так же есть сообщения и в журнале messages
    Jul 12 18:27:16 localhost kernel: input socks: IN=enp2s0 OUT= MAC=9c:d6:43:63:83:f1:44:03:a7:37:6a:3a:08:00 SRC=192.168.XX.YY DST=192.168.pp.pp LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=13437 DF PROTO=TCP SPT=49405 DPT=1080 WINDOW=8192 RES=0x00 SYN URGP=0
    Jul 12 22:26:53 localhost kernel: input socks: IN=enp2s0 OUT= MAC=9c:d6:43:63:83:f1:44:03:a7:37:6a:3a:08:00 SRC=192.168.XX.YY DST=192.168.pp.pp LEN=52 TOS=0x00 PREC=0x00 TTL=127 ID=15356 DF PROTO=TCP SPT=49519 DPT=1080 WINDOW=8192 RES=0x00 SYN URGP=0
    Jul 12 22:26:56 localhost kernel: input socks: IN=enp2s0 OUT= MAC=9c:d6:43:63:83:f1:44:03:a7:37:6a:3a:08:00 SRC=192.168.XX.YY DST=192.168.pp.pp LEN=52 TOS=0x00 PREC=0x00 TTL=127 ID=15363 DF PROTO=TCP SPT=49519 DPT=1080 WINDOW=8192 RES=0x00 SYN URGP=0
    Jul 12 22:27:02 localhost kernel: input socks: IN=enp2s0 OUT= MAC=9c:d6:43:63:83:f1:44:03:a7:37:6a:3a:08:00 SRC=192.168.XX.YY DST=192.168.pp.pp LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=15364 DF PROTO=TCP SPT=49519 DPT=1080 WINDOW=8192 RES=0x00 SYN URGP=0


    на машине стоит еще squid правда на порте с номером 8080. (не где не могу нагуглить правильную настройку работы двух этих зверей в паре.)

    ОтветитьУдалить