Как заблокировать TeamViewer или практическое применение Cisco FPM

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

Немного теории

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

FPM (Flexible Packet Matching) — реализованная в IOS технология,  позволяющая идентифицировать трафик по содержанию полей в заголовках и payload пакетов. По сути своей – аналогична ACL, но не имеет ограничений по тому, какую часть пакета можно матчить. В случае с  ACL  —  это три поля в заголовке IP:  Source IP Address, Destination IP address, Protocol  + 2 поля в заголовке TCP/UDP: Source Port , Destination Port (ну или type/code для ICMP).  В случае с FPM матчить можно по любому биту пакета.

Нужно обратить внимание, что FPM ну совсем никак не statefull, не анализирует всю сессию, не анализирует фрагменты, не анализирует пакеты с IP Options. Излишние детали по ограничениям опущу, они все прекрасно описаны на cisco.com.  FPM для анализа нужен один пакет со всеми заголовками, поскольку, опираясь на эти заголовки и смещения относительно них, и строятся правила. ИМХО – аналогично Atomic IP engine в Cisco IPS, но с большими возможностями.

Что нужно сделать, чтобы это использовать

1. Инициализировать PDHF для интересующих протоколов (лучше для всех)

Поскольку не все — дикие эксперты (хотя и не без оных) в знании всех полей заголовков L3/L4 протоколов, их смещений относительно друг друга, неплохо было бы иметь возможность  при написании правил использовать имена полей заголовков, так как они определены в стандартах, а не тупо смещение относительно начала заголовка. И такая возможность есть. Для этого используются т.н. PHDF (Protocol Header Description File) файлы. Например, так выглядит PDHF для заголовка IP:

R1#sh protocols phdf IP
< Protocol ID: 1
Protocol name: IP
Description: Definition-for-the-IP-protocol
Original file name: system:fpm/phdf/ip.phdf
Header length: 20
——some output omitted——-
Total number of fields: 13

Field id: 0, version, IP version
Fixed offset. offset 0
Constant length. Length: 4

Field id: 1, ihl, IP-Header-Length
Fixed offset. offset 4
Constant length. Length: 4

Field id: 2, tos, IP-Type-of-Service
Fixed offset. offset 8
Constant length. Length: 8

Field id: 3, length, IP-Total-Length
Fixed offset. offset 16
Constant length. Length: 16

Field id: 4, identification, IP-Identification
Fixed offset. offset 32
Constant length. Length: 16

Field id: 5, flags, IP-Fragmentation-Flags
Fixed offset. offset 48
Constant length. Length: 3

Field id: 6, fragment-offset, IP-Fragmentation-Offset
Fixed offset. offset 51
Constant length. Length: 13

Field id: 7, ttl, Definition-for-the-IP-TTL
Fixed offset. offset 64
Constant length. Length: 8

Field id: 8, protocol, IP-Protocol
Fixed offset. offset 72
Constant length. Length: 8

Field id: 9, checksum, IP-Header-Checksum
Fixed offset. offset 80
Constant length. Length: 16

Field id: 10, source-addr, IP-Source-Address
Fixed offset. offset 96
Constant length. Length: 32

Field id: 11, dest-addr, IP-Destination-Address
Fixed offset. offset 128
Constant length. Length: 32

Field id: 12, payload-start, IP-Payload-Start
Fixed offset. offset 160
Constant length. Length: 0

Т.е. мы четко видим, из каких 12-ти полей состоит заголовок IP (имя, длина, офсет) и можем использовать эту информацию при написании правил. PHDF файлы, как правило, уже есть во флеш-памяти роутера, и чтобы их загрузить в оперативную пямять/инициализировать (без этого их нельзя будет использовать), нужно выполнить команду:

R1(config)#load protocol system:fpm/phdf/[ip.phdf|tcp.phdf|udp.phdf|icmp.phdf|ether.phdf]

2. Определить стек протоколов, подлежащий анализу

Это, по сути своей, фильтр в крупную клетку. Здесь мы должны определить, что нам для дальнейшего, более детального анализа будет, например, интересен стек, в котором в качестве L3 протокола задействован IP, а в качестве L4 протокола –TCP. Пакеты же, в которых протокол транспортного уровня – UDP или ICMP анализироваться не будут. Следствие – меньший ущерб производительности.

Для написания правил используется  стандартный MQC CLI (class-map, policy-map, service-policy). При определении стека, class-map должен быть типа stack. По дефолту стек начинается с заголовка L3 (как правило – IP). Выглядит так:

R1(config) class-map type stack match-all IP_TCP_STACK
R1(config-cmap)  match field IP protocol eq 6 next TCP

Строка с match читается: «нам будут интересны пакеты, в IP заголовке которых поле protocol (слово protocol взято из PHDF, загруженного ранее) эквивалентно 6. Следующий протокол в стеке — TCP». Шесть – номер протокола TCP (номера можно посмотреть здесь http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml).

Если бы мы хотели матчить пакеты с какой-нибудь хитрой инкапсуляцией, например UDP over IP over IP, стек выглядел бы так:

class-map type stack match-all IP_IP_UDP_STACK
match field IP protocol eq 4 next IP
match field IP protocol eq 17 next UDP

3. Определить непосредственно правило фильтрации трафика

Тут мы говорим, что для пакетов, структура заголовков которых соответствует ранее определенному стеку протоколов, мы будем искать что-то конкретное. Например, будем искать строку «danger» в первых 20 байтах payload TCP. Если находим – дропаем такой пакет. Используется тот же MQC CLI, но class-map и policy-map уже будут типа access-control. Выглядит так:

class-map type access-control match-any STRING_IN_TCP_PAYLOAD
match start TCP payload-start offset 0 size 20 string «danger»

policy-map type access-control DROP_STRING_IN_TCP
class STRING_IN_TCP_PAYLOAD
drop

4. Связать воедино ранее созданный стек и правило фильтрации

Для этого потребуется еще одна policy-map типа access-control. В итоге получим такую конструкцию:

policy-map type access-control OUTSIDE_OUT
class IP_TCP_STACK
service-policy DROP_STRING_IN_TCP

Читается так:

class:«Будем наблюдать за пакетами со стеком IP->TCP».

service-policy:«как только видим такой пакет, изучаем содержание 20-ти байт, начиная с начала payload TCP (с того места, где заголовок TCP заканчивается и начинаются данные). Как только в этих 20-байтах видим строку danger – дропаем такой пакет».
5. Повесить политику на интерфейс

Например, вешаем политику на внешний интерфейс в исходящем направлении:

interface Fa0/0
description Outside_Interface
service-policy type access-control output OUTSIDE_OUT

По теории все. Вышло длинновато, но уж как вышло. Более подробно и детально есть вот в этой замечательной статье (хотя и не все уже актуально): blog.ine.com/2009/06/14/understanding-flexible-packet-matching/

Анализ трафика и настройка Cisco FPM

С помощью FPM можно заблокировать все что угодно (skype, teamviewer, ammyy admin, etc). Достаточно просто выделить специфичную для конкретного приложения последовательность байт и отбрасывать пакеты, такую последовательность содержащие. Нжуно не дать клиенту приложения подключиться к серверу, какие бы хитроумные приемы тот не предпринимал.

Пример с TeamViewer (TV) о том, как полностью запретить хождение этого чуда из локальной сети и обратно. Совсем и наглухо.

Ну вот возникла у меня задача остановить хождение этого зла в нашу сеть. Пользователи в организации достаточно <s>хитросделанные</s> умные и думают так: «А нафига я буду получать доступ к VPN, писать служебную записку, читать регламент, если есть TV и он меня радует, аж так, что прям не могу?». Поэтому, приходится насильно с этим бороться.

Можно пытаться блокировать Tteamviewer через закрытие доступа к определенным серверам (по DNS, IP),  закрывать доступ на 80 и 443 порты, но, на практике, этот зверь без труда пробирается через подобные механизмы.

Тут то и приходит на помощь FPM.

Первым делом нужно увидеть, что делает TV, как выглядит сессия подключения клиента к серверу. Для этого, проще всего взять всем известный Wireshark, установить его на хост, на котором установлен TV и посмотреть, что будет происходить при старте TV. В идеале нужно чтобы другой трафик не забивал интерфейс и не мешал анализировать нужный трафик. Т.е. такой хост нужно как-то изолировать от LAN, но обеспечить ему интернет-доступ (можно использовать GNS3, или подключить хост к интернету через 3G/4G модем).

Итак, wireshark слушает интерфейс. Запускаем TV. Видим следующее:

Block_TV_1

После установление TCP-сессии с неким сервером (первые 3 пакета – TCP-3WAY-Handshake), в четвертом пакете TV в поле данных передает некую последовательность байт, выглядящую так: 0x17241004. Для чего TV передает эту последовательность? Понятия не имею, но, вероятно, блокирование ее передачи может помешать установлению соединения клиента с сервером. И тут следует оговориться и заметить, что прежде чем блокировать нечто подобное, нужно как следует убедиться, что это что-то действительно является признаком блокируемого приложения, дабы не навредить легитимному трафику.   Для этого можно проанализировать работу нескольких версий блокируемого приложения и удостовериться, что искомая последовательность есть во всех версиях, можно посмотреть остальной трафик и убедиться, что там искомой последовательности нет и т.д. Кроме того, для избежания т.н. false-positives, нужно выбрать уникальную последовательность максимальной длины (понятно, что, чем длиннее уникальная последовательность , т.е. содержится в большем количестве байт, тем меньше вероятность ее повторения другим приложением), а также максимально точно указать, в какой части пакета мы предполагаем ее встретить (offset) и какова ее длина.

Итак, есть последовательность байт 0x17241004, которая (как было мной установлено) принадлежит TV. Пробуем ее заблокировать и смотрим, что получится.

TV работает по TCP, поэтому определим соответствующий стек:

class-map type stack match-all IP_TCP_STACK
match field IP protocol eq 6 next TCP

Теперь определим class-map, который будет матчить ту самую последовательность:

class-map type access-control match-any MATCH_TCP_PAYLOAD_17241004
match start TCP payload-start offset 0 size 20 string «0x17241004»

Определим правило фильтрации для класса MATCH_TCP_PAYLOAD_17241004:

policy-map type access-control BLOCK_TEAMVIEWER_POLICY
class MATCH_TCP_PAYLOAD_17241004
drop
log

Дальше, создадим политику и повесим ее на один из интерфейсов:

policy-map type access-control OUTSIDE_OUT
class IP_TCP_STACK
service-policy BLOCK_TEAMVIEWER_POLICY

interface FastEthernet0/1
service-policy type access-control output OUTSIDE_OUT

Запустим TV повторно, и посмотрим, что изменилось:

Block_TV_2

Видим, что передача блокированной FPM последовательности не удалась, TV попытался передать ее еще несколько раз (TCP Retransmission), поморгал, подергался, сказал что не может подключиться, но, после нажатия кнопки «Повтор», он все-таки выбрался наружу.

Передать эту последовательность TV пытался на порт 443. Т.е., видимо, это ему было нужно для успешного установления SSL-сессии.

Посмотрим на счетчики (some unrelated output omitted):

R1#sh policy-map type access-control interface fastEthernet 0/1
FastEthernet0/1
Service-policy access-control output: OUTSIDE_OUT
Class-map: IP_TCP_STACK (match-all)
92 packets, 23085 bytes
5 minute offered rate 2000 bps
Match: field IP protocol eq 6 next TCP
Service-policy access-control : BLOCK_TEAMVIEWER_POLICY
Class-map: MATCH_TCP_PAYLOAD_17241004 (match-any)
<b>10 packets, 630 bytes</b>
5 minute offered rate 0 bps
Match: start TCP payload-start offset 0 size 4 string «0x17241004»
drop
log

Видно, что правило работает, и даже, что TV теперь не так уверенно подключается, но тем не менее, пока ему это удается.
Снова запускаем TV, Wireshark и анализируем трафик дальше.

А дальше видим следующее:

Block_TV_3

Поняв, что установитьSSL сессию сервером у него не получится, TV пытается подключиться к нему по http. После успешного подключения он запрашывает URL, содержащую последовательность «DynGate».

Теперь имеет смысл попытаться заблокировать забросы, содержащие подобную последовательность. Технически, более правильно это сделать с помощью CBAC (http deep packet inspection), поскольку тут уже речь идет о чистом http и никакой проблемы чтобы это зарубить с помощью application inspection я не вижу. Но, т.к. в этой статье говорим о FPM, продолжим в том же ключе, в котором начали.

Итак, нужно заблокировать TCP/http пакет, который содержит в поле payload строку DynGate. Если покликать по полям в Vireshark, видно, что GET занимает три байта, далее несколько байт занимают какие-то каракули, потом идет то самое DynGate. Поэтому, будем инспектировать payload начиная, скажем, с 10-го байта и заканчивая 60-м (диапазон выбран примерно, что называется, на глаз). Конечно, можно (и даже нужно) точно выяснить сколько байт занимает DynGate и сколько у него offset (так будет лучше с точки зрения производительности, поскольку роутеру потребуется анализировать меньшую часть пакета), но лень, лень и еще раз лень.

Создадим еще один class map, в котором будем матчить искомую строку. На всякий случай учтем любой вариант регистра символов:

 class-map type access-control match-any MATCH_TCP_PAYLOAD_DYNGATE
match start TCP payload-start offset 10 size 50 regex «.*[dD][yY][nN][gG][aA][tT][eE].*»

Прицепим вновь созданный class-map к уже имеющейся policy map. В итоге BLOCK_TEAMVIEWER_POLICY будет выглядеть так:

policy-map type access-control BLOCK_TEAMVIEWER_POLICY
class MATCH_TCP_PAYLOAD_17241004
drop
log
class MATCH_TCP_PAYLOAD_DYNGATE
drop
log

Попробуем еще раз запустить TV.

И все… TV предпринял несколько отчаянных попыток проскочить, но в итоге сдался, лишь иногда подергиваясь, с мыслью: «а вдруг что-то изменилось?».

Смотрим счетчики еще раз (some unrelated output omitted):

R1#sh policy-map type access-control interface fastEthernet 0/1
FastEthernet0/1
Service-policy access-control output: OUTSIDE_OUT
Class-map: IP_TCP_STACK (match-all)
783 packets, 120803 bytes
5 minute offered rate 0 bps
Match: field IP protocol eq 6 next TCP
Service-policy access-control : BLOCK_TEAMVIEWER_POLICY
Class-map: MATCH_TCP_PAYLOAD_17241004 (match-any)
125 packets, 7926 bytes
5 minute offered rate 0 bps
Match: start TCP payload-start offset 0 size 4 string «0x17241004»
drop
log
Class-map: MATCH_TCP_PAYLOAD_DYNGATE (match-any)
<b> 203 packets, 15875 bytes</b>
5 minute offered rate 0 bps
Match: start TCP payload-start offset 10 size 50 regex «.*[dD][yY][nN][gG][aA][tT][eE].*»
drop
log

Таким образом, так выглядит вся необходимая конфигурация, позволяющая заблокировать TeamViewer (как это было по состоянию на июль 2013 г):

class-map type access-control match-any MATCH_TCP_PAYLOAD_17241004
match start TCP payload-start offset 0 size 4 string «0x17241004»

class-map type stack match-all IP_TCP_STACK
match field IP protocol eq 6 next TCP

class-map type access-control match-any MATCH_TCP_PAYLOAD_DYNGATE
match start TCP payload-start offset 10 size 50 regex «.*[dD][yY][nN][gG][aA][tT][eE].*»

policy-map type access-control BLOCK_TEAMVIEWER_POLICY
class MATCH_TCP_PAYLOAD_17241004
drop
log
class MATCH_TCP_PAYLOAD_DYNGATE
drop
log

policy-map type access-control OUTSIDE_OUT
class IP_TCP_STACK
service-policy BLOCK_TEAMVIEWER_POLICY

interface FastEthernet0/1
service-policy type access-control output OUTSIDE_OUT

Заключение

Таким образом, FPM – достаточно мощный инструмент, позволяющий заблокировать все что угодно,  до того момента пока это «что-угодно» не установило защищенную сессию. Главное, правильно идентифицировать нужное приложение и не заблокировать что-то лишнее.

Конечно, в идеале, для этого нужно использовать решения, реализующие сигнатурный анализ, которые уже научены идентифицировать подобного рода приложения (например, ASA CX), но как временная мера — FPM — вполне приемлемый вариант.

Следует обратить внимание, что фичей нужно пользоваться с осторожностью и без фанатизма. Не нужно инспектировать всю payload на наличие буквы «x». Лучше узнать, где эта буква «x» может  встретиться, и инспектировать именно эту часть пакета, иначе роутер может просто умереть от чрезмерной загрузки, вызванной необходимостью инспектировать весь трафик.

На всякий случай, Cisco ASA на момент написания статьи не позволяет заблокировать teamviewer/что-то еще что-то из той категории, так как там нет столь гранулярного ручного доступа к правилам инспектирования пакетов.

P.S. Пока копировал эту статью со своего профиля на хабре, замучался ее сохранять. На некоторых сохранениях вордпресс долго думал и выбрасывал сообщение о том, что не может загрузить страницу. Иногда, раза с двадцатого, получалось. Когда пост был написан, он не открывался. Ну и в конце до меня дошло, что я пишу из корпоративной сети, в которой нарисованные здесь правила применены, и ISRы видели в этом тексте слова dyngate и прочее и работали с ними как положено. Когда политику временно отключил, пост наконец удалось сохранить и проверить:). Еще одно подтверждение что текст все еще актуален.


Не забывайте оставлять комментарии, если пост был вам полезен!
Опубликовано в Сети Метки: , , , , ,
0 comments on “Как заблокировать TeamViewer или практическое применение Cisco FPM
230 Пинги/Обратные ссылки для "Как заблокировать TeamViewer или практическое применение Cisco FPM"
  1. buy cialis online

    buy cialis online

  2. cheap cialis

    cheap cialis

  3. cialis canada

    cialis canada

  4. cialis cost

    cialis cost

  5. cialis coupon

    cialis coupon

  6. cialis coupons

    cialis coupons

  7. cialis cooupons

    cialis cooupons

  8. cialis dosage

    cialis dosage

  9. cialis free trial

    cialis free trial

  10. cialis generic

    cialis generic

  11. atorvastatin

    atorvastatin

  12. levitra generic

    levitra generic

  13. cialis online

    cialis online

  14. atorvastatin 10 mg

    atorvastatin 10 mg

  15. cymbalta dosage

    cymbalta dosage

  16. cialis online pharmacy

    cialis online pharmacy

  17. atorvastatin 10mg

    atorvastatin 10mg

  18. cymbalta for pain

    cymbalta for pain

  19. levitra 20 mg

    levitra 20 mg

  20. cialis pills

    cialis pills

  21. cymbalta generic

    cymbalta generic

  22. levitra coupon

    levitra coupon

  23. cialis prices

    cialis prices

  24. cymbalta medication

    cymbalta medication

  25. levitra dosage

    levitra dosage

  26. cialis side effects

    cialis side effects

  27. cymbalta reviews

    cymbalta reviews

  28. cialis vs viagra

    cialis vs viagra

  29. cymbalta side effects

    cymbalta side effects

  30. levitra vs viagra

    levitra vs viagra

  31. generic cialis

    generic cialis

  32. cymbalta withdrawal

    cymbalta withdrawal

  33. generic cialis tadalafil

    generic cialis tadalafil

  34. vardenafil 20 mg

    vardenafil 20 mg

  35. viagra vs cialis

    viagra vs cialis

  36. duloxetine 20 mg

    duloxetine 20 mg

  37. vardenafil 20mg

    vardenafil 20mg

  38. duloxetine hcl

    duloxetine hcl

  39. tadalafil 5mg

    tadalafil 5mg

  40. duloxetine side effectss

    duloxetine side effectss

  41. tadalafil 20 mg

    tadalafil 20 mg

  42. duloxetine 60 mg

    duloxetine 60 mg

  43. tadalafil generic

    tadalafil generic

  44. buy cialis generic tadalafil

    buy cialis generic tadalafil

  45. buy viagra online

    buy viagra online

  46. generic viagra

    generic viagra

  47. augmentin 875

    augmentin 875

  48. buy levitra

    buy levitra

  49. levaquin 500 mg

    levaquin 500 mg

  50. augmentin 875 mg

    augmentin 875 mg

  51. levaquin 750 mg

    levaquin 750 mg

  52. cheap levitra

    cheap levitra

  53. sildenafil 100mg

    sildenafil 100mg

  54. buy levitra online

    buy levitra online

  55. augmentin and alcohol

    augmentin and alcohol

  56. levaquin antibiotic

    levaquin antibiotic

  57. generic levitra

    generic levitra

  58. augmentin antibiotic

    augmentin antibiotic

  59. sildenafil coupons

    sildenafil coupons

  60. cialis 20 mg

    cialis 20 mg

  61. levaquin dosage

    levaquin dosage

  62. augmentin dosage

    augmentin dosage

  63. cialis 20mg

    cialis 20mg

  64. sildenafil tablets

    sildenafil tablets

  65. augmentin dose

    augmentin dose

  66. cialis 20mg generic

    cialis 20mg generic

  67. levaquin lawsuit

    levaquin lawsuit

  68. augmentin for dogs

    augmentin for dogs

  69. cialis 20mg tablets prices

    cialis 20mg tablets prices

  70. cialis 20mg tablet prices

    cialis 20mg tablet prices

  71. levaquin renal dose

    levaquin renal dose

  72. levitra 20mg

    levitra 20mg

  73. viagra 100mg

    viagra 100mg

  74. cheap viagra

    cheap viagra

  75. dutch women viagra

    dutch women viagra

  76. female viagra

    female viagra

  77. generic viagra online pharmacy

    generic viagra online pharmacy

  78. natural viagra

    natural viagra

  79. cialis over the counter at walmart

    cialis over the counter at walmart

  80. over the counter viagra

    over the counter viagra

  81. pfizer generic viagra

    pfizer generic viagra

  82. sildenafil 20 mg tablet vs viagra

    sildenafil 20 mg tablet vs viagra

  83. sophia viagra

    sophia viagra

  84. viagra coupons

    viagra coupons

  85. viagra dosage recommendations

    viagra dosage recommendations

  86. viagra for men

    viagra for men

  87. viagra for sale

    viagra for sale

  88. viagra for women

    viagra for women

  89. cialis generic availability

    cialis generic availability

  90. viagra generic

    viagra generic

  91. cialis generic name

    cialis generic name

  92. viagra online

    viagra online

  93. cialis generic tadalafil

    cialis generic tadalafil

  94. viagra online canada pharmacy

    viagra online canada pharmacy

  95. cialis generic tadalafil 10mg

    cialis generic tadalafil 10mg

  96. viagra pills

    viagra pills

  97. cialis generic tadalafil 60mg

    cialis generic tadalafil 60mg

  98. viagra prices

    viagra prices

  99. cialis generic tadalafil for sale

    cialis generic tadalafil for sale

  100. cialis generic tadalafil india

    cialis generic tadalafil india

  101. viagra sex

    viagra sex

  102. cialis prices 10mg

    cialis prices 10mg

  103. viagra side effects

    viagra side effects

  104. cialis generic tadalafil walmart

    cialis generic tadalafil walmart

  105. cialis prices 100mg

    cialis prices 100mg

  106. viagra without a doctor prescription

    viagra without a doctor prescription

  107. viagra without a doctor prescription from canada

    viagra without a doctor prescription from canada

  108. cialis prices 20mg

    cialis prices 20mg

  109. cialis prices 5mg

    cialis prices 5mg

  110. generic cialis tadalafil 20mg

    generic cialis tadalafil 20mg

  111. cialis prices walmart

    cialis prices walmart

  112. generic cialis available

    generic cialis available

  113. generic cialis pricing

    generic cialis pricing

  114. best place to buy cialis online without script

    best place to buy cialis online without script

  115. generic viagra sildenafil citrate

    generic viagra sildenafil citrate

  116. sildenafil

    sildenafil

  117. buy cialis canada online

    buy cialis canada online

  118. sildenafil 100mg tablets

    sildenafil 100mg tablets

  119. sildenafil 20 mg

    sildenafil 20 mg

  120. buy cialis online without script

    buy cialis online without script

  121. sildenafil 20 mg tablet

    sildenafil 20 mg tablet

  122. where can i buy cialis over the counter at walmart

    where can i buy cialis over the counter at walmart

  123. where to buy cialis online safely

    where to buy cialis online safely

  124. sildenafil citrate

    sildenafil citrate

  125. sildenafil citrate 100mg

    sildenafil citrate 100mg

  126. sildenafil citrate 20 mg

    sildenafil citrate 20 mg

  127. sildenafil dosage

    sildenafil dosage

  128. sildenafil generic

    sildenafil generic

  129. sildenafil side effects

    sildenafil side effects

  130. 5mg cialis

    5mg cialis

  131. canadian viagra

    canadian viagra

  132. buying cialis online

    buying cialis online

  133. canadian cialis

    canadian cialis

  134. canadian pharmacy cialis

    canadian pharmacy cialis

  135. cost of viagra

    cost of viagra

  136. cheap cialis generic

    cheap cialis generic

  137. female viagra pills

    female viagra pills

  138. cheap generic cialis

    cheap generic cialis

  139. generic viagra 100mg

    generic viagra 100mg

  140. generic viagra available

    generic viagra available

  141. generic viagra prices

    generic viagra prices

  142. cialis 5mg

    cialis 5mg

  143. herbal viagra

    herbal viagra

  144. cialis black

    cialis black

  145. marley generic viagra

    marley generic viagra

  146. cialis daily

    cialis daily

  147. online pharmacy viagra

    online pharmacy viagra

  148. cialis for sale

    cialis for sale

  149. online viagra

    online viagra

  150. cialis from canada

    cialis from canada

  151. real viagra

    real viagra

  152. cialis generic canada

    cialis generic canada

  153. cialis on line

    cialis on line

  154. viagra alternative

    viagra alternative

  155. viagra cost

    viagra cost

  156. cialis price

    cialis price

  157. cialis vs levitra

    cialis vs levitra

  158. viagra in action

    viagra in action

  159. cost of cialis

    cost of cialis

  160. viagra on line

    viagra on line

  161. generic cialis canada

    generic cialis canada

  162. viagra online pharmacy

    viagra online pharmacy

  163. generic cialis online

    generic cialis online

  164. viagra pill

    viagra pill

  165. generic for cialis

    generic for cialis

  166. viagra price

    viagra price

  167. natural cialis

    natural cialis

  168. no prescription cialis

    no prescription cialis

  169. viagra generic availability

    viagra generic availability

  170. cialis 20 mg best price

    cialis 20 mg best price

  171. viagra tablets

    viagra tablets

  172. generic cialis at walmart

    generic cialis at walmart

  173. buy generic cialis

    buy generic cialis

  174. viagra without doctor prescription

    viagra without doctor prescription

  175. watch online TV LIVE

    watch online TV LIVE

  176. dizajn cheloveka

    dizajn cheloveka

  177. human-design-space

    human-design-space

  178. hischnye-pticy-hisxne-ptic

    hischnye-pticy-hisxne-ptic

  179. parazity-oskar-2020

    parazity-oskar-2020

  180. human design human design

    human design human design

  181. +:

    %D0%A2%D1%83%D1%80%D0%B5%D1%86%D0%BA%D0%B8%D0%B9+%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB

    %D0%A2%D1%83%D1%80%D0%B5%D1%86%D0%BA%D0%B8%D0%B9+%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB

  182. film-kalashnikov-watch

    film-kalashnikov-watch

  183. kinoxaxru.ru

    kinoxaxru.ru

  184. pobachennya u vegas

    pobachennya u vegas

  185. Proshanie so Stalinym

    Proshanie so Stalinym

  186. strelcov 2020

    strelcov 2020

  187. online pharmacy

    online pharmacy

  188. canadian pharmacy

    canadian pharmacy

  189. Beograd film 2020

    Beograd film 2020

  190. psyhelp_on_line

    psyhelp_on_line

  191. coronavirus

    coronavirus

  192. PSYCHOSOCIAL

    PSYCHOSOCIAL

  193. rasstanovka hellinger

    rasstanovka hellinger

  194. Canadian Online Pharmacies

    Canadian Online Pharmacies

  195. Canadian Pharcharmy Online

    Canadian Pharcharmy Online

  196. t.me/psyhell

    t.me/psyhell

  197. Ïñèõîëîã îíëàéí

    Ïñèõîëîã îíëàéí

  198. viagra over the counter

    viagra over the counter

  199. viagra coupon

    viagra coupon

  200. rlowcostmd.com

    rlowcostmd.com

  201. Zemlyane 2005 smotret onlajn

    Zemlyane 2005 smotret onlajn

Заодно посмотрите мои фоты в моем профиле вконтакте. Любые вопросы по существу статей можете задать там же.
Hostenko — лучший WordPress-хостинг