CITKIT.ru
3 терабайта свободного софта!
Logo    
IT-рынок Новости мира IT Океан(!) софта на CITKIT.ru Форумы Поступления в библиотеку Учебный центр Курилка
CitForum    CITForum на CD Море(!) аналитической информации! :: CITFORUM.RU
IT-консалтинг Software Engineering Программирование Open Source СУБД Безопасность Internet Сети Операционные системы Hardware

23.05.2005

Google
WWW CITForum.ru

Новости мира IT:

  • 11.05 - Intel создает свою группу по Open Source
  • 11.05 - Банк контролирует использование USB устройств при помощи DeviceLock
  • 11.05 - Microsoft устранила опасную дыру в Windows
  • 11.05 - "Корпорация ОСС" создает антимонопольный альянс операторов IP-телефонии
  • 11.05 - В Mac OS X найдены множественные уязвимости
  • 11.05 - "Билайн" запускает услугу "Мобильная почта"
  • 11.05 - Две критические уязвимости в браузере Firefox 1.0.3
  • 11.05 - IBM покупает начинающую Open Source-компанию Gluecode
  • 11.05 - Microsoft готова к битве с Open Source за школы
  • 11.05 - Sun завершит "открытие" Solaris в ближайшие 45 дней
  • 11.05 - Создатели браузера Firefox выпускают юбилейные монеты в честь 50 миллионов скачанных копий
  • 11.05 - Вышла пятая версия мобильной ОС от Microsoft
  • 11.05 - Поисковые движки умнеют быстрее, чем люди
  • 11.05 - Фишеры постоянно совершенствуются
  • 11.05 - Специалисты прогнозируют появление аналога Google Adsense от "Яндекс"
  • 06.05 - ICANN озаботилась проблемой торговых марок
  • 06.05 - Google патентует сортировку новостей
  • 06.05 - Intel готовит двуядерные процессоры второго поколения
  • 06.05 - Schoolforge-UK и OSC продвигают Open Source в школы
  • 06.05 - Новая версия рекламной программы подстрекает пользователей купить ПО для своего лечения
  • 06.05 - Microsoft продает ряд своих закрытых разработок
  • 06.05 - Google Labs анонсировал ускоритель интернета
  • 06.05 - Microsoft подвешивает пиратам "морковку"
  • 06.05 - В США входят в обиход "интеллектуальные" тележки для супермаркетов
  • 06.05 - Microsoft работает над аналогом PDF
  • 05.05 - Yahoo video search теперь доступен массам
  • 05.05 - Алмазы помогут бороться с хакерами
  • 05.05 - Интернет-охоту хотят запретить
  • 05.05 - Microsoft привлекает блоггеров для теста Longhorn
  • 05.05 - Основатель Red Hat предложил Стиву Джобсу помощь в решении проблемы с торговой маркой
  • 05.05 - Компьютерная система оргкомитета Кубка мира по футболу 2006 года пострадала от червя Sober
  • 04.05 - Cisco Systems представила многофункциональный продукт Adaptive Security Appliance 5500
  • 04.05 - Администрация Евросоюза поддержала идею всеевропейской интернет-библиотеки
  • 04.05 - Компьютерный вирус дарит билеты на чемпионат мира по футболу
  • 04.05 - Лаборатория Касперского: Обзор вирусной активности - апрель 2005
  • 04.05 - Microsoft хочет отсудить у россиянина два домена
  • 04.05 - Сделка между Lenovo и IBM завершена
  • 04.05 - Эпидемия червя Sober.p зафиксирована в Западной Европе
  • 04.05 - Panda Software публикует отчет о вирусной активности за апрель
  • 03.05 - Институт SANS обновил список наиболее опасных уязвимостей

    Архив новостей >>>


  • 2004 г.

    К каждой строке охранника приставишь!

    Владимир Пржиялковский, преподаватель технологий Oracle

    Одним рассказ казался длинен,
    другие утверждали, что он слишком краток,
    большинство же, как всегда, скромно молчало...

    М. Горький. Публика

    Одни утверждали, что он [дом] трехэтажный,
    другие – что четырех.

    А. и Б. Стругацкие. Град обреченный

    Введение

    Механизм virtual private database (VPD) в Oracle позволяет регламентировать доступ к частям таблицы, но использует для этого весьма примитивную систему понятий. В версии 8.1.7 в Oracle появилось другое средство, Label Security, система понятий которого более продумана и лучше приспособлена под задачи защиты частей таблицы. Технически оно опирается на VPD, но реализует подход, известный в ИТ под названием «мандатного управления доступом», регулирующим в данном случае доступ к отдельным строкам таблиц разным категориям пользователей. Реализация соответствует ISO/IEC 15408 Common Criteria.

    Каждая строка нужной таблицы помечается специальной меткой, допускающей впоследствии изменение. Пользователям выдается разрешение работать со строками, помеченными только определенными метками. При разборе запроса к таблице СУБД выполнит проверки обычных полномочий доступа (выдаваемых командой GRANT), а при выполнении запроса отфильтрует из таблицы только строки со значениями меток, разрешенными для пользователя. Логически это выглядит как автоматическое добавление предиката AND P(метка_строки, контекст_сеанса) в конструкцию WHERE запроса. В конечном счете не предназначенные для него строки пользователь не сможет ни увидеть, ни изменить.

    Label Security – дополнительная возможность Oracle. Для того, чтобы ею пользоваться, нужно (а) завести при установке ПО СУБД Oracle нужные компоненты и (б) завести необходимые структуры в БД. Первое делается установщиком OUI, а второе – конфигуратором БД DCA или простым прогоном сценария catols.sql из каталога $ORACLE_HOME/rdbms/admin. Наблюдаемый результат – новый пользователь LBACSYS и целая серия принадлежащих ему объектов, включая пакеты, имена которых начинаются с 'SA_'.

    Простой пример

    Данные для регламентируемого доступа

    Пусть у сотрудников из таблицы EMP имеются телефоны:

    CONNECT scott/tiger
    
    CREATE TABLE phone AS SELECT empno FROM emp;
    
    ALTER TABLE phone ADD (pno VARCHAR(20));
    
    ALTER TABLE phone ADD PRIMARY KEY (empno, pno);
    
    UPDATE phone
    SET pno = TRUNC(dbms_random.value(100, 999))
            ||'-'
            ||TRUNC(dbms_random.value(1000, 9999));
    

    Какие-то из них будут общедоступны, а какие-то нет, но об этом будет сообщено позже.

    Заведем пользователей Oracle, представляющих сотрудника и административное лицо. Дадим им минимум необходимых для данного примера полномочий:

    CONNECT / AS SYSDBA
    
    CREATE USER employee IDENTIFIED BY employee;
    
    CREATE USER head IDENTIFIED BY head;
    
    CREATE ROLE minimal;
    
    GRANT CREATE SESSION TO minimal;
    
    GRANT SELECT ON scott.phone TO minimal;
    
    GRANT SELECT ON scott.emp TO minimal;
    
    GRANT minimal TO employee, head;
    
    GRANT UPDATE ON scott.phone TO lbacsys;
    
    GRANT UPDATE ON scott.emp TO lbacsys;
    

    Политика безопасности

    Создадим политику безопасности, регулирующую доступ пользователей EMPLOYEE и HEAD к номерам телефонов. Она будет базироваться на значении метки в столбце EMPSEC_LABEL, который мы специально добавим в таблицу телефонов позже:

    CONNECT lbacsys/lbacsys 
    
    BEGIN 
    SA_SYSDBA.CREATE_POLICY
       (POLICY_NAME => 'EMPSEC_POLICY'
       , COLUMN_NAME => 'EMPSEC_LABEL');
    END;
    /
    

    Отключить, снова включить и удалить политику безопасности можно процедурами DISABLE_POLICY, ENABLE_POLICY и DROP_POLICY.

    Определим в рамках политики безопасности два уровня секретности:

    BEGIN 
    SA_COMPONENTS.CREATE_LEVEL
       (POLICY_NAME => 'EMPSEC_POLICY'
       , LEVEL_NUM => 1000
       , SHORT_NAME => 'OPEN'
       , LONG_NAME => 'Open level');
    
    SA_COMPONENTS.CREATE_LEVEL
       (POLICY_NAME => 'EMPSEC_POLICY'
       , LEVEL_NUM => 2000
       , SHORT_NAME => 'LIMITED'
       , LONG_NAME => 'Limited level');
    END;
    /
    

    Каждый уровень задается тройкой

    <номер, краткое название, развернутое название>.

    Номер носит технический характер, а развернутое название – характер комментария (но до 30 символов).

    Предполагается, что создаваемые уровни линейно упорядочены в соответствии с номером. Содержательно за уровнем удобно видеть степень секретности, причем чем выше степень секретности («открытые данные» - «ограниченный доступ» - «секретно» ...), тем больший нужно связать с ней номер.

    Заводим метки доступа

    Заданные в рамках политики EMPSEC_POLICY уровни секретности используем для формирования меток доступа. Именно метки и будут регламентировать доступ к строкам таблицы. В нашем простейшем случае каждая метка соответствуют попросту уровню секретности:

    BEGIN 
    SA_LABEL_ADMIN.CREATE_LABEL
       (POLICY_NAME => 'EMPSEC_POLICY'
       , LABEL_TAG => 10000
       , LABEL_VALUE => 'OPEN'
       , DATA_LABEL => TRUE);
    
    SA_LABEL_ADMIN.CREATE_LABEL
       (POLICY_NAME => 'EMPSEC_POLICY'
       , LABEL_TAG => 20000
       , LABEL_VALUE => 'LIMITED'
       , DATA_LABEL => TRUE);
    END;
    /
    

    Номер метки LABEL_TAG имеет технический смысл, выбирается произвольно и безотносительно к номерам уровней. Его даже можно порождать автоматически специальной функцией TO_DATA_LABEL. Значение TRUE для DATA_LABEL указывает, что меткой можно будет помечать строки таблиц.

    Приписываем метки доступа пользователям

    Пользователю EMPLOYEE дадим право доступа только к «открытым» строкам, а пользователю HEAD – к «открытым» и «ограниченного пользования»:

    BEGIN 
    SA_USER_ADMIN.SET_USER_LABELS
        (POLICY_NAME => 'EMPSEC_POLICY'
       , USER_NAME => 'EMPLOYEE'
       , MAX_READ_LABEL => 'OPEN');
    
    SA_USER_ADMIN.SET_USER_LABELS
        (POLICY_NAME => 'EMPSEC_POLICY'
       , USER_NAME => 'HEAD'
       , MAX_READ_LABEL => 'LIMITED');
    END;
    /
    

    Приписываем метки доступа строкам

    Для этого сначала «применим политику доступа» к таблице PHONE в целом:

    BEGIN 
    SA_POLICY_ADMIN.APPLY_TABLE_POLICY 
       (POLICY_NAME => 'EMPSEC_POLICY' 
       , SCHEMA_NAME => 'SCOTT' 
       , TABLE_NAME => 'PHONE' 
       , TABLE_OPTIONS => 'LABEL_DEFAULT, 
                           READ_CONTROL, WRITE_CONTROL');
    END;
    /
    

    В результате она автоматически окажется пополнена столбцом EMP_DATA_LABEL, указанным в самом начале для нашей политики EMPSEC_POLICY. Его можно легко наблюдать командой SQL*Plus DESCRIBE. Если же в параметре TABLE_OPTIONS в число свойств через запятую включить HIDE, новый служебный столбец обычным пользователям виден не будет. В этом же параметре свойство WRITE_CONTROL можно для нашего случая спокойно опустить.

    Теперь появилась возможность разметить конкретными метками конкретные строки:

    UPDATE scott.phone 
    SET emp_data_label = CHAR_TO_LABEL('EMPSEC_POLICY', 
                                       'OPEN');
    
    UPDATE scott.phone 
    SET emp_data_label = CHAR_TO_LABEL('EMPSEC_POLICY', 
                                       'LIMITED') 
    WHERE empno IN (SELECT empno 
                    FROM scott.emp 
                    WHERE job IN ('MANAGER', 'PRESIDENT'));
    

    Вместо обращения к функции

    CHAR_TO_LABEL('EMPSEC_POLICY', 'OPEN')

    можно было сразу указать число 10000, номер метки, так как именно число будет храниться в поле метки фактически; аналогично же и во второй команде UPDATE. Однако для содержательной ясности удобнее воспользоваться функцией.

    Проверяем, как работает

    SQL> CONNECT employee/employee
    Connected.
    SQL> SELECT ename, pno 
      2  FROM scott.emp LEFT OUTER JOIN scott.phone 
      3  USING (empno);
    
    ENAME      PNO
    ---------- --------------------
    SMITH      409-2351
    ALLEN      625-1171
    WARD       506-9715
    MARTIN     108-8113
    SCOTT      187-3972
    TURNER     609-2430
    ADAMS      421-3324
    JAMES      550-4204
    FORD       713-9878
    MILLER     924-5401
    KING
    CLARK
    BLAKE
    JONES
    
    14 rows selected.
    
    SQL> SAVE phones REPLACE
    Wrote file phones.sql 
    SQL> CONNECT head/head
    Connected.
    SQL> /
    
    ENAME      PNO
    ---------- --------------------
    SMITH      409-2351
    ALLEN      625-1171
    WARD       506-9715
    JONES      600-1573
    MARTIN     108-8113
    BLAKE      738-6815
    CLARK      650-1728
    SCOTT      187-3972
    KING       393-8155
    TURNER     609-2430
    ADAMS      421-3324
    JAMES      550-4204
    FORD       713-9878
    MILLER     924-5401
    
    14 rows selected.
    

    Упражнение. Выдать вслед за предыдущим:

    CONNECT scott/tiger
    /
    CONNECT lbacsys/lbacsys
    /
    

    Объяснить результаты.

    Пусть теперь в рамках той же политики EMPSEC_POLICY часть сотрудников также секретны, например сотрудники отдела разработок RESEARCH:

    BEGIN
    SA_POLICY_ADMIN.APPLY_TABLE_POLICY
       (POLICY_NAME => 'EMPSEC_POLICY'
       , SCHEMA_NAME => 'SCOTT'
       , TABLE_NAME => 'EMP'
       , TABLE_OPTIONS => 'LABEL_DEFAULT, READ_CONTROL');
    END;
    /
    
    UPDATE scott.emp 
    SET EMPSEC_LABEL = CHAR_TO_LABEL('EMPSEC_POLICY', 
                                     'OPEN');
    
    UPDATE scott.emp 
    SET EMPSEC_LABEL = CHAR_TO_LABEL('EMPSEC_POLICY', 
                                     'LIMITED') 
    WHERE deptno 
       IN (SELECT deptno FROM scott.dept 
                         WHERE dname = 'RESEARCH');
    

    Новая проверка:

    SQL> CONNECT employee/employee
    SQL> @phones
    
    ENAME      PNO
    ---------- --------------------
    ALLEN      625-1171
    WARD       506-9715
    MARTIN     108-8113
    TURNER     609-2430
    JAMES      550-4204
    MILLER     924-5401
    BLAKE
    KING
    CLARK
    
    9 rows selected.
    
    SQL> CONNECT head/head
    SQL> /
    
    ENAME      PNO
    ---------- --------------------
    SMITH      409-2351
    ALLEN      625-1171
    WARD       506-9715
    JONES      600-1573
    MARTIN     108-8113
    BLAKE      738-6815
    CLARK      650-1728
    SCOTT      187-3972
    KING       393-8155
    TURNER     609-2430
    ADAMS      421-3324
    JAMES      550-4204
    FORD       713-9878
    MILLER     924-5401
    
    14 rows selected.
    

    Более сложная логика

    Описанная выше простейшая в рамках Label Security логика разграничения доступа к отдельным строкам допускает развитие в нескольких направлениях.

    Более сложная структура метки доступа

    Важным развитием является возможность формировать метку доступа более сложным путем, нежели чем на основе только уровня секретности. В состав метки можно еще включать следующие компоненты:

    • Разделы данных (compartment). Позволяют сгруппировать данные по категориям с общим режимом доступа, например «административные данные», «финансовые данные», «операционные данные».
    • Группы безопасности пользователей (security groups). Позволяют сгруппировать пользователей данных по принципу общих правил доступа, например «главное управление», «южное отделение», «северное отделение», «предприятие X», «предприятие Y». В отличие от разделов данных группы пользователей могут формировать древовидную подчиненность.

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

    <номер, краткое название, развернутое название> ,

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

    Таким образом в общем случае метка доступа может иметь вид:

    уровень: раздел1, раздел2, ...: группа1, группа2 ...
    

    В версии 10.1 информацию об уровнях, разделах данных и группах пользователей стало возможным помещать в сервер имен OID/LDAP, что существенно для ценности самого подхода.

    В отличие от простых меток, соответствующих уровням доступа, составные метки имеют более сложные правила упорядочения, но и обеспечивают большую функциональность.

    Метки сеанса

    Использовавшаяся выше процедура:

    SA_USER_ADMIN.SET_USER_LABELS

    приписывает метку доступа пользователю. На деле это не совсем так: она приписывает метку сеансам, порождаемым от имени этого пользователя. По ходу сеанса связи с СУБД эту метку сеанса можно изменить процедурой SA_SESSION.SET_LABEL, правда в пределах, которые есть возможность указать процедурой SA_USER_ADMIN.SET_USER_LABELS, что в примере выше не использовалось.

    Другие усложнения

    К числу других усложнений и дополнений описанной логики можно отнести инверсные группы, возможность отменять фильтрацию строк метками, возможность создания «доверительных» программных единиц, обращающихся к защищенным строкам; возможность указывать для таблицы, снабжаемой столбцом с меткой безопасности, дополнительный предикат отбора строк по своему желанию, а также ряд других возможностей.

    Замечания по технологии

    Для работы с размеченными строками разумно завести специального административного пользователя в дополнение к LBACSYS и передать ему необходимые полномочия для работы с объектами LBACSYS.

    Справочную информацию о заведенных метках, группах и т. д. можно получить из справочных таблиц пользователя LBACSYS: DBA(USER)_SA_POLICIES, DBA_SA_LEVELS , DBA_SA_LABELS и др.

    Для удобства работы в состав ПО Oracle включена программа Policy Manager с графическим интерфейсом.
     


    ХАЙВЕЙ - лучший российский хостинг-провайдер: хостинг, регистрация доменов, услуга Ваша@почта, поддержка 24 часа


    NetPromoter - единственный российский профессиональный комплекс программ и сервисов для раскрутки сайта и интернет-статистики


    STSS - известный поставщик надежных серверных решений различного назначения на платформе Intel (Xeon) и AMD.


    5-55: the ITIL company. Практический опыт и теоретические знания на лучших семинарах по ITIL и процессам ITSM.


    Подписка на новости IT-портала CITForum.ru
    (библиотека, ftp-архив CITKIT.ru)

    Новые поступления в on-line библиотеку:

    28 апреля

  • Выбор первого дистрибутива Linux: Пособие для начинающих
  • Обфускация и защита программных продуктов
  • Анализ и оптимизация циклов с помощью производящих функций
  • Стратегии объектно-реляционного отображения: систематизация и анализ на основе паттернов

    26 апреля

  • Business Intelligence обещает значительный рост в 2005 году
  • Десять основных тенденций 2005 года в области Business Intelligence и Хранилищ данных
  • Управление эффективностью бизнеса и предсказуемость
  • Увеличение эффективности бизнеса: пять ошибок управления, которых следует избегать
  • Потребность в организационных данных: модель комплексного управления эффективностью бизнеса
  • Технология Хранилищ данных для государственных учреждений
  • Оцените, насколько совершенно ваше Хранилище данных

    21 апреля

  • Исполнение моделей при помощи виртуальной машины
  • Параллельные алгоритмы компьютерной алгебры
  • От стандарта до стандарта (о стандартизации оптических разъемов)
  • За штурвалом IP-станции

    Продолжение дискуссии читателей:

  • Линукс и пользователи, или что мне не нравится в Linux
  • Еще один взгляд на альтернативные ОС (и софт для них)
  • О некомпетентности пользователя Windows
  • Переписка Долгачева В.С. и Монахова В.В.

    19 апреля

  • Межпротокольный шлюз NAT-PT с функциями DNS-ALG и FTP-ALG для обеспечения взаимодействия между сетями IPv4 и IPv6
  • Рефакторинг архитектуры программного обеспечения: выделение слоев
  • Комбинаторика слов и построение тестовых последовательностей
  • Функциональное тестирование Web-приложений на основе технологии UniTesK

    14 апреля

  • Как организовать двойную парольную защиту данных в Oracle
  • Деревянный интерфейс

    Продолжение дискуссии читателей:

  • Microsoft против мира
  • Впечатления от прочитанного

    12 апреля

  • Крупные проблемы и текущие задачи исследований в области баз данных
  • Глава 2 из книги Т.Кайта "Oracle для профессионалов"Архитектура

    Дискуссия читателей о Linux и Windows:

  • Деньги правят миром, и у кого их больше, тот и прав!
  • О злокозненности некомпетентных пользователей, или почему я не люблю ограниченных пользователей Windows

    7 апреля

  • О доблести Билла Гейтса, или почему Windows лучше, чем LINUX или Mac OS
  • Витая пара - все ли так просто?!
  • Выбираем сервер печати
  • Один слой хорошо, а два - лучше (о пишущих DVD-приводах)

    5 апреля

  • Использование Caché SQL Gateway
  • Глава 19 из книги Т.Кайта "Oracle для профессионалов"Хранимые процедуры на языке Java
  • Что такое PostgreSQL?
  • Обновлен PostgreSQL FAQ

    31 марта

  • Использование Веб-сервисов в Caché
  • Защита на уровне строк (Oracle)
  • Секции в реальном мире

    29 марта

  • Разработка успешных приложений для Oracle - первая глава из книги Тома Кайта "Oracle для профессионалов"
  • Web-сервисы: растущие опасения (мнение аналитиков IDC)
  • Технология OLAP - мощная альтернатива электронным таблицам
  • Какой модной стала подготовка отчетности

    24 марта

  • Многоверсионность данных и управление параллельными транзакциями
  • Исключение из правил. Опыт разработки и внедрения финансовой корпоративной системы
  • Обнаружение компрометаций ядра Linux с помощью gdb
  • Корпоративная сервисная шина - "бюджетный" подход к решению задач интеграции
  • Сервис-ориентированная архитектура
  • Бизнес-процессы и XML

    22 марта

  • Доступно. И точка! (обзор точек беспроводного доступа)
  • Коммутаторы Fast/Gigabit Ethernet для "большой" сети
  • Push to Talk: нажми на кнопку и ...говори
  • Сети нового поколения и технология softswitch

    17 марта

  • Часто задаваемые вопросы о proxy (proxy FAQ)
  • Самонастраивающаяся база данных: управляемые приложения и настройка SQL
  • Еще раз о волоконных трассах
  • Настраиваем русский Unicode в FreeBSD-5.3.

    10 марта

  • Еще не сказанное о волоконной оптике
  • Wi-Fi на службе оператора
  • Пора менять платформу?
    (о сокетах LGA775 и PGA478)

    Oracle:

  • Детальный аудит для практических целей
  • Шифруем свои ресурсы данных

    3 марта

  • Требования к проекту. Классификация - первый шаг к пониманию
  • Gtk vs. Qt: драки не будет
  • Управление бизнесом "по максимуму": BPM для финансовых учреждений
  • Реализация решения по управлению эффективностью бизнеса
  • Новые SerialATA-винчестеры
  • Карман для сервера

    1 марта

  • Выбрать корпус - нет ничего проще?
  • Создание виртуальной сети с удаленной загрузкой узлов
  • Текущее состояние и перспективы развития рынка интеграционных технологий
  • Интеграция корпоративной информации: новое направление
  • Архитектурные подходы к консолидации

    24 февраля

  • Каждому проекту своя методология
  • Императив интеграции
  • Безопасность IP-телефонии - полевые зарисовки
  • О злокозненности Билла Гейтса, или почему я не люблю Windows

    22 февраля

  • Oracle10: шифруем данные
  • В версии Oracle10 "виртуальные частные базы данных" данных стали избирательнее
  • Каждому (пользователю) свое (данное в таблице)
    Часть 1
    Часть 2
  • Ускоряем интернет
  • Сетевая аутентификация на практике
  • В фокусе Microsoft Virtual Server 2005

    17 февраля

    Открыт новый раздел
    Все об Open Source

    Все новости >>>



  • IT-консалтинг Software Engineering Программирование Open Source СУБД Безопасность Internet Сети Операционные системы Hardware

    Информация для рекламодателей PR-акции, размещение рекламы - pr@citforum.ru, тел. +7 095 4119920 Пресс-релизы - manager@citforum.ru
    Послать комментарий
    Информация для авторов
    Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
    Copyright © 1997-2000 CIT, © 2001-2004 CIT Forum
    Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...