Главная


Showing posts sorted by relevance for query linux. Sort by date Show all posts
Showing posts sorted by relevance for query linux. Sort by date Show all posts

Sunday, 10 March 2019

Криминалистическая экспертиза цифровых данных.

Всем привет.

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

Примеры технических средств выполнения криминалистической копии (создания образа) запоминающих устройств.

Следует руководствоваться рекомендациями, которые определены в разделе 4.2.1 "Copying File from Media" NIST 800-86 Guide to Integrating Forensic Techniques into Incident Response. 

В качестве программных средств создания образа можно использовать:
- утилиты dd и dc3dd для UNIX-систем;
- программы FTK Imager, EnCase Forensic Imager или Redline для Windows-систем:
- программу Belkasoft Evidence Center для Windows, Linux, MacOS, iOS, Android, Windows Phone, Blackberry-систем;
- программу The Sleuth Kit для Windows, MacOS, Linux, Solaris, OpenBSD, FreeBSD-систем.

В качестве программных средств вычисления значений хэш-функций можно использовать:
- программы md5sum или sha256sum для Linux-систем;
- программы Memoryze для Windows и MacOS-систем:
- программу dff для Windows и Linux-систем.

В качестве специализированных программных средств "write-blocker" можно использовать:
- программу dff для Windows и Linux-систем;
- следует руководствоваться рекомендациями, которые определены в разделе 4.2.2 "Data File Integrity" NIST 800-86 Guide to Integrating Forensic Techniques into Incident Response.

Wednesday, 8 May 2019

Windows для Linux?

Всем привет.

Как близко подобралась Windows к Linux? Судя по новостям, этим летом, начиная со сборок Windows 10 Insider Preview, Microsoft добавит в систему встроенное ядро Linux, созданное специально для новейшей версии подсистемы Windows для Linux (WSL).

В последние годы Microsoft удивила многих в сообществе разработчиков Linux. Сюрпризы включали перенос в операционную систему Windows таких возможностей, как оболочка Linux Bash в Windows 10 или встроенный OpenSSH в Windows 10, и даже включение Ubuntu, SUSE Linux и Fedora в Microsoft Store. Microsoft теперь идет еще дальше, планируя выпустить полноценное ядро Linux прямо в Windows 10.

Программный менеджер Microsoft Джек Хэммонс сообщает:
начиная со сборок Windows Insiders этим летом, мы добавим встроенное ядро Linux, созданное специально для новейшей версии подсистемы Windows для Linux (WSL). Само ядро изначально будет основано на версии 4.19, последней долгосрочной стабильной версии Linux. Ядро получит набор всех изменений для установки новых долгосрочных стабильных выпусков, чтобы подсистема WSL всегда имела последние достоинства Linux.

Tuesday, 23 July 2024

Легкий старт з Prometheus.

Всім привіт.

Моніторинг сьогодні - фактично обов'язкова частина ІТ-інфраструктури для компанії будь-яких розмірів. Але сьогодні я не буду зупинятися на різноманітті програмного забезпечення для моніторингу, а просто покажу як легко можно дати старт такому функціоналу з одним із популярних рішень - пара на основі Prometheus плюс Grafana.


То ж щодо теорії то вам сюди, бо далі сама практика від Дениса Астахова. Піднімемо сервер Prometheus та сервер Grafana, з'єднаємо їх, та запустимо моніторинг на інші сервери.

Інсталюємо сервер Prometheus:

#!/bin/bash

#--------------------------------------------------------------------

# Script to Install Prometheus Server on Linux Ubuntu

# Tested on Ubuntu 22.04, 24.04

# Developed by Denis Astahov in 2024

#--------------------------------------------------------------------

# визначення глобальних констант

PROMETHEUS_VERSION="2.51.1"

PROMETHEUS_FOLDER_CONFIG="/etc/prometheus"

PROMETHEUS_FOLDER_TSDATA="/etc/prometheus/data"


# отримання пакету PROMETHEUS з мережі internet

cd /tmp

wget https://github.com/prometheus/prometheus/releases/download/v$PROMETHEUS_VERSION/prometheus-$PROMETHEUS_VERSION.linux-amd64.tar.gz

tar xvfz prometheus-$PROMETHEUS_VERSION.linux-amd64.tar.gz

cd prometheus-$PROMETHEUS_VERSION.linux-amd64


mv prometheus /usr/bin/

rm -rf /tmp/prometheus*


# створення теки для PROMETHEUS

mkdir -p $PROMETHEUS_FOLDER_CONFIG

mkdir -p $PROMETHEUS_FOLDER_TSDATA


# створення конфігурації для сервера PROMETHEUS

cat <<EOF> $PROMETHEUS_FOLDER_CONFIG/prometheus.yml

global:

  scrape_interval: 15s


scrape_configs:

  - job_name      : "prometheus"

    static_configs:

      - targets: ["localhost:9090"]

EOF


# визначення користувача PROMETHEUS та надання йому відповідних прав

useradd -rs /bin/false prometheus

chown prometheus:prometheus /usr/bin/prometheus

chown prometheus:prometheus $PROMETHEUS_FOLDER_CONFIG

chown prometheus:prometheus $PROMETHEUS_FOLDER_CONFIG/prometheus.yml

chown prometheus:prometheus $PROMETHEUS_FOLDER_TSDATA


# створення конфігурації PROMETHEUS як сервісу Linux

cat <<EOF> /etc/systemd/system/prometheus.service

[Unit]

Description=Prometheus Server

After=network.target


[Service]

User=prometheus

Group=prometheus

Type=simple

Restart=on-failure

ExecStart=/usr/bin/prometheus \

  --config.file       ${PROMETHEUS_FOLDER_CONFIG}/prometheus.yml \

  --storage.tsdb.path ${PROMETHEUS_FOLDER_TSDATA}


[Install]

WantedBy=multi-user.target

EOF


# запуск сервісу PROMETHEUS, перевірка його статусу, та визначення його на автозапуск

systemctl daemon-reload

systemctl start prometheus

systemctl enable prometheus

systemctl status prometheus --no-pager

prometheus --version

Monday, 10 December 2018

Дистрибутивы для Forensics анализа.

Всем привет.

В марте 2013-го я выложил в свободный доступ свое творение "Компьютерный инцидент – от теории к практике. CLI Forensic Toolkit." Разумеется за это время такая наука как форензика не утратила своей актуальности. Более того, ее применение стало еще шире. 

И вот я вычитывая очередной пост по этой теме решил восполнить пробел в моей книге. А именно пробел по софтверной лаборатории для специалиста по форензике. Потому как уже не всегда можно получить добро с очередным ЧП на "нам некогда, все носим и ставим по новой". Нужно все чаще разбираться кто же на самом деле напартачил - софт или человек, с умыслом или без.

Для анализа и сбора артефактов вам будет нужна специальная лаборатория. Мы будем акцентироваться только на программную составляющую экспертизы поэтому нам в качестве основы вполне хватит пула из нескольких виртуальных машин и специализированных дистрибутивов с необходимым софтом. Гипервизор 2-го уровня для виртуалки можно выбрать на свой вкус - это может быть бесплатный VirtualBox или VMware.

Можно предпочесть сборку Kali Linux, DEFT или Remnux. CAINE и Parrot OS тоже достойны внимания, не говоря уже о платных Encase и SMART Linux. А теперь чуть подробнее.

Kali Linux

Разработанный и финансируемый компанией Offensive Security Ltd., дистрибутив Kali Linux является одной из лучших и любимых операционных систем хакеров. Kali Linux - это дистрибутив Linux на базе Debian, предназначенный для расширенного тестирования безопасности и аудита уязвимостей. Он содержит несколько сотен инструментов, предназначенных для решения различных задач информационной безопасности, таких как тестирование на проникновение, исследование безопасности, компьютерная криминалистика. И да, это тот самый Linux который использовал Elliot в сериале «Mr. Robot».

Kali Linux - это проект с открытым исходным кодом, который можно установить на свой ПК. Тем не менее, общая концепция заключается в том, чтобы использовать систему как Live CD (USB), запускать всевозможные пробы, тесты и исследования сетевых целей. Он предназначен как для Windows, так и для Linux-ориентированных инструментов. Он также поддерживает установку беспроводного соединения, настройки MANA Evil Access Point, клавиатуру HID (такие как Teensy), а также Bad USB MITM.

Monday, 13 June 2022

Nmap scanning and discovering.

Всем привет.

Сегодня у нас вторая часть из серии "Анализ сетевых пакетов" и сегодня оперируем Nmap.

Nmap (network mapper) is an open source tool for network traffic analysis and security auditing. 

It uses raw network packets to determine:

  • what hosts are available on networks,
  • what services (application name and versions),
  • what operating systems and OS versions they are running,
  • what type of packet filters/firewalls are in use,

 and many more...


Single Target Scanning:

## Scan a single ip address ###

nmap 192.168.1.1


## Scan a host name ###

nmap www.google.com


## Scan a host name with more info###

nmap –v myhost.ieu.edu.tr


Multiple Target Scanning:

nmap 192.168.1.1 192.168.1.2 192.168.1.3

nmap 192.168.1.1,2,3

Tuesday, 7 March 2023

Copy/Paste feature between VMRC client and Virtual Machine.

Hi all.

I was amazing by discovering that feature  "Copy/Paste" between VMRC client and Windows/Linux Virtual Machine is not available. However to resolve such issue, you can first install or upgrade the VMware tools for the Windows/Linux virtual machine(VM) and perform next steps.. 

From the vCenter Server HTML5 Web Client.

1)Power off the VM.

2)Enable the Copy & Paste for the Windows/Linux virtual machine:

    a) Right-click the virtual machine and click Edit Settings.

    b) Click the VM Options tab, expand Advanced, and click Edit Configuration.



    c) Click on Add Configuration Params three times to give three rows 

    d) Fill in the Name and Value fields as mentioned below:

Name:                                 Value:

isolation.tools.copy.disable          FALSE

isolation.tools.paste.disable         FALSE

isolation.tools.setGUIOptions.enable  TRUE

    e) Click OK to save and exit out of the Configuration Parameters wizard. Note: These options override any settings made in the guest operating system’s VMware Tools control panel. 

    f) Click OK to save and exit out of the Edit Settings wizard.

 

3) Power on the VM

4) Then use Copy/Paste directly on Windows/Linux/any other platform. 

5) For paste operation's target platform is Linux, Older X applications do not use a clipboard. Instead, they let you paste the currently selected text (called the "primary selection") without copying it to a clipboard. Pressing the middle mouse button is usually the way to paste the primary selection.

Friday, 18 August 2023

Как завершить процесс в Linux.

Всем привет.

Процесс — это программа в Linux, которая выполняется в отдельном адресном пространстве. При этом GNU / Linux — это многозадачная система, которая одновременно выполняет множество процессов, принадлежащих одному или нескольким пользователям. К сожалению, бывает, что некоторые приложения могут перестать отвечать на запросы пользователя или других приложений. Тогда приходиться либо перезагружать систему, либо выполнять завершение отдельного процесса.

Прежде всего чтобы завершить процесс, Вам нужно знать PID или его имя. При каждом новом запуске программы автоматически генерируется уникальный PID для соответствующего процесса. Тогда как его имя остается одним и тем же.

Первый процесс, который запускается при загрузке системы Linux — это systemd или init, которые являются основными, поэтому их невозможно уничтожить даже случайно. В большинстве случаев в операционной системе этим процессам присваивается значение PID равное 1.

Чтобы увидеть все запущенные процессы и соответствующие им значения PID — выполните следующую команду:

ps -A


Чтобы узнать идентификатор конкретного процесса — используя его имя. Для этого Вы можете применить следующую команду (в качестве примера мы использовали имя mysqld):

pidof mysqld

 

Для этой же цели Вы можете ввести комбинацию команд, приведенную ниже (при этом она выводит гораздо больше информации о процессе):

ps aux | grep mysqld

 

Третий способ вывода идентификатора процесса предполагает использование команды pgrep:

pgrep mysql


Команды kill, pkill и killall.

Команда kill — это встроенный инструмент ОС семейства Linux, который используется для завершения процессов вручную. Она посылает сигнал выбранному процессу, который и завершает его. По умолчанию команда kill посылает сигнал SIGTERM запущенному процессу. Это действие обычно останавливает работающие процессы. Если Вы хотите остановить процесс — просто укажите его идентификатор PID в переменной ProcessID.

Синтаксис команды kill выглядит следующим образом:

kill [-s sigspec | -n signum | -sigspec] pid

 

При этом элементы команды имеют следующее значение:

  • sigspec — посылает сигнал процессу, названному по спецификации задания jobspec;
  • signum — посылает сигнал процессу, названному по идентификатору процесса PID.

Существует семь базовых сигналов, которые Вы можете послать, используя команду kill:

  • SIGHUP(1) — сигнал для сообщения о потере соединения с управляющим терминалом пользователя;
  • SIGINT(2) — сигнал о прерывании процесса с клавиатуры (обычно при нажатии комбинации клавиш Ctrl+C);
  • SIGQUIT(3) — сигнал, аналогичный SIGINT, но при этом вызывается символом QUIT, и при завершении процесса производит дамп ядра;
  • SIGABRT(6) — сигнал, посылаемый процессом самому себе при выполнении аварийной остановки с выполнением дампа памяти в случае невозможности дальнейшего продолжения работы программы;
  • SIGKILL(9) — сигнал используется для немедленного завершения программы (не может быть обработан, проигнорирован или заблокирован);
  • SIGTERM(15) — сигнал для завершения работы программы, который можно блокировать, обрабатывать и игнорировать (используется как сигнал по умолчанию);
  • SIGSTOP(17,19,23) — сигнал для приостановки процесса (процесс не возобновится автоматически, пока Вы не отправите ему сигнал SIGCONT — позволяет приостановить процесс, не завершая его).

Monday, 11 November 2019

Как пользоваться curl.

Всем привет.

Сегодня мы рассмотрим как пользоваться curl, зачем нужна эта утилита и основные ее возможности. Несмотря на свою схожесть с wget, они очень сильно отличаются. Команда curl linux предназначена больше для анализа и имитации различных действий на сервере, тогда как wget больше подходит для загрузки файлов и краулинга сайтов.

Утилита curl позволяет решить намного более широкий круг задач, среди которых даже имитация действий пользователя на сайте.

ЧТО ТАКОЕ CURL?

На самом деле, curl - это больше чем просто утилита командной строки для Linux или Windows. Это набор библиотек, в которых реализуются базовые возможности работы с URL страницами и передачи файлов. Библиотека поддерживает работу с протоколами: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, а также POP3, IMAP и SMTP. Она отлично подходит для имитации действий пользователя на страницах и других операций с URL адресами.

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

КОМАНДА CURL

Перед тем как перейти к описанию того как может использоваться команда curl linux, давайте разберем саму утилиту и ее основные опции, которые нам понадобятся. Синтаксис утилиты очень прост:

$ curl опции ссылка

Теперь рассмотрим основные опции:

-# - отображать простой прогресс-бар во время загрузки;
-0 - использовать протокол http 1.0;
-1 - использовать протокол шифрования tlsv1;
-2 - использовать sslv2;
-3 - использовать sslv3;
-4 - использовать ipv4;
-6 - использовать ipv6;
-A - указать свой USER_AGENT;
-b - сохранить Cookie в файл;
-c - отправить Cookie на сервер из файла;
-C - продолжить загрузку файла с места разрыва или указанного смещения;
-m - максимальное время ожидания ответа от сервера;
-d - отправить данные методом POST;
-D - сохранить заголовки, возвращенные сервером в файл;
-e - задать поле Referer-uri, указывает с какого сайта пришел пользователь;
-E - использовать внешний сертификат SSL;
-f - не выводить сообщения об ошибках;
-F - отправить данные в виде формы;
-G - если эта опция включена, то все данные, указанные в опции -d будут передаваться методом GET;
-H - передать заголовки на сервер;
-I - получать только HTTP заголовок, а все содержимое страницы игнорировать;
-j - прочитать и отправить cookie из файла;
-J - удалить заголовок из запроса;
-L - принимать и обрабатывать перенаправления;
-s - максимальное количество перенаправлений с помощью Location;
-o - выводить контент страницы в файл;
-O - сохранять контент в файл с именем страницы или файла на сервере;
-p - использовать прокси;
--proto - указать протокол, который нужно использовать;
-R -  сохранять время последнего изменения удаленного файла;
-s - выводить минимум информации об ошибках;
-S - выводить сообщения об ошибках;
-T - загрузить файл на сервер;
-v - максимально подробный вывод;
-y - минимальная скорость загрузки;
-Y - максимальная скорость загрузки;
-z - скачать файл, только если он был модифицирован позже указанного времени;
-V - вывести версию.

Это далеко не все параметры curl linux, но здесь перечислено все основное, что вам придется использовать.

Friday, 3 June 2016

Подключение WinSCP к виртуальной СentOS c NAT.

Всем привет.

Мой полигон с CentOS 7 продолжает работать. 

Как вы, наверное, знаете что либо делать, настраивать  и переделывать на Linux без доступа в Интернет утомительно. Особенно если вы новичок в Linux. Да и не только в Linux, сейчас почти весь софт  рассчитан на то что с ОС на которую его устанавливают доступ в Интернет есть по умолчанию. Само собой разумеется.)  И не важно, корпоративная это ОС с серьезной политикой безопасности или домашняя с бесплатным антивирусом.

Выкручиваемся тем что используем Oracle Virtual Box. В этом случае чтобы выпустить Linux в интернет в сетевых настройках виртуальной ОС для сетевого адаптера выбираем NAT. Это самый простой способ на сегодня. При этом сетевой интерфейс самого Linux получает IP-адрес 10.0.2.15 который нигде не светится. Подробнее об этом я писал здесь. 

Если доступ  в Интернет происходит через Proxy-сервер, то нам нужно будет указать в соответствующих конфигурационных файлах (/etc/yum.conf и т.п.) Linux строки: 
proxy=http://server:3128
proxy_username=user1
proxy_password=user321

Для проксирования всего трафика http, https и ftp надо задать переменные окружения: 
$ export http_proxy="http://user:password@proxy-server:port"
$ export https_proxy="https://user:password@proxy-server:port"
$ export ftp_proxy="http://user:password@proxy-server:port"

Вроде бы все. 

Но с хостовой ОС иногда полезно "удаленно" заходить на виртуальную Linux с помощью клиента Putty или WinSCP. Не отключая NAT. Но до 10.0.2.15 с хоста не достучаться. Что же делать? 

Tuesday, 1 June 2021

Проводим пентест, часть 4 - используем уязвимости.

Всем привет.

Сегодня 4-я часть из серии публикаций Андрея Бирюкова, посвященных проведению аудита и теста на проникновение (пентест). Оригинал статьи был опубликован в журнале "Системный администратор" №07-08(164-165), 2016.

Часть 4. Используем уязвимости

После нахождения уязвимостей хакеру необходимо  ими воспользоваться. Есть много способов это сделать. В  этой  статье  мы  продолжим  тему  практического  теста на  проникновение.  Ранее  [1-3]  мы  подробно  рассмотрели способы  проникновения  в  сеть,  идентификации  ресурсов и  поиска  уязвимостей.  Теперь  поговорим  о  том,  как  злоумышленник может воспользоваться найденными в ПО уязвимостями.

Тему  использования  уязвимостей  мы  поделим  с  вами на три части, каждая из которых будет представлять отдельную статью. Первая будет посвящена эксплуатации уязвимостей с помощью Metaspoit Framework, входящего в состав Kali Linux. Этот фреймворк является основным инструментом при проведении любого пентеста. Во второй мы расскажем об уязвимостях в веб-приложени ях. Будут подробно рассмотрены различные кроссплатформенные инструменты, также входящие в состав Kali. Широкое распространение веб-приложений в корпоративных средах требует особого внимания к вопросам их защищенности, поэтому я планирую посвятить этому отдельную статью. В  третьей  статье  мы  поговорим  о  поиске  уязвимостей в «самописных» приложениях. Практически в любой крупной компании есть ПО, разработанное либо собственными программистами, либо сторонними разработчиками. Зачастую это довольно старые программы, давно не обновлявшиеся. Про уязвимости в них сканеры, описанные в предыдущих  статьях,  могут  не  знать,  так  как  в  силу  закрытости и  нераспространенности  данного  ПО  никто  не  проводил его аудит и, соответственно, никто не знает специфические ошибки. Также и Metasploit вряд ли сможет применить к таким приложениям свои эксплоиты. Поэтому в третьей статье мы рассмотрим, как самостоятельно искать дыры в ПО. 

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

Ну а теперь рассмотрим работу с Metasploit Framework.

Хакерский мультитул.

ПО Metasploit Framework от компании Rapid7 представляет собой  многофункциональный  набор  средств,  с  помощью которых можно осуществлять различные тесты на проникновение.  Есть  несколько  редакций  Metasploit  [4].  Если  Pro и  Express  являются  платными,  то  Community  и  Framework бесплатные. Мы будем рассматривать редакцию Framework как наиболее подходящую для тестов на проникновение. Metasploit Framework входит в состав Kali Linux и для запуска консоли выполним Applications/Exploitation Tools/Metasploit.  В результате мы попадаем в командную строку. Для начала проверим наличие соединения с БД:

msf > db_status

[*] postgresql connected to msf

При отсутствии соединения нужноо его восстановить, т.к. Metasploit постоянно использует базу в своей работе. Если все функционирует штатно, то можно перейти к выполнению  практических  задач  по  эксплуатации  найденных уязвимостей. Сначала мы попробуем воспользоваться уязвимостями в Linux, а затем посмотрим, как взломать Windows.

Tuesday, 23 April 2024

Возможности BCDEdit.

Всем привет.

Вы наверняка знаете что система запуска для Windows хранится в чём-то с названием Boot Configuration Database (BCD, База данных конфигурации запуска). В Windows 11 его можно редактировать, но зачем это кому-то нужно? Существуют обстоятельства, например, когда у вас имеется конфигурация с двойным запуском или когда что- то в этой базе данных изменяется или разрушается.  Даже в этом случае для Вас не все потеряно!

Для редактирования этой базы данных откройте Командную строку или Терминал Windows от имени Администратора и наберите команду BCDEdit. Она отобразит текущую конфигурацию в этой базе данных. 

Все записи в этой базе данных начинаются со своих Идентификаторов. Это может быть некое техническое название, текстовая строка или даже шестнадцатеричный GUID (General Unique Identifier, Глобально уникальный идентификатор). Он поставляется в установленном формате {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. 

Полный список идентификаторов показан ниже:

  • {badmemory} Глобальный список дефектной памяти
  • {bootloadersettings} Подлежащие наследованию всеми записями начального загрузчика глобальные настройки
  • {bootmgr} Диспетчер запуска Windows
  • {current} Основная операционная система в этом ПК
  • {dbgsettings} Глобальные настройки отладчика
  • {default} Идентификатор для записи запуска по умолчанию
  • {emssettings} Глобальные настройки EMS
  • {fwbootmgr} Запись запуска диспетчера запуска встроенного ПО, хранится в NVRAM систем UEFI
  • {globalsettings} Подлежащие наследованию всеми записями начального загрузчика глобальные настройки
  • {memdiag} Утилита диагностики памяти
  • {ntldr} Наследуемый загрузчик Windows, NTLDR; применяется для выпущенных до Windows Vista версий Windows
  • {ramdiskoptions} Необходимые для RAM дисков дополнительные параметры
  • {resumeloadersettings} Подлежащие наследованию всеми записями восстановления из гибернации Windows глобальные настройки.

Sunday, 12 April 2020

Не забывайте обновляться, говорят - помогает!


Всем привет.

Не буду учить вас ни чему сегодня. Выходной.

Кстати, как у вас с Linux? Все хорошо? Вот замечательно. Жена тоже на Linux-е? Какая она у вас молодец! И теща?! Да вы просто мой герой сегодня.

А вот мне не повезло. Снес ее в очередной раз. Запамятовал, что с самого начала надо было запомнить версию ядра, потом версию Python, ой, а их ведь два на одной ОС, но экая чепуха, плюс еще версию эмулятора GNS3, плюс еще версию.... не помню чего. А, неважно. Это все же можно обновить через "sudo apt-get update". Кстати, классная команда, пишем ее на ладошке и шпарим каждые 15 минут на выполнение: говорят - помогает.

А потом еще судорожно ищем откуда же мой очередной пакет может обновиться сегодня, ибо версий Linux немеряно - от стабильных до почти стабильных. Ой, а тут у нашей Linux ключа нет, а значит и доверия к ней тоже нет. Ройте, ищите, и не забывайте обновляться, говорят - помогает.

Вот ведь, нашли подробную инструкцию, и даже к нашей версии Linux подходит, пошли ее выполнять, а на пункте 4 ответ пришел не такой... ну ка же так, даже обидно. И весь процесс стал, мы ищем инструкцию по новой ошибке. Что ? Ах да, не забывайте обновляться, говорят - помогает.

В целом с Linux процесс довольно увлекательный - куча материала в сети, куча сообществ и помощников, шикарный выбор форков и внешнего вида типа "Сделай сам". Не соскучишься. Но главное не забывайте обновляться, говорят - помогает!

Sunday, 15 November 2020

Читаем журналы Linux #3.


Всем привет.

Показывая Как читать журналы также необходимо сказать Что именно читать. Поэтому сказав вчера "А" сегодня скажу "Б", т.е. продолжу серию заметок про журналы Linux.

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

Стандартные журналы.

По умолчанию журналы в Linux хранятся в  /var/log.

Для просмотра списка журналов, находящихся в данном каталоге, используйте команду ls -l /var/log.

Примеры журналов:

/var/log/syslog или /var/log/messages - глобальный системный журнал

/var/log/auth.log или /var/log/secure - информация об авторизации пользователей

/var/log/dmesg - оборудование и драйверы устройств

/var/log/anaconda.log - лог установки системы

/var/log/audit - лог демона auditd

/var/log/boot.log - лог загрузки системы

/var/log/cron - лог демона crond

Для каждого дистрибутива создается отдельный журнал менеджера пакетов:

/var/log/yum.log — для программ установленных с помощью yum в RedHat

/var/log/emerge.log — для ebuild-ов установленных из Portage с помощью emerge в Gentoo

/var/log/dpkg.log — для программ установленных с помощью dpkg в Debian и всем семействе родственных дистрибутивов

/var/log/mysql - логи базы данных MySQL

/var/log/apache2 - логи веб-сервера Apache

/var/log/nginx - логи веб-сервера NGINX


root@logs ~]# dmesg -l err

[1131424.604352] logs kernel: end_request: I/O error, dev sdc, sector 

[1131424.604352] logs kernel: Buffer I/O error on device sdc, logical 

[1131424.604352] logs kernel: Buffer I/O error on device sdc, logical 

Thursday, 1 July 2021

Проводим пентест, часть 7 - ищем сокровища и заметаем следы.

Всем привет.

Сегодня 7-я заключительная часть из серии публикаций Андрея Бирюкова, посвященных проведению аудита и теста на проникновение (пентест). Оригинал статьи был опубликован в журнале "Системный администратор" №12(169), декабрь 2016. 

Часть 7. Ищем сокровища и заметаем следы.


Что делает хакер, уже проникнув в сеть? В зависимости от структуры компании жертвы эти действия могут отличаться Как же обнаружить злоумышленников?

Этой статьей я завершаю цикл, посвященный проведению тестов на проникновение. В предыдущих шести [1-6] мы достаточно подробно рассмотрели различные способы, которыми может воспользоваться злоумышленник для проникновения в корпоративную сеть. Были  представлены методы, связанные с использованием беспроводных сетей, поиском и эксплуатацией уязвимостей в приложениях, разработкой эксплоитов. Темой этой статьи будет обсуждение действий хакера, который уже проник в сеть, получил шелл на различные серверы, и теперь ему необходимо найти в сети ценную информацию, а также скрыть следы своего присутствия. Как известно, в среднем после взлома сети и до его обнаружения проходит порядка 200 дней (рекорд – восемь лет!). За это время злоумышленник успевает получить доступ практически ко всей интересующей его информации. Рассмотрим, какие действия может предпринять взломщик, проникнув в сеть, и что можно сделать, чтобы их обнаружить.

Вот основные действия хакера, о которых мы будем говорить:

  • взлом паролей
  • инвентаризация и поиск необходимой информации
  • перехват передаваемого трафика
  • выгрузка собранной информации
  • сокрытие следов своего присутствия.


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


Паролей не бывает много.

Даже получив доступ к сети и создав свои учетные записи с административными правами, злоумышленник будет интересоваться учетными данными легальных пользователей домена, доступ к которым позволит получить доступ к большей информации, в том числе и зашифрованной данным пользователем. Также его действия будут менее заметны. Самый простой способ, к которому он может прибегнуть, – это сделать копию файлов с паролями и затем попытаться расшифровать пользовательские пароли офлайн, то есть на своем оборудовании или с помощью ботсети. Конечно, многие могут возразить, что подбор паролей – это достаточно продолжительный и трудоемкий процесс. Однако с ростом вычислительных мощностей и развитием соответствующих технологий подбор восьмизначного символьно-цифрового пароля может занять считанные минуты. Но обо всем по порядку.

Начнем с того, где хранят пароли различные операционные системы. Начнем с семейства ОС Windows.

Saturday, 14 November 2020

Ускоряем Ansible #4.

Всем привет.

Финальная часть по ускорению сценариев Ansible.

#4 Параллелизм.

Для каждой задачи Ansible устанавливает соединения параллельно с несколькими хостами и запускает на них одну и ту же задачу параллельно. Однако Ansible необязательно будет устанавливать соединения сразу со всеми хостами -уровень параллелизма контролируется параметром по умолчанию, равным 5. Изменить его можно одним из двух способов. Можно настроить переменную среды ANSIBLE_FORKS, как это показано в примере 11.

Пример 11 Настройка ANSIBLE_FORKS

$ export ANSIBLE_FORKS=20

$ ansible-playbook playbook.yml

Можно также изменить настройки в файле конфигурации Ansible (ansible.cfg), определив параметр forks в секции default, как показано в примере 12.

Пример 12 ansible.cfg. Настройка параллелизма

[defaults]

forks = 26

Monday, 19 October 2020

Reboot Linux by Ansible.

Всем привет.

Хоть Linux и не требует своей перезагрузки так часто как Windows, но тем не менее такой вариант надо знать тоже. Мы инсталировали софт в Linux с помощью Ansible, значит и перегружать ее будем с помощью того же Ansible.

Итак, пишем наш плейбук:

 - name: Linux system reboot

  apt: name=git update_cache=yes

  hosts: test

  become: yes


  tasks:

#Первая задача: непосредственно сам ребут

  - name: Reboot host

    command: shutdown -r now "Ansible system reboot"

    async: 3600

    poll: 0

    register: linux_clone

#вторая задача: отследим когда ребут завершится - вариант первый

  - name: Wait for linux to complete

    async_status:

      jid: "{{ linux_clone.ansible_job_id }}"

    register: result

    until: result.finished

    retries: 3600

#вторая задача: отследим когда ребут завершится - вариант второй

  - name: Wait for the host to finish rebooting

    local_action: wait_for host={{ inventory_hostname }} state=started

    become: false

    delegate_to: localhost

#вторая задача отследим когда ребут завершится - вариант третий

  - name: Wait for the host to finish rebooting

    wait_for:

        host: "{{ inventory_hostname }}"

        state: started

        delay: 5

        timeout: 40

    delegate_to: localhost


где:

1) аsync говорит о том, что команду надо запустить асинхронно (т.е. продолжить выполнение, после ее запуска не дожидаясь ответа). Аsync = 3600 - выполнять не более 3600 секунд.

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

poll = 0 - т.е. можно перейти к следующей задаче не ожидая окончания выполнения текущей

3) register: linux_clone - захватим результат чтобы работать с ним дальше

4) async_status: - читаем результат задачи linux_clone

5) jid: "{{ linux_clone.ansible_job_id }}" - по идентификатору

    register: result

6) until: result.finished - перечитываем результат повторно много раз.



Thursday, 15 October 2020

Инсталлируем софт с помощью Ansible #2.

Всем привет.

Ну что ж, пробуем инсталлировать софт в Linux. Хорошая новость - для Linux в Ansible имеется модуль с названием package, который предпринимает попытку определения верного диспетчера пакетов для его использования на основании той операционной системы, для которой выполняется данный плейбук.

Определить пакетный менеджер можно так:
ansible localhost -m setup | grep ansible_pkg_mgr

А выполнить так:
# This uses a variable as this changes per distribution.
- name: remove the apache package
  package:
    name: "{{ item }}"
    state: absent

Однако тут надо учесть что один и тот же пакет может иметь разное название для разных систем:
для RHEL это  httpd
для Debian/Ubuntu это apache2.

Поэтому напишем нашу роль по другому.
---
- name: Install MariaDB
  hosts: all
  become: yes

  roles:
    - installmariadb

Тогда роль installmariadb для инсталяции пакета MariaDB:

- name: Install MariaDB Server on Ubuntu or Debian
  apt:
    name: "{{ item }}"
    state: present
  loop:
    - mariadb-server
    - mariadb-client
  when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'

- name: Install MariaDB Server on CentOS or RHEL
  yum:
    name: "{{ item }}"
    state: present
  loop:
    - mariadb-server
    - mariadb
  when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'


Роль для деинсталяции MariaDB:

- name: Install MariaDB Server on Ubuntu or Debian
  apt:
    name: "{{ item }}"
    state: absent
  loop:
    - mariadb-server
    - mariadb-client
  when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'

- name: Install MariaDB Server on CentOS or RHEL
  yum:
    name: "{{ item }}"
    state: absent
  loop:
    - mariadb-server
    - mariadb
  when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'


Роль для инсталяции пакета без его предварительной загрузки:

- name: Install Virtus software on Ubuntu
  apt:
    deb: https://github.com/software.forza.com/pkg/virtus_all.deb
  when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'

- name: Install Virtus software on CentOS or RHEL
  yum:
    name: https://github.com/software.forza.com/pkg/virtus.noarch.rpm
    state: present
  when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'


И роль инсталляции математики без самого пакета:

- name: download virtussoft install script
  get_url:
   url: http://software.forza.com/scripts/install.sh
   dest: /root/install.sh
   mode: 0755

- name: virtussoft install (takes around 10 mins) you can see progress using: tail -f /root/virtus-install.log
  shell: /root/install.sh --force --hostname {{ inventory_hostname }} --minimal --yes
  args:
    chdir: /root

Все необходимое прописывается в install.sh. Также в этом случае следует учесть что  вызов shell будет выполнятся всегда при повторном запуске плейбука.

Удачи.




Friday, 7 April 2017

Попытка подружить Windows7 с Ubuntu.

Всем привет.

Для полигона поставил месяц тому Ubuntu второй системой к Windows 7. Ubuntu себя повела хорошо, загрузчик GRUB четко прописал себя главным не забыв про Windows 7.

А вот на выходные случилась неприятность - полетела Windows 7. Скорее ее бутлоадер MBR или что-то похуже. Конечно рецепты по восстановлению загрузчика Windows 7 после установки Ubuntu  в сети есть. 

Мне понравился этот 

Но картинок больше здесь

Итак на первом шаге надо сделать резервную копию загрузчика самой Ubuntu:
dd if=/dev/sda3 of=/linux.boot bs=512 count=1

На этом шаге, как оказалось позже, я ошибся с разделом и файл linux.boot не создался. Но этом было не самое худшее.

На втором шаге который предполагает реанимацию бутлоадера Windows 7 ни один из нижеследующих вариантов не помог.

Thursday, 6 May 2021

Ansible-роль для Linux.

Всем привет.

После установки свежей Linux ей надо указать IP-адрес, временную зону, адрес DNS-сервера, адрес Proxy-сервера, локализацию консоли, прочее. И только после этого уже можно переходить к обновлению системы и установке прочего софта.

Эти шаги настолько обязательны что хочется их автоматизировать, чтобы исключить человеческий фактор. А почему бы и нет? Мои мысли прочитал Вячеслав Лохтуров и предложил для этого иcпользовать Ansible.

Он набросал Ansible-роль под именем "host". Роль использует следующие переменные назначение которых очевидно:

hostname: Linux-host

base_domain_prefix: mydomain

base_domain_suffix: net

base_net: 192.168.1

gateway_octet: 254

dns_ip: 192.168.1.1

proxy_ip: 192.168.1.1

proxy_port: 8080

А в список задач для исполнения включено следующее:

# /host/tasks/main.yml

- name: Create hosts file
  template: src=hosts.j2 dest=/etc/hosts
- name: Create resolv.conf file
  template: src=resolv.conf.j2 dest=/etc/resolv.conf
- name: Create hostname file
  template: src=hostname.j2 dest=/etc/hostname
- name: Create environment file
  template: src=environment.j2 dest=/etc/environment
- name: Create interfaces file CentOS
  template: src=interfacesC.j2 dest=/etc/network/interfaces
  when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
- name: Create interfaces file Ubuntu
  template: src=interfacesU.j2 dest=/etc/network/interfaces
  when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
- name: Update system locale CentOS
  timedatectl set-timezone Europe/Kyiv
  localectl set-locale LANG=ru_RU.utf8
  when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
- name: Update system locale Ubuntu
  timedatectl set-timezone Europe/Kiev
  echo LANG=ru_RU.UTF-8 > /etc/default/locale
  when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'

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

Успехов.

Friday, 10 July 2020

Ansible и его соединения.

Всем привет.

Вы знаете Ansible  как одну из систем управления конфигурациями (оркестратор).

Особенность Ansible в наличии управляющего сервера (master), с которого отправляются команды или наборы инструкций (playbooks) на удаленные хосты посредством протокола SSH, или HTTPS.

Ansible решает следующие задачи:

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

Ansible не требует установки на удаленные хосты клиента, так как подключается к ним по протоколу SSH за исключением настройки службы WinRM где подключение идет по HTTPS.

Но хватит теории. Волею случая мне довелось проверить все возможности соединения с помощью Ansible. В моем тесте участвовали:

  • Homediver, Desktop Windows 10
  • ec2-54-197-120-211.compute-1.amazonaws.com, AWS MS Server 2019
  • ec2-54-88-28-8.compute-1.amazonaws.com, AWS Ubuntu
  • appliance, VirtualBox CentOS 8
  • Ansible master, VirtualBox Debian 9


Версія на друк

Популярне