Последние сообщения

Страницы: 1 2 3 [4] 5 6 7
31
Установка и настройка операционной системы / Установка OS на VDS
« Последний ответ от Cooper 11 Июль 2019, 14:47:55 pm »

Для установки или переустановки ОС на ВДС, вам нужно зайти в личный кабинет и выбрать "Услуги" - в открывшемся окне найдите услугу ВДС, перейдите по ссылке.
Дальнейшие действия вы можете посмотреть в этих видео:


Установка CentOS 7x64


Установка Ubuntu 16.04


Установка Ubuntu 18.04/19.04


Установка Windows Server


Установка Windows-7 на VDS
32
Файл .htaccess работает только с сервером Apache. Выполняет множество полезных функций, которые описать займет не один день. Но в этой статье мы затронем правила необходимые для SEO-оптимизации.

1) Перенаправление с не безопасного протокола HTTP на безопасный протокол HTTPS. Работает только при наличии SSL-сертификата.
RewriteEngine On            #Подключает mod_rewrite для веб-сервера Apache. Пишется один раз.
RewriteCond %{HTTPS} off          #Условие, если HTTPS отключен, то делаем правило ниже
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]          #Если условие выше верно, применить это правило


2) Далее у нас идет настройка "301 Redirect". Она поможет избежать дублирования страниц в поисковиках. Не каждый из пунктов нужно выполнять, а только те, что вам необходимы. Вполне может быть, что разработчики позаботились об этом всем на стадии разработки.

Первое - нам нужно склеить адрес без www на www либо наоборот, так как example.uz и www.example.uz для поисковиков две разных страницы и они будут дублированы.
#С www на без www
RewriteEngine On          #Если уже есть в .htaccess, пропускаем эту строчку
RewriteCond %{HTTP_HOST} ^www.vash-site\.uz$ [NC]         #Если с www, выполняем правило ниже
RewriteRule ^(.*)$ http://vash-site.uz/$1 [R=301,L]       #Если условие верно, выполняем это правило. Если у вас перенаправление с http на https - RewriteRule ^(.*)$ https://vash-site.uz/$1 [R=301,L]
#Если нет www, ставим www
RewriteEngine On          #Если уже есть в .htaccess, пропускаем эту строчку
RewriteCond %{HTTP_HOST} ^vash-site\.uz$ [NC]         #Если без www, выполняем правило ниже
RewriteRule ^(.*)$ http://www.vash-site.uz/$1 [R=301,L]       #Если условие верно, выполняем это правило. Если у вас перенаправление с http на https - RewriteRule ^(.*)$ https://www.vash-site.uz/$1 [R=301,L]


Второе - убираем расширение .html с адресной строки, замечал такие адреса на CMS Joomla.
RewriteEngine On        #Если есть, пропускам
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L]


Третье - когда главная страница доступна по двум адресам, что недопустимо http://site.uz и http://site.uz/index.php - убираем index.php
#Убираем index.php в URL
RewriteEngine On       #Если есть, пропускаем
RewriteCond %{THE_REQUEST} ^{A-Z}[3,9]\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://vash-site.uz/ [R=301,L]
#Этот код ставит "/" в конце адресной строки
RewriteEngine On       #Если есть, пропускаем
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]

#Этот код убирает "/" в конце адресной строки
RewriteEngine On       #Если есть, пропускаем
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [L,R=301]


Четвёртое - убираем параметры с url. Обычно это происходит при перелистывании страниц одной категории, например в http://site.uz/catalog?page=1 параметром является page=1.
RewriteEngine On     #Если есть, пропускаем
RewriteCond %{QUERY_STRING} page=1       #в вашем случае может быть не page=1, а что-то другое, вообще все что после знака "?" и есть параметр
RewriteRule ^index.php http://vash-site.uz/catalog? [R=301,L]


Пятое - может вам и не понадобиться, если разработчики позаботились о ЧПУ ссылок до выхода сайта в продакшн или у вас новый сайт, который еще не продвинут в поисковиках. Это нужно для сайтов, которые уже занимают кое-какие значимые позиции, чтобы не потерять их при смене адреса.
RewriteEngine On     #Если есть, пропускаем
RewriteRule ^(.*)url.html$ http://vash-site.uz/new-url.html [R=301,L]       #Вписываете свой измененный адрес


Шестое - В том случае, когда вы меняете доменное имя, для поисковиков это совсем другой сайт получается. Для этого нам надо перенаправить с старого адреса сайта на новый.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.stariy-site\.uz$ [NC]
RewriteRule ^(.*)$ http://noviy-site.uz/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^stariy-site\.uz$ [NC]
RewriteRule ^(.*)$ http://noviy-site.uz/$1 [L,R=301]


3) Настройка перенаправления на шаблон страницы 404 и 500 ошибки. Допустим вы загрузили в папку http://vash-site/pages/errors/ ваш шаблон 404 ошибки "404.php". Получается ваш адрес 404 ошибки будет http://vash-site/pages/errors/404.php
,но нам нужен такой путь - http://vash-site/404.php
ErrorDocument 404 http://vash-site.uz/404/
ErrorDocument 500 http://vash-site.uz/500/

RewriteEngine On      #Если есть, не пишем
RewriteCond %{REQUEST_URI} ^/404/$
RewriteRule ^(.*)$ /pages/errors/404.php [L]

RewriteCond %{REQUEST_URI} ^/500/$
RewriteRule ^(.*)$ /pages/errors/500.php [L]


4) Кэширование изображений и различных файлов в браузере на определённый срок. Оно используется для мгновенной загрузки страницы и получения хороших результатов в инструментах для оптимизации сайтов - https://developers.google.com/speed/pagespeed/insights/
Не советуется использовать если вы ведете какие либо изменения на сайте (например изменяете уже написанную статью или цену товара) так как изменения не будут видны клиентам пока кэш не обновится, а для благоприятного эффекта в инструментах оптимизации сайтов следует кэшировать на срок от месяца и выше.

Вариант №1
#Вы можете использовать для времени кэширования |second(s)|minute(s)|hour(s)|day(s)|week(s)|month(s)|yaer(s)
<IfModule mod_expires.c>
     ExpiresActive On    #Включаем кэширование
     ExpiresDefault "access plus 2 days"          #Задается время кэширования элементам, что не указаны ниже
     ExpiresByType image/jpg "access plus 1 year"        #здесь и ниже задается время кэширования определенного элемента
     ExpiresByType image/jpeg "access plus 1 year"
     ExpiresByType image/gif "access plus 1 year"
     ExpiresByType image/png "access plus 1 year"
     ExpiresByType text/css "access plus 1 year"
     ExpiresByType application/pdf "access plus 1 month"
     ExpiresByType application/x-font-woff " access plus 1 year"
     ExpiresByType application/x-font-woff2 "access plus 1 year"
     ExpiresByType application/x-font-ttf "access plus 1 year"
     ExpiresByType text/x-javascript "access plus 1 year"
     ExpiresByType application/x-shockwave-flash "access plus 1 year"
     ExpiresByType image/x-icon "access plus 1 year"
</IfModule>


Вариант №2
#Используется только если  хостинг поддерживает Apache
#Время считается в секундах например max-age=60 это минута.
<IfModule mod_expires.c>
     <filesMatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$">
          Header Set Cache-Control "max-age=2678000", public        #Если не чувствительно ко времени используем "public"
     </filesMatch>

     <filesMatch "\.(html|htm)$">
          Header Set Cache-Control "max-age=7200", private, must-revalidate        #must-revalidate долго объяснять, Google вам в помощь
     </filesMatch>

     <filesMatch "\.(pdf)$">
          Header Set Cache-Control "max-age=86400", public
     </filesMatch>

     <filesMatch "\.(js)$">
          Header Set Cache-Control "max-age=2678000", private          #Кэш используется для определенного пользователя отдельно при "private"
     </filesMatch>
</IfModule>
33
База данных MySQL / Как создать Базу Данных MySQL®
« Последний ответ от Aurum 08 Июль 2019, 18:27:54 pm »
Для создания базы данных MySQL нужно в панели управления cPanel в разделе БАЗЫ ДАННЫХ создать Базу Данных MySQL®. Вам нужно будет дать название вашей БД, Добавить нового пользователя создав пароль или написав уже имеющийся. и добавить пользователя в БД дав ему "все права".

34
Внутренняя поисковая оптимизация SEO – это начальная стадия подготовки вашего сайта для выхода в свет. Без нее вам лучше не запускать сайт в продакшн, так как поисковики (Google, Yandex и прочие) возможно будут неправильно индексировать ваши страницы сайта или дадут вашему сайту маленький рейтинг, что никак не выведет его на первые страницы поисковых систем.

Внутренняя оптимизация включает в себя:

1) Правильно написанный код– это стадия разработки сайта, включающая в себя программирование и вёрстку. На этом этапе следует позаботиться как минимум о адаптивности сайта (подходящий для всех разрешений и девайсов), настроить ЧПУ (понятный пользователю URL адрес страницы), позаботиться о наличии технических тегов <meta=”[description][keywords]”> и <title>, а также позаботиться об отображении заголовка "H1" на каждой из страниц(в CMS эта функция обычно настроена по умолчанию)

2) Правильно заполненный контент– это уникальный текст и оптимизированные, желательно свои (не краденные с просторов интернета) изображения.
Уникальный текст – это орфографически правильно написанный материал без воды (часто повторяющиеся слова и бестолково использующиеся союзы – Как бы то ни было как-то раз…). Его уникальность должна быть на 90%+, которую вы можете проверить на любых сайтах, проверяющих на уникальность. Ссылка на один из сайтов - https://text.ru/

Оптимизированные изображения – конвертированные в меньший размер для более быстрой загрузки на сайте.
Достигается это за счёт:
А) Уменьшения размера изображения, но не рекомендуется этим баловаться, если оно и без того маленького размера (идеальный размер для сайта от 600 до 1000 пикселей).
Б) Уменьшение цветовой гаммы – например изображение содержит 1.000.000 цветов, но наш глаз на самом деле видит только цветов 10. Благодаря нашему несовершенному зрению можно уменьшить количество цветов в изображении, что никак не скажется на нашем восприятии. С этим также справляются многие онлайн конвертеры как - https://tinypng.com/

При заполнении контента, заголовок страницы всегда является тегом “H1” и стоит выше тегов “H2”, “H3” и так далее. Если “H2” стоит выше “H1” поисковик сначала считает “H2”, это неправильно, так как он ищет страницы по “H1”. Но если у вас на странице вообще нет “H1” заголовка, можете сразу браковать сайт, что вам сделали.

3) Наличие корректно настроенных файлов .htaccess, robots.txt и sitemap.xml.
Robots.txt отвечает за индексацию страниц вашего сайта.
.htaccess – нужен для применения определенных правил. Что касается оптимизации сайта, в этом файле нам нужно настроить кэширование файлов и изображений, перейти с протокола передачи гипертекста http на безопасный https, настроить перенаправление при ошибках как 404 или 301.
Sitemap.xml– по нашему «Карта Сайта» содержит в себе адреса страниц вашего сайта, которые следует проиндексировать поисковикам. Он генерируется либо с помощью плагинов или модулей автономно, либо на сайтах генераторах - https://www.xml-sitemaps.com/

4) Правильная перелинковка внутри сайта.
В нее входят различные «Меню», а также довольно часто можно встретить ссылки на важные страницы сайта в футере. Но самыми важными являются ссылки, заполненные в ваших статьях.
35
Продвижение сайта в поисковых системах / Немного о robots.txt
« Последний ответ от Eugenious 08 Июль 2019, 16:56:34 pm »
Robots.txt отвечает за индексацию страниц вашего сайта.
Состоит из ограниченного количества команд, которые запомнить довольно легко:
User-agent: - К какому поисковику применять правила индексирования. Имеет параметры * - все поисковики, Yandex – для Яндекса, Googlebot – для Гугла (есть еще роботы, если понадобятся, можете найти их в интернете).
Allow: - разрешает поисковикам индексировать указанные директории типа /images/*.jpg
Diallow: - противоположность Allow:

Пример:
User-agent: Googlebot
Allow: /images/*.jpg
Disallow: /images/*.gif
Мы дали разрешение Google индексировать в папке images изображения формата jpg и запретили формат gif. * - означает «все»

Пример:
#неправильно
User-agent: *
Allow: /images/*.jpg
User-agent: *
Allow: /images/*.jpg
 
#правильно
User-agent: *
Allow: /images/*.jpg

User-agent: *
Allow: /images/*.jpg

Если вдруг вам понадобится прописать несколько User-agent, они пишутся с пропуском одной строки.
36
Настройки PHP / Несколько опций PHP в cPanel
« Последний ответ от Aurum 08 Июль 2019, 16:33:17 pm »
cPanel может быть очень гибко настроена. Вот у меня есть основной домен и несколько поддоменов и эти поддомены у меня на разных версиях CMS.
Чтоб было понятней объясню: например поддомен "server" у меня работает на Drupal 9 и версия php в нем 7,3 а вот поддомен "open"  у него CMS Joomla и работает она на php 5,6 и помимо разных версий у них настроены разные опции.
Для настройки разных опций  php  нужно в cPanel  в разделе Программное Обеспечение выбрать "Выбор версии PHP" и в нём перейти в Switch to PHP extensions.


37
Для создания запланированного задания отработки (Cron) вам нужно зайти в раздел "Запланированные задания".



Далее на изображении все прекрасно видно.

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

Dos и Ddos-атаки
DoS (Denial of Service «отказ в обслуживании») — Хакерская атака на вычислительную систему с целью довести её до отказа, то есть создание таких условий, при которых добросовестные пользователи системы не могут получить доступ к предоставляемым системным ресурсам (серверам), либо этот доступ затруднён. DoS — «Умный» вывод ресурса из строя (в отличии от DDoS). Данная атака производится при возможности выполнения «долгих» запросов или длительном выполнении кода.
DDoS (Distributed Denial of Service) — распределённая атака типа «отказ в обслуживании». Сетевой ресурс выходит из строя в результате множества запросов к нему, отправленных из разных точек. Обычно атака организуется при помощи бот-нетов. Злоумышленник заражает компьютеры ни о чем не подозревающих пользователей Интернета. Такие «зомби» и отправляют бессмысленные запросы на сервер жертвы. Четко спланированная атака может вывести из строя практически любой незащищенный ресурс: от сайта-визитки до крупного корпоративного портала. Обрабатывая миллионы запросов, сервер сначала «тормозит», а после и вовсе прекращает работать. При атаке на VDS страдают все пользователи физического сервера, так как у всех VDS общий канал связи. При этом дата-центр тоже испытывает огромную нагрузку на сетевые каналы, ведь он пропускает через себя весь паразитный трафик.


Брутфорс (Brute force)
Брутфорсом называется метод взлома различных учетных записей, путем подбора логина и пароля. Термин образован от сочетания английских слов brute force, означающих в переводе «полный перебор». Еще брутфорс называют методом грубой силы. Его суть заключается в автоматизированном переборе всех допустимых комбинаций пароля к учетной записи с целью выявления правильного. Разновидность хакерской атаки основывается на методе математики brute force. Решение задачи находится при переборе большого количества символов, чисел, их комбинаций. Каждый вариант проверяется на верность. С точки зрения математики решить задачу таким способом можно всегда, но временные затраты на поиски не во всех случаях оправдывают цель, так как поле поиска решений огромно. Эффективность метода основана на том, что большинство сайтов сделаны на базе популярных CMS (WordPress, Joomla, DLE, Drupal и т.д.), у которых известен url-адрес административной панели, а администраторы далеко не всегда уделяют безопасности своих аккаунтов должное внимание. Например, можно не сомневаться в том, что пара логин-пароль «admin / 12345» будет подобрана злоумышленниками при первой же брутфорс-атаке. Такой подбор осуществляется специальными ботами (программами) и позволяет в течение минуты попробовать сотни и тысячи различных комбинаций.

RCE - Remote code execution - удаленное выполнение кода на сервере
RCE - является одной из самых опасных уязвимостей. Возможность удаленного внедрения кода в серверный скрипт в 100% случаев приводит к взлому ресурса. С помощью RCE злоумышленник сразу получает доступ к серверу атакуемого сайта, размещая на нем веб-шеллы, или любой другой вредоносный код. Были случаи, когда RCE эксплуатировали боевые скрипты, размещенные на хакерских серверах, которые отслеживали наличие вредоносной составляющей, вирусов шеллов и т.п. на сайте. Когда программисты сайта пытались удалить вредоносные скрипты с своих сайтов, они появлялись заново, в течении секунд! Фактически программисты атакуемых сайтов не успевали "отпустить клавишу" DELETE, как заражение сайта повторялось в удвоенном размере. Обычным удалением вирусов троянов и шеллов в таком случае не обойтись. Первоначально нужно найти и устранить уязвимость в коде, позволяющую эксплуатировать RCE (Remote code execution). Возможность эксплуатации RCE возникает из за грубейших ошибок разработки сайта, отсутствия фильтрации передающих параметров, использование небезопасных функций и приемов программирования.

PHP injection - это самая грозная уязвимость для сайта созданного на PHP.
PHP injection является RCE уязвимостью для сайтов, созданных на PHP. Возможность удаленного внедрения кода в серверный скрипт - в 100% случаев приводит к взлому сайта.  Возможность эксплуатации PHP injection возникает из за грубейших ошибок разработки сайта, отсутствия фильтрации передающих параметров, использование небезопасных функция и приемов программирования. PHP-инъекция становится возможной, если входные параметры принимаются и используются без проверки.

SQL инъекция - внедрение произвольного кода в SQL запрос
SQL - инъекция является одной из самых опасных уязвимостей. Возможность успешной эксплуатации SQL - инъекции на сайте, в 99% случаев приводит к взлому ресурса. В случае успешной эксплуатации уязвимости, атакующий получает полный доступ к базе данных, где хранятся учетные данные пользователей и администраторов ресурса. Соответственно в базе данных хранятся пароли к административной панели сайта, почтовым сервисам и т.д.
На примитивном уровне, эксплуатация SQL инъекции выглядит следующим образом: Атакующий изменяет запрос, нарушая логику его выполнения.
1 Вызывает ошибку синтаксиса SQL запроса.
2 Внедряет свой запрос, эксплуатируя SQL инъекцию
3 Получает учетные данные доступа к сайту из базы данных

В большинстве случаев, такой взлом сайта может достаточно долго оставаться незамеченным для владельца и администратора сайта. Чаще всего SQL - инъекция становиться возможной из-за некорректной обработки входных данных, используемых в SQL - запросах.

XPath injection - это атака на приложения, создающие XML Path Language запросы
XPath инъекция - атака направленная на приложения, создающие XPath (XML Path Language) запросы от пользовательских данных. XPath — язык запросов для XML документов, в общем похожий на SQL для баз данных. Правда вместо таблиц, колонок и строчек XPath оперирует нодами в XML дереве. Но подобно SQL, XPath может быть уязвим для инъекции в случае если введенные данные недостаточно проверяются на стороне сервера. Еще одним различием синтаксис XPath с языком запросов SQL для баз данных, является отсутствие разграничений в XPath и разграничения прав доступа к БД в SQL.

RFI Remote file include - это выполнение удаленного файла на сервере
RFI - это выполнение удаленных файлов на серверной стороне. Проще говоря, у нас есть сервер, возвращающий с каким то запросом код программы, который будет открыт и запущен на сервере-жертве. RFI - это популярный и гарантированный способ взлома сайтов и веб приложений. Возможность выполнения удаленного файла на атакуемом сервере в 100% случаев приводит к взлому сайта. RFI - позволяет злоумышленнику выполнить удаленный файл, через скрипт, выполняемый на сервере. RFI возникает, когда входящие данные в коде сайта не проходят должную проверку. Возможность эксплуатации RFI возникает из-за грубейших ошибок разработки сайта, отсутствия фильтрации передающих параметров, отсутствие проверки серверного пути.

LFI Local file include - это подключение, выполнение или чтение локальных файлов на сервере
LFI - это популярный и часто эксплуатируемый способ взлома сайтов и веб приложений. LFI - это возможность использования и выполнения локальных файлов на серверной стороне. Уязвимость позволяет удаленному пользователю получить доступ с помощью специально сформированного запроса к произвольным файлам на сервере, в том числе содержащую конфиденциальную информацию. LFI возникает в случае, когда проверка входящих данных и параметров в коде сайта отсутствует или недостаточна. Проще говоря, это уязвимость открытия файлов с сервера + недостаточная фильтрация, что позволяет открывать произвольный файл.

PHP include - удаленное включение PHP файла
PHP include - это одна из самых грозных уязвимостей для сайта, созданного на PHP. Возможность включения и выполнения удаленного PHP файла - в 100% случаев приводит к взлому сайта, так как обеспечивает получение веб-шелла на атакуемом сервере. Возможность эксплуатации PHP include возникает из-за грубейших ошибок разработки сайта, отсутствия фильтрации передающих параметров, использование небезопасных функция и приемов программирования.

XSS (Сross Site Sсriрting — «межсайтовый скриптинг»)
Основное применение XSS атак - это хищение аутентификационных данных администраторов сайта для доступа в административный раздел, иных пользователей имеющих личные кабинеты, или персональные доступы к закрытым разделам сайта. Конечной целью XSS атаки может быть не только взлом сайта, но и конфиденциальные данные его пользователей, такие как: Адреса, телефоны, e-mail, контактная информация, номера кредитных карт или доступов к платежным системам, учетные данные доступа к сторонним сервисам. Возможность эксплуатации BeEF (сокращение от Browser Exploitation Framework) через XSS – является максимальной угрозой как для сайта, так и для ПК его администратора. 


CSRF (Сross Site Request Forgery) - Межсайтовая подделка запроса
CSRF - Межсайтовая подделка запроса — вид атак на посетителей веб-сайтов, использующий недостатки протокола HTTP. 
Основное применение CSRF - вынуждение выполнения каких-либо действий на уязвимом сайте от лица администратора или авторизированного пользователя:
Изменение учетных данных доступа (к примеру пароля администратора).
Восстановления пароля, доступа к почте или любым другим интернет сервисам.
Операции с платежными системами.
Любые иные действия от авторизированного пользователя или администратора сайта.


Фишинг (fishing)
Фишинг — вид интернет-мошенничества, целью которого является получение доступа к конфиденциальным данным пользователей. Основное фишинг атак - хищение учетных данных доступа пользователей к сайтам, личным кабинетам, доступам к почтовым и платежным интернет сервисам.  Это достигается путём проведения массовых рассылок электронных писем от имени популярных брендов, а также личных сообщений внутри различных сервисов, например, от имени банков (Ситибанк, Альфа-банк), сервисов (Google, Яндекс, Rambler, Mail.ru) или внутри социальных сетей (Facebook, Вконтакте, Одноклассники.ru). В письме часто содержится прямая ссылка на сайт, внешне неотличимый от настоящего, либо на сайт с редиректом. После того, как пользователь попадает на поддельную страницу, мошенники пытаются различными психологическими приёмами побудить пользователя ввести на поддельной странице свои логин и пароль, которые он использует для доступа к определённому сайту, что позволяет мошенникам получить доступ к почтовым ящика, банковским счетам, страницам социальных сетей и т.п. 
39
SSH доступ к аккаунту / SSH доступ к хостингу
« Последний ответ от Aurum 03 Июль 2019, 15:02:26 pm »
Доступ предоставляется для тарифных планов БИЗНЕС SSD, ПОРТАЛ SSD, КОРПОРАЦИЯ SSD  и КОРПОРАЦИЯ SSD 2G.
Для того что бы получить авторизационные данные нужно написать тикет в техническую поддержку с заголовком: SSH доступ, и текстом: Прошу предоставить мне авторизационные данные доступа к SSH.
Все проблемы с доступом  к SSH обсуждаются в данном разделе.
 :-X
40
1) Для проверки своего сайта на наличие вредоносного кода, зайдите в cPanel под своим логином и паролем.
Откройте "Сканер вирусов" в разделе "Безопасность"


2) Нажмите "Начать сканировать".


3) По окончанию сканирования в поле "Результат проверки" откройте отчет "Сканера вирусов"


4) В открывшемся окне вы можете ознакомиться с заражёнными файлами.
 
Страницы: 1 2 3 [4] 5 6 7