Всем шалом, мои дорогие форумчане Codeby.net!
Я проводил как то опрос чтобы узнать о вашем желание видеть мою техническую писанину. Прошло довольно много дней (недель?), мне не хватало ни времени, ни сил на начало написания этих статей. Но вот наконец то свершилось! Данную серию учебных пособий (шпаргалок) под названием «Сетевой Карфаген» я посвящу подробному разбору различных вопросов, нюансов и проектов в сфере сетевого программирования, что не мало важно в пентестинге и этичном хакинге. Начнем мы конечно же с основ и плавно будем переходить к более сложным вещам. Постараюсь максимально подробно все описать и ответить на все возникающие вопросы.
Но, перед началом, хотелось бы сказать отдельное спасибо уважаемому al04e за его труд в разборе языка программирования Python, как инструмента этичного хакинга, что и подтолкнуло меня оторваться от зубрежки и приступить к реализации некоторых личных проектов. Грац!
Поехали!
Начнем же мы с основы - настройка нашего сервера.
Использовать и демонстрировать всю работу я буду на простом и дешевом (+-70 руб/мес)
Чтож, допустим вы уже получили доступ к shell-оболочке своего сервере. В первую очередь мы должны приступить к обязательным четырем шагам настройки:
1. СВЕЖЕСТЬ
Первым делом нам необходимо проверить на релевантность кешей пакетов нашей Linux системы. Для этого выполним две команды
Чем старее ваша версия Ubuntu Server, тем больше времени уйдет на ее обновление, но это необходимая операция. По завершению обязательно перезагрузим систему командой
2. TIME
Желательно настроить
3. SECURE SHELL
Для работы наших программ и удаленного доступа к системе сервера нам необходим SSH протокол. Если вас попутал лукавый и вы пропустили первый пункт (аминь за вашу душу), то выполните следующую команду
4. FIREWALL
В Linux используется встроенный фаервол под названием
Поздравляю, мои дорогие! Мы настроили все необходимое на нашем (мб первом) сервере и теперь можем приступить к следующей задаче - установка и настройка Apache 2 + приблуды!
Рассмотрим как установить на нашу Ubuntu 18.04 веб-сервер Apache 2 с PHP приблудами и базой данных MySQL.
Далее нам нужно разрешить в фаерволе внешний доступ к порту 80 на котором и находится наш «сайт»:
Проверим работоспособность нашего детища: заходим на
В появившемся окне выбираем для автоматической перенастройки веб-сервер Apache2:
Далее установщик спросит про настройки базы данных для phpMyAdmin с помощью дефолтного пакета dbconfig-common, не заморачиваемся и жмакаем «YES»:
После будет предложено ввести пароль для базы phpMyAdmin, можно вводить, а можно и не вводить нажав просто «OK» и веб-интерфейс будет все равно установлен. Но чтобы он стал полностью доступен необходимо сделать «ссылку» на корневой файл, но это повлечет ряд выскакивающих ошибок в консоли трубящих об плохой совместимости с языком PHP. Это связанно с тем что в репозитории Linux находится несколько устаревшая версия phpMyAdmin (всегда), что и вызывает этот конфликт. Работе это не мешает (если вас не раздражают постоянно всплывающие красные хрени), но лучше сделать все красиво. Для этого переходим на официальный сайт
Далее открываем терминал на своей машине с файлом. Проверяем на «свежесть» SSH клиент командой
Теперь загрузим файл на наш сервер:
Давайте детальнее разберем эти иероглифы:
Как только все закончится и скопируется полностью на сервер, то можно проверить работу нашего веб-интерфейса в действии. К ссылке на сайт, которую мы получили через Whoer, добавляем через слеш
Поздравляю! Мы сделали наши первые маленькие шажки!
Но пока мы не можем полноценно авторизоваться. Для этого установим пароль root-пользователю MySQL. В терминале сервера вводим следующую команду:
Далее вводим
Теперь установим пароль на нашего root-пользователя:
Завершаем все обновлением пользовательского списка:
В результате мы установили пароль и можем его использовать для аутентификации в нашем веб-интерфейсе phpMyAdmin! Чтобы выйти из консоли MySQL просто введите команду
Вы можете столкнутся при первом входе с выводом некоторых ошибок в нижней части веб-интерфейса (они приведены ниже). Тогда нам нужно скопировать конфигурационный файл из корневой папки командой
Сделаем еще пару штрихов по безопасности раздав необходимые нам права доступа к файлам и папкам в директории
На этом , пожалуй, мы сегодня закончим.
P.S.
Мне важно совершенствоваться в знаниях и написание статей, и без вашей помощи тут не обойтись.
Это мой первый опыт в подобных вещах, хотелось бы услышать мнение ветеранов-кодеров, которые могли бы научить меня уму разуму!
Я проводил как то опрос чтобы узнать о вашем желание видеть мою техническую писанину. Прошло довольно много дней (недель?), мне не хватало ни времени, ни сил на начало написания этих статей. Но вот наконец то свершилось! Данную серию учебных пособий (шпаргалок) под названием «Сетевой Карфаген» я посвящу подробному разбору различных вопросов, нюансов и проектов в сфере сетевого программирования, что не мало важно в пентестинге и этичном хакинге. Начнем мы конечно же с основ и плавно будем переходить к более сложным вещам. Постараюсь максимально подробно все описать и ответить на все возникающие вопросы.
Но, перед началом, хотелось бы сказать отдельное спасибо уважаемому al04e за его труд в разборе языка программирования Python, как инструмента этичного хакинга, что и подтолкнуло меня оторваться от зубрежки и приступить к реализации некоторых личных проектов. Грац!
Поехали!
Зовут меня MyrMyrBl9. Молодой кодер самоучка из России. Начал свое становление как программист в октябре 2018 года с книжки Майкла Доусона «Программируем на Python». Считаю себя обычным скриптером-ламером, но пытаюсь пробиться в «люди». Пишу код, в первую очередь, на пайтоне. Нахожусь в процессе изучения JS и C-подобных языков. Немного умею на PHP, Java и SQL. В планах изучение искусства реверса и ассемблера. Являюсь сторонником Open Source проектов.
1. О чем данная статья?
Начало серии статей «Сетевой Карфаген» я решил посвятить настройке VPS сервера и дальнейшей установке на него сетевой сборки Apache + PHP + MySQL.
Всю эту почву мы подготовим для дальнейшей разработки и внедрению самого простого web-сниффера. В конце мы напишем свою собственную кроссплатформенную утилиту на Python для удаленного доступ ко всему этому механизму.
Информации получилось достаточно много и потом пришлось ее разделить примерно на три части (возможно выйдет больше).
2. Для кого данная статья?
В первую очередь для новичков, которые как и я хотят оторваться от зубрежки и приступить к реализации реальных проектов.
3. Какие знания необходимы?
Думаю будет вполне достаточно прочтения одной книги по любому языку программирования, чтобы иметь основы понимания программирования.
В статьях я постараюсь все максимально подробно разбирать.
Начало серии статей «Сетевой Карфаген» я решил посвятить настройке VPS сервера и дальнейшей установке на него сетевой сборки Apache + PHP + MySQL.
Всю эту почву мы подготовим для дальнейшей разработки и внедрению самого простого web-сниффера. В конце мы напишем свою собственную кроссплатформенную утилиту на Python для удаленного доступ ко всему этому механизму.
Информации получилось достаточно много и потом пришлось ее разделить примерно на три части (возможно выйдет больше).
2. Для кого данная статья?
В первую очередь для новичков, которые как и я хотят оторваться от зубрежки и приступить к реализации реальных проектов.
3. Какие знания необходимы?
Думаю будет вполне достаточно прочтения одной книги по любому языку программирования, чтобы иметь основы понимания программирования.
В статьях я постараюсь все максимально подробно разбирать.
Хорошее настроение и две бутылки Bud!
[ АЛКОГОЛЬ ВРЕДИТ ВАШЕМУ ЗДОРОВЬЮ ]
[ АЛКОГОЛЬ ВРЕДИТ ВАШЕМУ ЗДОРОВЬЮ ]
Начнем же мы с основы - настройка нашего сервера.
Использовать и демонстрировать всю работу я буду на простом и дешевом (+-70 руб/мес)
Ссылка скрыта от гостей
сервере на Ubuntu 18.04 Linux с amd64 архитектурой. Вы же можете использовать любой другой, в рамках приличия, конечно же (имею ввиду не windows). Нас интересует «белый» IP-адрес, доменное имя не нужно. Конечно можно воспользоваться репозиторием Seeker и роль веб-сервера даровать своей собственной машинке, но в данном случае нам это не подходит. Но обещаю написать о Seeker в отдельной статье.Чтож, допустим вы уже получили доступ к shell-оболочке своего сервере. В первую очередь мы должны приступить к обязательным четырем шагам настройки:
Далее я буду использовать системные команды безsudo
от лица root-пользователя
Так же для тех кто не знал, поясню:
- Знак
$
, в начале кода, символизирует обращение к системе от лица пользователя без root-прав;- Знак же
#
- это обращение root-пользователя к системе;- Во время самой работы вводить эти знаки не нужно, они вставляются автоматически. В тексте они лишь выполняют роль демонстрации начала команды;
1. СВЕЖЕСТЬ
Первым делом нам необходимо проверить на релевантность кешей пакетов нашей Linux системы. Для этого выполним две команды
# apt update
и # apt upgrade
. Система может предупредить об изменении объема занятого дискового пространства (в случае если есть обновления для репозиториев), и запросить вашего разрешения. Вводим «Y» и продолжаем.Чем старее ваша версия Ubuntu Server, тем больше времени уйдет на ее обновление, но это необходимая операция. По завершению обязательно перезагрузим систему командой
# reboot
2. TIME
Желательно настроить
Ссылка скрыта от гостей
протокол синхронизации времени, обычно он включен по умолчанию. Пренебрежение этим пунктом может повлечь за собой многие проблемы в будущем - рассинхронизация работы приложений (кода) и путаница в логах в плоть до нескольких минут. Проверим установлен ли NTP командой # systemctl status ntp
. Если его нет, то вводим # apt-get install ntp
и добавляем в автозагрузку # systemctl enable ntp
, перезагружаем # systemctl restart ntp
. Конфигурации оставляем по умолчанию, в данном случае точность времени будет составлять +-0.05 секунды, что нас вполне устраивает.3. SECURE SHELL
Для работы наших программ и удаленного доступа к системе сервера нам необходим SSH протокол. Если вас попутал лукавый и вы пропустили первый пункт (аминь за вашу душу), то выполните следующую команду
# apt upgrade ssh
. Далее нам необходимо сменить стандартные порты в конфигурациях, иначе рано или поздно мы можем подвергнуться попыткам
Ссылка скрыта от гостей
. Открываем файл # nano /etc/ssh/sshd_config
, находим строку # Port 22
(она будет практически в самом начале документа), раскомментируем ее (удаляем «#» (хеш) в начале строки) и изменяем стандартное число 22
на любое другое в диапазоне 0 - 65535. Например пусть это будет 4545
:
Далее находим строку # GatewayPorts no
. Данная директива определяет можно ли удаленно подключится к порту, выделенному для SSH туннелирования трафика. Значение по-умолчанию «no» разрешает доступ только в рамках данной системы (локально). Раскомментируем строку и изменяем ее значение на «yes»:
Настройку авторизации по ключу проведем в следующей части при непосредственной работе с написанием нашей программы на Python.4. FIREWALL
Спорить о полезности брандмауэра - бессмысленно. Сервер будет находится постоянно в сети и нужно защитить все его запущенные процессы и службы от внешних атак и воздействий. Это, пожалуй, один из самых важнейших пунктов настройки. И если раньше все занимало колоссально много времени, то сегодня настройка межсетевого экрана «раз-два и готово».«Работать без фаервола - это как заниматься незащищенным сексемс вьетнамкой»
В Linux используется встроенный фаервол под названием
Ссылка скрыта от гостей
, мы же воспользуемся
Ссылка скрыта от гостей
- оболочкой (утилитой) для простого и быстрого редактирования конфигураций. Проверим состояние его работы командой # systemctk status ufw
. Если он не включен то это необходимо исправить через # systemctl enable ufw
:
По-умолчанию firewall закрывает внешний доступ ко всем службам. Мы будем работать с SSH протоколом, поэтому нужно разрешить входящее и исходящее подключение к этой службе. Но не ко всей, а именно к нашему порту, который мы изменили в пункте №2. Вводим следующую команду # ufw allow 4545
(используете значение своего порта). Проверяем результат через # ufw status
:Поздравляю, мои дорогие! Мы настроили все необходимое на нашем (мб первом) сервере и теперь можем приступить к следующей задаче - установка и настройка Apache 2 + приблуды!
Ссылка скрыта от гостей
- является одним из популярнейших HTTP-серверов имеющий свободную форму распространения. Не такой производительный как
Ссылка скрыта от гостей
, но гораздо проще и удобнее в настройке конфигураций. Не будем усложнять себе жизнь и установим его с использованием
Ссылка скрыта от гостей
- стека (сборки) серверного программного обеспечения, куда, по-мимо Apache, будут входить и PHP и MySQL. В этом нам поможет встроенная линукс утилита tasksel (если она не установлена то вводим # apt-get install tasksel
). Для этого используем следующую команду # tasksel install lamp-server
, мы увидим загрузку пакетов из репозитория Linux:
# ufw allow in 80
, иначе будет пустая страница с ошибкой загрузки.Проверим работоспособность нашего детища: заходим на
Ссылка скрыта от гостей
, переходим в раздел
Ссылка скрыта от гостей
и вбиваем IP-адрес своего сервера. В графе «хост» будет ссылка на ваш сайт. Перейдя по ней мы должны увидеть стандартную страницу приветствия от Apache2:
Теперь займемся веб-интерфейсом phpMyAdmin для работы с базой данных MySQL воспользовавшись командой # apt-get install phpmyadmin
.В появившемся окне выбираем для автоматической перенастройки веб-сервер Apache2:
Далее установщик спросит про настройки базы данных для phpMyAdmin с помощью дефолтного пакета dbconfig-common, не заморачиваемся и жмакаем «YES»:
После будет предложено ввести пароль для базы phpMyAdmin, можно вводить, а можно и не вводить нажав просто «OK» и веб-интерфейс будет все равно установлен. Но чтобы он стал полностью доступен необходимо сделать «ссылку» на корневой файл, но это повлечет ряд выскакивающих ошибок в консоли трубящих об плохой совместимости с языком PHP. Это связанно с тем что в репозитории Linux находится несколько устаревшая версия phpMyAdmin (всегда), что и вызывает этот конфликт. Работе это не мешает (если вас не раздражают постоянно всплывающие красные хрени), но лучше сделать все красиво. Для этого переходим на официальный сайт
Ссылка скрыта от гостей
и скачиваем последнюю версию на свою машину, разархивируйте содержимое в удобную для себя директорию. Советую так же заранее переименовать полученную папку в phpmyadmin
.Далее открываем терминал на своей машине с файлом. Проверяем на «свежесть» SSH клиент командой
# apt-get upgrade ssh
. Если он у вас не установлен в системе (обычно он есть уже по-умолчанию в Linux), то вводим следующее: # apt-get install ssh
и повторяем предыдущую команду по обновлению (на всякий пожарный).Теперь загрузим файл на наш сервер:
# scp -P 4545 -r /home/phpmyadmin root@127.0.0.1:/etc/www/html/
Давайте детальнее разберем эти иероглифы:
- SCP (Secure CoPy command) - утилита позволяющая обмениваться файлами и папками в зашифрованном виде с удаленным сервером по средством SSH туннелирования;
- -P 4545 - номер вашего порта SSH на сервере;
- -r - параметр рекурсивного копирования указанной папки (включая подкаталоги);
- /home/phpmyadmin - полный путь к нашей папке на рабочей машине;
- root@127.0.0.1 - username и IP-адрес сервера с которым осуществляется передача данных;
- : - обязательное двоеточие!
- /etc/www/html/ - полный путь к директории куда мы копируем нашу папку (таким он и должен быть, если вы все правильно сделали);
Как только все закончится и скопируется полностью на сервер, то можно проверить работу нашего веб-интерфейса в действии. К ссылке на сайт, которую мы получили через Whoer, добавляем через слеш
phpmyadmin
(название загруженной ранее папки). В итоге вы должны увидеть сам веб-интерфейс с полями авторизации:Но пока мы не можем полноценно авторизоваться. Для этого установим пароль root-пользователю MySQL. В терминале сервера вводим следующую команду:
mysql
. Таким образом вы попадете в саму консоль MySQL и начало строки терминала изменится на mysql>
:use mysql;
. Обязательно каждую команду завершайте точкой с запятой!Теперь установим пароль на нашего root-пользователя:
update user set authentication_string=password('xxx'), plugin='mysql_native_password' where user='root';
(где 'xxx' - ваш пароль)Завершаем все обновлением пользовательского списка:
flush privileges;
exit
и вы вернетесь в терминал сервера.# cp /etc/phpmyadmin/config.inc.php /var/www/html/phpmyadmin/
:- cp - команда для копирования файла (в случае с папками используется опция -r перед копируемой директорией);
- /etc/phpmyadmin/config.inc.php - путь к конфигу в корневой папке phpMyAdmin;
- /var/www/html/phpmyadmin/ - полный путь к папке нашего сайта;
- Отсутствие директории
/tmp/
, из-за чего phpMyAdmin не может кэшировать шаблоны и работает медленнее. Заходим в# cd /var/www/html/phpmyadmin
(вы могли изменить название этой папки на другое) и находим файлconfig.inc.php
, открываем через редактор# nano config.inc.php
и в конце на свободной строчке пишем:$cfg['TempDir'] = './tmp/';
. Закрываем и сохраняем. В той же директории создаем папку командой# mkdir tmp
и присваиваем ей нужные права# chmod 777 tmp
. Готово!
В папке будет похожий файл с именем
config.sample.inc.php
- это его дефолтная копия для восстановления. Открываем его через # nano config.sample.inc.php
и дописываем в конец строчку что была выше. Нажимаем ctr + X
, соглашаемся на сохранение, но далее нам дадут возможность изменить имя - меняем его убирая sample из название и подтверждаем. Создаем папку.Просто создаем пустую папку tmp с нужными правами 777
Сделаем еще пару штрихов по безопасности раздав необходимые нам права доступа к файлам и папкам в директории
/var/www/html/
:- Закроем доступ к приветственной странице Apache для всех кроме нас (владельцев) командой
# chmod 700 index.html
; - Во вторых создадим папку
# mkdir test
- она нам понадобиться в следующей статье и выдадим ей те же права доступа# chmod 700 test
;
На этом , пожалуй, мы сегодня закончим.
P.S.
Мне важно совершенствоваться в знаниях и написание статей, и без вашей помощи тут не обойтись.
Это мой первый опыт в подобных вещах, хотелось бы услышать мнение ветеранов-кодеров, которые могли бы научить меня уму разуму!
Ссылка скрыта от гостей
Вложения
Последнее редактирование модератором: