id: Гость   вход   регистрация
текущее время 13:47 29/05/2024
Владелец: unknown (создано 24/06/2012 17:27), редакция от 12/08/2015 22:34 (автор: unknown) Печать
Категории: софт, анонимность, tor
https://www.pgpru.com/Библиотека/Руководства/СетеваяАнонимность/ПродвинутоеИспользованиеTorвUnix/РаздельноеИспользованиеTorbrowserсСистемнымTorиПрозрачнаяТорификация
создать
просмотр
редакции
ссылки

Раздельный запуск Torbrowser от нескольких пользователей с общим системным Tor-процессом и локальная прозрачная торификация


Оглавление документа:

Цель варианта


  1. Использовать торбраузер с локальным системным тором вместо поставляемого в составе TBB.
  2. Осуществить одновременную работу нескольких пользователей системы через системный тор с построением различных цепочек для каждого пользователя посредством подключения к разным портам SocksPort и посредством прозрачной торификации на разные порты TransPort, DNSPort для других програм (опционально — для самого TBB использование прозрачной торификации устарело и не рекомендуется).
  3. Все пакеты, посланные из под конкретного пользователя торбраузером должны направляться файрволлом только на определённые порты локального хоста, связанные с работой системного тора. Это существенно исключает возможность утечки пакетов при уязвимостях в торбраузере, но существенно не защищает от преднамеренных целевых атак на данную конфигурацию.

Конфигурация тор


Остановите системный тор: /etc/init.d/tor stop. Если в текущей версии с этим есть проблемы, используйте kill.
Закомментируйте в конфиг-файле /etc/tor/torrc опцию SocksListenAddress 127.0.0.1. Она устарела, по умолчанию тор слушает только локальные соединения.


В случае проблем с запуском /etc/init.d/tor start, можно в ответ на соответствующие ошибки добавлять опции:


Для прозрачной торификации по умолчанию и для работы через SocksPort тора используются опции:


Следует добавить нужное количество дополнительных портов:


Поскольку порт 9051 занят, то добавим опции управляющего порта:


Управляющий порт м.б. использован для работы с программой tor-arm, показывающий статистику соединений с сетью tor и позволяющей менять цепочки для всех соединений.


Запуск тор /etc/init.d tor start не должен приводить к ошибкам и должен показывать, что все внесённые в конфиг порты работают нормально.

Настройка iptables


Во многих системах по-умолчанию используется сложный механизм инициализации, конфигурирования и хранения конфигов iptables. Подразумевается, что этот механизм отключен, а вместо него используется шелл-скрипт, который пользователь поддерживает самостоятельно. В Debian/Linux он может быть размещён, например, в /etc/network/if-pre-up.d. Здесь приведены только фрагменты такого скрипта, относящиеся к рассматриваемому варианту торификации.


Закроем снаружи все открытые тор-порты, даже если они принимают только локальные соединения:

$IPTABLES -- переменная содержит путь к iptables, обычно:
IPTABLES="/sbin/iptables"

# $INET_IFACE -- внешний сетевой интерфейс, обычно:
INET_IFACE="eth0"

# blocked_myports -- пользовательская цепочка для заблокированных портов

iptables -N blocked_myports; iptables -F blocked_myports

for PROTOCOL in TCP UDP; do
    for PORT in $(seq 53 58) $(seq 9040 9045) \
        $(seq 9050 90559059 9060do

        $IPTABLES -A blocked_myports -i $INET_IFACE -o !lo -p $PROTOCOL \
        --dport $PORT -j DROP

    done
done

$IPTABLES -A INPUT -p TCP -j blocked_myports
$IPTABLES -A INPUT -p UDP -j blocked_myports


Сделаем исключение из обработки для пакетов идущих на локальный хост.


$IPTABLES -t nat -A OUTPUT -o lo -j RETURN
$IPTABLES -t nat -A OUTPUT -d 127.0.0.1 -j RETURN


Правило для первого анонимного пользователя:


#Разрешим соединение с SOCKS-портом
$IPTABLES -t filter -A OUTPUT -d 127.0.0.1 -p tcp -m owner \
--uid-owner anonym_1 --dport 9051 -j ACCEPT

###Прозрачная торификация [начало]###
#
#Не требуется при работе TBB
#Может быть использована для одновременной работы других програм
#При отсутствии необходимости эти опции м.б. закоментированы

# Прозрачная торификация TCP на порт 9041

$IPTABLES -t nat -A OUTPUT  -p tcp -m owner --uid-owner anonym_1  \
 -m tcp -j REDIRECT --to-ports 9041
 
$IPTABLES -t filter -A OUTPUT  -d 127.0.0.1 -p tcp -m owner --uid-owner anonym_1  \
 -m tcp --dport 9041 -j ACCEPT
 
#Прозрачная торификация DNS на порт 54

$IPTABLES -t nat -A OUTPUT  -p udp -m owner --uid-owner anonym_1  \
 -m udp --dport 53 -j REDIRECT --to-ports 54

$IPTABLES -t filter -A OUTPUT  -d 127.0.0.1 -p udp -m owner --uid-owner anonym_1  \
 -m udp --dport 54 -j ACCEPT

#
###Прозрачная торификация [конец]###

#Больше этому пользователю ничего не разрешено:

$IPTABLES -A OUTPUT -m owner --uid-owner anonym_1 -j REJECT


По аналогии, правило для второго анонимного пользователя (с закоментированной прозрачной торификацией):


$IPTABLES -t filter -A OUTPUT -d 127.0.0.1 -p tcp -m owner \
--uid-owner anonym_2 --dport 9052 -j ACCEPT

#Прозрачная торификация закоментирована

$IPTABLES -t nat -A OUTPUT  -p tcp -m owner --uid-owner anonym_2  \
# -m tcp -j REDIRECT --to-ports 9042
 
#$IPTABLES -t filter -A OUTPUT  -d 127.0.0.1 -p tcp -m owner --uid-owner anonym_2  \
# -m tcp --dport 9042 -j ACCEPT

#$IPTABLES -t nat -A OUTPUT  -p udp -m owner --uid-owner anonym_2  \
# -m udp --dport 53 -j REDIRECT --to-ports 55

#$IPTABLES -t filter -A OUTPUT  -d 127.0.0.1 -p udp -m owner --uid-owner anonym_2  \
# -m udp --dport 55 -j ACCEPT

$IPTABLES -A OUTPUT -m owner --uid-owner anonym_2 -j REJECT


Разрешим выход наружу самому системному тору:


TOR_UID="debian-tor"

$IPTABLES -A OUTPUT -m owner --uid-owner $TOR_UID -j ACCEPT

Использование tor-arm


Использование пакета Vidalia с системным Tor нецелесообразно из-за полного сворачивания её поддержки. Рекомендуется завести отдельно пользователя, включить его в группу tor-arm и запускать из под него утилиту tor-arm.


Следует избегать запуска tor-arm из под пользователя debian-tor, несмотря на то, что такая рекомендация имеется в пакете и долгое время оставалась неисправленной.


Настройка торбраузера

Начиная с четвёртой версии браузер позволяет автоапдейт. Но в ранних версиях четвёртой ветки стабильность и безопасность этого механизма не гарантировалась. Даже после его стабилизации безопаснее скачивать браузер вручную и проверять контрольные суммы, заверенные подписями GnuPG. Список рекомендуемых версий доступен по ссылке. Скачивание возможно с адреса


Скачанные файлы с подписями и суммами можно разместить в отдельном каталоге и проверить скриптом:

#! /bin/sh

echo > tbbchecklog.txt

sha256sum -c sha256sums-unsigned-build.txt 2>&1 | grep OK >> tbbchecklog.txt

echo >> tbbchecklog.txt

for a in sha256*.asc ; do 
 gpg --verify $a sha256sums-unsigned-build.txt >> tbbchecklog.txt 2>&1 ; 
 echo >> tbbchecklog.txt
done

echo >> tbbchecklog.txt

gpg --verify tor-browser-linux64*.asc >> tbbchecklog.txt 2>&1

echo >> tbbchecklog.txt


Перед ручным обновлением рекомендуется экспортировать старые закладки в файл, удалить старый распакованный каталог TBB. Впоследствии возможно импортировать закладки из файла обратно в новый распакованный браузер (вкладки: Bookmarks — Show all Bookmarks — Import and Backup).


Существует вероятность уязвимости в браузере, приводящая к утечке закладок. Поэтому следует рассмотреть целесообразность хранения определённых закладок торбраузера для конкретного анонимного профиля.


В распакованном каталоге TBB удалите расширение запуска Tor из связки:



Запустите TBB:



Зайдите в настройки: Edit → Preferences → Advanced → Network → Settings


И выберите опции:



Для другого пользователя следует выбирать другой порт, в соответствии с настройками файрволла. Следует также обращать внимание на возможность сброса этих настроек при перезапуске.


В адресной строке браузера нужно набрать about:config, для внесения некоторых опций, перечисленных в скрипте запуска start-tor-browser:


# extensions.torbutton.custom.socks_host  127.0.0.1
# extensions.torbutton.custom.socks_port  <SocksPort>
# extensions.torbutton.inserted_button    true
# extensions.torbutton.launch_warning     false
# extensions.torbutton.loglevel           2
# extensions.torbutton.logmethod          0
# extensions.torbutton.settings_method    custom
# extensions.torbutton.socks_port         <SocksPort>
# extensions.torbutton.use_privoxy        false
# app.update.auto                         false


В торбраузере, начиная с версии 4.5, организована корректная работа с SOCKS-портом, при этом для разных доменов выбираются разные исходящие узлы и существует возможность менять исходящий узел для каждой вкладки при помощи опции New Tor Circuit for this Site в Torbutton. При этом из-за удаления плагина tor-launcher, предназначенного для запуска локального (несистемного) Tor, часть опций tor-button будет недоступна. В связи с этим рекомендуется настраиваеть торбраузер на работу с системным тором именно через SOCKS-порт, а не через прозрачную торификацию. Прозрачная торификация может быть использована для этого же пользователя для работы с другими программами, но ей лучше не пользоваться при повышенных требования анонимности из-за опасениях утечки профилирующих и идентифицирующих данных, а также по другим возможным причинам.


После сохранения изменений следует перезапустить TBB. В разных вкладках на разных доменах TBB должен показывать разные IP-адреса, а при проверке через одинаковые домены — соответственно одинаковые в пределах жизни цепочки. Проверку наличия обновлений можно периодически осуществлять и вручную, например по основной ссылке рекомендуемых версий и скачивания новой версии.


Можно запустить два и более TBB из под разных пользователей одновременно. При одновременной проверке они должны показывать разный IP-адрес исходящих узлов при проверке на одном и том же домене.


При работе из-под одного пользователя для смены профиля рекомендуется перезапустить браузер и сменить все цепочки программной tor-arm или отправкой сигнала системному тор-процессу.


 
На страницу: 1, ... , 10, 11, 12, 13, 14, ... , 16 След.
Комментарии [скрыть комментарии/форму]
— unknown (28/04/2015 17:50, исправлен 28/04/2015 17:51)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Зашёл я торбраузером на ютуб и решил скачать ролик из под этого же пользователя. На строгую защиту от профилируемости мне для какого-то отдельного случая пофиг, тогда просто перешёл в консоль и скачал через cclive, не заморачиваясь прописыванием соксов и проксей, зная, что весь юзерский профиль прозрачно торифицирован. Также иногда полезно накидать список для wget и т.д.



Совсем не вписывается в мою модель. Нужно несколько браузеров параллельно и иногда под теми же пользователями, что и браузеры запускать нечто консольное-профилирующее, которое завёрнуто в прозрачную торификацию. Чтобы при этом ничего не переключать, максимум — закрыть браузер, скинуть все цепочки и запустить профилирующий на эксите wget, rss или ещё что-то такое.

— Гость (28/04/2015 18:23)   <#>

И в чём проблема? Пропишите один раз в конфиге шелла что-то типа
alias cclive='TORSOCKS_CONF_FILE=torsocks.conf torsocks cclive'
alias wget='TORSOCKS_CONF_FILE=torsocks.conf torsocks wget'
и продолжайте работать, как и раньше. Я тестировал, оно работает. Точно так же оно работает для ssh, gpg и apt-get. С почтой могут быть проблемы, да, но там вроде тоже фиксится, хотя я так и не доразобрался.


Тогда 9150 прописываете на самый часто используемый браузер, а с остальными мучаетесь и/или ищете хак для решения проблемы.

P.S. Сейчас заметил, что достаточно в слайдере подвигать уровень, как значения extensions.torbutton.socks_port и network.proxy.socks_port тут же слетают на дефолтные. Т.е. даже никаких рестартов браузера не надо. Оно, конечно, фиксится на лету повторным открытием about:config и прописыванием новых значений этих опций, но неудобно, лишние действия будут.

По-хорошему, конечно, надо писать рассылку и искать совета у разработчиков, что они предложат. Поидее проблема фиксится элементарно — это же просто вопрос интерфейса, там надо лишь одну дополнительную опцию в Tor-ланчере добавить.
— sentaus (28/04/2015 20:59)   профиль/связь   <#>
комментариев: 1060   документов: 16   редакций: 32
и продолжайте работать, как и раньше. Я тестировал, оно работает. Точно так же оно работает для ssh, gpg и apt-get.

А если какой-нибудь скрипт вызовет явно /usr/bin/wget ?
— Гость (28/04/2015 21:16)   <#>
В системах, критичных к анонимности/безопасности, это будет даже хорошо, что оно автоматически не сработает. Заторено должно быть только то, что заторено явно. Если нужно заторить скрипт, там аналогичным образом можно указать torsocks.
— unknown (28/04/2015 21:20)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Принципиально не хочу. Может раз в год я запускаю нечто консольное, которое не подхватит, а настраивать для каждой утилиты по такому случаю лень.


Можно от всех пользователей через iptables принимать соединения на дефолтный сокс-порт, но для разных пользователей перенаправлять это на разные сокс-порты системного тора (сопоставить перенаправление на уровне файрволла: каждому пользователю свой порт). А всё, что пользователб шлёт не на дефолтный SOCKS-порт перенаправлять на порт прозрачной торификации, ну и DNS-порт подхватывать также.
— Гость (28/04/2015 21:29)   <#>

Так — неудобно, вот так — лень. Вам шашечки или ехать? Я вот тоже редко запускаю, поэтому при надобности для некоторых утилит пишу torsocks руками.


Да, можно и так.


Идеологически неверно. Всё, что не торифицировано руками и полезло в сеть, может говорить о взломе и зловредах, нежелательном функционале и т.д. — оно должно не выйти в сеть через прозрачку, а осесть в логах в качестве заблокированного и потом быть изученным при их анализе.
— unknown (28/04/2015 21:38)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Условно раз в год можно и принципиально неторифицируемые программы запустить, какие-нибудь плэйеры, коины, почтовики (это только примеры, не надо говорить, что это всё корректно штатно торифицируется) и т.д. из под пользователя, на профиль безопасности которого совершенно покласть. А ради интереса можно и логи того, что ушло через TransPort посмотреть, никто не мешает.

И да, у меня есть критичный пользователь, которому вообще запрещено ходить в интернет и даже на локалхост. Вот это — безопасность, а те, кто считает, что можно пользоваться по другому — поступают идеологически неверно и нужно им обязательно на это указать.
— Гость (28/04/2015 22:18)   <#>

Этим вы никого не удивите, у меня тоже есть такой пользователь, только ему не просто запрещено ходить в Интернет и на локалхост, а там ещё более жёсткие требования ИБ, которые я стараюсь соблюдать. Речь-то пока идёт о тех юзерах, кому всё-таки надо дать ходить в сеть. К слову, в случае виртуалок, если такой юзер крутится в гостевой ОС, без сети туда ведь и не попадёшь даже. Связь с гостевыми ОС, как правило, возможна только через сеть.
— Гость (28/04/2015 22:36)   <#>

Даже целых два. :)
— Гость (29/04/2015 05:44)   <#>
При заходе на check.torproject.org с разных браузеров показывается одинаковый IP-адрес. С другой стороны, в соседней вкладке ip-check.info показывает другой адрес. У меня пока такое объяснение – строка аутентификации вычисляется как функция домена, т.е. детерминистично, а не рандомно, и это неправильно. Вручную указать разные user/pass для сокс-прокси в браузерах разных пользователей тоже нет возможности.

Чтобы запретить читать сайтам локальные шрифты нужно поставить галочку в Options – Embeddings – Forbid @font-face (слайдер двигать необязательно, т.к. неясно что в него запихали), тогда на check-ip.info каракулей не будет.

Может раз в год я запускаю нечто консольное, которое не подхватит, а настраивать для каждой утилиты по такому случаю лень.

Ещё не встречал неторифицируемых консольных утилит (которые по TCP работают). Особой разницы нет что набирать – 'wget' или 'torsocks wget', тем более если раз в год. А если чаще, то можно алиас определить.

Прозрачная торификация опасна, что-нибудь пропишется в стартовые скрипты или крон, и не сразу можно заметить.

TORSOCKS_CONF_FILE=torsocks.conf torsocks wget

Лучше написать скрипт-обёртку, который в torsocks.conf подставляет рандомные user/passwors и запускает с ним torsocks. Тогда можно wget (или другое) хоть каждые пять секунд запускать, и каждый раз будет новая цепочка. И набирать в командной строке короче.
— unknown (29/04/2015 09:34, исправлен 29/04/2015 09:36)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

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



Отслеживается легко, но нет смысла это расписывать. Всё проще: сюда скидывается наиболее простой и универсальный вариант. Дальше можно кастомизировать по мере своей паранойи. Предполагаю погонять вариант с пропусканием в TorSocks и раскидыванием на разные порты для разных пользователей на уровне файрволла. Весь остальной трафик пользователя — перенаправлять на TransPort'ы и DNSPort'ы. В конфиге и доке будет коментарий, что это потенциально опасно и для критичного профиля эту строку лучше закоментарить. Пусть всё, что не идёт на дефолтный Socks-порт дропается для тех, кому прозрачная торификация не нужна. Мне например, в каких-то профилях нужна, в каких-то — нет, в каких-то вообще сети не надо. Всё решается коментированием одинаковых для всех пользователей строчек скрипта для файрволла.


Вообще, это всё опасения случайных утечек, не столь опасных, если они завёрнуты в Tor. Злонамеренный троян, куда бы и подо что бы он там не прописался, пошлёт трафик по дефолтному Socks-порту, как и торбраузер. И ничего там так легко по логам уже не отследить.

— Гость (29/04/2015 12:22)   <#>

В принципе, да. Отличие в том, что там постфактум будут и логи и утечка, а при дропе — логи без утечки.


Может быть, иначе ту фичу с долгоживущими цепочками и нельзя было реализовать? Хотя вряд ли. Если бы она была детерминистичной, как бы работала опция «New Tor Circuit for this Site»? А она работает, см. выше. Т.е. менять цепочку для заданной вкладки браузер умеет.


Вы говорите, что

При заходе на check.torproject.org с разных браузеров показывается одинаковый IP-адрес.

Что такое «разные браузеры»? Если они от разных пользователей, а разные пользователи работают через разные порты, то цепочки не будут пересекаться (иначе это жёсткий баг). У вас, видимо, разные пользователи не разнесены по разным портам, поэтому такое в принципе может случиться. Но действительно ли оно там вычисляется детерминистично — не знаю. Наверно, можно запустить промежуточную прокси и поглядеть, как проходит SOCKS-аутентификация в debug-логах.


Это не штатная настройка, как много людей ею пользуется? Оно может привести к идеальному профилированию (особенно на сайтах, где не тысячи пользователей под Tor'ом). Слайдер тем и хорош, что он стандартен и рекомендуем, так что можно двигать и растворяться в массе себе подобных анонимов.


Какая универсальная фраза! Вы когда пишете рекомендацию или участвуете в обсуждениях, вы этих оговорок не произносите, поэтому слова имеют максимальную общность. Когда вас ловят на этом, вы начинаете переопределять тезис, упоминая об оговорках, о которых здесь никто кроме вас не знал.
— Гость (29/04/2015 12:55)   <#>
Если бы она была детерминистичной, как бы работала опция «New Tor Circuit for this Site»? А она работает, см. выше. Т.е. менять цепочку для заданной вкладки браузер умеет.

Работа этой опции не противоречит зависимости аутентификаторов от имени домена. Для новой цепочки можно заложить в функцию счётчик и или ещё что-нибудь, это уже несущественные детали. Возможно что смена цепочки тоже одинакова для разных браузеров (если порт тора одинаковый), не проверял.

Это не штатная настройка, как много людей ею пользуется?

Что тогда считать "штатной"? Она доступна из стандартного интерфейса. Большинство наверное вообще не вникает в настройки, профилируется по font-face и не выключает скрипты, нужно следовать за ними? Даже у слайдера несколько уровней, что тоже выделяет из толпы.
— unknown (29/04/2015 13:36)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

У вас мания — всех на чём-то ловить, выводить на чистую воду? OK, все мои рекомендации являются личным мнением автора, высказанным в форуме в форме свободных ни к чему необязывающих бесед-рассуждений, не являются авторитетным источником (вычёркивайте заодно из ФПП — там масса моих коментов выдернута из контекста совершенно неправильно), могут быть использованы исключительно на ваш собственный страх и риск. Большинство из них не подтверждено никакими ссылками, они неверифицируемы даже на уровне, принятом в википедии.
— Гость (29/04/2015 16:18)   <#>

Мне кажется, это полная дурь. Зачем бы они так делали? Рандом ничем не хуже. Надо вникать в код, читать тикеты и рассылку. Наверняка там эти нюансы обсуждались.


Из интерфейса NS, да? Мне кажется, туда вообще почти никто не лазит. Я лично его стараюсь не трогать. У меня два режима: «JS включён везде» и «JS не включён нигде». Под JS можно использовать отдельный инстенс TorBrowser'а (TBB, распакованный в иную директорию).


Если не доводить аргумент ad absurdum, то есть градации популярности настроек. Отключить JS — это многие делают, на самом деле. Оно выделяет, но не так сильно. Менять настройки видимости шрифтов — это то, что меняют редчайшие единицы, причём любой сайт это сразу сможет увидеть, поэтому я и говорю об уникальном профилировании. Может быть, даже по шрифтам отпрофилировать будет тяжелее, чем по такой настройке.


Верно, вопрос в том только, насколько сильно выделяет. Слайдер — штатные опции в torbutton'е, которые везде заявлены и официально рекомендуются к изменениям под свои нужды. Это позволяет полагать, что слайдер будут двигать многие, а профилирование от этого будет не таким существенным.


Unknown, давайте по существу. Если вы предлагаете что-то, что кардинально отличается от общепринятого, сделайте милость написать нужную оговорку, а то хрустальных шаров тут ни у кого нет. И я вам сказал и второй гость сказал: есть алиасы, есть прописывание на лету, торифицируется почти всё. Зная вас по вашим постам тут, мне трудно предположить, что вы ещё чем-то сомнительным занимаетесь типа интернет-радио, гуглокарт, торрентов, проприетарных звонилок, скайпа и остального. Если б вы сразу на это намекнули, что у вас особый случай, был бы другой разговор. А то получается, что мы вокруг вас вьёмся с аргументами, пытаясь объяснить, что чёрное — это не белое, а в конце оказывается, что вы имели в виду совсем другое, и типа «что вы меня тут за дурака держите, будто я это не понимаю». Я вот работаю через SOCKS и не понимаю, что должно быть такого у человека со схожим профилем/интересами, что принципиально через SOCKS не разруливается или ведёт к таким проблемам, что лучше уж терпеть прозрачку с её заявленными утечками.


По-моему, комменты для вас к ФПП-топикам разрешены. Вы там можете отписаться, что и почему было процитировано неправильно. Это можно будет обсудить и исправить — это, если вы действительно считаете, что там что-то слишком сильно искажено. Как я уже говорил, у меня пока нет времени заниматься ФПП, фиксить его и пополнять.


И вообще, unknown, давайте без этих детских истерик в стиле известного анекдота.
На страницу: 1, ... , 10, 11, 12, 13, 14, ... , 16 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3