Разведка и аудит сервера

Определение версии и типа дистрибутива:

  • cat /etc/issue
  • cat /etc/*-release
  • lsb_release -a
  • cat /etc/lsb-release   #Debin
  • cat /etc/redhat-release   #RedHat

Определение версии ядра и разрядности системы:

  • cat /proc/version
  • uname -a
  • uname -mrs
  • rpm -q kernel
  • dmesg | grep Linux
  • ls /boot | grep vmlinuz-

Информация о переменных окружения:

  • cat /etc/profile
  • cat /bashrc
  • cat ~/.bash_profile
  • cat ~/.bashrc
  • cat ~/.bash_logout
  • env
  • set

Список запущенных сервисов:

  • ps aux
  • ps -ef
  • top
  • cat /etc/services

Установленные приложения, версии и их активность:

  • ls -alh /usr/bin/
  • ls -alh /sbin/
  • dpkg -l
  • rpm -qa
  • ls -alh /var/cache/apt/archives0
  • ls -alh /var/cache/yum/

Просмотр конфигурационных файлов:

  • cat /etc/syslog.conf
  • cat /etc/chttp.conf
  • cat /etc/lighttpd.conf
  • cat /etc/cups/cupsd.conf
  • cat /etc/inetd.conf
  • cat /apache2/apache2.conf
  • cat /etc/my.conf
  • cat /etc/httpd/conf/httpd.conf
  • cat /opt/lampp/etc/httpd.conf
  • ls -aRl /etc/ | awk ‘$1 ~ /^.*r.*/

Просмотр запланированных задач (cron)

  • crontab -l
  • ls -alh /var/spool/cron
  • ls -al /etc/ | grep cron
  • ls -al /etc/cron*
  • cat /etc/cron*
  • cat /etc/at.allow
  • cat /etc/at.deny
  • cat /etc/cron.allow
  • cat /etc/cron.deny
  • cat /etc/crontab
  • cat /etc/anacrontab
  • cat /var/spool/cron/crontabs/root

Обозначение сетевых интерфейсов

  • /sbin/ifconfig -a
  • cat /etc/network/interfaces
  • cat /etc/sysconfig/network

Определение сетевых адаптеров, DHCP, DNS и шлюзов

  • cat /etc/resolv.conf
  • cat /etc/sysconfig/network
  • cat /etc/networks
  • iptables -L
  • hostname
  • dnsdomainname

Проверка входящих подключений к системе

  • lsof -i

Iptables

Утилита межсетевого экрана

Установка: sudo apt-get install iptables

Типы правил:

  • Input — цепочка для контроля поведений входящих соединений (например подключение пользователя по ssh);
  • Forward — цепочка для обработки входящих сообщений, конечный пункт назначения который не является текущим сервером (к примеру если для маршрутизатора для NAT пересылки сообщений);
  • Output — цепочки для исходящих соединений

Просмотреть текущие настройки: sudo iptables -L | grep policy

Разрешить весь трафик:

  • iptables —policy INPUT ACCEPT
  • iptables —policy OUTPUT ACCEPT
  • iptables —policy FORWARD ACCEPT

Запретить весь трафик:

  • iptables —policy INPUT DROP
  • iptables —policy OUTPUT DROP
  • iptables —policy FORWARD DROP

Действия с соединениями:

  • Accept — разрешить соединения
  • Drop — игнорировать соединение
  • Reject — заблокировать соединение и отправить в ответ сообщение об ошибке

Соединение с одного IP:

  • Блокировка всех соединений с IP 10.10.10.10: iptables -A INPUT -s 10.10.10.10 -j DROP
  • Блокировать все соединения с диапазона IP: iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Блокировка конкретного порта

  • Блокировать SSH-соединение с 10.10.10.10: iptables -A INPUT -p tcp —dport ssh -s 10.10.10.10 -j DROP
  • Блокировать SSH-соединение с любого IP: iptables -A INPUT -p tcp —dport ssh -j DROP

Сохранение изменений после перезагрузки:

  • (Ubuntu): sudo /sbin/iptables-save
  • (RedHat\CentOS): sudo /sbin/service iptables save или sudo /etc/init.d/iptables save

Просмотреть правила: iptables -L

Удалить все правила: iptables -F

 

Контейнеризация в Windows Server 2016 (Windows Server Container)

  1. Использование контейнера
    1. Требуется Windows Server 2016
    2. Требуется обновление KB3176936 (в консоли sconfig — 6 пункт — все обновления)
  2. Ставим провайдер: Install-Module  -Name DockerMsft Provider  -Repository PSGallery  -Force
  3. Ставим последнюю версию Docker: Install-Package  -Name docker  -ProviderName DockerMsftProvider
  4. Перезапускаем: Restart-Computer  -Force
  5. На firewall разблокируем порт 2375: netsg advfirewall firewall add rule name=»docker» dir=in action=allow protocol=tcp localport=2375
  6. Перенастраиваем на использование pipe и TCP:
    1. Stor-Service docker
    2. dockerd —unregister-service
    3. dockerd -H npipe://  -H 0.0.0.0:2375  —register-service
    4. Start-Service docker
  7. Проверяем версию: docker version
  8. Смотрим готовые образы в репозитории: docker search microsoft
  9. Получаем нужный образ: docker pull microsoft /windowsservercore
  10. Запускаем образ: docker run  -it  —name demo microsoft/iis powershell
  11. Если нужен контейнер Hyper-V, то добавляем параметр —isolation=hyperv, перенаправляем портов -p 80:80
  12. Выполнив все настройки: exit
  13. Сохраняем изменения: docker commit demo demo-1
  14. Смотрим все запущенные контейнеры: docker ps -a
  15. Установленные в локальной системе образы: docker images

Жизненный цикл тестирования на проникновение

Методика проведения теста на проникновения основывается на стандартах:

  • NIST SP800-115
  • PCI Data Security Standard (PCI DSS) 3.0
  • PTES (Penetration Testing Execution Standard) Technical Guideline

 

  1. Подготовка к проведению тестирования (проводится на стадии заключения договора)
  2. Сбор информации
  3. Анализ уязвимости
  4. Эксплуатация и активность после эксплуатации
  5. Разработка отчётной документации

Проведение атаки

ПОЛУЧЕНИЕ ДОСТУПА -> ПОВЫШЕНИЕ ПРИВИЛЕГИЙ -> ОБЗОР СИСТЕМЫ -> УСТАНОВКА ДОПОЛНИТЕЛЬНЫХ СРЕДСТВ

Авторизация по ssh-сертификату

 

Создаем папку для ключей: mkdir sshkeys
Переходим в папку: cd sshkeys
Генерируем ключи: ssh-keygen -t rsa -b 4096 -f id_rsa
//вводим пароль для ключей
//id_rsa.pub - публичный ключ для сервера
//id_rsa - приватный ключ на клиенте
Загружаем ключ на сервер: ssh-copy-id -i id_rsa.pub nimp@myserver.ru
Отключаем авторизацию по паролю: nano /etc/ssh/sshd_config
AuthorizedKeysFile   .ssh/authorized_keys
Перезапускаем SSH-сервер: service ssh restart
Добавление закрытого ключа на клиента: ssh-add ~/sshkeys/id_rsa
ssh-add -l
Отключаем пароль: nano /etc/ssh/sshd_config
PasswordAuthentication no
Перезапускаем SSH-сервер: service ssh restart
Криптование закрытого ключа: ssh-add -d id_rsa
mv id_rsa id_rsa_old
openssl pkcs8 -topk8 -v2 des3 -in id_rsa_old -out id_rsa
Добавляем права на новый закрытый ключ: chmod 600 id_rsa
Добавляем: ssh-add ~/sshkeys/id_rsa
Метки:

Установка JIRA Software Server

Компоненты:

  • OS: Centos 7
  • Jira Software: atlassian-jira-software
  • Database: PostgreSQL-9.2
  • Reverse proxy: nginx-1.10.3

Обновляем систему и создаем каталоги:

sudo yum update

sudo yum install vim wget

sudo mkdir /opt/atlassian

cd /opt/atlassian/

Загружаем софт и делаем его исполняемым:

sudo wget https://downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-7.2.3-x64.bin

sudo chmod +x atlassian-jira-software-7.2.3-x64.bin

Устанавливаем:

sudo ./atlassian-jira-software-7.2.3-x64.bin

Unpacking JRE ...
Starting Installer ...
Nov 012016 10:49:13 AM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
Nov 012016 10:49:13 AM java.util.prefs.FileSystemPreferences$2 run
INFO: Created system preferences directory in java.home.
This will install JIRA Software 7.2.3 on your computer.
OK [o, Enter], Cancel [c]
o
Choose the appropriate installation or upgrade option.
Please choose one of the following:
Express Install (use default settings) [1], Custom Install (recommended for advanced users) [2, Enter], Upgrade an existing JIRA installation [3]
2
Where should JIRA Software be installed?
[/opt/atlassian/jira]
Default location for JIRA Software data
[/var/atlassian/application-data/jira]
Configure which ports JIRA Software will use.
JIRA requires two TCP ports that are not being used by any other
applications on this machine. The HTTP port is where you will access JIRA
through your browser. The Control port is used to startup and shutdown JIRA.
Use default ports (HTTP: 8080, Control: 8005) - Recommended [1, Enter], Set custom value for HTTP and Control ports [2]
1
JIRA can be run in the background.
You may choose to run JIRA as a service, which means it will start
automatically whenever the computer restarts.
Install JIRA as Service?
Yes [y, Enter], No [n]
y
Details on where JIRA Software will be installed and the settings that will be used.
Installation Directory: /opt/atlassian/jira
Home Directory: /var/atlassian/application-data/jira
HTTP Port: 8080
RMI Port: 8005
Install as service: Yes
Install [i, Enter], Exit [e]
i
Extracting files ...
  atlassian-jira/secure/admin/views/filters/shared-filters.jsp
Please wait a few moments while JIRA Software is configured.
Installation of JIRA Software 7.2.3 is complete
Start JIRA Software 7.2.3 now?
Yes [y, Enter], No [n]
y
Please wait a few moments while JIRA Software starts up.
Launching JIRA Software ...
Installation of JIRA Software 7.2.3 is complete
Your installation of JIRA Software 7.2.3 is now ready and can be accessed
via your browser.
JIRA Software 7.2.3 can be accessed at http://localhost:8080
Finishing installation ...
Настраиваем firewalld
Проверяем active-zones:
firewall-cmd —get-active-zones
public
    interfaces: eth0
Разрешаем порт доступа к JIRA (по умолчанию 8080)
sudo firewall-cmd —zone=public —add-port=8080/tcp —permanent
sudo firewall-cmd —reload
После этого будет доступно по адресу: http://YourIPaddress:8080
Установка PostgreSQL
sudo yum install postgresql-server
Конфигурируем СУБД — определим каталог, в котором будут храниться все файлы PostgreSQL (определим переменную PGDATA):
sudo export PGDATA=/var/lib/pgsql/data
Инициализируем СУБД в PGDATA
sudo postgresql-setup initdb
Добавляем PostgreSQL в автозапуск и запустим:
sudo systemctl enable postgresql
sudo systemctl start postgresql
Создание и настройка БД для JIRA
sudo -u postgres -i
-bash-4.2$ psql
postgres=# CREATE USER jiradbuser PASSWORD ‘jirapassword’;
GRANT ALL ON SCHEMA public TO jiradbuser;
GRANT ALL ON ALL TABLES IN SCHEMA public TO jiradbuser;
CREATE DATABASE jiradb WITH ENCODING ‘UNICODE’ LC_COLLATE ‘C’ LC_CTYPE ‘C’ TEMPLATE template0 OWNER=jiradbuser CONNECTION LIMIT=-1;
\q
Конфигурирование метода аутентификации PostgreSQL
sudo nano /var/lib/pgsql/data/pg_hba.conf
меняем строку host all all 127.0.0.1/32 ident
на host all all 127.0.0.1/32 md5
Перезапускаем сервис
sudo systemctl reload postgresql
Настройка JIRA
Переходим в браузере на http://IP:8080
Выбираем язык и PostgreSQL в качестве внешней БД
Заполняем поля по указанным выше значениям

Настройка Mikrotik

1) Добавление пользователя и удаления пользователя admin:
/user add name=логин group=full password=пароль
/user remove admin

2) Переименовать интерфейс:
/interface ethernet set [find default-name=ether1] name=eth1-wan

3) Подмена MAC-адреса:
/interface ethernet set eth1-wan mac-address=00:11:22:33:44:55

4) Получение настроек интерфейса по dhcp:
/ip dhcp-client add interface eth1-wan disabled=no

5) Статическая настройка IP:
/ip add address=192.0.2.10/255.255.255.0 interface=eth1-wan
/ip route add dst-address=0.0.0.0/0 gateway=192.0.2.1 check-gateway=ping distance=1
/ip dns set servers=192.0.2.2,192.0.2.3

6) Устанавливаем мастер порт 5 и объеденяем 2-5 порты в единую сеть:
/interface ethernet set [find default-name=ether5] name=eth5-lan
/interface ethernet set [find default-name=ether2] name=eth5-lan master-port=eth5-lan
/interface ethernet set [find default-name=ether3] name=eth5-lan master-port=eth5-lan
/interface ethernet set [find default-name=ether4] name=eth5-lan master-port=eth5-lan

7) Добавляем wifi-порт к локальной сети (программный пост bridge):
/interface bridge add name=br1-lan
/interface bridge port add interface=eth5-lan bridge=br1-lan
/interface bridge port add interface=wlan1 bridge=br1-lan

8) Безопасность беспроводной сети
/interface wireless security-profiles add name=wpa2-protected mode=dynamic-keys authentication-types=wpa-psk,
wpa2-psk unicast-chiphers=aes-ccm group-chiphers=ccm wpa-pre-shared-key=ключ_wpa wpa2-pre-shared-key=ключ_wpa2

9) Настраиваем беспроводной интерфейс:
/interface wireless set wlan1 disabled=no ssid=MyRouter mode=ap-bridge band=2ghz-b/g/n frequency=2412 bridge-mode=enabled wireless-protocol=802.11
security-profile=wpa2-protect default-authentication=yes default-forwarding=yes hide-sshd=no
/interface wireless nstreme set wlan1 enable-nstreme=no enable-polling=no disable-csma=no

10) Добавляем IP на интерфейсах br1-lan:
/ip address add address=192.168.10.1/24 interface=br1-lan

11) Создаем пул адресов для DHCP:
/ip pool add name=dhcp-pc address=192.168.10.100-192.168.10.200

12) Включаем прослушку dhcp-запросов на интерфейсе br1-lan:
/ip dhcp-server add name=dhcp-pc interface=br1-lan lease-time=08:00:00 address-pool=dhcp-pc
/ip dhcp-server network add address=192.168.10.0/24 dns-server=192.168.10.1 gateway=192.168.10.1 netmask=24

13) Влючаем прослушку DNS-запросов:
/ip dns set allow-remote-requests=yes

14) Имя устройства:
/system identity set name=MiKRouter
/ip dns static add name=mikrouter address=192.168.12.10

15) Перезагрузка:
/system reboot

16) Отключаем лишние службы:
/ip service
set telnet disabled=yes
set ftp disabled=yes
set api disabled=yes
set api-ssl disabled=yes
set https disabled=yes
set www-ssl disabled=no
set winbox disabled=no
set www disabled=no

17) Резервная копия настроек:
/system backup save name=router6.30.2 dont-encrypt=yes

18) Восстановление из резервной копии:
/system backup load name=router6.30.2.backup

iostat

Утилита, входящая в набор sysstat для мониторинга использования дисковых разделов

Ключи:

  • -d : отображать только использование дисков;
  • -c : отображать только использование CPU;
  • -j : отображать имя раздела (ID | LABEL | PATH | UUID);
  • -k : отобразить данные в килобайтах;
  • -m : отобразить данные в мегабайтах;
  • -p : отобразить статистику по указанному блочному устройству;
  • -t : отобразить время выполнения теста;
  • -x : отобразить расширенную статистику

Также iostat может вызываться с двумя ключами, передав количество выполнения и паузу между ними:

iostat -d -t -p sda 1 2 // выполнить 2 раза с интервалом в 1 секунду, только для диска sda

Вывод с ключем -x представляет больше информации:

rrqm/s — обобщенное количество запросов на чтение в секунду;

wrqm/s — обобщенное количество запросов на запись в секунду;

r/s — количество запросов на чтение в секунду;

w/s — количество запросов на запись в секунду;

rMB/s — количество МВ при чтении с диска в секунду;

wMB/s — количество МВ при записи на диск в секунду;

avgrq-sz — средний размер (в секторах) запросов к диску;

avgqu-sz — средний размер очереди запросов к диску;

await — среднее время (миллисекунды) на обработку запросов к диску (включает в себя время, потраченное в очереди на обработку и время на обработку запроса);

r_await — среднее время (миллисекунды) на обработку запросов чтения к диску (включает в себя время, потраченное в очереди на обработку и время на обработку запроса);

w_await — среднее время (миллисекунды) на обработку запросов записи к диску (включает в себя время, потраченное в очереди на обработку и время на обработку запроса);

svctm — среднее время (миллисекунды) I/О запросов

%util — % CPU, затраченный на передачу I/O запросов к диску («пропускная способность» диска)

 

Без расширенного вывода:

tps — transfers per second — активность I/O операций в секунду, несколько логических запросов могут быть объеденные в один;

Blk_read/s — количество запросов на чтение в секунду, выраженное в блоках (512 байт)

Blk_wrth/s — количество запросов на запись в секунду, выраженное в блоках (512 байт)

Blk_read — общее количество прочитанных блоков

Blk_wrtn — общее количество записанных блоков

Установка облака NextCloud на Ubuntu Server 16.04

Устанавливаем LAMP:

  1. Обновляем пакеты: sudo apt-get update
  2. Устанавливаем Apache: sudo apt-get install apache2
  3. Устанавливаем базу данных MySQL: sudo apt-get install mysql-server
  4. Устанавливаем пароль администратора MySQL
  5. Применяем настройки безопасности: sudo mysql_secure_installation
  6. Вводим пароль администратора MySQL
    1. Would you like to setup VALIDATE PASSWORD plugin? - No
    2. Change the password for root ? - No
    3. Remove anonymous users? - Yes
    4. Disallow root login remotely? - Yes
    5. Remove test database and access to it? - Yes
    6. Reload privilege tables now?  - Yes
  7. Устанавливаем PHP и модули к нему: sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

Устанавливаем phpMyAdmin:

  1. sudo apt-get install phpmyadmin
  2. Выбираем apache — OK
  3. Configure database for phpmyadmin with dbconfig-common? — YES
  4. Вводим пароль администратора MySQL
  5. Настраиваем Apache для работы с ним: sudo nano /etc/apache2/apache2.conf
  6. Добавляем строку в начале: Include /etc/phpmyadmin/apache.conf
  7. Перезагружаем Apache: sudo service apache2 reload && sudo service apache2 restart

Установка дополнительных модулей для PHP:

  1. sudo apt-get install php-bz2 php-curl php-gd php-imagick php-intl php-mbstring php-xml php-zip
  2. Перезагружаем Apache: sudo service apache2 reload && sudo service apache2 restart

Создаем базу данных:

  1. Переходим в браузере: http://<IP-server>/phpmyadmin
  2. Вводим логин root и пароль
  3. Создаем нового пользователя: «Учетные записи пользователя» — «Добавить учетную запись пользователя»
  4. Заполняем форму
  5. Ставим отметку «Создать базу данных с таким же именем и предоставить на неё все привилегии»
  6. Вперед

Установка Nextcloud:

  1. cd ~
  2. wget --no-check-certificate https://download.nextcloud.com/server/releases/nextcloud-11.0.0.tar.bz2
  3. sudo tar -C /var/www -xvjf ~/nextcloud-11.0.0.tar.bz2
  4. rm ~/nextcloud-11.0.0.tar.bz2
  5. Создаем дополнительные папки:
    1. sudo mkdir /var/www/nextcloud/data
    2. sudo mkdir /var/www/nextcloud/assets
  6. Назначаем права доступа на папки и файлы:
    1. sudo find /var/www/nextcloud/ -type f -print0 | sudo xargs -0 chmod 0640
    2. sudo find /var/www/nextcloud/ -type d -print0 | sudo xargs -0 chmod 0750
    3. sudo chmod 755 /var/www/nextcloud
    4. sudo chown -R root:www-data /var/www/nextcloud
    5. sudo chown -R www-data:www-data /var/www/nextcloud/apps
    6. sudo chown -R www-data:www-data /var/www/nextcloud/assets
    7. sudo chown -R www-data:www-data /var/www/nextcloud/config
    8. sudo chown -R www-data:www-data /var/www/nextcloud/data
    9. sudo chown -R www-data:www-data /var/www/nextcloud/themes
    10. sudo chown -R www-data:www-data /var/www/nextcloud/updater
    11. sudo chmod 644 /var/www/nextcloud/.htaccess
    12. sudo chown root:www-data /var/www/nextcloud/.htaccess
    13. sudo chmod +x /var/www/nextcloud/occ

Настраиваем Apache:

  1. Создаем файл конфигурации: sudo nano /etc/apache2/sites-available/nextcloud.conf
Alias /nextcloud "/var/www/nextcloud/"
 <Directory /var/www/nextcloud/>
 Options +FollowSymlinks
 AllowOverride All
 <IfModule mod_dav.c>
 Dav off
 </IfModule>
 SetEnv HOME /var/www/nextcloud
 SetEnv HTTP_HOME /var/www/nextcloud
 </Directory>
  1. Включаем его: sudo a2ensite nextcloud
  2. Включаем rewrite-модуль: sudo a2enmod rewrite
  3. Перезагружаем Apache: sudo service apache2 reload && sudo service apache2 restart

Производим первоначальную настройку nextcloud:

  1. В браузере переходим: http://<IP-server>/nextcloud
  2. Придумывает логин и пароль учетной записи для nextcloud
  3. Каталог с данными: /var/www/nextcloud/data
  4. Параметры созданной ранее базы данных
  5. Завершить установку

P.s. Включение SSL:

  1. sudo a2enmod ssl
  2. sudo a2ensite default-ssl
  3. sudo service apache2 reload

Создание swap-файла

  • Проверяем место на дисках: df -h
  • Создаем файл подкачки: fallocate -l 1024M /root/swapfile
  • Проверяем что файл создан: ls -lh /root/swapfile
  • Устанавливаем права на файла: sudo chmod 600 /root/swapfile
  • Помечаем файл как swap-файл: sudo mkswap /root/swapfile
  • Включаем файл в систему: sudo swapon /root/swapfile
  • Проверяем успешность выполнения: sudo swapon -s
  • Вносим файл подкачки в автозагрузку: sudo nano /etc/fstab
    • Добавляем строку: /root/swapfile none swap sw 0 0
  • Перезагружаемся: reboot
  • Проверяем работоспособность через htop