iptables + vpn (Прошу помощи и совета)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian
Контактная информация:

iptables + vpn

Сообщение technotrance »

Здравствуйте!
У меня имеется вот такая схема:
Изображение
eth0 -- смотрит наружу. Ай-пишник белый
eth1 -- смотрит в локальную сеть.
В squid и iptables я новичок. Сквид настроил, sams к нему поставил -- это всё работает, как надо. Но вот с iptables не могу разобраться.
Я хочу, чтоб локалка у меня на http, https и ftp ходила через сквид, а всё остальное, такое как аська и электронная почта проходило через NAT.
Для этого, я так понимаю, надо настроить перенаправление пакетов, которые поступают на eth1 по портам 80, 8080, 443 и 21 на порт 3128 этого же интерфейса. А пакеты, которые идут по портам 5190, 25, 110 -- надо пустить через NAT.
Но вот на практике не получается настроить. Прошу помощи у опытных людей.
Ещё, хотел узнать, чем отличается маскарад от NAT и что, в моём случае, лучше использовать?
Но это ещё не всё: три офиса нужно как-то соединить впн-кой. Подскажите, на каком софте это лучше сделать? В идеале, хотелось бы настроить так, чтобы все три удалённых офиса превратились бы в одну большую локальную сеть, чтоб все компы друг друга видели. Во всех трёх офисах есть белый ай-пишник.
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora
Контактная информация:

Re: iptables + vpn

Сообщение arkhnchul »

Ещё, хотел узнать, чем отличается маскарад от NAT и что, в моём случае, лучше использовать?

DNAT и SNAT требуют указания адреса назначения и источника соответственно. Маскарад всегда работает через системный шлюз (который в route -n или ip r l). Мну для выпускания локалки наружу всегда маскарад юзал вместо SNAT...
Но это ещё не всё: три офиса нужно как-то соединить впн-кой. Подскажите, на каком софте это лучше сделать? В идеале, хотелось бы настроить так, чтобы все три удалённых офиса превратились бы в одну большую локальную сеть, чтоб все компы друг друга видели. Во всех трёх офисах есть белый ай-пишник.

openvpn, смотреть конфиг на тему push-route. Делается все очень просто.

по правилам iptables...
iptables -t nat -A PREROUTING -p tcp -m multiport --destinaion-port 80,8080,21 -j DNAT --to-destination 127.0.0.1:3128
iptables -t nat -A POSTROUTING -p tcp -m multiport --destination-port 5190,25,110 -j MASQUERADE
https через прозрачный прокси не пойдет.
Losing is fun!
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: iptables + vpn

Сообщение pelmen »

arkhnchul писал(а):
23.03.2010 20:44
iptables -t nat -A PREROUTING -p tcp -m multiport --destinaion-port 80,8080,21 -j DNAT --to-destination 127.0.0.1:3128
а я всегда -j REDIRECT юзал
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian
Контактная информация:

Re: iptables + vpn

Сообщение technotrance »

А чем отличается?

arkhnchul писал(а):
23.03.2010 20:44
https через прозрачный прокси не пойдет.

А почему? У меня сквид настроен на ntlm авторизацию...
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian
Контактная информация:

Re: iptables + vpn

Сообщение Frank »

technotrance писал(а):
24.03.2010 08:54
А чем отличается?

arkhnchul писал(а):
23.03.2010 20:44
https через прозрачный прокси не пойдет.

А почему? У меня сквид настроен на ntlm авторизацию...

Потому что https предполагает шифрование, да и сквид всё равно не сможет кэшировать такой трафик.
2.3 HTTPS

Finally, as far as transparently proxing HTTPS (e.g. secure web pages using SSL, TSL, etc.), you can't do it. Don't even ask. For the explanation, do a search for 'man-in-the-middle attack'. Note that you probably don't really need to transparently proxy HTTPS anyway, since squid can not cache secure pages.
Изображение
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian
Контактная информация:

Re: iptables + vpn

Сообщение technotrance »

Прописал. Маскарад работает. А DNAT нет... Может этому правило что-то другое мешает?
Вот iptables:

Код: Выделить всё

*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -p tcp -m tcp -m multiport --ports 80,8080,21 -j DNAT --to-destination 127.0.0.1:3128
-A POSTROUTING -p tcp -m tcp -m multiport -o eth0 --ports 5190,25,110 -j MASQUERADE
COMMIT
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A INPUT -p tcp -m state -m tcp --dport 21 --state NEW -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -o eth0 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Generated by webmin
*mangle
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian
Контактная информация:

Re: iptables + vpn

Сообщение technotrance »

Frank писал(а):
24.03.2010 10:01
Потому что https предполагает шифрование, да и сквид всё равно не сможет кэшировать такой трафик.

Т.е. предлагаешь его тоже через маскарад что ли пустить? Получается, что пользователи беспрепятствено смогут ходить на любые https ресурсы? Мне так не надо... Я хочу, что пользователи проходили авторизацию на сквиде, прежде чем куда либо зайти по http, https или ftp. Сквид у меня все ресурсы красиво распределяет: каждой группе пользователей только свои сайты.
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian
Контактная информация:

Re: iptables + vpn

Сообщение Frank »

technotrance писал(а):
24.03.2010 10:29
Прописал. Маскарад работает. А DNAT нет... Может этому правило что-то другое мешает?

А зачем DNAT, если есть REDIRECT?
И зачем маскарад, если айпи статичный? Для статики как раз этот самый DNAT делается - чуть меньше нагрузка на проц, и статистика соединения не забывается после передёргивания сети.
Изображение
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian
Контактная информация:

Re: iptables + vpn

Сообщение technotrance »

Вот оно что... :mellow:
Подскажи, пожалуйста, как мне тогда правильно прописать, чтоб асько и почта через нат работали, а http и ftp перенаправлялись на 3128?
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian
Контактная информация:

Re: iptables + vpn

Сообщение Frank »

в правиле с REDIRECT пишешь порты через --dports ! (список портов, заруливаемых на прокси, через запятую)
Если --dports не поддерживается, то пишем по одному порту через --dport или пытаемся использовать --dport для указания портов пачкой как в --dports
После этого делаем НАТ - попадут под него все, кто не завернулся на прокси.
Изображение
Спасибо сказали:
Аватара пользователя
McLeod095
Сообщения: 477
ОС: Люблю слаку

Re: iptables + vpn

Сообщение McLeod095 »

Ну по поводу iptables тут уже много написали, я хочу внести свои 5 копеек по поводу VPN.
Вообще как Вы написали, сделать одну большую сеть не получится. да и делать этого не надо.
Вообще выбор впн должен исходить из поставленных задач. Если Вы хотите что бы компьютеры друг друга видели в сетевом окружении Windows то тут надо одно (Я думаю люди которые делали посоветуют что и как).
А я бы посоветовал поднять ipsec, т.к. данное решение все таки не является клиент серверным, в отличие от openvpn. Ну и поддерживается многим оборудованием. В Вашем конкретном случае, если Вы не хотите использовать никаких больше наворотов типа динамической маршрутизации, то скорее всего придется использовать туннельный режим.
"Work PC" E6750/2GB/Asus P5B Deluxe/2x250GB/6600GT 128/Slackware Current (Win 2003 in VmWare)
New Work: E6400/3GB/Arch
Home Book: Asus W6k00A/Arch, Asus 701/Arch
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian
Контактная информация:

Re: iptables + vpn

Сообщение technotrance »

Frank писал(а):
24.03.2010 10:56
в правиле с REDIRECT пишешь порты через --dports ! (список портов, заруливаемых на прокси, через запятую)
Если --dports не поддерживается, то пишем по одному порту через --dport или пытаемся использовать --dport для указания портов пачкой как в --dports
После этого делаем НАТ - попадут под него все, кто не завернулся на прокси.

Прописал:

Код: Выделить всё

-A PREROUTING -p tcp -m tcp -m multiport -i eth1 -j REDIRECT --to-ports 3128 --dports 80,8080,21

Перенаправление вроде как и работает, но, почему-то, сквид тупо не пускает никуда, при этом, даже логин и пароль пользователя не спрашивает...
А с DNAT не понял... Прописал так:

Код: Выделить всё

-A PREROUTING -p tcp -m tcp -m multiport --ports 5190,25,110 -j DNAT

не работает...
Потом так:

Код: Выделить всё

-A PREROUTING -p tcp -m tcp -m multiport --ports 5190,25,110 -j DNAT --to-destination 127.0.0.1

... тоже не работает.
и так:

Код: Выделить всё

-A PREROUTING -p tcp -m tcp -m multiport -i eth1 --ports 5190,25,110 -j DNAT --to-destination 127.0.0.1

тоже не работает.
Что я неправильно делаю?
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian
Контактная информация:

Re: iptables + vpn

Сообщение technotrance »

Вот так заработало:

Код: Выделить всё

-A POSTROUTING -p tcp -m tcp -m multiport -o eth0 --ports 5190,110,25 -j SNAT --to-source <белый айпишник роутера>
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora
Контактная информация:

Re: iptables + vpn

Сообщение arkhnchul »

ну да. Наружу выпускается SNAT-ом, снаружи внутрь - DNAT-ом
Losing is fun!
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian
Контактная информация:

Re: iptables + vpn

Сообщение technotrance »

Со сквидом только не понятно... Почему, когда iptables перенаправляет пакеты с 80-го порта на 3128, то сквид не пускает? Запрос логина пароля не появляется, а логах сквида пишется, что доступ закрыт по причине непрохода авторизации.
Спасибо сказали:
Postum
Сообщения: 29
ОС: GNU Linux

Re: iptables + vpn

Сообщение Postum »

Без конфига squid'а сказать тяжело. Да и что получилось в результате настройки iptables - тоже непонятно.
Можно включить
squid.conf
debug_options ALL,1 33,2
(это debug ACL, можно изменить/добавить по вкусу).
- по логам будет понятно, на чем он обламывается.

Кстати. Не знаю, как для версии 3.х, а для 2.х - http://www.cyberciti.biz/tips/linux-setup-...quid-howto.html
You cannot use Squid authentication with a transparently intercepting proxy.

...И ты поймешь: все то, чего нельзя –
Песчинка в том, что не запрещено...
© Ю. Лорес
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian
Контактная информация:

Re: iptables + vpn

Сообщение technotrance »

Squid-3.1. Вот конфиг:

Код: Выделить всё

# TAG: http_port

http_port 3128
visible_hostname 192.168.199.177

hierarchy_stoplist cgi-bin ?
# squid не будет кешировать динамически генерируемые страницы (поисковые сервера, некоторые другие серверы и чаты), а будет напрямую перенаправлять запрос серверу

coredump_dir /var/spool/squid
# Указываем куда сбрасывать core

# TAG: cache_mem (bytes)

cache_mem 64 MB
# сколько оперативной памяти сквид может забрать под свои нужды. По умолчанию стоит 8 мегабайт, что хватит лишь при очень слабой загрузке.

maximum_object_size 2000 KB
# максимальный размер объектов, которые будут сохранены на диск. По умолчанию стоит 4096 килобайт.

maximum_object_size_in_memory 1000 KB
# максимальный размер объектов, которые будут сохранены в кэше. По умолчанию стоит 4096 килобайт.

# TAG: cache_dir

cache_dir ufs /var/spool/squid 3000 16 256
# указывает сквиду, где сохранять кешируемые файлы. Указывает отдать под кеш 3000 мегабайт и создать 16 и 256 соответственно каталогов 1го и 2го уровня.

# TAG: cache_access_log
# TAG: cache_log
# TAG: cache_store_log
# TAG: ftp_user

# в этих строках мы указываем сколько времени в минутах объект в кеше считается свежим и какой процент объектов оставлять с последнего обновления
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

# TAG: redirect_program
redirect_program /etc/squid/redirector.sams

# TAG: redirector_access

# TAG: auth_param

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of="EGARANT\\Пользователи домена"
auth_param ntlm children 5
auth_param ntlm keep_alive on

auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of="EGARANT\\Пользователи домена"
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 no_viruschk_users proxy_auth "/etc/squid/no_virus_chk.txt"

# TAG: acl
acl _sams_4b7e693c0e98d proxy_auth "/etc/squid/4b7e693c0e98d.sams"
acl _sams_4b7e693c0e98d_time time MTWHFAS 00:00-23:59
acl _sams_4b7e68f5b542e proxy_auth "/etc/squid/4b7e68f5b542e.sams"
acl _sams_4b7e68f5b542e_time time MTWHFAS 00:00-23:59
acl _sams_4b7e691286ad4 proxy_auth "/etc/squid/4b7e691286ad4.sams"
acl _sams_4b7e691286ad4_time time MTWHFAS 00:00-23:59
acl _sams_4b986f1b495ed url_regex "/etc/squid/4b986f1b495ed.sams"
acl _sams_chat url_regex "/etc/squid/chat.sams"
acl _sams_porno url_regex "/etc/squid/porno.sams"

acl manager proto cache_object
# назначить протоколу кеширования объектов название manager

acl localhost src 127.0.0.1/32 192.168.199.177/32
# адрес роутера

acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
# удалённые адреса

acl localnet src 192.168.0.0/16
# адресное пространство локальной сети

acl SSL_ports port 443
acl Safe_ports port "/etc/squid/allowports.txt"
# разрешённые порты

acl Safe_protocols proto "/etc/squid/allowprotocols.txt"
# разрешённые протоколы

acl CONNECT method CONNECT

# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager

http_access deny !Safe_ports
# Запрет всех портов, кроме разрешённых

http_access deny !Safe_protocols
# Запрет всех протоколов, кроме разрешённых

http_access deny CONNECT !SSL_ports
# Запрет всех SSL портов, кроме разрешённых

http_access deny to_localhost

# TAG: http_access
http_access allow _sams_4b7e693c0e98d  _sams_4b7e693c0e98d_time
http_access allow _sams_4b7e68f5b542e  !_sams_4b986f1b495ed !_sams_chat !_sams_porno _sams_4b7e68f5b542e_time
http_access allow _sams_4b7e691286ad4  !_sams_4b986f1b495ed !_sams_chat !_sams_porno _sams_4b7e691286ad4_time

http_access allow localhost
# разрешить доступ с роутера

http_access deny all
# запретить всё остальное

# TAG: delay_pools

icap_enable on
# включить icap

icap_preview_enable on
icap_preview_size 128
icap_send_client_ip on

icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/srv_clamav
# тут можно указать и другой сервер, а не тот, на котором вертится squid.

icap_service service_resp respmod_precache bypass=0 icap://127.0.0.1:1344/srv_clamav

adaptation_access service_req allow !no_viruschk_users
adaptation_access service_resp allow !no_viruschk_users
# всех проверяем на вирусы, кроме админов


Вот iptables, который получился:

Код: Выделить всё

*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -p tcp -m tcp -m multiport -i eth1 -j REDIRECT --to-ports 3128 --dports 80,8080,443,21
-A POSTROUTING -p tcp -m tcp -m multiport -o eth0 --ports 5190,110,25 -j SNAT --to-source <белый ай-пишник>
COMMIT
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A INPUT -p tcp -m state -m tcp --dport 21 --state NEW -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -o eth0 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Generated by webmin
*mangle
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed


А куда именно в конфиге сквида нужно подставлять debug_options?
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian
Контактная информация:

Re: iptables + vpn

Сообщение technotrance »

Воткнул его перед acl-ками...
Смотрю access.log... Там ошибка идёт NONE/400
Если я правильно понимаю, то это он на URL ругается? Получается, что когда iptables переправляет пакеты с портов 80 8080 на 3128, то сквид не понимает URL? :blink:
Чёт, не понимаю ничего... :cc_confused:
Спасибо сказали:
Postum
Сообщения: 29
ОС: GNU Linux

Re: iptables + vpn

Сообщение Postum »

Прямые запросы отличаются от запросов через прокси. В конфиге сквиду нигде не сказано, что он - прозрачный прокси; он ожидает увидеть одно, ему дают другое.
Цитирую:

Код: Выделить всё

You will need to configure squid to know the IP is being intercepted like so:

  http_port 3129 transparent

In Squid 3.1+ the transparent option has been split. Use intercept  to catch DNAT packets.

   http_port 3129 intercept

© http://wiki.squid-cache.org/ConfigExamples...rcept/LinuxDnat
...И ты поймешь: все то, чего нельзя –
Песчинка в том, что не запрещено...
© Ю. Лорес
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian
Контактная информация:

Re: iptables + vpn

Сообщение technotrance »

Прописал всё, как написано в той ссылке.
Щас у сквида в логах пишется TCP_DENIED/403. Это если через перенаправление пакетов через iptables. А если в браузере принудительно указываю порт 3128, то сквид пускает (логин и пароль просит).
Спасибо сказали:
Postum
Сообщения: 29
ОС: GNU Linux

Re: iptables + vpn

Сообщение Postum »

OK. Осталось по access.log понять, как на запросы реагируют ACL.
Дайте кусок лога со включенными debug_options, желательно - относящийся к одному запросу.
...И ты поймешь: все то, чего нельзя –
Песчинка в том, что не запрещено...
© Ю. Лорес
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian
Контактная информация:

Re: iptables + vpn

Сообщение technotrance »

Postum писал(а):
25.03.2010 13:56
OK. Осталось по access.log понять, как на запросы реагируют ACL.
Дайте кусок лога со включенными debug_options, желательно - относящийся к одному запросу.

Вот, несколько раз пытался на нигму зайти:

Код: Выделить всё

1269513652.287    137 192.168.199.141 TCP_DENIED/403 4474 GET http://www.nigma.ru/ - NONE/- text/html
1269513652.304      1 192.168.199.141 TCP_DENIED/403 4340 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- t$
1269513652.320      1 192.168.199.141 TCP_DENIED/403 4249 GET http://www.nigma.ru/favicon.ico - NONE/- text/html
1269514741.775    184 192.168.199.141 TCP_DENIED/403 4474 GET http://www.nigma.ru/ - NONE/- text/html
1269514741.857    329 192.168.199.141 TCP_DENIED/403 4184 GET http://sitecheck2.opera.com/? - NONE/- text/html
1269514742.643    668 192.168.199.141 TCP_DENIED/403 4211 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- t$
1269514742.650      1 192.168.199.141 TCP_DENIED/403 4249 GET http://www.nigma.ru/favicon.ico - NONE/- text/html
1269517648.273    152 192.168.199.141 TCP_DENIED/403 4184 GET http://sitecheck2.opera.com/? - NONE/- text/html
1269517648.355    167 192.168.199.141 TCP_DENIED/403 4474 GET http://www.nigma.ru/ - NONE/- text/html
1269517648.396      1 192.168.199.141 TCP_DENIED/403 4211 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- t$
1269517648.413      1 192.168.199.141 TCP_DENIED/403 4249 GET http://www.nigma.ru/favicon.ico - NONE/- text/html
1269517963.798     80 192.168.199.141 TCP_DENIED/403 4184 GET http://sitecheck2.opera.com/? - NONE/- text/html
1269517963.888     99 192.168.199.141 TCP_DENIED/403 4474 GET http://www.nigma.ru/ - NONE/- text/html
1269517964.137    220 192.168.199.141 TCP_DENIED/403 4211 GET http://www.squid-cache.org/Artwork/SN.png - NONE/- t$
1269517964.145      1 192.168.199.141 TCP_DENIED/403 4249 GET http://www.nigma.ru/favicon.ico - NONE/- text/html
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora
Контактная информация:

Re: iptables + vpn

Сообщение arkhnchul »

уберите аутентификацию вообще.
Losing is fun!
Спасибо сказали:
Postum
Сообщения: 29
ОС: GNU Linux

Re: iptables + vpn

Сообщение Postum »

technotrance писал(а):
25.03.2010 14:55
Вот, несколько раз пытался на нигму зайти:


Что-то маловато информации. Давайте сделаем
debug_options ALL,1 33,2 28,9
и еще раз почитаем (http://wiki.squid-cache.org/SquidFaq/SquidAcl#Access_Lists).


И действительно, пока не убедились, что все остальное работает нормально - отключите аутентификацию. С ее проблемами лучше разбираться отдельно.
...И ты поймешь: все то, чего нельзя –
Песчинка в том, что не запрещено...
© Ю. Лорес
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: iptables + vpn

Сообщение Ленивая Бестолочь »

Postum писал(а):
25.03.2010 17:42
И действительно, пока не убедились, что все остальное работает нормально - отключите аутентификацию.

и не включайте ;-)
прозрачный прокси _не может_ аутентификацию. не только сквид, вообще любой.
прозрачный прокси на то и прозрачный, что о его существовании клиент не знает вообще.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian
Контактная информация:

Re: iptables + vpn

Сообщение technotrance »

Postum писал(а):
25.03.2010 17:42
Что-то маловато информации. Давайте сделаем
debug_options ALL,1 33,2 28,9
и еще раз почитаем (http://wiki.squid-cache.org/SquidFaq/SquidAcl#Access_Lists).

Сделал. В access.log ничего нового не добавилось. Может я где-то не там это ставлю...

Код: Выделить всё

...................................
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of="EGARANT\\Пользователи домена"
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

debug_options ALL,1 33,2 28,9

acl no_viruschk_users proxy_auth "/etc/squid/no_virus_chk.txt"

# TAG: acl
acl _sams_4b7e693c0e98d proxy_auth "/etc/squid/4b7e693c0e98d.sams"
acl _sams_4b7e693c0e98d_time time MTWHFAS 00:00-23:59
acl _sams_4b7e68f5b542e proxy_auth "/etc/squid/4b7e68f5b542e.sams"
acl _sams_4b7e68f5b542e_time time MTWHFAS 00:00-23:59
acl _sams_4b7e691286ad4 proxy_auth "/etc/squid/4b7e691286ad4.sams"
acl _sams_4b7e691286ad4_time time MTWHFAS 00:00-23:59
acl _sams_4b986f1b495ed url_regex "/etc/squid/4b986f1b495ed.sams"
acl _sams_chat url_regex "/etc/squid/chat.sams"
acl _sams_porno url_regex "/etc/squid/porno.sams"
...............................


Postum писал(а):
25.03.2010 17:42
И действительно, пока не убедились, что все остальное работает нормально - отключите аутентификацию.

Без аутентификации работает.
Ленивая Бестолочь писал(а):
26.03.2010 00:15
и не включайте ;-)
прозрачный прокси _не может_ аутентификацию. не только сквид, вообще любой.
прозрачный прокси на то и прозрачный, что о его существовании клиент не знает вообще.

Вот оно что... :) Понятно теперь. Значитс, надо отбрасывать эту затею...
Подскажите, пожалуйста, ещё по FTP кое-что:
На iptables я включил модули nf_conntrack_ftp и ip_nat_ftp. Теперь ФТП сервера натятся, и с ними можно полноценно работать: создавать, класть, удалять, переименовывать и всё прочее. Пользователи это делают через обычный explorer. Но получается, что этот трафик нельзя учитывать по пользователям, например, через тот же sams.
Можно ли такую работу с фтп сервером организвать через squid?
Спасибо сказали:
Postum
Сообщения: 29
ОС: GNU Linux

Re: iptables + vpn

Сообщение Postum »

technotrance писал(а):
26.03.2010 09:06
На iptables я включил модули nf_conntrack_ftp и ip_nat_ftp. Теперь ФТП сервера натятся, и с ними можно полноценно работать: создавать, класть, удалять, переименовывать и всё прочее. Пользователи это делают через обычный explorer. Но получается, что этот трафик нельзя учитывать по пользователям, например, через тот же sams.
Можно ли такую работу с фтп сервером организвать через squid?


Полноценно работать с FTP через SQUID не получится - реализация ftp over http(s) неполная, в частности - не поддерживаются методы delete.
Для полноценной поддержки есть ftp-proxy (frox etc.), socks и пр. другие методы.

А вот некоторые из них уже при необходимости можно "дружить" между собой. Навскидку - пример для frox + squid:
http://posix.ru/network/frox/
...И ты поймешь: все то, чего нельзя –
Песчинка в том, что не запрещено...
© Ю. Лорес
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora
Контактная информация:

Re: iptables + vpn

Сообщение arkhnchul »

Но получается, что этот трафик нельзя учитывать по пользователям, например, через тот же sams.

почему вы думаете, что траффик через нат нельзя считать и анализировать?) здесь даже тема прикрепленная есть.
Losing is fun!
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian
Контактная информация:

Re: iptables + vpn

Сообщение technotrance »

Postum писал(а):
26.03.2010 11:20
А вот некоторые из них уже при необходимости можно "дружить" между собой. Навскидку - пример для frox + squid:
http://posix.ru/network/frox/

Прочитал статью, потом ещё одну, установил, настроил конфиг по статьям... Естесственно, что вот так просто, с полоборота, у меня нчего и не заработало :( Возможно, потому, что я не совсем понимаю принцип работы фрокса. А именно: как именно он взаимодействует со сквидом?
Вот такой конфиг получился:

Код: Выделить всё

####################################################################
# Network Options                                                  #
####################################################################

# Address to listen on - default is 0.0.0.0 If you are using an OS other
# than Linux and are doing transparent proxying then you will need to set
# this to the IP of a local interface. If using linux you could leave it
# commented out to listen on all local IPs.
#
# Listen firewall.localnet
Listen 192.168.199.177

# Port to listen on. Must be supplied.
#
Port 2121

# If specified then bind to this device
#
BindToDevice eth1

# Whether to run from inetd. You should still define Port above, but
# it isn't used for much.
#
# FromInetd yes

# Stop frox from putting itself into the background. Use this if you want
# to run frox from supervise from djb's daemontools
#
# NoDetach

# A hack that should allow you to get away without putting resolver libraries
# into the chroot jail. The default is fine unless for some reason you have
# this hostname in /etc/hosts. If this sort of thing offends you, you may
# comment this out and copy resolver libraries into the chroot jail instead.
# See FAQ section 3.2 for details.
#
ResolvLoadHack wontresolve.doesntexist.abc

# Another ftp proxy to forward on to. Frox will contact this ftp
# proxy, and send it a login name of the form "user@host:port" where
# host and port are the server frox should contact. If you set
# FTPProxyNoPort then frox will send logins of the form user@host
#
# FTPProxy 192.168.2.9:2222
# FTPProxyNoPort yes

# Pick the IP frox should use for outgoing connections. You probably don't
# need this, and it is not well tested.
#
# TcpOutgoingAddr

# Pick the IP that frox should send in PASV replies to the client. Defaults
# to the address frox received the control connection on which you shouldn't
# need to change unless you are doing NAT between frox and your clients, or
# are trying to tunnel connections using frox. See FAQ.
#
# PASVAddress

####################################################################
# General Options                                                  #
####################################################################
# User and group to drop priveliges to. This must be specified - if
# you really want to run as root (not a good idea) you must say so
# specifically, and have compiled with --enable-run-as-root.
#
User nobody
Group nobody

# This is frox's working directory - it must be specified. Temporary
# files and sockets will be created here. If you are using local
# caching then the cache will be stored in this directory too. It
# should be owned by frox with permissions 700. By default frox will
# also chroot to this dir on startup. To avoid this you must specifically
# set DontChroot to Yes.
#
WorkingDir /tmp/frox
# DontChroot Yes

# Logging level. 0=No logging. 5=Critical errors only. 10= All errors.
# 15=Errors, other important stuf. 20= Errors, connections, cache
# hits/misses 25=Debug info including text of control session. By
# default frox will log through syslog as facility daemon. If you want
# frox to log to a file instead specify this in LogFile below. You may
# set LogFile to "stderr" if you wish it to log there. XferLogging
# defaults to on, and results in a one line log entry for each file
# transferred irrespective of the log level. You can turn this off
# below.
#
# LogLevel 15
LogFile /var/log/frox.log
# XferLogging no

# File to store PID in. Default is not to. If this file is not within
# the Chroot directory then it cannot be deleted on exit, but will
# otherwise work fine.
#
PidFile /var/run/frox.pid


####################################################################
# Ftp Protocol Options                                             #
####################################################################

# Active --> Passive conversion. If set then all outgoing connections
# from the proxy will be passive FTP, regardless of the type of the
# connection coming in. This makes firewalling a lot easier. Defaults
# to no.
#
# APConv yes

# Passive --> Active conversion. If set then all outgoing connections
# from the proxy will be active FTP, regardless of the type of the
# connection coming in. Defaults to no.
# DO NOT USE WITH APConv!
#
# PAConv yes

# Block PORT commands asking data to be sent to ports<1024 and
# prevent incoming control stream connections from port 20 to
# help depend against ftp bounce attacks. Defaults to on.
#
BounceDefend yes

# If true then only accept data connections from the hosts the control
# connections are to. Breaks the rfc, and defaults to off.
#
# SameAddress yes

# Normally frox strips out nonprintable characters from the control
# stream. This makes buffer overflow attacks on clients/servers much more
# difficult. If you download files that contain non english characters
# this may cause you problems (especially for big charsets like Chines).
# In that case turn on this option.
#
AllowNonASCII yes

# Try to transparently proxy the data connections as well. Not
# necessary for most clients, and does increase security risks. N.V.
# You probably do _NOT_ need this option. It increases the complexity
# of what frox has to do, increases the difficulty of setting frox up
# correctly, and increases potential security risks. This has nothing
# to do with whether your clients will be transparently proxied. If
# you still want to use this option then read README.transdata for
# details.
#
# TransparentData yes

# Specify ranges for local ports to use for outgoing connections and
# for sending out in PORT commands. By default these are all between
# 40000 and 50000, but you might want to split them up if you have
# complicated firewalling rules.
#
# ControlPorts 40000-40999
# PassivePorts 41000-41999
# ActivePorts  42000-42999

# SSL/AUTH support. Frox must have been linked to the openssl libraries.
# This is currently experimental, and only tested against vsftpd
#
# UseSSL yes
# DataSSL no

####################################################################
# Caching Options                                                  #
####################################################################

# Caching options. There should be at most one CacheModule line, and
# Cache lines to give the options for that caching module. CacheModule
# is HTTP (rewrites ftp requests as HTTP and sends them to a HTTP
# proxy like squid), or local (cache files locally). The relevant
# module needs to have been compiled in at compile time. See FAQ for
# details. If there are no CacheModule lines then no caching will be
# done. "CacheModule None" explicitly requests no caching, and is
# useful to turn off caching within a subsection (below).
#
# CacheModule http
CacheSize 400
#
CacheModule http
HTTPProxy 127.0.0.1:3128
MinCacheSize 5
# ForceHTTP no  # Set to yes to force http file retreiving even if
#               # file is not cacheable
#
# StrictCaching no  # Read FAQ for details.
# CacheOnFQDN yes   # Read FAQ for details.
#
# CacheAll no   # Set to yes to cache non anonymous ftp downloads

# Virus scanning -- see FAQ
#
VirusScanner '"/usr/bin/clamdscan" "--remove=yes --quiet" "%s"'
VSOK 0
VSProgressMsgs 30


####################################################################
# Access control                                                   #
####################################################################

# Allow non-transparent proxying support. The user can connect
# directly to frox, and give his username as user@host:port or
# user@host. Defaults to no. NTPAddress gives the address to which
# incoming connections must be addressed if the client is to be offered
# non-transparent proxying. For most people using this it will be the same
# as the Listen address above. If not given then all connections will be
# offered non transparent proxying. If you are not using transparent
# proxying at all then you should leave NTPAddress commented out.
#
DoNTP yes
NTPAddress 192.168.199.177:2121

# Number of seconds of no activity before closing session
# Defaults to 300
#
# Timeout 300

#Maximum number of processes to fork.
#
# MaxForks 0 # For debugging -- only one connection may be served.
MaxForks 20

# Maximum number of connections from a single host (IP address).
MaxForksPerHost 5

# Maximum number of bytes/second to be transferred over the data
# connection for each client. MaxTransferRate limits downloads and
# MaxUploadRate uploads. CacheDlRate is the rate for downloads of files
# that are cached locally - if not set these files will be downloaded at
# full speed.
#
# MaxTransferRate 4096
# CacheDlRate 8192
# MaxUploadRate 4096

# Access control lists:
# The format is: "ACL Allow|Deny SRC - DST [PORTS]"

# SRC and DST may be in the form x.x.x.x, x.x.x.x/yy, x.x.x.x/y.y.y.y,
# a dns name, or * to match everything.
#
# PORTS is a list of ports. If specified then the rule will only match
# if the destination port of the connection is in this list. This is
# likely only relevant if you are allowing non-transparent proxying of
# ftp connections (ie. DoNTP is enabled above). Specifying * is equivalent
# to not specifying anything - all ports will be matched
#
# Any connection that matches no rules will be denied. Since there are
# no rules by default you'll need to add something to let any
# connections happen at all (look at the last example if you are
# feeling lazy/not bothered by security).
#
# # Examples:
# # Allow local network to ftp to port 21 only, and block host ftp.evil
# ACL Deny * - ftp.evil
# ACL Allow 192.168.0.0/255.255.0.0 - * 21
#
# # Allow local network to ftp anywhere except certain dodgy ports. Network
# # admin's machine can ftp anywhere.
# ACL Allow admin.localnet - *
# ACL Deny * - * 1-20,22-1024,6000-6007,7100
ACL Allow 192.168.0.0/16 - * *
#
# # You don't really believe in this security stuff, and just want
# # everything to work.
# ACL Allow * - *

# Command control program: A bit like the idea of a squid redirector.
# By default the old interface is used so as not to break existing
# installations. The new interface is much more powerful, and is
# reccommended for new scripts -- set UseOldCCP to false to use it.
# See the FAQ for details.
#
# CCProgram /usr/local/lib/frox/bin/ccp
# UseOldCCP no


####################################################################
# Subsections                                                      #
####################################################################
# Matching rules the same as ACLS. Only some options can be specified
# in a subsection (currently the yes/no options, timeout, and caching
# options).
#
# SubSection * - ftp.dodgy.server
#  StrictCaching yes
# EndSection
#
# SubSection * - 10.0.0.0/24 # A low latency high bandwidth connection
#  MinCacheSize 4096
# EndSection
#
# Subsection * - ftp.localnetwork
# # To disable caching if it has been turned on in a parent section
#  CacheModule None
# EndSection


arkhnchul писал(а):
26.03.2010 12:52
почему вы думаете, что траффик через нат нельзя считать и анализировать?) здесь даже тема прикрепленная есть.

Если не затруднит и если помните навскидку, где тут эта тема, то дайте, пожалуйста, ссылочку.
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian
Контактная информация:

Re: iptables + vpn

Сообщение technotrance »

technotrance писал(а):
26.03.2010 16:38
Прочитал статью, потом ещё одну, установил, настроил конфиг по статьям... Естесственно, что вот так просто, с полоборота, у меня нчего и не заработало :( Возможно, потому, что я не совсем понимаю принцип работы фрокса.

Вобщем, посидел, погуглил, поэксперементировал с конфигом, кое что выяснил.
Вот что в логе пишется:

Код: Выделить всё

Fri Mar 26 19:35:27 2010 frox[7832] Unable to make tmp dir /tmp/frox/tmp
Fri Mar 26 19:35:27 2010 frox[7832] Running on a kernel we haven't been compiled for. Oooops.
Fri Mar 26 19:35:27 2010 frox[7832] Frox unable to determine detination address. See FAQ for troubleshooting.

Во-первых, непонятно, почему он не может темп создать... :cc_confused:
Во-вторых, обратился к факу, а там написано вот что:
Frox says "unable to determine destination address"

There are two likely causes for this. One is that you are trying to do non-transparent proxying, but the config file is not setup correctly. Ensure that DoNTP is set to yes in the config file, and comment out NTPAddress - it is never necessary and only serves a purpose if you are doing a mixture of transparent and non-transparent proxying.

The other possiblity is that your connection is transparently redirected to frox, but frox is unable to determine the orriginal destination. The most likely cause is if you are using Linux kernel 2.4.x with ipchains compatability. I do not know of a way around this short of changing from ipchains to iptables (or changing back to a 2.2.x kernel!).

Сделал, как написано в первом абзаце. В iptables добавил вот такое правило:

Код: Выделить всё

-A PREROUTING -p tcp -m tcp -i eth1 --dport 21 -j REDIRECT --to-ports 2121

Попытался зайти на фтп-шник через оперу и через лису -- и тот и другой запршивали аутентификацию (аля сквид), однако после удачной аутентификации валазит сообщение о том, что удалённый хост недоступен. А в логах фрокса, по прежднему, ничего не изменилось :(
Помогите, пожалуйста, разобраться...
Спасибо сказали:
Ответить