Feb 09 2006

SOCKS5 Proxy

Acest document este o prezentare a instalarii unui server proxy SOCKS5 pentru Linux

Nu garantez acuratetea sau corectitudinea informatiilor prezentate. Ceea ce prezint este practic logul instalarii acestui serviciu pe sistemul propriu. Nu raspund in nici un fel de daunele pe care le poate produce aceasta instalare pe sistemul tau, utilizarea acestor informatii se face pe propria raspundere !

Pentru comentarii, intrebari sau sugestii, email support@redhog.ro

Configurare

Ca sistem de operare rulez RedHat Linux 7.3. Daca sistemul tau este configurat similar cu al meu, poti face copy&paste la comenzile din exemplu. Altfel incearca sa adaptezi comenzile din exemplu la propriul sistem.

Instalare SOCKS5

In aceasta sectiune voi prezenta pasii pentru download si compilare SOCKS5.

Obtinerea pachetului SOCKS5

O solutie ar fi pagina SOCKS Proxy Protocol si Download socks5 link. Dupa completarea formularului, vor trimite socks5-v1.0r8.tgz (sau orice ala ultima versiune).

O alta posbilitate este acest link socks5-v1.0r11.tar.gz. Dar este pe propriul risc

In general tin sursele in /usr/local/src/, deci propun acest director pentru kitul de instalare

Compilare SOCKS5

1. Extragerea fisierelor:

cd /usr/local/src
tar -zxf tar/socks5-v1.0r8.tgz

Aceasta va crea un director /usr/local/src/socks5-v1.0r8 cu toate fisierele sursa in el. In acest punct, trebuie sa citesti INSTALL si README din director.

Si acum sa incepem compilarea :

cd /usr/local/src/socks5-v1.0r8
./configure --with-threads
make
make install > socks5.log

Daca nu sunt erori (si nu ar trebui sa fie daca Linuxul este configurat corect) pachetul a fost instalat si configurat corect.

Configurare SOCKS5

In acest moment SOCKS5 este instalat, trebuie doar configurat inainte de a-l utiliza.

Premize

Inainte de a crea fisierul de configurare, iata scopul pentru care am instalat SOCKS5 proxy:

Linuxul meu este firewall/gateway pentru reteaua interna. Deoarece am doar o singura adresa IP rutabila, pentru reteau interna folosesc IP masquerading. Deci scopul simplu este:
- SOCKS5 proxy server pe Linux
- proxy pentru LAN-ul intern
- nu am nevoie de autentificare user/password

/etc/socks5.conf

Acesta este fisierul de configurare /etc/socks5.conf, suficient pentru scopul meu

# /etc/socks5.conf
set SOCKS5_MAXCHILD 3
set SOCKS5_NOIDENT
set SOCKS5_TIMEOUT 5
interface 192.168.1. - eth1
auth 192.168.1. - -
permit - - 192.168.1. - - - -
deny - - - - - - -
# end of file

Simplu :)

Liniile precedate de # sunt comentarii. - este wildcard.

set SOCKS5_MAXCHILD 3
Numarul maxim de procese child. Implicit este 64, care este cu mult mai mult decat necesar, deci 3. :P )
set SOCKS5_NOIDENT
Nu verifica IDENT-ul pentru clienti (pentru a grabi lucrurile)
set SOCKS5_TIMEOUT 5
Timeout dupa 5 minute de inactivitate. Cand primeste timeout, conexiunea se inchide.
interface 192.168.1. – eth1
Permite toate conexiunile de pe 192.168.1.* (LAN intern) de pe orice port pe interfata eth1. Aceasta interfata primeste cererile de proxy.
auth 192.168.1. – -
Permite toate cererile de proxy de la 192.168.0.*, pe orice port pentru orice user.
permit – - 192.168.1.* – - – -
Permite oricarui user din 192.168.1.* sa trimita orice tip de comanda de pe orice port la orice combinatie destinatie:port.
deny – - – - – - -
Neaga orice nu este permis in mod explicit

Pentru mai multe detalii despre aceste optiuni consulta socks5.conf man pages man socks5.conf. Exemple de configuratii in examples\

Pornirea socks5

Sa testam daca merge :

/usr/local/bin/socks5 -f -s

porneste socks5 in foreground, toate mesajele se afiseaza pe ecran. Ar trebui sa apara cam asa :

18210: Socks5 starting at Mon Dec 14 18:23:45 1998 in normal mode

Daca apare este perfect, marge ! Acum il oprim si il pornim cum trebuie :

killall socks5
/usr/local/bin/socks5 -t -s 2>> /var/log/socks5.log

Acum ruleaza. Aceasta comanda poate fi pusa in /etc/rc.local Personal eu recomand urmatorul script in /etc/init.d/socks5 cu chmod 700 si cu link in directorul /etc/rc.d/rcX.d corespunzator nivelului pe care ruleaza linuxul :) )

#!/bin/bash
#
# chkconfig: 345 86 24
# description: This script takes care of starting and stopping socks5.
#
# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -f /usr/local/bin/socks5 ] || exit 0

# See how we were called.

case "$1" in
  start)
        # Start daemons.
        echo -n "Starting socks5: "
        if [ $(ps -defa | grep ^ftp| wc -l) -gt 0 ]; then
                failure $"SOCKS5 startup"
                echo  $"SOCKS5: already running"
                return 1
        fi
        /usr/local/bin/socks5 -t -s 2>>/var/log/socks5.log
        RETVAL=$?
        [ $RETVAL -ne 0 ] && failure $"SOCKS5 startup"
        [ $RETVAL -eq 0 ] && success $"SOCKS5 startup"
        echo
        ;;
  stop)
        # Stop daemons.
        echo  -n "Shutting down socks5: "
        killall -9 /usr/local/bin/socks5
        RETVAL=$?
        [ $RETVAL -eq 0 ] && success $"SOCKS5 stop"
        [ $RETVAL -ne 0 ] && failure $"SOCKS5 stop"
        echo
        ;;
  restart|reload)
        $0 stop
        $0 start
        ;;
  status)
        status socks5
        ;;
  *)
        echo "Usage: socks5 {start|stop|status|restart|reload}"
        exit 1
esac
exit 0
#### end of code

Comentarii