Virtual machine с Debian 7.

Linux, Debian, Windows Server и всякакви други неща от ежедневието на сисадмина
Отговори
Потребителски аватар
ivaylon
Глобален модератор
Мнения: 179
Регистриран на: 22 дек 2012 10:48

Virtual machine с Debian 7.

Мнение от ivaylon » 05 юли 2014 00:35

I. Запознаване с виртуализацията.

1. Предимства и недостатъци.
Виртуализация - това е възможността да се подкара под една операционна система други от същия или друг вид. Приликата с нормално инсталирана машина е голяма. Разликата - операционната система на виртуалната машина "си говори" с операционната система-майка, а не директно с хардуера (както стандартно инсталирана машина). Отвън погледната (през мрежата), виртуалната машина изглежда досущ както нормална. Голямо предимство е, че процесорно време, рам, дисково място, мрежови интерфейси, DVD и т.н. хардуер могат да се задават динамично (след спиране на виртуалната машина), т.е. има по-голяма ефективност в използването на хардуерните ресурси. Виртуалките имат още един голям плюс: софтуера, който ги поддържа, позволява да работите в прозорче "Console" отдалечено, дори виртуалката да няма мрежа (стига все пак сървъра, на който работи да има).

2. Софтуер, поддържащ виртуализация.
Най-известният софтуер за виртуализация под Linux и Windows е VirtualBox. Можете да инсталирате и виртуалката ще си върви доста прилично. Все пак това си остава непрофесионален начин за създаване на виртуални машини. Професионалния е VMware ESXi 5.5. На сайта на VMware се регистрирате. Софтуера има 2 части: ESXi - това е операционна система, която се инсталира и има възможности да се пускат виртуални машини. Втората част е vSphere: клиента. Свързва се по IP, root user&pass и дава графична среда за работа с ESXi.
VMware има безплатна версия на сървъра (ОС), клиентската е безплатна също.

На първо време си инсталирайте VirtualBox, колкото да подкараме една тестова виртуалка.

Потребителски аватар
ivaylon
Глобален модератор
Мнения: 179
Регистриран на: 22 дек 2012 10:48

II. Създаване на виртуална машина.

Мнение от ivaylon » 05 юли 2014 01:11

1. Създаване на виртуалната машина.
След инсталация на VirtualBox, създаваме първата ни виртуална машина. Принципно се прави една бланка, която се настройва и става готова за използване. Инсталиран и е минималния софтуер, настроен е, направено и е security и е вдигнат firewall.

От New -> (задаваме име) blank -> (type) Linux -> (version) Debian 64 -> Next -> 256 MB RAM -> Next -> Create a virtual hard drive now -> Create -> VMDK (Virtual Machine Disk) -> Next -> Fixed size -> blank (задаваме име на файла, можем да посочим и къде да се запише - вдясно има иконка, с която кликваме и браузваме директориите на диска), 20 GB -> Create.

Сваляме и инсталираме Daemon Tools Lite (безплатната версия). Сваляме си и последната версия на Debian Network Install ISO x32 или Debian Network Install ISO x64 в зависимост от операционната ни система и процесора ни. Стартираме Daemon Tools-a, добавяме дебианското .iso (от иконките долу първата е Add image), кликваме с double click върху картинката в Image Catalog-a и .iso файла се mount-ва. Проверяваме каква буква му е дал Windows (при мен е F).
Сега трябва да направим настройката за хардуера на виртуалната машина.

2. Настройки на виртуалната машина.
Кликваме с десен бутон върху нашата виртуалка -> Settings.
General - няма какво да настройваме тук.
System: от Motherboard изключваме флопито. От тук можем да променяме големината на RAM. Processor: слагаме всички реални ядра (без виртуалните). Aceleration: by default там трябва да има 2 отметки.
Display: тук също нямаме работа.
Storage: имаме диска с името blank. Controller IDE -> Empty - това е нашият DVD-ROM. Горе вдясно (Attributes) имаме иконка, с която избираме буквата, която създадихме с Daemon Tools-a (при мен е F, при вас вероятно е друга).
Ако имаме файл (от вече готова бланка), просто го копираме и преименоваме, след което от Controller SATA -> (горе вдясно) Attributes го избираме и се сдобиваме с готов харддиск.
Audio: и тук нямаме работа.
Network: -> Adapter 1: Enable Network Adapter -> Bridged Adapter (на бг версиите Мостов адаптер) -> Name - избираме лан картата, която да ползва. На Adapter Type можем да изберем режим (не ни трябва в момента; нищо не пипаме).
Нищо надолу от менюто не ни трябва, натискаме Ок. Double click върху виртуалката и я стартираме.

Потребителски аватар
ivaylon
Глобален модератор
Мнения: 179
Регистриран на: 22 дек 2012 10:48

III. Инсталиране на Debian 7.

Мнение от ivaylon » 05 юли 2014 10:30

Виртуалните машини използват файл с определено разширение, който разпознават като харддиск. VMware използва разширението .vmdk и за това, когато избираме настройките на диска под VirtualBox, избираме същото. Така нашата бланка става универсална и впоследствие можем да си копираме диска и и да я пренесем на VMware.
Когато ще си правим виртуалка за тест, можем да я изберем и с динамична големина. В този случай файла е минимален по размер и нараства само в случай на нужда. Плюса тук е голям - можем да използваме незаетото пространство за друго и да освобождаваме с нарастване на файла на виртуалката. Ако имаме голям брой виртуалки, задали сме ги динамично, обикновенно забравяме да се съобразим с макс. пространстро в райд масива, те започват да нарастват, настъпват се една друга и пишат на едно и също дисково място и става големия проблем. За това когато се вдига виртуалка за професионални цели, тя винаги е с фиксирана големина. При създаването на дяловете се използва VLM (virtual logical manager) и се създава виртуална група. Два дяла винаги остават извън групата: / и /boot. При желание може и /swap. Останалите дялове се създават вътре в групата.
Големината, с която създаваме файла на виртуалката е по-голям от сбора на големините на всички дялове (10-25% винаги трябва да останат свободни; аз оставям винаги към 25%). Това се прави с цел ако даден дял започне да ви нараства твърде много, да можете да го увеличите. Именно в това е смисъла на VLM-a: позволява да се увеличават дяловете в него.

След като стартирахме виртуалката, започваме и самата инсталация.
Install -> English -> other -> Europe -> Bulgaria -> United States -> American English.
Hostname: blank -> domain (оставяме празно) -> въвеждаме Root парола -> повтаряме root паролата -> въвеждаме име на нормален потребител (незадължително) -> username на нормалния потребител -> парола на нормалния потребител -> повтаряме паролата.
Partitioning method: Manual. На следващия екран има ред SCSI (0,0,0) (sda) ... Кликваме на него -> Enter -> (Create new partition table) Yes. Под този ред се появи pri/log 21.5 GB FREE SPACE. Kликваме на него (Enter).
Тук създаваме дяловете като големини. Големините се определят от това за какво ще се използва виртуалната машина. Нашите са за универсална виртуална машина.
Create new partition -> pri/log (Enter) -> 400 MB -> Primary -> Beginning -> Use as Ext4, Mount point (Enter) избираме /boot, надолу Boot flag (Enter, трябва да се промени от off на on) -> Done setting up the partition.
Създадохме дяла /boot като primary, сложихме го в началото на диска (Beginning), избрахме като файлова система Ext4 (то си беше избрано), сложихме му директория от структурата /boot, направихме /boot стартиращ дял (bootable) и приключихме със създаването на този дял.
Отиваме на pri/log... FREE SPACE (Enter) -> Create a new partition -> 1024 MB -> Primary -> Beginning. Use as е Ext4, Mount point: / . (и двете са правилните). -> Done setting up the partition.
Тук създадохме главния дял в Linux - /. Направихме го в началото на диска (веднага след /boot), създадохме го като primary. Файловата му система е Ext4 (така беше by default).
Сега е време на VLM и останалите дялове на виртуалката.
В главното меню сме и избираме:
Configure Logical Volume Manager -> Write the changes... (Yes) -> Create Volume Group -> (Volume group name) vg0 -> слагаме отметка само на /dev/sda free 1 -> Write the changes... (Yes) ->
Create volume name -> vg0 -> (Logical volume name) home -> (Logical volume size) 1024 MB (създадохме дял /home).
Create logical volume -> vg0 -> tmp -> 1024 MB. (създадохме дял /tmp).
Create logical volume -> vg0 -> usr -> 4096 MB. (създадохме дял /usr).
Create logical volume -> vg0 -> usrshare -> 2048 MB (създадохме дял /usr/share)
Create logical volume -> vg0 -> var -> 4096 MB (създадохме дял /var)
Create logical volume -> vg0 -> varlog -> 1024 MB (създадохме дял /var/log)
Create logical volume -> vg0 -> vartmp -> 400 MB (създадохме дял /var/tmp)
Create logical volume -> vg0 -> swap -> 1024 MB (създадохме дял /swap)

С Display current details можем да видим какви дялове сме създали, името, което им сложихме и големината им.
Дяловете са създадени, но не са описани директориите, към които да бъдат прикачени. Това ще направим сега.
Finish.
Излезе списъка с дяловете. Първият в списъка е home. Отиваме един ред надолу на #1 (Enter). (Както при нормален дял: трябва да изберем тип файлова система и след това директория). -> Use as Ext4 -> Mount point /home -> Done...
(втори дял swap): oтиваме един ред надолу на #1 (Enter) -> Use as swap area -> Done...
(трети дял tmp): oтиваме един ред надолу на #1 (Enter) -> Use as Ext4 -> Mount point /tmp -> Done...
(четвърти дял usr): oтиваме един ред надолу на #1 (Enter) -> Use as Ext4 -> Mount point /usr -> Done...
(пети дял usrshare): oтиваме един ред надолу на #1 (Enter) -> Use as Ext4 -> Mount point Enter manualy и въвеждаме /usr/share -> Done...
(шести дял var): oтиваме един ред надолу на #1 (Enter) -> Use as Ext4 -> Mount point /var -> Done...
(седми дял varlog): oтиваме един ред надолу на #1 (Enter) -> Use as Ext4 -> Mount point Enter manualy и въвеждаме /var/log -> Done...
(осми дял vartmp): oтиваме един ред надолу на #1 (Enter) -> Use as Ext4 -> Mount point Enter manualy и въвеждаме /var/tmp -> Done...
Почти сме готови. Проверяваме си името на дяла да отговаря на директорията, към която го присъединяваме. Ако всичко е наред, проверяваме двата дяла най-долу: /boot има ли флаг B и /.
След като сме готови -> Finish partitioning... -> Write ... (Yes) -> Debian Archive mirror Bulgaria -> ftp.uni-sofia.bg -> Proxy info оставяте празно -> Participate... No -> Choose software to install махаме всички отметки -> Install Grub... Yes.

Инсталацията на нашият Debian 7 приключи успешно. :)

Потребителски аватар
teou
Site Admin
Мнения: 2981
Регистриран на: 23 ное 2012 19:57
Местоположение: Dreieich - Dreieichenhein (Hessen) / София / Синеморец
Контакти:

Re: Virtual machine с Debian 7.

Мнение от teou » 05 юли 2014 12:46

Две малки допълнения и от мен (може да ги набуташ някъде нагоре по постовете):

Към домашно-аматьорските решения можем да прибавим и Vmware Player / Workstation. Уъркстейшъна е платена версия с отключени всички функции, плеъра е заключен. Моите наблюдения са, че Vmware Player се справя по-добре от Virtual Box при работата с USB, обаче се дъни при шерването на файлове между Линукс базирана виртуалка и хост Уиндоус. Т.е. За Линукс виртуалка по-добре Virtual Box, за Уиндоус - Vmware Player. Такива поне са моите лични впечатления.

Другото нещо е на тема дискове. Динамичния размер след известно време води до ужасяваща фрагментация (фрагментация във фрагментацията) и в някои случаи скоростта н авиртуалката може да падне в пъти от това нещо. Тук отново точка за Virtual Box, защото при Vmware Player функцията за фиксиран размер диск е заключена, с цел да дадете пари за Workstation разширената версия.

Потребителски аватар
ivaylon
Глобален модератор
Мнения: 179
Регистриран на: 22 дек 2012 10:48

IV. Basic инсталация и настройки.

Мнение от ivaylon » 05 юли 2014 15:29

След рестарта се логваме с потребител root.

Инсталираме си софтуера, който ни трябва:

# aptitude install vim ssh

Ако виртуалката е създадена на VMware, има два пакета, които впоследствие ще трябва да инсталираме. За целта трябва да добавим още нещо в /etc/apt/sоurces.list:

# vim /etc/apt/sources.list

На всички редове след main (в края) добавяме non-free contrib . Записваме файла и излизаме от него (:wq).
Свързваме се към сървъра през ssh:

# ifconfig

за да видим IP адреса ни. След това отваряме сесия с putty. (Това го правим, защото putty поддържа copy-paste, за разлика от конзолните интерфейси на VirtualBox и VMware).
След това трябва да добавим RSA key-я ни в стандартния потребител, който създадохме (user-a ще го обозначим с $USER, вие си използвате вашия на неговото място):

# su $USER
$ cd /home/$USER
$ mkdir .ssh
$ vim .ssh/authorized_keys
$ chmod 500 .ssh/
$ chmod 400 .ssh/authorized_keys
$ exit
# chattr +i /home/$SUSER/.ssh/authorized_keys


Какво направихме по-горе? Създадохме поддиректория .ssh, в нея - файла authorized_keys и си добавяме ключа/овете във файла. След това променяме правата над директорията .ssh и файла в нея (authorized_keys). С:

# ls -lahF /home/$USER
# ls -lahF /home/$USER/.ssh


можем да проверим какви са сегашните права. chmod 500 .ssh/ позволява в директорията .ssh/ да се чете и изпълнява само от собственика и. Чете се, защото вътре има съдържание (authorized_keys), което искаме системата да може да изчете (файла вътре), но не и други потребители. Атрибута "изпълнява", зададен на директория, позволява да се търси в нея, т.е. името на нашия файл вътре (или каквото съдържание има) ще бъде достъпно. На файла пък задаваме права само да може да се чете от собственика му (достатъчно по време на автентикацията), да няма право да се променя или изпълнява (ще видите в други ръководства права от вида 500 или 700 - дават повече права от необходимото). chattr +i .ssh/authorized_keys пък вдига флаг за файла ни, който забранява каквито и да е повече промени, без значение кой се опитва да ги прави (тук дори root не може да променя).
Ключа/овете добавихме към стандартен потребител в системата по следната причина: ако по някакъв начин някой успее да пробие автентикацията с ключ (много трудно, но не и невъзможно; за пример преди няколко месеца удариха сървър Hera на kernel.org именно през ssh автентикацията), все пак ще бъде с права на нормален потребител, няма да сме компроментирали root акаунта.
Сега е време да направим настройката и на ssh сървъра да започне да автентикира потребители само с ключ:

# vim /etc/ssh/sshd_config

Тук променяме следните редове на:

Banner /etc/issue.net
PermitRootLogin no
LogLevel DEBUG
PasswordAuthentication no

# chattr +i /etc/ssh/sshd_config
# /etc/init.d/ssh restart


А в /etc/isuue.net добавяме банер (съобщение, което се появява при автентикация в конзолата):

# vim /etc/issue.net

Променяме съдържанието на:

************************************************************************

This is a private system!!! All connection attempts are logged and monitored. All unauthorized connection attempts will be investigated and handed over to the proper authorities.

************************************************************************


За додобреване на сигурността на ssh сървъра можем в /etc/ssh/sshd_config да редактираме реда:

ListenAddress nasheIP

Така позволяваме сървъра да работи само на посоченото IP. (Може да имаме още няколко вдигнати интерфейси с IP адреси, ListenAddress задава на кой точно ще "слуша" ssh сървъра).
Има още два файла, които трябва да променим за по-голяма сигурност:

# vim /etc/hosts.deny

Тук добавяме реда:

ALL : ALL

Следващият файл е /etc/hosts.allow:

# vim /etc/hosts.allow

Добавяме реда:

sshd: IP1/network IP2/network2 IPN/networkN

Потребителски аватар
ivaylon
Глобален модератор
Мнения: 179
Регистриран на: 22 дек 2012 10:48

V. Инсталация и настройки на софтуера.

Мнение от ivaylon » 06 юли 2014 18:23

1. Инсталация на софтуера.
Време е да направим инсталацията на минималното количество необходим софтуер (все пак инсталираме и конфигурираме еталонна бланка).

# aptitude install apticron bzip2 dnsutils fail2ban iptraf less libpam-cracklib locate lsof mtr nmap ntp rsync screen subversion sysstat sysv-rc sysv-rc-conf tcpdump tcptraceroute unrar-free unzip

2. Конфигуриране.
В /etc/subversion/config променяме следните редове:

# vim /etc/subversion/config

editor-cmd = vim
store-passwords = no

В /etc/bash.bashrc: променяме големината на history и включване логването в syslog.

# vim /etc/bash.bashrc

HISTFILESIZE=15000
export HISTFILESIZE

В същия файл добавяме и следния скрипт:

function log2syslog {
declare COMMAND
COMMAND=$(fc -ln -0)
logger -p local1.notice -t bash -i -- "${USER}:${COMMAND}"
}

trap log2syslog DEBUG


3. Настройка на мрежата.
Сървърните машини, рутери, управляеми суичове трябва да използват статични пулове от IP адреси. Променяме на бланката ни IP адреса на статичен. Това става с редактиране на /etc/network/interfaces:

#iface eth0 inet dhcp

auto eth0
iface eth0 inet static
address IP
netmask Netmask
gateway defGW
dns-nameservers IP1 IP2

Потребителски аватар
ivaylon
Глобален модератор
Мнения: 179
Регистриран на: 22 дек 2012 10:48

VI. System security.

Мнение от ivaylon » 10 юли 2014 12:54

1. PAM sesurity.
Тук има добро описание какво трябва да се промени, за да се направи нашият debilian по-сигурен. Ето и няколко basic стъпки в тази посока.

# groupadd imenagrupa
# usermod -G imenagrupa $USER

Правим тази група "доверена" в /etc/pam.d/su:

auth required pam_wheel.so group=imenagrupa

В /etc/pam.d/login:

auth optional pam_faildelay.so delay=12000000

В /etc/login.defs:

SYSLOG_SU_ENAB YES
SYSLOG_SG_ENAB YES
LOG_OK_LOGINS YES
PASS_MAX_DAYS 180
PASS_MIN_DAYS 7
PASS_WARN_AGE 15
DEFAULT_HOME NO
ENCRYPT_METHOD SHA512

В /etc/pam.d/other:

auth required pam_securetty.so
auth required pam_warn.so
auth required pam_deny.so
account required pam_warn.so
account required pam_deny.so
password required pam_warn.so
password required pam_deny.so
session required pam_warn.so
session required pam_deny.so

В /etc/securetty: заменяме съдържанието с:
(след # vim /etc/securetty, като отвори файла, натискаме 500dd и vim изтрива 500 реда. След това натискаме i и paste-ваме с десен бутон на мишката съдържанието във файла.)
Тук определяме колко и какви връзки ще може да се отварят към сървъра.

tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8

2. Скрипт за firewall.
На доста места ще видите написани firewall правила и оставени статично да стоят на машината. Нашият скрипт позволява да бъде стартиран, спиран, рестартиран. Ето две ръководства за писане на firewall правила и идея за скрипт. Ето още един скрипт.










Не е довършено.

Отговори