Задача:
Разрешить доступ по FTP
1) для определенного юзера
2) в обход вышестоящего прокси
Всем остальным разрешить только Safe_portsКонфиг:
snmp_port 0
icp_port 0
htcp_port 0
half_closed_clients off
client_lifetime 1 hours
pconn_timeout 120 seconds
http_port 3128
cache_peer 127.0.0.1 parent 8088 0 no-query no-digest default connect-timeout=120
ftp_user anonymous@host.ru
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl user1 src 192.168.1.1/255.255.255.255
acl user2 src 192.168.1.2/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80-82 5082 # http
acl FTP_ports port 20-21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 8080 # http
acl CONNECT method CONNECT
acl UNSAFE_ports port 20-21 1025-65535 # unregistered ports
#Разрешаем ФТП напрямую
acl FTP proto FTP
always_direct allow FTP
ftp_passive off
cachemgr_passwd disable config shutdown
http_access allow manager localhost
http_access allow manager vl0_8_89
http_access deny manager all
#разрешаем набор портов для user1
http_access allow Safe_ports SSL_ports FTP_ports UNSAFE_ports user1
#разрешаем порты для всех остальных
http_access allow Safe_ports
#разрешаем КОННЕКТ на набор портов для user1
http_access allow CONNECT SSL_ports FTP_ports UNSAFE_ports user
#разрешаем КОННЕКТ на порты для всех остальных
http_access allow CONNECT SSL_ports
#запрещаем КОННЕКТ на все остальное
http_access deny CONNECT all
http_access deny to_localhost
never_direct allow all
http_access allow localhost
http_access allow user1
http_access allow user2
#запрещаем все, что не разрешено выше
http_access deny all
icp_access deny all
miss_access allow all
В итоге с таким конфигом:
1) ФТП все равно заруливается на вышестоящий прокси (видимо тип протокола определяется после того, как происходит коннект). Видимо надо разрешать direct для FTP_ports?
2) Юзеры user2 и localhost имеют возможность запроса GET на все порты (даже UNSAFE_ports), хотя по идее это должно быть запрещено http_access deny all.
В конструкции:
http_access deny !Safe_ports
Юзерам запрещен GET на порты кроме Safe_ports, но как сюда вписать разрешение для user?
Конструкция вида
http_access deny !Safe_ports
http_access deny !Safe_ports !FTP_ports !SSL_ports !UNSAFE_ports !user1
Не работает.