XEN in CentOS

Перед  початком становлення віртуальної машини проводимо наступне:

# yum update

Наступний  крок встановлення необхідного ПО:

# yum install kernel-xen xen httpd mod_ssl php-common php-gd php-mcrypt  php-mysql php-xml mysql mysql-server htop mc

По завершенні встановлення потрібно відредактувати  файл «menu.lst»  із директорії « /boot/grub/», це ми робимо з метою

# mcedit/boot/grub/menu.lst

Знаходимо рядок:

[…]

default=1

[…]

І міняємо до наступного вигляду

[…]

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title CentOS (2.6.18-238.19.1.el5xen)

        root (hd0,0)

        kernel /xen.gz-2.6.18-238.19.1.el5

        module /vmlinuz-2.6.18-238.19.1.el5xen ro root=/dev/VolGroup00/LogVol00

        module /initrd-2.6.18-238.19.1.el5xen.img

[…]

 

Це дасть змогу  завантажуватись першим ядру XEN, після збереження всіх змін перезавантажуємо:

# shutdown –r now

Перевіряємо чи встановилось у нас нове ядро:

# uname -a

Linux asterion  2.6.18-238.19.1.el5xen #1 SMP Fri Jul 15 08:16:59 EDT2011 x86_64 x86_64 x86_64 GNU/Linux

Так перевіримо чи запустився сам XEN:

# xm list

Name                                      ID Mem(MiB) VCPUs State   Time(s)

Domain-0                                   0    13977     8 r——   9873.1

Ось перелік команд на управління віртуальними машинами і середовищем віртуалізації:

# service xend start          # запустити xend, якщо він ще не працює

# service xend stop          # зупинити xend, якщо він запущений

# service xend restart     # перезапустити xend, якщо він працює; інакше – запустити

# service xend status       # показати стан xend за допомогою коду завершення

 

Для того щоб подивитися довідку самої програми, введіть:
# хm help
# хm list - виводить інформацію про домени в форматі


name domid memory vcpus state cputime

Призначення полів:
name      Ім'я віртуальної машини.

domid      Номер домену, в якому виконується віртуальна машина.

memory      Об'єм пам'яті машини, в мегабайтах.

vcpus      Кількість віртуальних процесорів, які є у домену.

state      Стан домену опісиватся п'ятьма полями:


r - працює;

b - заблокований;

p - призупинено; 

s - зупинений; 

c - впав.


cputime      Сумарне процесорний час (у секундах), яке використовував домен.

Команда xm list також підтримує довгий формат виводу, з ключем-l. Ця команда виводить детальну інформацію про домени в форматі xend SXP.
Якщо ви хочете дізнатися, скільки вже працюють ваші домени, дайте команду:
# хm uptime
Доступ до консолі домену можна отримати за допомогою команди xm console. наприклад:
# хm console myVM

# xm create - запускає віртуальну машину на основі конфігураційного файлу
# xm pause - тимчасово зупиняє віртуальну машину
# xm unpause - запускає віртуальну машину після зупинки
# xm save - зберігає стан віртуальної машини
# xm restore - відновлює стан віртуальної машини
# xm reboot - перезавантажує віртуальну машину
# xm shutdown - вимикає віртуальну машину
# xentop - показує поточну завантаження всіх віртуальних машин
# xm dmesg - показує dmesg віртуальної машини
# xm delete - видаляє віртуальну машину
# xm destroy - примусово видаляє віртуальну машину

Більш детально можна прочитати по наступним посиланням:

xgu.ru

Засоби управління

Керівництво користувача Xen v3.0

Як заборонити створення символічних лінків в /tmp

FreeBSD: В графі «оption» /etc/fstab для розділу /tmp потрібно вказати:

rw,noexec,nosuid,nodev,nosymfollow

Також можна на /home поставити nodev. Якщо там не буде виконуваних то й noexec. На  /var теж можана поміняти nodev, noexec, а взагалі nodev скрізь корисний,  символьні лінки  ніде не потрібні.

Як оцінити величину трафіку і стан системи в динаміці для FreeBSD

Динаміка зміни параметрів:

netstat -w 1
iostat -w 1
vmstat -w 1
gstat

Стан буферів:

vmstat -z
netstat -m
netstat -Lan
netstat -s -p tcp

Як позбавиться від зростання висять FIN_WAIT_2 з’єднань під FreeBSD

Якщо використовується ipfw2 і зберегти стан правила, то від безперервного зростання з’єднань зі статусом FIN_WAIT_2 допомагає:

sysctl -w net.inet.ip.fw.dyn_keepalive=0

 

Заборона завантаження модулів ядра Linux

Capability Bounding діє на всі процеси, якщо якийсь із Capability-режимів заборонений через  /proc/sys/kernel/cap-bound, то використовувати дану можливість не зможе жоден процес, незалежно від його привілеїв.
Використовуючи даний режим можна блокувати для користувача root можливість  завантаження модулів ядра, зміни правил пакетного фільтра, використання raw-сокетів, зміни власника файлів, монтування розділів та інших системних дій.

Capability /proc/sys/kernel/cap-bound пов’язаного працює тільки для Linux-ядер до версії 2.6.25. Починаючи з ядра 2.6.25 припинена підтримка глобального загальносистемного Capability Bounding, маску можна вказувати з використанням системного виклику prctl тільки для окремих ниток (установка Capability Bounding для процесу, відбивається і на всіх його нащадків).

Переглянути поточний стан режиму можна командою:

cat /proc/sys/kernel/cap-bound

а для установки нового значення, можна використовувати команду:

echo значення > /proc/sys/kernel/cap-bound

Наприклад, встановивши режим CAP_SYS_MODULE (для установки потрібно очистити біт номер 16):

echo $((0xffffffff ^ (1 << 16))) > /proc/sys/kernel/cap-bound

або в шістнадцятковому вигляді:

echo 0xFFFEFFFF > /proc/sys/kernel/cap-bound

буде заблокована завантаження будь-яких модулів ядра.

Спроба завантажити або вивантажити модуль призведе до висновку помилки.
modprobe ide_cd

FATAL: Error inserting ide_cd (/lib/modules/2.6.18-194.3.1.el5/kernel/drivers/ide/ide-cd.ko): Operation not permitted
Список інших  Capability-режимів можна подивитися у файлі /usr/src/linux/include/linux/capability.h:

grep ‘#define CAP’ /usr/src/linux/include/linux/capability.h

 #define CAP_CHOWN            0
   #define CAP_DAC_OVERRIDE     1
   #define CAP_DAC_READ_SEARCH  2
   #define CAP_FOWNER           3
   #define CAP_FSETID           4
   #define CAP_KILL             5
   #define CAP_SETGID           6
   #define CAP_SETUID           7
   #define CAP_SETPCAP          8
   #define CAP_LINUX_IMMUTABLE  9
   #define CAP_NET_BIND_SERVICE 10
   #define CAP_NET_BROADCAST    11
   #define CAP_NET_ADMIN        12
   #define CAP_NET_RAW          13
   #define CAP_IPC_LOCK         14
   #define CAP_IPC_OWNER        15
   #define CAP_SYS_MODULE       16
   #define CAP_SYS_RAWIO        17
   #define CAP_SYS_CHROOT       18
   #define CAP_SYS_PTRACE       19
   #define CAP_SYS_PACCT        20
   #define CAP_SYS_ADMIN        21
   #define CAP_SYS_BOOT         22
   #define CAP_SYS_NICE         23
   #define CAP_SYS_RESOURCE     24
   #define CAP_SYS_TIME         25
   #define CAP_SYS_TTY_CONFIG   26
   #define CAP_MKNOD            27
   #define CAP_LEASE            28
   #define CAP_AUDIT_WRITE      29
   #define CAP_AUDIT_CONTROL    30
   #define CAP_SETFCAP	     31
   #define CAP_MAC_OVERRIDE     32
   #define CAP_MAC_ADMIN        33

Змінювати  /proc/sys/kernel/cap-bound потрібно з великою обережністю, так як установка невірного значення може привести до непрацездатності системи.Встановлений прапор вже не може бути змінений, тобто зловмисник не може записати 0xFFFFFFFF і скасувати установку маски 0xFFFEFFFF.

Для блокування завантаження модулів в новіших ядрах слід використовувати файл  /proc/sys/kernel/modules_disabled (для заборони завантаження модулів у нього достатньо записати 1).

Як захистити Linux від деяких DoS-атак


/ Sbin / SysctlW net.ipv4.conf.all.send_redirects = 0
/ Sbin / SysctlW net.ipv4.conf.all.accept_redirects = 0
/ Sbin / SysctlW net.ipv4.conf.all.accept_source_route = 0
/ Sbin / SysctlW net.ipv4.conf.all.mc_forwarding = 0
/ Sbin / SysctlW net.ipv4.icmp_echo_ignore_broadcasts = 1
/ Sbin / SysctlW net.ipv4.icmp_ignore_bogus_error_responses = 1
/ Sbin / SysctlW net.ipv4.conf.all.log_martians = 1
/ Sbin / SysctlW net.ipv4.conf.all.rp_filter = 1