Настраиваем Proxy server для HTTP, HTTPS, SOCKS5

Main

Оценка: 97.56% - 9 Голосов

Общая

В данном материале рассматривается настройка Proxy-сервера в Debian 9 с использованием Squid3 и Dante-server и авторизацией по учетным данным из созданного файла.

Сожержание:

Настройка Squid

Создание учетных записей для авторизации

Настройка Dante-server

 

Установка необходимых пакетов.


apt install whois libpam-pwdfile squid3 dante-server

 

Настройка Squid3.


mv /etc/squid/squid.conf /etc/squid/squid.conf.bak
nano /etc/squid/squid.conf

Добавим в файл:


# Enabling basic authentication
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/proxyuser
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
#
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
#
# Defining Access Control List (ACL) rule set for local IPs
acl localnet src 0.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
#
# Defining ACL SSL port
acl SSL_ports port 443
#
# Defining some other commonly used ports as Safe ports
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl ACL_torrent_dst_ports port 1024-65535
acl ACL_torrent_dst_ports port 80
#
acl CONNECT method CONNECT
#
# Denying connection which are not to localnet, Safe ports or SSL port
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access allow all
http_access allow CONNECT ACL_torrent_dst_ports
#
# Setting Squid port
http_port 55555 #Порт для подключения - укажите нужный.
#
via off
forwarded_for off
#
# These request headers make Proxy connection transparent
request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all
#
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320

 

Создаем файл с учетными записями

Строка с данными пользователя должна быть вида SomeUserName:PasswordHash. Каждая строка файла должна содержать данные одного пользователя.

Создаем хэш пароля при помощи mkpasswd:


mkpasswd --method=md5 ПАРОЛЬ

Полученый хэш добавим к желаемому логину в файле /etc/proxyuser:


nano /etc/proxyuser

Добавим в файл:


SomeUserName:PasswordHash

Натсройка Dante-server


nano /etc/danted.conf

Добавим в файл:


errorlog: /var/log/dantederr.log
logoutput: /var/log/danted.log
#
#Настраиваем адреса и порт для подключения
internal: IP-адрес Сервера port = 55556
external: IP-адрес Сервера
#
socksmethod: pam.username
user.privileged: root
user.unprivileged: nobody
user.libwrap: nobody
#
client pass {
from: 0/0 to: 0/0
log: error
}
#
socks pass {
from: 0/0 to: 0/0
command: bind connect udpassociate bindreply udpreply
protocol: tcp udp
log: error
}

Создаем файл /etc/pam.d/sockd для настройки метода авторизации по учетным записям, перечисленным в выше созданном файле.


nano /etc/pam.d/sockd

Добавим в файл:


auth required pam_pwdfile.so pwdfile /etc/proxyuser
account required pam_permit.so

 

Перезапускаем сервисы.


service danted restart
service squid restart

 

Проверка работы служб:

Проверяем слушают ли службы указанные нами порты:


ss -nptl

View the embedded image gallery online at:
https://itcrowd.top/proxyserver#sigProIdd4442684a9

Проверка работы dante-server


service danted status

View the embedded image gallery online at:
https://itcrowd.top/proxyserver#sigProIdc476fe2844

Проверка самого SOCKS соединения при помощи команды


curl -v -x socks5://UserName:"ВашпПароль"@IP-Адрес_Сервера:порт https://1.1.1.1/

После выполнения команды должен отобразится html-код страницы.

  • Просмотров: 16780
Комментарии   
0 #1 qwerty 21.01.2022 10:15
В инструкции есть несколько ошибок:

1) в debian11 danted не может писать в папку /var/log т.к. в service файле к некоторым директориям разрешен доступ только на чтение
можно либо снять ограничение, либо если логов немного, то пусть пишет по default:
logoutput: syslog stdout /var/log/sockd.log
logoutput: stderr

2) auth_param basic casesensitive off
Если этот параметр off, Если Вы допустим создали пользователя Petya, то он не сможет залогиниться с таким именем )))
Мне кажется, правильнее и понятнее всё таки:
auth_param basic casesensitive on
Цитировать
0 #2 admin 23.01.2022 08:15
Цитирую qwerty:
В инструкции есть несколько ошибок:

1) в debian11 danted не может писать в папку /var/log т.к. в service файле к некоторым директориям разрешен доступ только на чтение
можно либо снять ограничение, либо если логов немного, то пусть пишет по default:
logoutput: syslog stdout /var/log/sockd.log
logoutput: stderr

2) auth_param basic casesensitive off
Если этот параметр off, Если Вы допустим создали пользователя Petya, то он не сможет залогиниться с таким именем )))
Мне кажется, правильнее и понятнее всё таки:
auth_param basic casesensitive on

Инструкция написана для Debian 9 и конечно-же в Debian 11 могут быть какие-то дополнительные нюансы. Уже довольно хорошо, что в целом все подходит, а указанные моменты не критичны.
Цитировать
Добавить комментарий