412 000 произведений, 108 200 авторов.

Электронная библиотека книг » Oskar Andreasson » Iptables Tutorial 1.1.19 » Текст книги (страница 11)
Iptables Tutorial 1.1.19
  • Текст добавлен: 8 октября 2016, 13:21

Текст книги "Iptables Tutorial 1.1.19"


Автор книги: Oskar Andreasson


Жанр:

   

ОС и Сети


сообщить о нарушении

Текущая страница: 11 (всего у книги 14 страниц)

B.3. SYN/ACK – пакеты и пакеты со статусом NEW

Существует одна из разновидностей спуфинг-атак (от англ. spoofing – мистификация, подмена. прим. перев.), которая называется «Предсказание номера TCP-последовательности» (Sequence Number Prediction). Смысл атак такого рода заключается в использовании чужого IP-адреса для нападения на какой либо узел сети.

Для рассмотрения типичной Sequence Number Prediction атаки обозначим через [A] – атакующий хост, [V] – атакуемый хост, [O] – третий хост, чей IP-адрес используется атакующим.

1. Хост [A] отправляет SYN-пакет (запрос на соединение прим. перев.) хосту [V] с обратным IP-адресом хоста [O].

2. Хост [V] отвечает хосту [O] пакетом SYN/ACK.

3. Теперь, по логике вещей, хост [O] должен разорвать соединение пакетом RST, поскольку он не посылал запрос на соединение (пакет SYN) и попытка атаки провалится, однако, допустим, что хост [O] не ответил (оказался выключенным, перегружен работой или находится за брандмауэром, который не пропустил пакет SYN/ACK).

4. Если хост [O] не отправил пакет RST, прервав таким образом начавшуюся атаку, то атакующий хост [A] получает возможность взаимодействия с хостом [V], выдавая себя за [O].

Не передав RST-пакет мы, тем самым, способствуем выполнению атаки на хост [V], которая может быть инкриминирована нам самим. Общепринятой считается необходимость отправления пакета RST в подобных случаях (RST в ответ на незапрошенный SYN/ACK). Если в вашем брандмауэре используются правила, фильтрующие пакеты со статусом NEW и сброшенным битом SYN, то SYN/ACK-пакеты будут «сбрасываться» этими правилами. Поэтому, следующее правило необходимо вставить в цепочку bad_tcp_packets первым:

iptables -A bad_tcp_packets -p tcp –tcp-flags SYN,ACK SYN,ACK -m state –state NEW -j REJECT –reject-with tcp-reset

В большинстве случаев подобные правила обеспечивают достаточный уровень безопасности для хоста [O] и риск от их использования относительно невелик. Исключение составляют случаи использования серии брандмауэров. В этом случае некоторые соединения могут оказаться заблокированными, даже если они вполне законны. Эти правила, ко всему прочему, допускают некоторые виды сканирования портов, но не более того.

B.4. Поставщики услуг Internet, использующие зарезервированные IP-адреса

Я добавил этот раздел чтобы предупредить вас о туповатых провайдерах (Internet Service Providers), которые назначают IP адреса, отведенные IANA для локальных сетей. Например, Swedish Internet Service Provider и телефонная монополия Telia используют такие адреса для своих серверов DNS (диапазон 10.x.x.x). Проблема, с которой вы будете наиболее вероятно сталкиваться, состоит в том, что мы, в своих сценариях, блокируем подключения с любых IP в диапазоне 10.x.x.x, из-за возможности фальсификации пакетов. Если вы столкнетесь с такой ситуацией, то наверное вам придется снять часть правил. Или установить правила, пропускающие траффик с этих серверов, ранее цепочки INPUT, например так:

/usr/local/sbin/iptables -t nat -I PREROUTING -i eth1 -s 10.0.0.1/32 -j ACCEPT

Хотелось бы напомнить подобным провайдерам, что эти диапазоны адресов не предназначены для использования в Интернет. Для корпоративных сетей – пожалуйста, для ваших собственных домашних сетей – прекрасно! Но вы не должны вынуждать нас «открываться» по вашей прихоти.

B.5. Как разрешить прохождение DHCP запросов через iptables

В действительности, эта задача достаточно проста, если вам известны принципы работы протокола DHCP. Прежде всего необходимо знать, что DHCP работает по протоколу UDP. Следовательно, протокол является первым критерием. Далее, необходимо уточнить интерфейс, например, если DHCP запросы идут через $LAN_IFACE, то движение запросов DHCP следует разрешить только через этот интерфейс. И наконец, чтобы сделать правило более определенным, следует уточнить порты. DHCP использует порты 67 и 68. Таким образом, искомое правило может выглядеть следующим образом:

$IPTABLES -I INPUT -i $LAN_IFACE -p udp –dport 67:68 –sport 67:68 -j ACCEPT

Обратите внимание, это правило пропускает весь трафик по протоколу UDP через порты 67 и 68, однако это не должно вас особенно смущать, поскольку оно разрешает лишь движение запросов от узлов сети, пытающихся установить соединение с портами 67 и 68. Этого правила вполне достаточно, чтобы позволить выполнение DHCP запросов и при этом не слишком широко «открыть ворота». Если вас очень беспокоит проблема безопасности, то вы вполне можете ужесточить это правило.

B.6. Проблемы mIRC DCC

mIRC использует специфичные настройки, которые позволяют соединяться через брандмауэр и обрабатывать DCC соединения должным образом. Если эти настройки используются совместно с iptables, точнее с модулями ip_conntrack_irc и ip_nat_irc, то эта связка просто не будет работать. Проблема заключается в том, что mIRC автоматически выполняет трансляцию сетевых адресов (NAT) внутри пакетов. В результате, когда пакет попадает в iptables, она просто не знает, что с ним делать. mIRC не ожидает, что брандмауэр будет настолько «умным», чтобы корректно обрабатывать IRC, и поэтому самостоятельно запрашивает свой IP у сервера и затем подставляет его, при передаче DCC запроса.

Включение опции «I am behind a firewall» («Я за брандмауэром») и использование модулей ip_conntrack_irc и ip_nat_irc приводит к тому, что netfilter пишет в системный журнал сообщение «Forged DCC send packet».

У этой проблемы есть простое решение – отключите эту опцию в mIRC и позвольте iptables выполнять всю работу.

Приложение C. Типы ICMP

Это полный список типов ICMP сообщений:

Таблица C-1. ICMP types

(Тип – Код – Описание – Запрос – Ошибка)

Тип: 0

Код: 0

Описание : Echo Reply

Запрос: x

Ошибка: -

Тип: 3

Код: 0

Описание : Network Unreachable

Запрос: -

Ошибка: x

Тип: 3

Код: 1

Описание : Host Unreachable

Запрос: -

Ошибка: x

Тип: 3

Код: 2

Описание : Protocol Unreachable

Запрос: -

Ошибка: x

Тип: 3

Код: 3

Описание : Port Unreachable

Запрос: -

Ошибка: x

Тип: 3

Код: 4

Описание : Fragmentation needed but no frag. bit set

Запрос: -

Ошибка: x

Тип: 3

Код: 5

Описание : Source routing failed

Запрос: -

Ошибка: x

Тип: 3

Код: 6

Описание : Destination network unknown

Запрос: -

Ошибка: x

Тип: 3

Код: 7

Описание : Destination host unknown

Запрос: -

Ошибка: x

Тип: 3

Код: 8

Описание : Source host (isolated obsolete)

Запрос: -

Ошибка: x

Тип: 3

Код: 9

Описание : Destination network administratively prohibited

Запрос: -

Ошибка: x

Тип: 3

Код: 10

Описание : Destination host administratively prohibited

Запрос: -

Ошибка: x

Тип: 3

Код: 11

Описание : Network unreachable for TOS

Запрос: -

Ошибка: x

Тип: 3

Код: 12

Описание : Host unreachable for TOS

Запрос: -

Ошибка: x

Тип: 3

Код: 13

Описание : Communication administratively prohibited by filtering

Запрос: -

Ошибка: x

Тип: 3

Код: 14

Описание : Host precedence violation

Запрос: -

Ошибка: x

Тип: 3

Код: 15

Описание : Precedence cutoff in effect

Запрос: -

Ошибка: x

Тип: 4

Код: 0

Описание : Source quench

Запрос: -

Ошибка: -

Тип: 5

Код: 0

Описание : Redirect for network

Запрос: -

Ошибка: -

Тип: 5

Код: 1

Описание : Redirect for host

Запрос: -

Ошибка: -

Тип: 5

Код: 2

Описание : Redirect for TOS and network

Запрос: -

Ошибка: -

Тип: 5

Код: 3

Описание : Redirect for TOS and host

Запрос: -

Ошибка: -

Тип: 8

Код: 0

Описание : Echo request

Запрос: x

Ошибка: -

Тип: 9

Код: 0

Описание : Router advertisement

Запрос: -

Ошибка: -

Тип: 10

Код: 0

Описание : Route solicitation

Запрос: -

Ошибка: -

Тип: 11

Код: 0

Описание : TTL equals 0 during transit

Запрос: -

Ошибка: x

Тип: 11

Код: 1

Описание : TTL equals 0 during reassembly

Запрос: -

Ошибка: x

Тип: 12

Код: 0

Описание : IP header bad (catchall error)

Запрос: -

Ошибка: x

Тип: 12

Код: 1

Описание : Required options missing

Запрос: -

Ошибка: x

Тип: 13

Код: 0

Описание : Timestamp request (obsolete)

Запрос: x

Ошибка: -

Тип: 14

Код: 0

Описание : Timestamp reply (obsolete)

Запрос: x

Ошибка: -

Тип: 15

Код: 0

Описание : Information request (obsolete)

Запрос: x

Ошибка: -

Тип: 16

Код: 0

Описание : Information reply (obsolete)

Запрос: x

Ошибка: -

Тип: 17

Код: 0

Описание : Address mask request

Запрос: x

Ошибка: -

Тип: 18

Код: 0

Описание : Address mask reply

Запрос: x

Ошибка: -

Приложение D. Ссылки на другие ресурсы

Здесь приведен список ссылок, где вы сможете получить дополнительную информацию :

ip-sysctl.txt – из документации к ядру 2.4.14. Маленький, но хороший справочник по организации сетевого кода ядра.

ip_dynaddr.txt – из документации к ядру 2.4.14. Маленький справочник по параметрам настройки ip_dynaddr, доступным через sysctl и файловую систему /proc.

iptables.8 – Маны для iptables 1.2.4 в формате HTML Прекрасное руководство для создания правил в iptables. Всегда полезно иметь под рукой.

The Internet Control Message Protocol – Хороший и подробный документ, описывающийпротокол ICMP. Написан Ральфом Уолденом (Ralph Walden).

RFC 792 – Internet Control Message Protocol – Официальный источник информации по протоколу ICMP. Содержит всю техническую информацию о протоколе ICMP, которая только может потребоваться. Автор J. Postel.

RFC 793 – Transmission Control Protocol – Этот документ описывает стандарт протокола TCP. Документ чрезвычайно насыщен техническими подробностями, однако всякий, желающий понять работу протокола TCP во всех деталях, должен прочитать этот документ. Автор J. Postel.

http://www.netfilter.org/ – Официальный сайт netfilter и iptables. Необходим для всех желающих установить iptables и netfilter в linux.

Firewall rules table – Небольшой файл в формате PDF, любезно предоставленный Стюартом Кларком (Stuart Clark), который представляет из себя набор бланков для ведения отчетности по правилам, используемым на брандмауэре.

/etc/protocols – Пример файла protocols, полученный в дистрибутиве Slackware. Может служить справочником по номерам протоколов, таких как IP, ICMP или TCP.

/etc/services – Пример файла services, полученный в дистрибутиве Slackware. Чрезвычайно полезен для просмотра, чтобы увидеть какие протоколы с какими портами работают.

Internet Engineering Task Force – Одна из самых больших групп, которые занимаются установлением и поддержкой стандартов Internet. Поддерживает свой репозиторий RFC. Включает в себя как крупные компании, так и отделные лица, с целью обеспечения межоперабельности Интернета.

Linux Advanced Routing and Traffic Control HOW-TO – Один из лучших документов, касающихся роутинга. Поддерживается сайт Бертом Хубертом (Bert Hubert).

Paksecured Linux Kernel patches – На сайте вы найдете все «заплаты» к ядру, написанные Matthew G. Marsh. Среди всего прочего, здесь вы найдете «заплату» FTOS.

ULOGD project page – Домашняя страница проекта ULOGD.

The Linux Documentation Project один из лучших сайтов, содержащих документацию. Здесь вы найдете огромное количество документов по Linux-тематике.

http://www.netfilter.org/documentation/index.html#FAQ – Официальный FAQ (Frequently Asked Questions) по netfilter .

http://www.netfilter.org/unreliable-guides/packet-filtering-HOWTO/index.html – Rusty Russells Unreliable Guide to packet filtering. Прекрасная документация по основам фильтрации пакетов с помощью iptables, написанная одним из разработчиков iptables и netfilter.

http://www.netfilter.org/unreliable-guides/NAT-HOWTO/index.html – Rusty Russells Unreliable Guide to Network Address Translation. Замечательная документация по Network Address Translation в iptables и netfilter, написанная одним из основных разработчиков Расти Расселом (Rusty Russell).

http://www.netfilter.org/unreliable-guides/netfilter-hacking-HOWTO/index.html – Rusty Russells Unreliable Netfilter Hacking HOWTO. Один из немногих документов по созданию кода для работы с netfilter и iptables. Так же написан Расти Расселом (Rusty Russell).

http://www.linuxguruz.org/iptables/ – Содержит множество ссылок в Интернет по тематике. Имеется список сценариев iptables для различных применений.

http://www.islandsoft.net/veerapen.html – Отличное обсуждение по автоматизации работы iptables, например: как, внесением незначительных изменений, заставить ваш компьютер автоматически добавлять «неугодные» сайты в специальный список (banlist) в iptables.

http://kalamazoolinux.org/presentations/20010417/conntrack.html – Прекрасное описание модулей трассировщика соединений. Если вам интересна тема трассировки соединений, то вам следует это прочитать.

http://www.docum.org – Один из немногих сайтов, который содержит информацию о командах Linux CBQ, tc и ip. Поддерживает сайт – Stef Coene.

http://lists.samba.org/mailman/listinfo/netfilter – Официальный список адресов (mailing-list) по netfilter. Чрезвычайно полезен для разрешения вопросов по iptables и netfilter.

И конечно же исходный код iptables, документация и люди, которые помогали мне.

Приложение E. Благодарности

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

Fabrice Marie, Как главному редактору, за исправление моих жутких ошибок. А так же огромное спасибо за перевод этого документа в формат DocBook.

Marc Boucher, За помощь по некоторым аспектам работы механизма определения состояния пакетов.

Frode E. Nyboe, За усовершенствование правил rc.firewall, за вдохновление меня на переписывание правил и за введение нескольких таблиц в этот же файл.

Chapman Brad, Alexander W. Janssen, За помощь в понимании порядка прохождения пакетами основных таблиц NAT и filter.

Michiel Brandenburg, Myles Uyema, За помощь в создании работоспособных правил, использующих критерии проверки состояния пакетов (state matching).

Kent `Artech' Stahre, За помощь с картинками. Я знаю, что я плохой оформитель, а Kent – лучший из всех кого я знаю ;). А так же спасибо за поиск ошибок в этом документе.

Anders 'DeZENT' Johansson, За информацию о странных провайдерах (ISP), которые используют адреса, зарезервированные для локальных сетей.

Jeremy `Spliffy' Smith, за многочисленные подсказки и за вылавливание моих ошибок.

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

Приложение F. Хронология

Version 1.1.19 (21 May 2003)

http://iptables-tutorial.frozentux.net

By: Oskar Andreasson

Contributors: Peter van Kampen, Xavier Bartol, Jon Anderson, Thorsten Bremer

and Spanish Translation Team.

Version 1.1.18 (24 Apr 2003)

http://iptables-tutorial.frozentux.net

By: Oskar Andreasson

Contributors: Stuart Clark, Robert P. J. Day, Mark Orenstein and Edmond Shwayri.

Version 1.1.17 (6 Apr 2003)

http://iptables-tutorial.frozentux.net

By: Oskar Andreasson

Contributors: Geraldo Amaral Filho, Ondrej Suchy, Dino Conti, Robert P. J. Day,

Velev Dimo, Spencer Rouser, Daveonos, Amanda Hickman, Olle Jonsson and

Bengt Aspvall.

Version 1.1.16 (16 Dec 2002)

http://iptables-tutorial.frozentux.net

By: Oskar Andreasson

Contributors: Clemens Schwaighower, Uwe Dippel and Dave Wreski.

Version 1.1.15 (13 Nov 2002)

http://iptables-tutorial.frozentux.net

By: Oskar Andreasson

Contributors: Clemens Schwaighower, Uwe Dippel and Dave Wreski.

Version 1.1.15 (13 Nov 2002)

http://iptables-tutorial.frozentux.net

By: Oskar Andreasson

Contributors: Mark Sonarte, A. Lester Buck, Robert P. J. Day, Togan Muftuoglu,

Antony Stone, Matthew F. Barnes and Otto Matejka.

Version 1.1.14 (14 Oct 2002)

http://iptables-tutorial.frozentux.net

By: Oskar Andreasson

Contributors: Carol Anne, Manuel Minzoni, Yves Soun, Miernik, Uwe Dippel,

Dave Klipec and Eddy L O Jansson.

Version 1.1.13 (22 Aug 2002)

http://iptables-tutorial.haringstad.com

By: Oskar Andreasson

Contributors: Tons of people reporting bad HTML version.

Version 1.1.12 (19 Aug 2002)

http://www.netfilter.org/tutorial/

By: Oskar Andreasson

Contributors: Peter Schubnell, Stephen J. Lawrence, Uwe Dippel, Bradley

Dilger, Vegard Engen, Clifford Kite, Alessandro Oliveira, Tony Earnshaw,

Harald Welte, Nick Andrew and Stepan Kasal.

Version 1.1.11 (27 May 2002)

http://www.netfilter.org/tutorial/

By: Oskar Andreasson

Contributors: Steve Hnizdur, Lonni Friedman, Jelle Kalf, Harald Welte,

Valentina Barrios and Tony Earnshaw.

Version 1.1.10 (12 April 2002)

http://www.boingworld.com/workshops/linux/iptables-tutorial/

By: Oskar Andreasson

Contributors: Jelle Kalf, Theodore Alexandrov, Paul Corbett, Rodrigo

Rubira Branco, Alistair Tonner, Matthew G. Marsh, Uwe Dippel, Evan

Nemerson and Marcel J.E. Mol.

Version 1.1.9 (21 March 2002)

http://www.boingworld.com/workshops/linux/iptables-tutorial/

By: Oskar Andreasson

Contributors: Vince Herried, Togan Muftuoglu, Galen Johnson, Kelly Ashe, Janne

Johansson, Thomas Smets, Peter Horst, Mitch Landers, Neil Jolly, Jelle Kalf,

Jason Lam and Evan Nemerson.

Version 1.1.8 (5 March 2002)

http://www.boingworld.com/workshops/linux/iptables-tutorial/

By: Oskar Andreasson

Version 1.1.7 (4 February 2002)

http://www.boingworld.com/workshops/linux/iptables-tutorial/

By: Oskar Andreasson

Contributors: Parimi Ravi, Phil Schultz, Steven McClintoc, Bill Dossett,

Dave Wreski, Erik Sjilund, Adam Mansbridge, Vasoo Veerapen, Aladdin and

Rusty Russell.

Version 1.1.6 (7 December 2001)

http://people.unix-fu.org/andreasson/

By: Oskar Andreasson

Contributors: Jim Ramsey, Phil Schultz, Giran Bхge, Doug Monroe, Jasper

Aikema, Kurt Lieber, Chris Tallon, Chris Martin, Jonas Pasche, Jan

Labanowski, Rodrigo R. Branco, Jacco van Koll and Dave Wreski.

Version 1.1.5 (14 November 2001)

http://people.unix-fu.org/andreasson/

By: Oskar Andreasson

Contributors: Fabrice Marie, Merijn Schering and Kurt Lieber.

Version 1.1.4 (6 November 2001)

http://people.unix-fu.org/andreasson

By: Oskar Andreasson

Contributors: Stig W. Jensen, Steve Hnizdur, Chris Pluta and Kurt Lieber.

Version 1.1.3 (9 October 2001)

http://people.unix-fu.org/andreasson

By: Oskar Andreasson

Contributors: Joni Chu, N.Emile Akabi-Davis and Jelle Kalf.

Version 1.1.2 (29 September 2001)

http://people.unix-fu.org/andreasson

By: Oskar Andreasson

Version 1.1.1 (26 September 2001)

http://people.unix-fu.org/andreasson

By: Oskar Andreasson

Contributors: Dave Richardson.

Version 1.1.0 (15 September 2001)

http://people.unix-fu.org/andreasson

By: Oskar Andreasson

Version 1.0.9 (9 September 2001)

http://people.unix-fu.org/andreasson

By: Oskar Andreasson

Version 1.0.8 (7 September 2001)

http://people.unix-fu.org/andreasson

By: Oskar Andreasson

Version 1.0.7 (23 August 2001)

http://people.unix-fu.org/andreasson

By: Oskar Andreasson

Contributors: Fabrice Marie.

Version 1.0.6

http://people.unix-fu.org/andreasson

By: Oskar Andreasson

Version 1.0.5

http://people.unix-fu.org/andreasson

By: Oskar Andreasson

Contributors: Fabrice Marie.

Приложение G. GNU Free Documentation License

Version 1.1, March 2000

Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

0. PREAMBLE

The purpose of this License is to make a manual, textbook, or other written document «free» in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of «copyleft», which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The «Document», below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as «you».

A «Modified Version» of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A «Secondary Section» is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The «Invariant Sections» are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License.

The «Cover Texts» are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License.

A «Transparent» copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not «Transparent» is called «Opaque».

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only.

The «Title Page» means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, «Title Page» means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.


    Ваша оценка произведения:

Популярные книги за неделю