Главная страница
Навигация по странице:

  • Листинг 9.4. Ограничение скорости загрузки медиа - файлов в рабочее время

  • 9.6. Кэширование браузером

  • Disk Cache Folder

  • Every time I view the page

  • Once per session

  • Reload . 9.7. squidGuard

  • 9.7.1. Установка Установка программы достаточно интересна. Скачайте исходные коды с сай- та www.squidguard.org

  • 9.7.2. Настройка

  • Глава 10 Передача файлов

  • 10.1. Работа протокола FTP

  • 10.1.1. Команды протокола FTP

  • Листинг 10.1. Пример работы протокола FTP

  • Таблица

  • 10.1.2. Сообщения сервера

  • 10.1.3. Передача файлов

  • 10.1.4. Режим канала данных

  • Михаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69


    Скачать 3.69 Mb.
    НазваниеМихаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69
    Дата13.03.2022
    Размер3.69 Mb.
    Формат файлаpdf
    Имя файлаlinux_glazami_xakera_3-e_izd.pdf
    ТипДокументы
    #394477
    страница25 из 35
    1   ...   21   22   23   24   25   26   27   28   ...   35




    Глава
    9
    320
    коскоростной канал связи. Нельзя повысить скорость одному человеку без ущерба остальным.
    Если кому-то требуется полоса гарантированной пропускной способности для работы с приложениями, требующими высокой скорости обмена (напри- мер
    , для проведения презентаций), вы должны зарезервировать для них более мощный
    , чем для остальных, канал.
    Ограничение внешнего канала достаточно легко выполнить с помощью squid.
    Директивы
    , которые нужно использовать, можно увидеть в следующем примере
    : delay_pools 3 delay_class 1 1 delay_class 2 2 delay_class 3 1 delay_parameters 1 256000/256000 delay_access 1 deny all delay_access 1 allow admins delay_parameters 2 256000/256000 4000/8000 delay_access 2 allow all delay_access 2 deny admins delay_parameters 3 64000/64000 delay_access 3 deny all delay_access 3 allow bigboss
    Этот код нужно добавить в файл конфигурации /etc/squid/squid.conf после комментария
    :
    # DELAY POOL PARAMETERS (all require DELAY_POOLS compilation option)
    # -------------------------------------------------------
    Большинство параметров уже заданы по умолчанию, и их следует заменить.
    Давайте подробно рассмотрим конфигурацию. Для начала нужно определить, сколько у вас будет пулов (правил, описывающих скорость доступа).
    Для этого используется директива delay_pools n
    , где n
    — это количество пулов
    . По умолчанию n
    равно нулю, и нет никаких ограничений. Мы созда- дим три пула, поэтому в примере указано число 3.
    После этого нужно определить, к какому классу относится пул. Это делается с
    помощью директивы delay_class n c
    , где n
    — это порядковый номер, а
    c
    — номер класса. Каждая строка с директивой delay_class должна иметь свой порядковый номер, который начинается с 1. В нашем примере три стро- ки
    , поэтому в первой параметр n
    равен
    1
    , во второй —
    2
    , а в третьей —
    3

    Шлюз
    в
    Интернет
    321
    Номеров класса (второй параметр) может быть три:
    ˆ
    1 — ограничение канала происходит для всей сети. Например, у вас внеш- ний канал 256 Кбит/с, вы можете его уменьшить для всех до 64 Кбит/с;
    ˆ
    2 — сузить можно общий канал, а также для каждого пользователя инди- видуально
    . В этом случае можно понизить общий канал до 64 Кбит/с, а
    каждому пользователю — до 4 Кбит/с;
    ˆ
    3 — ограничивать можно общий канал, индивидуально и для каждой сети в
    отдельности. Например, если скорость канала равна 256 Кбит/c, а в ва- шей сети работает 4 подсети, то каждой из них можно выделить по
    64 Кбит/с, чтобы равномерно разделить нагрузку.
    В
    нашем примере мы используем пулы классов 1, 2 и снова 1. Я специально расположил их не последовательно, чтобы пример был более наглядным.
    Теперь описываем параметры скорости доступа. Это делается с помощью следующей директивы: delay_parameters пул скорость_канала скорость_сети индивидуально
    Здесь пул
    — это номер пула, скорость которого мы хотим описать. Так, в
    нашем примере следующая строка описывает скорость для первого пула: delay_parameters 1 256000/256000
    Количество параметров зависит от класса используемого пула. Так как пул 1 имеет класс 1 (
    delay_class 1 1
    ), у которого можно ограничивать только канал полностью, в директиве используется единственный параметр — скорость_канала
    (
    256000/256000
    ). Он формируется в виде двух чисел, разде- ленных знаком "/". До косой черты указывается скорость, с которой будут скачиваться данные из сети, а после — размер пула, то есть емкость, которую можно наполнить полученными из сети данными.
    Обратите внимание, что скорость указывается именно в байтах, а характери- стика модема задается в битах в секунду. Если в качестве скорости указать значение
    -1
    , то никаких ограничений не будет.
    После определения параметров для первого пула нужно установить права доступа к нему. Это делается директивой delay_access
    , которая имеет сле- дующий вид: delay_access пул доступ acl
    Первый параметр — это снова номер пула. Потом указывается доступ allow или deny
    , и последним идет имя ACL-списка.
    В
    нашем примере для первого пула используется две строки: delay_access 1 deny all delay_access 1 allow admins

    Глава
    9
    322
    Сначала мы запрещаем доступ для всех, а потом разрешаем работать на дан- ной скорости только ACL-списку admins
    . Подразумевается, что в этот список входят администраторы.
    Далее идет описание скорости и прав доступа для второго пула: delay_parameters 2 256000/256000 4000/8000 delay_access 2 allow all delay_access 2 deny admins
    Так как второй пул относится ко 2 классу, то здесь нужно указать общую скорость
    (256 000 байт в секунду) и скорость доступа каждого компьютера в
    отдельности — 4000 байт в секунду. На такой скорости будут работать все пользователи в сети, кроме администраторов.
    Если вы установите такие правила в какой-либо организации, то могут воз- никнуть проблемы с руководством, потому что директор тоже попадет в спи- сок all
    , и будет работать на скорости 4000 байт в секунду. Я думаю, что его это не устроит, и для него мы сделаем отдельную запись: delay_parameters 3 64000/64000 delay_access 3 deny all delay_access 3 allow bigboss
    С
    помощью ограничения пропускной способности канала можно запретить загрузку мультимедиа-файлов в рабочее время. В следующем примере мы разрешаем быстро читать WEB-странички, но уменьшаем скорость загрузки других медиа-файлов (см. листинг 9.4).
    Листинг
    9.4.
    Ограничение
    скорости
    загрузки
    медиа
    -
    файлов
    в
    рабочее
    время
    # ACL-список, описывающий сеть acl fullspeed url_regex −i 192.168.1
    # ACL-список, описывающий медиа-файлы, для которых необходимо
    # понизить скорость acl mediaspeed url_regex −i ftp .exe .mp3 .avi .mpeg .iso .wav
    # Время, которое будет действовать ограничение на скорость
    # загрузки медиа-файлов acl day time 08:00−18:59
    # Нам нужно два пула второго класса delay_pools 2 delay_class 1 2 delay_class 2 2

    Шлюз
    в
    Интернет
    323
    # Первый пул не имеет ограничений для всех delay_parameters 1 −1/−1 −1/−1 delay_access 1 allow fullspeed
    # Второй пул ограничивает доступ в дневное время delay_parameters 2 4000/100000 4000/100000 delay_access 2 allow day delay_access 2 deny !day delay_access 2 allow mediaspeed
    Я
    постарался снабдить листинг подробными комментариями, чтобы вы мог- ли с ним разобраться без дополнительных пояснений. Хочу только заметить, что скорость понижается для всех. Если вы хотите разрешить определенным пользователям работать на полной скорости, можно внести их в список (на- пример
    , allowfull
    ) и добавить в конец листинга следующую строку: delay_access 2 deny !allowfull
    9.6.
    Кэширование
    браузером
    В
    заключение темы о прокси-серверах хочется сказать, что кэширование удобно
    , когда с сервером работает множество компьютеров. При этом эко- номнее используется канал связи, и с увеличением количества пользователей нагрузка на него увеличивается не пропорционально их числу, а медленнее.
    Помимо централизованного кэширования с помощью прокси-сервера может использоваться локальный кэш сетевых программ. Например, в браузере Mo- zilla прочитанные страницы могут сохраняться в кэше на локальном диске.
    При следующем их вызове не происходит обращения даже к прокси-серверу, а
    страничка загружается из локального кэша.
    На рис. 9.3 показано окно настройки кэша в браузере Mozilla. Как видите,
    Memory Cache по умолчанию составляет 4096 Кбайт — это максимальный размер оперативной памяти, используемой для хранения последних загру- женных страниц. Использование кэша в памяти увеличивает скорость, когда вы путешествуете по одному и тому же сайту, ведь при переходе от страницы к
    странице большинство графических образов сохраняется. Чтобы не делать даже лишних обращений к диску, последние загруженные файлы берутся прямо из оперативной памяти.
    Другой параметр отвечает за размер кэша на жестком диске (Disk Cache).
    Это максимальный размер директории, которая хранит загруженные из Ин- тернета файлы. В моей системе значение по умолчанию равно 50 000 Кбайт

    Глава
    9
    324
    (около 50 Мбайт). Это очень мало, и при регулярной работе с WEB вы не за- метите
    , как израсходуется это пространство. Если позволяет свободное место на жестком диске, то я рекомендую увеличить это значение. Еще ниже есть поле
    Disk Cache Folder, в котором указывается папка для хранения кэша.
    Рис
    . 9.3.
    Настройка кэширования в
    браузере
    Mozilla
    И
    последнее, что можно настроить — условия, когда информация должна быть загружена с сервера, а не из кэша. Здесь можно выбрать одно из зна- чений
    :
    ˆ
    Every time I view the page — обновление будет происходить каждый раз, когда вы обращаетесь к странице, то есть локальный кэш использоваться не будет;
    ˆ
    When the page is out of date — когда страница устарела;
    ˆ
    Once per session — единожды за сессию, то есть только при первом заходе;

    Шлюз
    в
    Интернет
    325
    ˆ
    Never — никогда. Страница всегда будет загружаться из кэша, а для об- новления нужно нажать кнопку Reload (Обновить) на панели инструмен- тов браузера.
    При работе через прокси-сервер или с использованием локального кэширо- вания браузера или другой программы вы должны учитывать, что загружае- мые страницы могут содержать устаревшие данные. Для обновления нужно вручную нажать кнопку Reload.
    9.7. squidGuard
    Использование прокси-сервера достаточно опасно, поэтому squid очень часто используют совместно с дополнительной защитой в виде программы squid-
    Guard. В качестве возможностей этого стражника можно выделить опознава- ние пользователей по имени или адресу, фильтрацию запросов, замену бан- неров и т. д.
    9.7.1.
    Установка
    Установка программы достаточно интересна. Скачайте исходные коды с сай- та
    www.squidguard.org. Скачав исходники, разархивируйте их. Это можно сделать даже графической утилитой, которая работает в Ubuntu как файло- вый менеджер. Для простоты разархивируйте их в свою домашнюю директо- рию
    . Запустите терминал и перейдите внутрь созданной при разархивации директории с программой: cd

    /squidGuard-X.X
    В
    данном случае X.X — это номер версии squidGuard. Запустите отсюда команду конфигурации:
    ./configure
    По экрану побегут строки, сообщающие о ходе проверки и конфигурирова- ния программы. Если выполнение прервалось с ошибкой, то, вероятнее всего, в
    вашей системе отсутствует BerkeleyDB. У меня в Ubuntu так и было, поэто- му сразу расскажу, как станцевать танец с бубнами для установки этого зве- ря
    . При помощи поисковика находим архив BerkeleyDB, Скачиваем его и
    разархивируем. Лучше опять разархивировать в домашнюю папку, все рав- но потом все это можно будет удалить. Теперь переходим в папку: cd /db-X.X.X/build-unix
    Буквы в виде Х снова означают номер версии. Обратите внимание, что мы переходим в подкаталог build-unix. Это очень важно. Мы устанавливаем биб- лиотеку работы с базой в Linux, который относится к системам UNIX, поэтому

    Глава
    9
    326
    компиляция и установка должна происходить именно отсюда. В этой дирек- тории выполняем три команды:
    ../dist/configure make sudo make install
    Первая команда конфигурирует программу, вторая ее компилирует, а тре- тья
    — устанавливает. Обратите внимание, что перед командой установки стоит sudo. Дело в том, что установка будет происходить в директорию
    /usr/local, к которой у простых смертных учетных записей доступа нет. Если не указать sudo, то установка завершится ошибкой прав доступа.
    Теперь
    , когда библиотека базы данных установлена, можно возвращаться в
    директорию squidGuard. Только не спешите запускать конфигурацию снова.
    С
    вероятностью 99% она не пройдет, потому что конфигуратор ищет библио- теку
    BerkeleyDB в папке /usr/local/BerkeleyDB, но она устанавливается в
    /usr/local/BerkeleyDB.X.X, то есть в конец имени папки добавляется номер версии
    . Выполните команду: ls /usr/local
    Это позволит увидеть содержимое папки /usr/local прямо из текущей папки стражника
    . Запомните имя и выполняйте команду конфигурации так:
    ./configure --with-db=/usr/local/BerkeleyDB.X.X
    В
    данном случае X.X на конце заменяем на свой номер версии. Теперь кон- фигурация должна пройти успешно. Если нет, то в этом случае все претензии к
    разработчикам, но я с другими проблемами не встречался.
    После конфигурации выполняем команды сборки и установки: make sudo make install
    Установка снова выполняется от имени администратора, потому что снова происходит копирование в защищенную область /usr/local.
    9.7.2.
    Настройка
    Директория по умолчанию, в которой можно найти установленный нами стражник
    — /usr/local/squidGuard. Основные настройки находятся в файле squidGuard.conf, расположенном в этой же директории. Первое, что вы уви- дите в этом файле, это следующие две строки: dbhome /usr/local/squidGuard/db logdir /usr/local/squidGuard/logs
    Первый параметр (
    dbhome
    ) задает путь к базам данных, где будут храниться списки доступа. Второй параметр (
    logdir
    ) — это путь к журналу. На сайте

    Шлюз
    в
    Интернет
    327
    www.squidguard.org в разделе Blacklists можно скачать примеры списков доступа с вредными сайтами. Их нужно разархивировать в директорию баз данных
    , то есть ту, что указана в параметре dbhome
    Теперь мы можем в этом же файле задать права доступа. Причем права дос- тупа могут распределяться даже по времени и по пользователям. Отдельным пользователям можно дать возможность смотреть все, а кому-то (например, детям
    ) запретить смотреть сайты для взрослых.
    Для создания времени используется параметр time
    . Например, можно создать период
    , который будет отображать рабочее время. Для этого в файле squidGuard.conf пишем: time worktime { weekly * 9:00-17:00 # Рабочее время date 2010.02.27 9:00-17:00 # День, который случайно стал рабочим
    }
    После параметра time указывается имя периода. В фигурных скобках указы- ваем периоды времени. Параметр weekly со звездочкой означает любой день недели
    . Если нужно определиться только с рабочими днями недели, то их можно перечислить как MTWHF. После этого идет рабочее время, в которое и
    будет использоваться данное правило. Параметр date позволяет задать опре- деленную дату. В данном случае я выбрал для примера субботу, 27 февраля
    2010 года, которая будет рабочим днем. Наше правило будет распростра- няться и на этот день.
    Для задания адресов, к которым будет разрешен или запрещен доступ, ис- пользуется директива dest
    , например: dest porn { domainlist porn/domains urllist porn/urls expressionlist porn/expressions
    }
    Как видно из примера, здесь указываются параметры domainlist
    , urllist и
    /или expressionlist
    , с помощью которых задаются имена файлов, содер- жащих списки доменов, URL или регулярных выражений. Пути задаются относительно директории, указанной в директиве dbhome. Например, файл
    /usr/local/squidGuard/db/porn/domains может содержать тысячи строк вроде sex.com sexygirls.com
    Регулярные выражения позволяют записывать множество сайтов в одну строку
    , но злоупотреблять ими не следует, так как проверка соответствия может занимать много времени.

    Глава
    9
    328
    Теперь посмотрим, как можно написать правило, которое запретит в рабо- чее время смотреть сайты для взрослых (
    porn
    ), рекламу (
    adv
    ) для экономии трафика и сайты с нелегальными программами (
    warez
    ) для защиты каналов от перегруза: acl { all within worktime { pass !adv !porn !warez all
    } else { pass all
    } default { pass none redirect http://localhost/block.html
    }
    }
    Это разрешающее правило acl
    (Access Control List). В нем три блока:
    ˆ
    all within worktime
    — для всех в рабочее время — разрешено все, кро- ме перечисленных трех запретов, о которых мы говорили выше. На то, что они запрещены, указывает восклицательный знак перед их названиями;
    ˆ
    else
    — все остальное время разрешено все;
    ˆ
    default
    — по умолчанию — вообще ничего (
    none
    ) не разрешено, а проис- ходит переадресация на http://localhost/block.html.
    Разумеется
    , чтобы это правило работало, нужно еще описать списки адре- сов adv и warez при помощи директивы dest
    , подобно тому, как был опи- сан porn
    Таким образом мы написали правило, которое касается всех. А что, если вы хотите указать исключение для себя? Администраторы — привилегирован- ные люди, и глупо ограничивать самого себя. Для этого можно прописать группу
    , например admins
    , и прописать туда адреса компьютеров, которые должны быть привилегированными, и обрабатывать их отдельно: src admins { ip 192.168.1.1-192.168.1.3
    } src others { ip 192.168.1.4-192.168.1.255
    }

    Шлюз
    в
    Интернет
    329
    Теперь права доступа можно подкорректировать следующим образом: acl { admins within worktime { pass all
    } others within worktime { pass !adv !porn !warez all
    } else { pass all
    } default { pass none redirect http://localhost/block.html
    }
    }
    Теперь вы сможете обращаться к любым WEB-сайтам. Чтобы изменения вступили в силу, нужно выполнить следующую команду: squidGuard -C all
    Ее выполняем из директории /usr/local/bin.

    Глава 10
    Передача файлов
    Были времена, когда построение сети было делом дорогим, а Интернет — еще дороже, и для обмена файлами приходилось бегать с дискетами 3,5 или
    5,25 дюймов. Если кто-то застал те времена, наверное, он вспоминает их с
    ужасом. Дискеты постоянно портились, и данные периодически перестава- ли читаться. Благо, если расстояние было небольшое, и можно было повто- рить пробежку, но когда дистанция большая — потеря очень сильно отража- лась на эмоциональном состоянии.
    До сих пор в некоторые компьютеры вставляют дисководы для 3,5-дюймовых дискет
    , видимо, по привычке. Но уже трудно представить себе офис без пол- ноценной сети, и в фирмах, где мне приходилось настраивать серверы, все компьютеры обязательно подключены к локальной сети. В таких случаях уже нет надобности в дисководах, и администраторы их просто вынимают. Если у
    вас возник вопрос, зачем вытаскивать то, что может пригодиться, значит, вы забыли, что ничего лишнего в компьютере не должно быть. Это касается не только программ, но и компьютерного железа.
    Через дискеты хакеры легко могут унести секретную информацию, получив физический доступ к компьютеру. Да, много не унесешь, но все же. Мне из- вестна фирма, которая содержала локальную сеть, оторванную от внешнего мира
    , и считала себя неприступной. Но секретная информация утекла с по- мощью простых дискет через все охранные системы, потому что металло- искатели не срабатывали на 3,5-дюймовые дискеты, в силу чего были поте- ряны рынки сбыта, и только после этого все компьютеры лишились опасного устройства
    Сети позволяют избавиться от лишнего оборудования в компьютерах и сде- лать передачу данных быстрее и надежнее. Надо всего лишь настроить нуж- ные протоколы и использовать кабельную проводку на полную мощность.

    Глава
    10
    332
    В
    настоящее время самым популярным протоколом обмена файлами является
    FTP (File Transfer Protocol, протокол передачи файлов). Он был разработан достаточно давно, но до сих пор не потерял своей актуальности, хотя некото- рые возможности оставляют желать лучшего.
    10.1.
    Работа
    протокола
    FTP
    Как мы уже говорили в главе 6, для использования протокола FTP требуется две составляющие: клиент и сервер. В качестве клиента, в принципе, можно использовать любой Telnet-клиент, и, подключившись к 21 порту серве- ра
    , вручную передавать команды. Но во времена графического интерфейса нужно что-то более удобное. В ОС Windows мой любимый FTP-клиент —
    CyD FTP Client XP (www.cydsoft.com), главное окно которого можно уви- деть на рис. 10.1.
    Если у вас нет FTP-клиента, то для тестирования протокола можно использо- вать даже браузер, например, Internet Explorer или Firefox. Для этого в строке
    URL нужно набрать адрес в формате ftp://имя:пароль@адрес
    Рис
    . 10.1.
    Главное окно программы
    CyD FTP Client XP

    Передача
    файлов
    333
    Например
    : ftp://flenov:mypassword@ftp.my_server.com или ftp://flenov:mypassword@192.168.77.1
    Протокол
    FTP работает сразу на двух портах: один используется для уп- равления
    (пересылка команд), а другой — для передачи данных (файлов).
    Программа
    -клиент соединяется с портом 21 и начинает передавать команды.
    С
    этим портом соединяются все пользователи, и сервис, который прослуши- вает этот канал, работает одновременно с несколькими соединениями.
    Когда клиент запрашивает данные, открывается еще одно соединение с кон- кретным пользователем, по которому передается файл. Это удобно с точки зрения программирования, но несподручно с точки зрения администрирова- ния
    , точнее сказать, конфигурирования сетевого экрана. Дело в том, что для передачи данных клиент может открыть абсолютно любой порт, и сервер не может предсказать его номер.
    Большинство команд, используемых в протоколе FTP, схожи с теми директи- вами
    , которые вы используете в Linux для управления файлами. Это связано с
    тем, что во время разработки протокола основной сетевой ОС являлись
    UNIX-системы. Это в наше время везде стоит Windows, а 30 лет назад все было иначе.
    10.1.1.
    Команды
    протокола
    FTP
    Давайте рассмотрим листинг 10.1. В нем приведен пример общения клиент- ской программы с FTP-сервером. Строки, в начале которых стоит знак ">", были отправлены FTP-серверу, а остальные — это его ответы.
    Листинг
    10.1.
    Пример
    работы
    протокола
    FTP
    < 220 Flenov Mikhail FTP Server
    > USER Anonymous
    < 331 Anonymous access allowed, send identity (e-mail name) as password.
    > PASS your@mail.com
    < 230 Anonymous user logged in.
    > PWD
    < 257 "/" is current directory.
    > TYPE A
    < 200 Type set to A.
    > PASV

    Глава
    10
    334
    < 227 Entering Passive Mode (127,0,0,1,13,20).
    > LIST
    < 125 Data connection already open; Transfer starting.
    < 226 Transfer complete.
    Самой первой строкой идет приглашение сервера FTP. Его мы получаем сра- зу же в ответ на соединение с портом 21. В этой строке чаще всего находится текстовое описание сервера, с которым произошло соединение, и его версия.
    В
    данном случае здесь вместо конкретного названия мое имя, но в реальном сервере при настройках по умолчанию будет видна примерно следующая строка
    :
    220 flenovm.ru FTP server (Version wu-2.6.2-5) ready.
    Для чего я изменил строку приветствия? Все очень просто, в ней по умолча- нию показывается имя домена, имя FTP-сервера, его версия и приветственное сообщение
    . Ничего страшного не видите? А я вижу — хакеру достаточно подключиться на порт 21, чтобы узнать, с каким FTP-сервером он имеет дело.
    Дальнейшие действия взломщика легко предсказать. Я бы на его месте поис- кал во всех базах уязвимостей информацию о дырах в данной версии wu-ftpd.
    А
    администратору остается молиться, чтобы я не нашел нужных сплоитов, или найденная дыра была незначительной и не позволила мне ничего сделать с
    его системой.
    После прочтения строки сообщения можно посылать команды FTP-серверу.
    Но ничего особого выполнить не удастся, пока вы не представитесь серверу.
    Для этого нужно выполнить команды FTP:
    USER
    с параметром имя пользова- теля
    , а затем
    PASS
    , указав пароль.
    Серверы
    FTP позволяют работать с тремя типами авторизации: действитель- ная
    , гостевая и анонимная. В первом случае вы должны передать серверу реальное имя и пароль пользователя, которому разрешен доступ к серверу.
    Тогда после выполнения команды
    USER
    вы увидите сообщение о необходи- мости ввести правильный пароль для указанного пользователя:
    331 Password required for flenov
    В
    случае с анонимным доступом в качестве имени нужно указать
    Anonymous
    (команда
    USER Anonymous
    ). В ответ на это сервер вернет нам сообщение:
    331 Anonymous access allowed, send identity (e-mail name) as password.
    Здесь говорится, что анонимный доступ разрешен, и вы должны передать в
    качестве пароля адрес E-mail. Честно говоря, можно ввести и чужой E-mail, например
    , адрес соседа. Это сервер проконтролировать не сможет. Некото- рые серверы вообще не проверяют корректность адреса даже по простым шаблонам
    , и можно передавать что угодно.

    Передача
    файлов
    335
    На практике анонимный доступ обладает минимальными возможностями чтения файлов и директорий и используется только в открытых файловых архивах
    . Имя Anonymous чаще всего используют для публикации открытых документов для всеобщего доступа через FTP. Например, разработчики про- грамм создают анонимные FTP-серверы для того, чтобы пользователи могли скачать с сервера последние версии программ или обновления для них.
    Реальный пользователь может путешествовать по всей файловой системе, и
    возможности ограничены только правами доступа используемой учетной записи
    Гостевой доступ по своим правам является чем-то промежуточным между анонимным и действительным. По сравнению с анонимным пользователем, гость обладает большими правами, и ему может выдаваться разрешение на закачку файлов на сервер, но в отличие от действительного, он работает только в
    своей директории. Например, если гостю назначен каталог /home/guest, то он сможет работать с файлами и подкаталогами этой директории, но выше нее подняться не сможет. Вы можете определить любое имя в качестве гостевого.
    Обратите внимание, что пароль в команде
    PASS
    передается абсолютно в от- крытом виде. Это серьезная проблема. В каждой главе, где мы рассматриваем какой
    -либо сервис, доводится сталкиваться с открытой передачей данных.
    Ну что поделаешь, на заре рождения Интернета никто не думал о хакерах.
    Теперь приходится выдумывать разные методы, чтобы спрятать пароль.
    Если ваш сервер обслуживает только анонимные соединения, то пароли мо- гут передаваться, как угодно. При такой аутентификации любой пользова- тель и так может подключиться к серверу, указав любой адрес E-mail в каче- стве пароля. Но подобные серверы используются только с общедоступными ресурсами
    /файлами. При наличии важной информации доступ происходит по паролю
    , и необходимо сделать так, чтобы он шифровался. Для этого можно использовать stunnel или уже готовый протокол SFTP, о котором мы говори- ли в разд. 5.3.8.
    Отличное решение я видел на одном из публичных WEB-серверов около
    10 лет назад. Для того чтобы закачать данные на сервер, необходимо было зарегистрироваться
    , заполнив WEB-форму с личными данными. Затем вам выдается пароль на доступ, который действует только в течение одной сес- сии
    . После этого пароль уничтожается, и повторное подключение становится невозможным
    . Файлы закачиваются в специальную директорию, в которую разрешена только запись. Самим файлам устанавливаются права только для чтения и записи, а выполнение остается недоступным. Таким образом, паро- ли можно передавать в открытом виде. Даже если хакер увидит пароль, под- ключиться он не сможет.

    Глава
    10
    336
    Реализовать одноразовые пароли достаточно просто, если ваш сервер ис- пользует подключаемые модули аутентификации PAM (см. разд. 3.3.3).
    После того как вы авторизовались на сервере, можно выполнять любые дру- гие команды FTP-сервера. Но тут есть одна проблема — список директив зависит от сервера. Конечно же, есть определенные требования, которых придерживаются все производители, — это основные команды, описанные в
    RFC (Requests for Comments, рабочие предложения). Однако возможности, предоставляемые стандартом, уже устарели, и разработчики WEB-серверов начали добавлять свои функции, которые могут отличаться в разных версиях программ
    . Так что, если клиентская программа в каких-то ситуациях ведет себя не совсем корректно, это еще не значит, что она плоха, просто она мо- жет быть несовместима с данным сервером.
    Основные команды протокола FTP можно увидеть в табл. 10.1. Они вам мо- гут пригодиться при работе через Telnet и для тестирования сервера. Более подробно они описаны в Приложении 1.
    Таблица
    10.1.
    Команды
    протокола
    FTP
    Команда
    Описание
    USER имя
    Авторизоваться на сервере как пользователь с
    именем имя
    PASS пароль
    Указать пароль при авторизации
    SYST
    Вернуть тип системы
    HELP
    Предоставить список доступных для выполнения команд
    LIST
    Вывести список файлов и
    каталогов текущей директории
    PWD
    Возвратить текущую директорию
    CWD директория Сменить текущую директорию
    TYPE тип
    Указать тип передачи данных
    : A для
    ASCII, I — для бинарных файлов
    RETR параметр
    Скачать с
    сервера файл
    , указанный в
    качестве параметра
    STOR параметр
    Загрузить на сервер файл
    , указанный в
    качестве параметра
    ABOR
    Прервать последнюю команду или передачу данных
    QUIT
    Выйти из системы
    10.1.2.
    Сообщения
    сервера
    В
    ответ на полученную команду сервер возвращает нам сообщения, по кото- рым можно оценить результат работы. Уведомления состоят из трехзначного числового кода и необязательной текстовой части. Если для ответа требуется

    Передача
    файлов
    337
    несколько строк, то в первой после кода стоит дефис, а в последней после кода идет пробел.
    Вы должны знать смысл числовых кодов, чтобы определить тип ошибки.
    Когда к вам за помощью обращается пользователь, зная значения кодов, вы можете быстро определить причину сбоя и решить проблему.
    Значения первой и второй цифр кода ответа FTP-сервера можно увидеть в
    табл. 10.2 и 10.3 соответственно.
    Таблица
    10.2.
    Значения
    первой
    цифры
    в
    коде
    ответа
    FTP-
    сервера
    Код
    Описание
    1
    Команда удачно принята к
    выполнению
    , но еще не закончила свое выпол
    - нение
    , поэтому нужно дождаться ее окончания перед продолжением рабо
    - ты
    Такие сообщения приходят во время выполнения длительных операций
    (
    например
    , запрос на передачу файлов
    ).
    После завершения работы коман
    - ды будет получено еще одно сообщение
    2
    Команда выполнена удачно
    , можно продолжать работу и
    посылать новые директивы
    Такие сообщения приходят в
    ответ на простые команды
    3
    Команда выполнена удачно
    , но для завершения работы требуется дополни
    - тельная директива
    Такие сообщения можно увидеть в
    ответ на операции
    , предусматривающие несколько действий
    , например
    , во время аутентифика
    - ции
    , которая требует двух команд
    Сообщения с
    кодом
    , начинающимся с
    цифры
    3, появляются между отправкой команд
    USER
    и
    PASS
    4
    Команда выполнена неверно
    , но результат может быть положительным
    , если повторить попытку позже
    Сообщение может быть получено в
    случае
    , если сервер не в
    состоянии сейчас выполнить команду из
    - за выполнения другой операции
    5
    Команда выполнена неверно
    Это самый критичный ответ
    , который может быть при неверном синтаксисе директивы или неправильном задании па
    - раметров
    Таблица
    10.3.
    Значения
    второй
    цифры
    в
    коде
    ответа
    FTP-
    сервера
    Код
    Описание
    0
    Синтаксическая ошибка
    , команда воспринята неверно
    1
    Информация
    2
    Установка соединения
    3
    Сообщение относится к
    аутентификации
    4
    Не определено
    5
    Сообщение файловой системы

    Глава
    10
    338
    Рассмотрим пример. Допустим, пользователь увидел в своем FTP-клиенте следующее сообщение и не знает, что делать дальше:
    331 Anonymous access allowed, send identity (e-mail name) as password.
    Вам достаточно только знать код 331. По первому числу 3 видно, что дирек- тива выполнена удачно, но требуется дополнительная команда. Вторая циф- ра
    — тоже 3, то есть сообщение появилось в ходе аутентификации. Когда может быть такой отклик? Конечно же, после ввода имени. Сервер FTP ожи- дает пароль, поэтому выдал сообщение с кодом 331.
    Как видите, минимальных знаний достаточно, чтобы увидеть, какая возникла проблема
    , и максимально быстро ее решить.
    10.1.3.
    Передача
    файлов
    Так как протокол FTP предназначен для работы с разными системами, то для передачи файлов используются два основных режима — текстовый (ASCII) и
    бинарный.
    Допустим
    , что вы хотите переслать текстовый файл с компьютера UNIX на компьютер
    Windows. В UNIX для текстовых файлов в качестве идентифи- катора конца строки используется символ (Carriage Return, возврат каретки
    , код 13). В Windows то же самое обозначается двумя символами
    и (Line Feed, перевод строки, код 10). Если после передачи от- крыть в Windows этот текстовый файл, то все строки сольются в одну, по- тому что нет символа .
    На рис. 10.2 показан файл sendmail.cf (используется для конфигурации
    Sendmail), скаченный с Linux-сервера в бинарном режиме и открытый в про- грамме
    Windows Notepad. Как видите, очень тяжело разобрать, что здесь и для чего, а вместо перехода на новую строку можно увидеть нечитаемый символ
    в виде квадрата.
    Чтобы решить проблему конца строки, необходимо скачивать файл с сервера в
    символьном (ASCII) режиме. В этом случае текст передается построчно, и
    ОС-получатель сама добавляет нужные символы перевода строки. На рис. 10.3 можно увидеть файл sendmail.cf, полученный с сервера в режиме ASCII.
    Теперь информация стала читабельной, и все символы перехода на новую строку расставлены самой ОС верно, в соответствии со своими внутренними правилами
    Двоичные файлы (например, картинки или музыку) необходимо передавать в
    бинарном режиме. Здесь нет различий, в какой ОС создан объект, и он будет правильно воспринят в любой ОС, умеющей работать с данным форматом

    Передача
    файлов
    339
    Рис
    . 10.2.
    Файл sendmail.cf, полученный с
    Linux- сервера в
    бинарном режиме
    Рис
    . 10.3.
    Файл sendmail.cf, полученный с
    Linux- сервера в
    ASCII- режиме
    Если передать двоичный файл из Linux в Windows в текстовом режиме, то любой символ (а он может встретиться и в таком файле) будет заменен на пару символов и , и после этого файл может стать нечитаемым

    Глава
    10
    340
    10.1.4.
    Режим
    канала
    данных
    Мы уже говорили о том, что для работы с FTP-сервером необходимо два ка- нала
    . Порт 21 является управляющим, и по нему передаются только команды
    FTP. Для передачи файлов создается отдельное соединение. Этот процесс можно описать следующим образом:
    1.
    Программа
    -клиент открывает порт на компьютере, куда сервер должен передать содержимое файла.
    2.
    Серверу направляется запрос на скачивание файла и сообщается порт и IP- адрес клиентского компьютера, с которым он должен соединиться.
    3.
    Сервер инициализирует соединение с компьютером клиента и начинает передачу данных.
    Такой режим называется активным, потому что соединение устанавливает сервер
    . Проблема кроется в последнем действии. Если у вас установлен сете- вой экран, то, скорей всего, любые подключения извне запрещены, чтобы хакер не смог подобраться к компьютерам вашей сети. Соединения должны инициализировать только ваши компьютеры, а не внешние.
    Таким образом, в активном режиме протокол FTP не будет работать через правильно настроенный сетевой экран. Если вы разрешите внешним про- граммам устанавливать соединения, то нужно отключить сетевой экран, и он уже ничего не защитит.
    Чтобы решить проблему работы через сетевой экран, был разработан пассив- ный режим. В большинстве серверов и клиентских программ именно его те- перь начинают устанавливать по умолчанию, потому что сетевые экраны в
    наше время уже встроены почти во все ОС.
    В
    пассивном режиме соединение происходит иначе:
    1.
    Клиент запрашивает скачивание или просит принять файл.
    2.
    Сервер осуществляет привязку к порту и сообщает клиенту номер канала, куда необходимо подключиться для получения или отправки данных.
    3.
    Клиент устанавливает соединение с указанным портом, по которому про- исходит передача данных.
    Таким образом, сервер только открывает порт и подготавливается к обмену файлами
    , а все соединения происходят только со стороны клиента. Это уже не противоречит правилам сетевого экрана.
    10.2. ProFTPd
    В
    последнее время все бóльшую популярность завоевывает сервер ProFTPd.
    Его мы не будем рассматривать подробно, но кратко о нем расскажем. Главный

    Передача
    файлов
    341
    конфигурационный файл для этого сервера — это /etc/proftpd.conf. Кроме того, к
    конфигурационным файлам данного сервера также относится файл ftpusers, где описываются пользователи, которым разрешена работа с FTP.
    При конфигурировании proftpd большинство действий описываются блока- ми
    . Например:

    DenyAll
    Allow from 127.0.0.1

    Здесь описывается блок
    Limit
    , который позволяет задавать ограничение. Что именно ограничивается, указывается сразу после ключевого слова
    Limit
    . В дан- ном случае это операция
    SITE_CHMOD
    . Внутри блока идут операторы ограничения:
    ˆ
    DenyAll
    — запрещает доступ со всех компьютеров;
    ˆ
    Allow from
    — разрешить доступ только с указанного компьютера.
    Мы снова соблюдаем правило запрещения всего, что не разрешено явно.
    Можно также указывать следующие ограничения:
    ˆ
    AllowAll
    — разрешить доступ со всех компьютеров;
    ˆ
    AllowGroup группы
    — разрешить доступ с указанных групп;
    ˆ
    AllowUser
    — разрешить доступ указанным пользователям;
    ˆ
    AllowOverwrite значение
    — определяет, можно ли перезаписывать уже существующие файлы. В качестве значения можно указывать on или off
    Для всех пунктов, кроме последнего, есть аналогичные запреты: нужно толь- ко поменять
    Allow на
    Deny
    . Это операторы ограничения. В блоках могут быть и
    другие операторы, которые мы рассмотрим чуть позже, а сейчас давайте закончим знакомство с типами блоков.
    Чтобы создать сервер с анонимным доступом, нужно создать блок
    Anonymous


    Анонимным пользователям будет разрешен доступ только к директории путь и
    ничего более.
    Чтобы определить доступ к директории, можно использовать директиву
    Directory
    :

    DenyAll # для примера запретим доступ

    В
    этом блоке вы можете указывать директивы, которые относятся к данной директории
    . Если нужно указать глобальные параметры, то используйте блок

    Глава
    10
    342
    Global
    . Глобальному блоку не нужно указывать директорию, ведь он дейст- вует на все.
    Еще один блок, который может присутствовать в конфигурации сервера —
    VirtualHost
    . В нем указывается адрес сервера.
    Теперь рассмотрим параметры, которые можно использовать внутри этих блоков
    :
    ˆ
    DefaultRoot
    — корень дерева директорий FTP, выше которого пользова- тель не может подняться. По умолчанию пользователь получает доступ к
    своему домашнему каталогу, а доступ выше запрещен;
    ˆ
    DefaultTransferMode
    — режим передачи данных. Их всего два — тексто- вый и бинарный, и в этом параметре можно указать соответственно ascii или binary
    ;
    ˆ
    DisplayConnect имяфайла
    — содержимое указанного файла будет показано в
    приветственном сообщении во время соединения клиента с сервером;
    ˆ
    DisplayLogin имяфайла
    — содержимое указанного в этом параметре фай- ла будет показано пользователю после успешной регистрации;
    ˆ
    MaxClients
    — максимальное количество одновременно подключающихся пользователей
    . Слишком маленькое число позволит хакеру с легкостью реализовать
    DoS-атаку, исчерпав все возможные соединения;
    ˆ
    Order
    — порядок, в котором сервер применяет разрешения. Если здесь указано allow, deny
    , то разрешающие записи имеют больший приоритет.
    Если ничего не указано, то доступ разрешается. Если же указано значение deny, allow
    , то больший приоритет имеет запрещение;
    ˆ
    RootLogin
    — разрешение администратору подключаться по FTP. Если здесь указано on
    , то такое действие разрешено, но лучше все его запре- тить
    , указав off
    . FTP — не лучшее решение для администрирования фай- лов
    . Если хакер каким-либо образом узнает или подберет пароль, то мо- жете попрощаться со своими данными;
    ˆ
    ServerName
    — имя сервера, которое будет показываться клиенту;
    ˆ
    SyslogLevel
    — уровень журналирования событий:

    emerg
    — наиболее важные;

    alert
    — события;

    crit
    — критические сообщения;

    error
    — ошибки;

    warn
    — предупреждения;

    Передача
    файлов
    343

    notice
    — сообщения;

    info
    — информация;

    debug
    — отладочная информация;
    ˆ
    umask маска_файла маска_каталога
    — маска файла для новых файлов и па- пок
    , работающая точно так же, как параметр umask системы. Маска ката- лога не является обязательной.
    Как видите, уже по параметрам понятно, что к чему, так что ничего сложного здесь нет.
    10.3.
    Резюме
    Протокол
    FTP и серверы различных производителей за время своего сущест- вования имели множество проблем с безопасностью. Если сложить проблемы из
    -за ошибок FTP и программы Sendmail, то результат может затмить даже потери от внедрения вирусов.
    Главная проблема протокола FTP заключается в том, что он создавался как дружественный и удобный для пользователя. Вторая проблема — исполь- зование двух портов. Авторизация происходит только при подключении на
    21 порт, а работа с каналом для передачи данных происходит без какого- либо подтверждения подлинности клиента.
    Если во времена создания FTP-протокола он был действительно необходим для обмена данными, то в настоящее время от него следует избавляться. Если вы хотите дать пользователям возможность только скачивать информацию, то обратите внимание на протокол HTTP. С его помощью можно даже орга- низовать загрузку файлов на сервер.
    Если необходим обмен данными в локальной сети, то можно использовать
    Samba-сервер или опять же HTTP. Многие администраторы не хотят на- страивать
    WEB-сервер только ради обмена данными и устанавливать на него потенциально опасные сценарии. Но нельзя забывать, что FTP также может оказать медвежью услугу. Из двух зол нужно выбирать меньшее. Если у вас уже работает WEB-сервер, то максимально используйте его возможности, и
    тогда можно будет закрыть 21 порт, тем самым оградив себя от вероятных ошибок
    , которые могут с ним прийти.
    Если вам лично необходим доступ к серверу для работы с файлами удаленно, то советую использовать пакет SSH и встроенный протокол SFTP, который шифрует данные, поскольку такое соединение перехватить намного сложнее.

    1   ...   21   22   23   24   25   26   27   28   ...   35


    написать администратору сайта