Socks5 Proxy 서버 구축하기
Socks5 Proxy 서버 구축하기
작성자 : 서진우
작성일 : 2019년 6월 17일
기존 SSH Tunneling 으로 Reverse Proxy 연결 방식을 많이 사용하여 내부 네트워크 환경에
접속하는 경우가 종종 있었다. 하지만 tunneling 방식으론 특정 서버의 특정 Port 연결에 적합하여
여러 서버로 구성된 클러스터 시스템을 대상으로 모든 이용하기엔 부적합한 부분이 많았다.
보통 이런 경우 VPN 구성을 하는게 일반적인데, VPN 방식이 다소 복잡하거나 추가 비용이 들 경우
간단히 socks proxy 를 구성하여 Private network 환경의 클러스터 시스템에 접근 가능토록 할 수 있다.
socks proxy 를 구성하는 방법은 다양하지만, 서비스 형태로 운영이 가능한 ss5 로 구성하는 방법에
대해 소개해 본다.
우선 다운로드 하여 설치 한다.
# wget http://sourceforge.net/projects/ss5/files/ss5/3.8.9-8/ss5-3.8.9-8.src.rpm
# rpm -ivh ss5-3.8.9-8.src.rpm
# yum install pam-devel libgssapi-devel
# cd rpmbuild/SPECS
# rpmbuild -bb ss5.spec
# cd ../RPMS/x86_64
# rpm -ivh ss5-3.8.9-8.x86_64.rpm
# cd /etc/opt/ss5
# cp ss5.passwd ss5.passwd.org
# cp ss5.conf ss5.conf.org
설정한다.
# vi ss5.conf
———————————————————————————
.
#auth 0.0.0.0/0 – –
#permit – 192.168.xx.xx/32 – 0.0.0.0/0 – – – – –
#permit – 172.25.xx.yy/32 – 0.0.0.0/0 – – – – –
# 모든 접근 대상 서버에서 내부 서버로 연결
auth 0.0.0.0/0 – –
permit – 0.0.0.0/0 – 0.0.0.0/0 – – – – –
# 아래 계정 인증을 통해 내부의 192.168.201.x 대역으로만 연결..
auth 0.0.0.0/0 – u
permit u 0.0.0.0/0 – 192.168.201.0/24 – – – – –
———————————————————————————
아래 ss5.passwd 파일에 proxy 인증 계정 정보를 추가한다.
# vi ss5.passwd
user password
root 계정만 확인 가능하도록 한다.
chown root. ss5.passwd
chmod 700 ss5.passwd
start init scripts 설정
vi /etc/sysconfig/ss5
# Add startup option here
SS5_OPTS=” -u root -b 0.0.0.0:<proxy_port>”
socks proxy 데몬 시작
# /etc/rc.d/init.d/ss5 start
수동으로 시작하고자 할 경우에는
# ss5 -u root -b 0.0.0.0:<proxy_port>
이제 외부 PC 에서 proxy 설정을 한다.
일반적으로 인터넷 옵션 에서 “연결” -> “LAN 설정” -> 고급 -> Socks 설정에 Proxy 서버 IP 와 Port 를
입력하면 된다.
외부 리눅스 PC 에서 내부 네트워크 서버에 ssh 접근을 하기 위해서는 아래와 같이 접속할 수 있다.
ssh -o ProxyCommand=’nc –proxy-type socks5 –proxy <proxy_server_ip>:<port> %h %p’ alang@192.168.201.11
proxy 연결을 위해 인증 계정이 필요한 경우는 아래와 같이 적용한다.
ssh -o ProxyCommand=’nc –proxy-type socks5 –proxy-auth user:password –proxy <proxy_server_ip>:<port> %h %p’ alang@192.168.201.11
윈도우 PC 에서는 SSH 접속 시에는 Putty 에서 Connection -> Proxy 부분에서 아래와 같이 proxy 서버 정보를 입력 후 내부 서버로 SSH
접속을 하면 된다.
이밖에 socks proxy 를 이용하기 위해서는 각 프로그램마다 socks proxy 설정이 가능해야 한다.
만일 별도의 socks proxy 설정 기능이 없고, 매번 프로그램 마다 설정하는게 번거로울 경우 ..
외부 PC 와 Proxy 서버간 모든 네트워크 트래픽을 연결 시켜주는 프로그램을 이용할 수 있다.
외부 PC 가 Linux 환경일 경우 tsocks 프로그램을 사용한다.
# wget http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
# rpm -Uvh tsocks-1.8-7.beta5.2.el7.rf.x86_64.rpm –nodeps
# vi /etc/tsocks.conf
local = <proxy_server_ip>/255.255.255.255
server = <proxy_server_ip>
server_port = <port>
server_type = 5
default_user = proxy_user_id
default_pass = proxy_user_password
# /etc/rc.d/init.d/tsocksify restart
이제 부터 모든 네트워크 연결은 proxy 서버를 통해 이루어진다. 당연히 허용된 모든 내부 서버의 모든 port 접근이 가능하다.
# ssh root@192.168.xxx.xxx
외부 PC 가 윈도우일 경우에는 proxifier 같은 프로그램을 이용한다. (30일 free)
웹, 터미널, VNC, RDP, RGS 등등..다 접속이 된다.
Windows Socks Proxy Client (Free version) : Proxycap
Proxycap 은 무료버전이다. 설치 및 이용을 위해서는 PC 계정이 administrators 그룹에 포함되어 있어야 한다.
우선 Ruleset>proxies 에서 아래와 같이 proxy 서버 설정을 입력한다.
Ruleset>Rules 에서 ..아래와 같이 설정을 한다. 그럼..해당 PC 에서 모든 네트워크 트래픽이
Proxy 서버를 통해 전달이 된다. 해당 Proxy 서버와 내부 서버간 네트워크 접근 정책이 외부 PC에서도
그대로 적용된다.
참고)
- Windows 10 의 Edge 브라우저의 경우 별도로 브라우저 고급 설정에서 proxy 설정을 해줘야 함.
- Proxycap 의 경우 상용 버전은 proxifier 에 비해 성능이 다소 떨어짐 (네트워크 속도)