В Чтв, 28/10/2010 в 05:40 +0300, Dank Bagryantsev пишет:
> ...
> пока никаких толковых наработок я не нашел в этом направлении.

Там наработок-то... В простейшем случае для http:// на nginx'е
конфигурация для сайта вида

server {
    listen 80;
    server_name .service.tld;
    proxy_set_header  Host $host;
    location /auth {
        if ($request_method = POST ) {
                proxy_pass http://filter_host;
        }
        proxy_pass http://service.tld;
    }
    location / {
        proxy_pass http://service.tld;
    }
}

И на filter_host выполнять подмену паролей в отправляемых POST'ах.
Например, так:
----------------------
#!/usr/bin/perl -w
use strict;
use HTTP::Proxy;
use HTTP::Proxy::BodyFilter;

my $proxy = HTTP::Proxy->new(port => 80);
$proxy->push_filter(
   mime => 'text/html',
   request => HTTP::Proxy::BodyFilter->new(
      sub {
        my ( $self, $dataref, $message, $protocol, $buffer ) = @_;
        $$dataref =~ s/fakepassword/realpassword/g;
        }
      )
    );

$proxy->start;
----------------------
(Выдрано из документации к HTTP::Proxy, работоспособность не
проверялась.)

> ... но если доступ к nginx будет все-равно через VPN, то
> можно будет попробовать вариант перебрасывать с http nginx'a на https
> сайтов (где https обязателен), чтобы избежать самоподписанных сертификатов.

Этот вариант сильно хуже - придётся разбирать на прокси-сервере все
ответы и менять https:// на http:// перед отправкой их клиенту. И
наоборот. Причём только в нужных URL. 

> Кстати, а вариант с промежуточным http-сервером и открытием сайтов во
> фреймах и внесение-отсылка логинов-паролей через JavaScript, в моем
> случае будет работоспособным?

Зависит от сайтов. На первый взгляд, потребует больше программного кода
на стороне сервера, и передачу на сторону пользователей (и потенциальных
троянов на их машинах) исходных паролей.


-- 
С уважением,
Николай Фетисов


_______________________________________________
Sysadmins mailing list
Sysadmins@lists.altlinux.org
https://lists.altlinux.org/mailman/listinfo/sysadmins

Ответить