SlideShare a Scribd company logo
1
Увод
Много компютърни потребители използват променена версия
на системата GNU всеки ден, без да го осъзнават. Поради странно
стечение на обстоятелствата, версията на GNU, която широко се
използва днес често бива наричана „Линукс“, и много потребители
не са наясно, че това е в общи линии системата GNU, разработвана
от проекта GNU.
Наистина има Линукс и хората го използват, но това е само
част от операционната система. Линукс е ядрото — онази програма
в системата, която заделя ресурсите на машината за другите
програми, които изпълнявате. Ядрото е съществена част от една
операционна система, но е безполезно само по себе си. То може да
функционира само в контекста на завършена операционна система.
Линукс се използва обикновено в комбинация с операционната
система GNU — цялата система всъщност е GNU, с Линукс като
добавка, или GNU/Линукс. Всички така наречени „Линукс“
дистрибуции на практика са дистрибуции на GNU/Линукс.
Много потребители не са напълно наясно за разликата между
ядрото, което е Линукс, и цялата система, която те също наричат
„Линукс“. Двусмислената употреба на наименованието не спомага за
изясняването на това недоразумение. Тези потребители често
мислят, че Линус Торвалдс е разработил цялата система през 1991 г.
с малко помощ.
2
СЪДЪРЖАНИЕ
Мрежова и системна администрация под
Linux
Глава 1. Управление на групи и потребители.
1.1. Теоретични сведения за виртуални машини под Linux.
1.2. Теоретични сведения за управление на групи и
потребители в Linux.
1.3. Команди за боравене с файлова ситема.
1.4. Процеси в Linux и Bash shell.
Глава 2. DNS услуги и админисриране на хардуер под
Линукс.
2.1. Анализиране на защитата на DNS услуги.
2.2. Анализиране на мрежовото и системно администриране
при Linux.
2.2.1.Мрежово администриране.
2.2.2.Системно администриране
2.3. Анализиране на управлението и наблюдението с команди
за мониторинг.
3
ГЛАВА 1
УПРАВЛЕНИЕ НА ГРУПИ И ПОТРЕБИТЕЛИ.
1.1. Теоретични сведения за виртуални машини под Linux.
Разглеждане основите на виртуализацията. Оценяване на
преимуществата от виртуализацията.
Създаване и използване на виртуални машини.
Виртуализацията представлява една от най-модерните
тенденции в работата с мрежи в наши дни. Според някои познавачи
на тази област виртуализацията е най-доброто нещо, което се е
случвало в света на компютрите от изобретяването на транзистора
насам. Ако все още не сте започнали да виртуализирате своята
мрежа, тогава можете да считате, че в момента си стоите на перона
и наблюдавате как влакът се отдалечава от вас.
Този материал представлява кратко въведение във
виртуализацията, като се набляга на нейното използване, за да
дадете възможност на хардуера на вашия мрежов сървър да
предостави повече сървъри с по-малко хардуер.
Виртуализация
Основната идея зад виртуализацията е да се използва
софтуер, който да симулира съществуването на хардуер. Тази
мощна идея ви дава възможност да стартирате повече от една
независима компютърна система върху една- единствена физическа
компютърна система. Нека да предположим, че вашата организация
има нужда от общо 12 сървъра, за да покрие своите нужди. Вие
можете да стартирате всеки един от тези 12 сървъра на отделен
компютър като в този случай ще имате нужда от 12 компютъра в
сървърната си стая, или можете да използвате виртуализация, за да
стартирате тези 12 сървъра само на 2 компютъра. Като резултат
всеки един от тези два компютъра ще трябва да симулира по шест
компютърни системи, като всяка една от тях ще работи с един от
вашите сървъри.
Всеки симулиран компютър представлява една виртуална
машина („virtual machine“ - VM). Във всички отношения всяка една
виртуална машина представлява пълна, самостоятелна компютърна
система със свой-собствен процесор (или по-вероятно, процесори),
памет, дискови устройства, CD-ROM/DVD устройства, клавиатура,
мишка, монитор, мрежови интерфейси, USB портове и т.н.
Както един истински компютър, всяка виртуална машина
4
изисква операционна система, за да може да свърши някаква
продуктивна работа. При една типична среда на мрежов сървър
всяка виртуална машина работи със свое собствено копие на
Windows Server 2012 (или по-стара версия). Операционната система
си няма и представа, че работи на виртуална машина, а не на
истинска машина.
Използвани термини:
- Host (Домакин). Това е реалният физически компютър, на
който работят една или повече виртуални машини.
- Bare metal (Оголен метал). Друг термин за компютъра-
домакин, на който работят една или повече виртуални машини.
- Guest (Гост). Още един термин за виртуална машина, която
работи на домакин.
- Guest operating system (Операционна система-гост).
Операционна система, която работи в рамките на виртуалната
машина. Сам по себе си, гостът е просто една машина; тя изисква
операционна система, за да може да работи. Операционната
система-гост е това, което вдъхва живот на госта.
Лицензиране. Microsoft третира всяка една виртуална машина
като отделен компютър. Ето защо, ако сте стартирали шест госта на
един домакин и всеки гост работи с Windows Server 2012, тогава вие
се нуждаете от шест лиценза за Windows Server 2012.
Виртуализацията беше разработена за базирани на PC
компютри в началото на 1990-те. Ho идеята всъщност е много по-
стара.
През 1972 IBM пусна една операционна система, която се
казваше просто VM, и разполагаше с почти всички основни
характеристики, които могат да бъдат открити в съвременните
продукти за виртуализация. VM даваше възможност на
администраторите на мейнфреймкомпютрите System/370 на IBM да
създават множество независими виртуални машини, всяка от които
се наричаше виртуална машина (virtual machine) или VM. Тази
терминология все още се използва в наше време.
Всяка VM можеше да работи с някоя от различните
операционни системи-гости, които бяха съвместими със System/370
и се представяше на тази операционна система-гост като един
пълен, независим компютър System/370 със свои-собствени
процесорни ядра, виртуална памет, дискови дялове и устройства за
вход/изход.
Ядрото на самата система VM се наричаше хипервайзор - още
един термин, който се запази до наши дни.
Продуктът VM, който IBM пусна през 1972, всъщност се
базираше на един експериментален продукт, който IBM пусна за
5
ограничено използване през 1967.
Преимущества при виртуализация
Може да се подозира, че виртуализацията е неефективна,
защото един реален компютър винаги ще бъде по-бърз, отколкото
един симулиран компютър.
Въпреки че реалните компютри наистина са по-бързи от
симулираните компютри, технологиите за виртуализиране са
толкова напреднали, че намаляването на производителността за
работата върху виртуализирана машина вместо на реална машина е
само няколко процента.
Малкото забавяне на виртуализираните машини се дължи по-
скоро на простия факт, че дори и най-тежко натоварените сървъри
използват по-голямата част от своето време, чакайки да им бъде
възложена някаква работа. В действителност много от сървърите
прекарват почти цялото си време в бездействие. Тъй като
компютрите стават все по-бързи и по-бързи, те прекарват още по-
голяма част от своето време, без да вършат нищо.
Виртуализацията представлява великолепен начин за
използване на тази неизползвана мощ за обработване. Освен това
базово преимущество по отношение на ефективността
виртуализацията има няколко преимущества:
Хардуерни разходи. Когато използвате виртуализация,
вие обикновено можете да спестите много пари чрез намаляване на
хардуерните разходи. Нека да предположим, че заместите десет
сървъра, всеки един от които струва 4 000 E, с един сървър-
домакин. Вярно е, че ще трябва да похарчите повече от 4 000 E за
този сървър, тъй като той трябва да бъде максимално оборудван с
памет, процесорни ядра, мрежови интерфейси и т.н. Така че най-
вероятно ще ви наложи да отделите между 15 000 и 20 000 Е за
сървъра-домакин. Като цяло обаче ще ви трябват много по-малко от
40 000 Е, които щяхте да похарчите за десет отделни компютъра по
4 000 Е всеки.
Енергийни разходи. Много организации откриха, че
виртуализирането намалява тяхната обща енергийна консумация на
сървърните компютри с над 80 процента. Това спестяване е
директен резултат от използването на по-малко компютърен
хардуер, за да се върши повече работа. Един компютър-домакин, на
който работят десет виртуални сървъра, използва приблизително
една десета от енергията, която би била необходима, ако всеки
един от десетте сървъра работеше на отделен хардуер.
Възстановяемост. Едно от най-големите преимущества на
виртуализацията не е в спестяването на средства, а във
6
възможността за бързо възстановяване от хардуерни проблеми.
Нека да предположим, че вашата организация има десет сървъра,
всеки един от които работи на отделен хардуер. Ако някой от тези
сървъри „падне“ поради хардуерен проблем - да речем, повредена
дънна платка — този сървър ще остане свален дотогава, докато не
оправите компютъра. От друга страна, ако тези десет сървъра
работят като виртуални машини на два различни домакина и
единият от тези домакини „падне“, тогава виртуалните машини,
които работят на падналия домакин, могат да бъдат „вдигнати“ на
другия домакин в рамките на минути.
Разбира се, сървърите ще работят с по-малка ефективност на
един- единствен домакин, отколкото биха работили на два
домакина, но най-важното в случая е това, че всички те ще работят
след кратък период на прекъсване.
В действителност, ако се използват най-модерните
хипервайзори, прехвърлянето от паднал домакин към друг домакин
може да стане автоматично и моментално така, че изобщо да няма
никакъв период на прекъсване. На фигура 1.1 и 1.2 е показано
структурата на Red Hat Enterprise Virtualization.
Фигура 1.1. Структура на Red Hat Enterprise Virtualization
Red Hat Enterprise Virtualization е направен на базата на KVM
hypervisor който е виртуална машина с отворен код.Освен това, Red
Hat Enterprise Virtualization работи на Red Hat Enterprise Linux
осигурявайки производителност на повече от един милион I/O в
секунда (IOPS) на един виртуален сървър. Това означава, че малко
7
виртуални машини (VMS), се могат да постигнат същите резултати,
спестяваме разходите за софтуер и хардуерни ресурси, без да
жертваме производителност.
С хост от който може да има 160 процесора и 4 ТВ от RAM,
можем да виртуализираме доста голям обем от хардуер, един
клъстър има ограничения от 200 хоста.
Фигура 1.2. Enterprise Virtualization хипервайзор
Enterprise Virtualization хипервайзор има същото ядро като Red
Hat Enterprise Linux, можете да използват голямо разнообразие от
сертифицирани хардуерни платформи и хипервайзора наследява
техните функции. Подобно на хардуерна операционна система е
много стабилна и наследява технологиите за сигурност като
Security-Enhanced Linux (SELinux), и отделна Red Hat Secure
Virtualization (sVirt).
Архитектурата на виртуализация Red Hat третира всяка
виртуална машина като свой собствен процес, който е управляван
от хипервайзора на ниво ядро (kernel-level hypervisor). Тъй като
всяка виртуална машина е процес, който може да бъде маркиран от
SELinux, той създава граница за да осигори сигурност около всяка
виртуална машина. Тази граница се наблюдава и налага от ядрото
като ограничава достъпа на виртуалната машина на ресурси извън
тази граница.
8
1.2. Теоретични сведения за управление на групи и
потребители в Linux. Команди за боравене с файлова ситема.
Първо ще разгелдаме командата YUM (Yellowdog Updater
Modified). YUM е мениджър на хранилището. С него лесно можем
да търсим, инсталираме, обновяваме и премахваме пакети.
Разработен и разпространен под GPL (General Public License) като
отворен код което означава, че всеки може да свали кода и да има
достъп до него за да може да се оправят грешки и да се разработват
пакети . Чрез YUM можете да инсталирате пакети директно от
хранилища(repositories ).Той се използва в Red Hat базираните
линукс системи. Хранилището е организирано като място където са
събрани всички пакети които YUM може да използва.
Всички необходими файлове за приложението са компилирани
в един файлов формат с разширение .rpm. Пакетният мениджър
RPM инсталира тези .rpm пакети.
А софтуерен пакет на Linux не е нищо друго освен един
компресиран архив на файлове, състоящ се от определена
информация за продукта, програмните файлове, икони, библиотеки
и т.н.
Ето как Yum работи:
1. Checking /etc/yum.conf
2. Checking /etc/sysconfig/rhn/up2date (RHEL only)
3. Checking /etc/yum.repos.d/*.repo files
4. Downloading RPM packages and metadata from a YUM repository
5. RPM packages installed to Linux file system
6. Store YUM repository metadata to local RPM database
Фигура1.3. Архитектура на процесите когато инсталираме rpm с yum
9
По-долу са дадени основните команди които се използват при
yum и кратки обеснения към тях.
yum install firefox
- инсталира пакет,в случая firefox
yum remove firefox
-премахва пакетния
yum update mysql
-обновява с последна стабилна версия
yum list openssh
-търси пакет с това име
yum list openssh-4.3p2
-ако искаме да търсим специфична версия на пакета
yum search vsftpd
-ако не помним името на пакета или търсим нещо , но не знаем
точното му име
yum info firefox
-когато искаме да видим информация за даден пакет пред да
го инсталираме
yum list | less
-списък с всички възможни за инсталиране пакети в базата
данни на yum
yum list installed | less
-дава ви списък с всички команди инсталирани на системата
yum provides
-дава ни възможност да разберем кой пакет на кой файл
принадлежи например
ПРИМЕР
# yum provides /etc/httpd/conf/httpd.conf
Loaded plugins: fastestmirror
10
httpd-2.2.3-63.el5.centos.i386 : Apache HTTP Server
Repo : base
Matched from:
Filename : /etc/httpd/conf/httpd.conf
httpd-2.2.3-63.el5.centos.1.i386 : Apache HTTP Server
Repo : updates
Matched from:
Filename : /etc/httpd/conf/httpd.conf
httpd-2.2.3-65.el5.centos.i386 : Apache HTTP Server
Repo : updates
Matched from:
Filename : /etc/httpd/conf/httpd.conf
httpd-2.2.3-53.el5.centos.1.i386 : Apache HTTP Server
Repo : installed
Matched from:
Other : Provides-match: /etc/httpd/conf/httpd.conf
yum check-update
-показва ни колко пакета от инсталираните на системата имат
възможност да се обновят
yum update
- обновява системата с последните възможни пакети
В Линукс няколко пакета могат да образуват група от пакети.
Когато инсталираме тази група ние инсталираме всички пакети в нея
и по долу са дадени няколко примера :
yum groupinstall 'MySQL Database'
yum groupupdate 'DNS Name Server'
yum groupremove 'DNS Name Server'
yum repolist
-списък с всички възможни хранилища на системата
11
yum repolist all
-списък с всички хранилища
yum --enablerepo=epel install phpmyadmin
-инсталира спецефичен пакет от специфично хранилище
yum shell
- yum ни дава достъп до shell, където можем да изпълним
множество от команди.
Управление на групи и потребители
Команди за управление на потребителски акаунти:
id - показва id на потребители и групи(id е уникален номер в
системата)
-id username
useradd, usermod, userdel- стандартни команди за
добавяне,модифициране и изтриване на потребител
-useradd diayn
-passwd username
-usermod -L username – заключване на потребител
-usermod -U username – отключване на потребител
-userdel -r username – изтриваме потребител с опцията -r ние го
изтриваме и от директорията /home и mail spool
12
Възможни опции при използване на потребителски акаунти:
-c 'comment' - comment може да се замести с коментар по наш
избор примерно искаме да напишем цялото име на потребителя
-e date - дата от която акаунта е бил валиден
-g group_name – име на група
-G group_list – списък с допълнителни имена
-m създава home директорията ако не съществува
-M – да не създава home директорията
-p password – паролата се криптира с crypt
-r – създава се системен акаунт с UID по-малко от 1000 и без
home директория
-u uid - ID на потребителя който е уникален и по малък от 999
Команди за управление на групи.
По долу са дадени командите за управление на групи:
groupadd, groupmod, groupdel – стандартни команди за
добавяне,модифициране и изтриване на групи.
-groupadd diaynsgroup
-usermod -a -G group1 username -чрез usermod можем да
променяме настройките на акаунта, в случая опцията -а е много
важна с нея потребителя може да е част от тази и други групи,ако не
се използва тази опция той е част само от тази група. За премахване
на потребител от група няма директна команда, затова първо трябва
да изведем списък с групите в които участва потребителя:
id -nG username
group1 group2 group3 ....
-Тогава слагаме групите в които искаме потребителя да не
13
бъде изтрит, а групата от която искаме да бъде изтрит я пропускаме,
използваме и опцията –G:
usermod -G group1,group3,... username
В този случай потребителя username ще бъде премахнат от
group2
Допълнителни команди:
gpasswd – команда за администриране на /etc/group
конфигурационен файл,
pwck, grpck – команди които можем да използваме да
проверим парола,група и вървящите с тях shadow files,
pwconv, pwunconv – команда с която можем да преобразуваме
в shadow passwords в стандартни и обратното.
Команди чрез които можем да боравим с файловата
системата
Когато работим с Linux трябва да знаем много добре
командите защото много често няма да има инсталиран графичен
интерфейс, когато се налага да работим. Винаги може да се
инсталира и графична среда, но за нея се изисква значително
повече ресурс от машината от това тя да не е с графична среда.
Въпреки, че може да е малко досадно в началото работата с
командите в Linux е от изключително значение. Ето и няколко
примерни команди :
cd - смяна на директорията
pwd - показва директорията в която се намираме в момента
mkdir - създаване на директорията
chmod - дава разрешение за файл или директория да се
14
чете,пише,редактира
ls – показва какво има в директорията
Една от най-базовите команди е cd, ето и няколко примера:
$ cd /usr/share/
$ pwd
/usr/share
$ cd doc
/usr/share/doc
$ cd
$ pwd
/home/chris
Тук е показана и командата pwd.
Ако напишем само cd ние ще се върнем в /home директорията.
Създаване на нова директория.
$ mkdir test
Името на директория е test
Проверка на разрешението на директорията
$ ls -ld test
drwxr-xr-x 2 joe sales 1024 Jan 24 12:17 test
За да променим разрешението на директорията използваме
команда:
$ chmod 700 test
В случая разрешението е да можеш да правиш всичко
rwx------
Показва скрити и не скрити файлове
15
ls -a
. apple docs grapefruit pointer_to_apple .stuff watermelon
.. banana grape .hiddendir script.sh .tmpfile
Команда при която се показват файлове, които най-често са
променяни:
$ ls -at
.tmpfile .hiddendir .. docs watermelon banana script.sh
. .stuff pointer_to_apple grapefruit apple grape
За да видите всичко, което е тип файл
$ ls -F
apple banana docs/ grape grapefruit pointer_to_apple@ script.sh*
watermelon
Без да показва файлове започващи с G
$ ls --hide=g*
apple banana docs pointer_to_apple script.sh watermelon
За да видим информация за директорията
$ ls -ld $HOME/test/
drwxrwxr-x. 4 joe joe 4096 Dec 18 22:00 /home/joe/test/
Създаване на директория на няколко слоя
$ mkdir -p $HOME/test/documents/memos/
16
Показва всички файлове и директория назад
$ ls -R
Показва файловете по размер
$ ls -S
Даване на права на файлове
След като сме поработили малко с Линукс няма начин да не
сме се натъквали на съобщението „достъпът отказан“(Permission
denied) . Permission в Линукс се свързва с това че можем да правим
така че дадени файлове и директории да може да им се дава
различен достъп на потребителя ,като по този начин да се
предпазват различни файлове и директори които са важни за
системата. Всеки файл има девет бита които определят достъпа до
него .Тези битове обикновено изглеждат по следния начин -
rwxrwxrwx. От тези девет бита първите три дават права на
собственика на файла,следващите три на група,последните три на
всички останали. Съответно трите букви означават r-read чета, w-
write пиша, x-execute изпълнявам. Ако се появи тире на мястото на
една от трите букви това означава ,че правото да се дава
позволение е изключено(rwx).
1-когато даваме права на файл
2-когато даваме права на директорията
Read – 1 можем да видим какво има във файла – 2 виждаме в
кои файлове и директории се съдържа.
Write – 1променяме съдържанието на файла,преименуваме го
или го изтриваме – 2 добавяме/премахваме файлове и
поддиректории към тази директория.
Execute – 1 стартира файла като програма 2 – променя
директорията като текуща директория,търси от директорията или
изпълнява програма от директорията.
Сега ще използваме командата ls -ld за да видим кой може да
чете,пише или изпълнява този файл .
17
ПРИМЕР :
$ ls -ld ch3 test
-rw-rw-r-- 1 joe sales 4983 Jan 18 22:13 ch3
drwxr-xr-x 2 joe sales 1024 Jan 24 13:47 test
Първата линия показва, че файла ch3 може да се чете и пише
от притежателя и група. Всички останали потребители имат
разрешението само да го четат което означава , че не могат да го
променят или премахват. Втория ред ни показва директорията test.
Собственика има правата да чете, пише и изпълнява, докато
групата и всички останали потребители могат само да четат и
изпълняват. Като резултат собственика може да добавя, сменя или
изтрива файлове от директорията ,а всички останали могат четат
файловете и да видят какво има в директорията.
Промяна на правата с chmod (с цифри)
Един от начините за промяна на правата на файл е с цифри
r=4, w=2, and x=1, като всеки сбор от цифри дава различни права.
Например за да зададен права да можем да правим всичко
задаваме първата цифра 7 (4+2+1), след това за да могат само да
четат група и всички останали пишем втора и трета цифра пишем 4,
и така крайната цифра се получава 744. Комбинациите за даване на
права могат да общ сбор от 0 до 7, като 0 означава че нямаме, а 7
означава че имаме пълни права.
Ето и някои примери за даване на права с цифри и какво
означават те :
chmod 777 - rwxrwxrwx
chmod 755 -rwxr-xr-x
chmod 644 rw-r—r-
chmod 000 ---------
Ако искаме да дадем права на цяла директория можем да го
направим като използваме -R например за директорията
$HOME/myapps. Ето как ще стане :
18
chmod -R 755 $HOME/myapps
По този начин всички файлове в директорията включително и
самата директория имат тези права (755).
Промяна на правата с букви
Може да задаваме права ,като използваме (–) и (+),като тези
знаци показват съответно ,кой няма и има права. Ето няколко
примера:
chmod a-w file
правата са :
r-xr-xr-x
a-означава потребители(users), т.е. кой в случая няма да има
има права,
- това означава че в случая потребителите няма да имат
права, ако имаме + това означава че имаме права,
w – това показва за какво потребителите няма да имат права
,няма да могат да пишат (write).
chmod o-x
права rwxrwxrw-
chmod go-rwx
rwx------
В случая групи и всички останали не могат да работят с този
файл.
chmod u+rw
rw-------
Само потребителя може да чете и пише.
chmod a+x
--x--x--x
chmod ug+rx
r-xr-x---
chmod -R o-w $HOME/myapps
19
Този пример показва как в директорията myapps всички
останали (“other”), нямат права да пишат.
1.3. Процеси в Linux и Bash shell.
При стартиране на Linux се изпълняват няколко процеса. На фигура
1.4 е дадена последователността на процеси в Linux.
Фигура 1.4. Процеси при стартирането на линукс систем
1 BIOS
BIOS означава Basic Input/Output System .
Извършва проверки по системата. Търси зарежда и изпълнява
boot loader. Веднъж щом boot loader е засечена и заредила в
паметта, BIOS и дава контроола на системата. Накратко казано
BIOS зарежда и изпълнява MBR boot loader .
2. MBR
MBR означава Master Boot Record.
Той се намира на първия сектор на диска от който зарежда
системта (bootable disk)/dev/sda. /dev е директорията в която се
намира информация за нашия хардуер. sd означава scsi device, а
първия диск, след това ако има цифра я означава кой дял (partition)
e това.
20
MBR е голям по обем - 512 bytes. Има три компонента.
Първият е boot loader и е 442 bytes. boot manager или още boot
loader представлява междинна част от код, която помага на
хардуера и фърмуера на вашата система да зареди операционната
система. Вторият е partition table 64 bytes. И третият е mbr validation
check който е 2 bytes. Накратко казано MBR зарежда и стартира
GRUB.
Фигура 1.5. Схема на MBR
3 GRUB
GRUB идва от Grand Unified Bootloader.
Ако имате инсталирани множество images на ядрото на
системата ви, можете да изберете кой от тях да бъде изпълнено.
GRUB ви показва началния екран, изчаква няколко секунди, ако не
въведете нищо, се зарежда изображението на ядрото по
подразбиране, както е посочено в конфигурационния файл на
GRUB.
Grub конфигурационния файл е /boot/grub/grub.conf .
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5PAE)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/
initrd /boot/initrd-2.6.18-194.el5PAE.img
21
Както може да се вижда от тази информация ,тук е ядрото
kernel и initrd image. Grub зарежда и изпълнява Kernel and initrd
images. (тук съм дал примери как изглежда процеса с и без
графичен интрефейс )
Фигура 1.6. GRUB при стартиране на системата
4. Kernel
Маунтва се файловата система в “root=” in grub.conf.Kernel
изпълнява /sbin/init . Init е първата програма стртирана от
ядрото(първия процес в системата). initrd означава Initial RAM Disk.
Initrd използва ядрото(Kernel) като временна файлова система
,докато ядрото зарежда и се маунтне истинската файлова система.
Също така ядрото съдържа необходимите драйвери за всякакъв
хардуер който можем да ползваме. Когато искаме да ползваме
дадена конфигурация трябва трябва да проверим дали ядрото на
системата поддържа хардуера и.
5. Init
Init определя по подразбиране initlevel от /etc/inittab и
потребителите могат да направят така че да се зареждат всякакви
програми.
Чрез ‘grep initdefault /etc/inittab’ можем да видим run level по
подразбиране. Обикновено по подразбиране са номер 3 и 5.
22
6. Runlevel programs
Когато системата зарежда, може да видите различни услуги да
се стартират. Например, може да се видите, "“starting sendmail ….
OK". Те са изпълнени от run level директорията, така както се
зададени по подразбиране. В зависимост от настройките които са по
подразбиране на init level ,системата ще стартира една от следните
директории :
Run level 0 – /etc/rc.d/rc0.d/
Run level 1 – /etc/rc.d/rc1.d/
Run level 2 – /etc/rc.d/rc2.d/
Run level 3 – /etc/rc.d/rc3.d/
Run level 4 – /etc/rc.d/rc4.d/
Run level 5 – /etc/rc.d/rc5.d/
Run level 6 – /etc/rc.d/rc6.d/
Програмите които стартират с S ще се стартират по
стартирането на системата. S е за стартиране. Програмите които
започват с К няма да се стартират . К означава kill.
Това е накратко казано какво се случва когато стартираме
Линукс. Това са няколко схеми, които описват по-подробно
процесите.
Фигура 1.7. Процеси при стартиране на Линукс
23
Фигура 1.8. Процеси при стартиране, рестартиране и спиране
на системата.
Създаване на процес в операционна система
Операционните системи трябва да могат да създават процеси
по някакъв начин.Ако система предназначена само за едно действие
процесите които са необходими да се създават само при
стартирането и и това е, но когато имаме по сложна система трябва
тези процеси да могат да се включват и спират, за да има по-голяма
ефективност и гъвкавост, подобно на автомобилен състезател ,който
отстрани изглежда че са просто кара една бърза и хубава кола,
всъщност за да е максимално бърз той извършва множество
движения , преценя скоростта в завоите и т.н.
Четири основно принципа са необходими за да се създаде
процес :
24
1 Да се инициализира системата.
2 Да се изпълни така наречените system call.Те най-просто
могат да се обяснят като функция на езика С която се извиква от
стандартна библиотека.
3 Заявка на потребител да създаде нов процес.
4 Стартира се процес.
Когато една система се стартира също така много процеси се
стартират. Някои ние виждаме те се наричат foreground processes,
но други работят без да можем да ги видим и имат специфични
функции те наричат background processes. Например един такъв
процес може да бъде направен да приема нашета поща ,през по-
голямата част от деня той не е активен,но когато ние получим
някакво съобщение той се активира .
По същия начин например се обработват заявките от
различните сайтове ,процеса който ги обработва не е активен през
цялото време само когато е необходимо . Такива процеси са наричат
daemons. В една голяма система съществуват много такива
процеси.
Bash shell
Фигура 1.9. shell(обвивка).
Всички UNIX системи поддържат голям брой програмни езици,
позволяващи на потребителите да си правят свои собсвени
програми. Всички дистрибуции имат поддръжка за програмиране за
множество командни интерпретатори, езици от по-високо ниво като
Perl и Tcl/TK и GUI програмиране за графични среди като KDE и
GNOME. Най-често използваните обвивки (shells) са:
bash – bourne again shell
25
sh - shell
csh - C shell
tcsh - Tenex C shell (C shell без поддръжка на tab-completion)
zsh - Z shell
ksh - Korn Shell
Една програма за bash комбинира UNIX командите по даден
начин, за да изпълни определена задача. Програмата за bash
представлява текстов файл, съдържащ команди, които можете да
въведете с най-обикновен текстов редактор като pico, vi и др.
#!/bin/bash
echo "Hello, World"
За да направите традиционния Hello, World script. Можете да
стартирате скрипта като напишете точка (.) пред името на файла.
Ако файлът се казва hello, командата би изглеждала така:
$ . hello
Hello, World
Другият начин е да направите скрипта изпълним:
$chmod +x hello
и да го стартирате с:
$ ./hello
Hello, World
$
Скриптът hello съдържа два реда. Първия ред казва на
системата коя програма да ползва, за да прочете командите във
файла, а втория изкарва на екрана Hello, World. Можете да
въвеждате коментари в скриптовете си чрез знака "#".
#!/bin/bash
# Това е коментар
echo "Hello, World" # Това също.
Променливи.
За да присвоите някаква стойност на променлива трябва да
използвате оператора за присвояване (знака за равенство (=)).
Въведете името на променливата, знака за равенство и след това
стойността й.
26
Пример:
num=10
Обърнете внимание, че не трябва да използвате интервали
около оператора за присвояване. Ако сложите интервал след него
(num= 10), bash ще се опита да изпълни команда "num=" с аргумент
10.
Можете да се обърнете към стойността на променлива чрез
знака за долар ($). Ето как би изглеждал скриптът Hello, World ако
използваме променливи:
#!/bin/bash
var="Hello, World"
echo $var
Въпреки че стойностите на променливите могат да бъдат
произволни символи, ако включите символи,които се използват от
обвивката, възникват проблеми. Тези символи са: интервал, точка
(.), знак за долар ($), по-голямо (>) и по-малко (<), (|), (&), (*), ({) и (}).
Тези знаци могат да се използват като стойност на променлива ако
са поставени в двойни или единични кавички или с обратно
наклонени черти. С двойни кавички можете да използвате всички
запазени знаци без знака за долар ($). За да го включите в
стойността на променливата можете да използвате обратно
наклонена черта преди него ($) или да оградите стойността на
променливата с единични кавички. Следващия пример илюстрира
всичко описано до сега.
#!/bin/bash
num1=10
num2=20
msg1="$num1 < $num2 & $num2 > $num1" #
Тук ще се покажат всички знаци без знака за долар, който
използваме за да се обърнем към стойността на променливата.
echo $msg1 msg2="$100 > $10" #
Тук използваме обратно наклонена черта за да покажем знака
за долар
27
echo $msg2
msg3='Here we can use all of these symbols: ".", ">", "<", "|", "$",
etc'
По този начин всички знаци ще се покажат на екрана.
Единственият символ, който не може да се използва е единична
кавичка (')
echo $msg3
При всички примери по-горе не е нужно стрингът да се слага в
променлива.
echo ""$msg1" is not needed to print '$num1 < $num2 & $num2 >
$num1'"
Изпълнението на скрипта:
$ ./primer1
10 < 20 & 20 > 10
$100 > $10
Here we can use all of these symbols: ".", ">", "<", "|", "$", etc
$msg1 is not needed to print '10 < 20 & 20 > 10'
$
За да присвоите на някоя променлива резултата от
изпълнението на някаква команда, трябва да оградите командата в
обратно наклонени апострофи.
#!/bin/bash
lsvar=`ls ~`
echo $lsvar
Изпълнението на скрипта:
$ ./primer2
books docs ircd movies source work phun stuff
$
Ако поставите команда в единични кавички след това можете
да използвате името на тази променлива, като друго име на
командата.
#!/bin/bash
lssrc='ls ~/source/c'
28
$lssrc
Изпълнението на скрипта:
$ ./primer3
me0w.c m00.c
$
За да използвате резултата от изпълнението на команда в
стринг или променлива трябва да заградите командата в скоби и да
поставите знака за долар пред нея ($(ls)).
#!/bin/bash
echo "The date is $(date)"
Изпълнението на скрипта:
$ ./primer4
The date is пн юни 10 20:36:49 UTC 2002
$
В bash има и няколко специални променливи, които се използват за
аргументите на скрипта за обвивката.
$0 - име на команда
$1 до $9 - аргументите на скрипта
$* - всички аргументи от командния ред
$@ - всички аргументи от командния ред поотделно
$# - броят на аргументите от командния ред
Ще разберете разликата между $* и $@ след като прочетете за
контролната структура for-in. Погледнете
долния пример за по-голяма яснота за специалните променливи.
#!/bin/bash
echo "The first argument is $1, the second $2"
echo "All arguments you entered: $*"
echo "There are $# arguments"
Изпълнението на скрипта:
29
$ ./primer5 arg1 arg2 arg3 arg4
The first argument is arg1, the second arg2
All arguments you entered: arg1 arg2 arg3 arg4
There are 4 arguments
$
Ако изпълните друг скрипт от текущо изпълняващият се,
текущият скрипт спира изпълненитето си и предава контрола на
другия. След изпълнението му се продължава първия скрипт. При
този случай всички променливи, дефинирани в първия скрипт не
могат да се използват във втория. Но ако експортирате
променливите от първия те ще могат да се използват във втория.
Това става с командата export.
#!/bin/bash
# Това е първият файл.
var=100
export var
./primer6-a
# EOF
#!/bin/bash
# Вторият файл.
echo "The value of var is $var"
# EOF
Изпълнението на скрипта (обърнете внимание че вторият файл
трябва да е primer6-a, ако използвате друго име, сменете името на
файла в първия скрипт).
$ ./primer6
The value of var is 100
$
Друг начин за деклариране на променливи е командата declare.
Синтаксисът на тази команда е:
30
declare -тип име-на-променливата
Типовете променливи са:
-r - readonly
-i - integer (цяло число)
-а - array (масив)
-x - export
Пример:
#!/bin/bash
declare -i var # декларираме променлива от тип integer
var=100
echo $var
declare -r var2=123.456 # декларираме readonly променлива
echo $var2
var2=121.343 # опитваме се да променим стойността на var2
echo $var2 # стойността на var2 ще е все още 123.456
Изпълнението на скрипта:
$ ./primer7
100
123.456
bash: var2: readonly variable
123.456
$
Повече информация можете да видите в bash manual pages (man
bash).
User input, <<, аритметични операции
За да четете входни данни от вашия script трябва да
използвате командата read. В нея няма нищо трудно, но все пак
вижте примера:
Пример:
#!/bin/bash
31
echo -n "Enter a string: "
read str
echo "String you entered: $str"
Изпълнението на скрипта:
$ ./primer8
Enter a string: hello
String you entered: hello
$
С оператора << можете да предавате данни на някоя команда. След
него трябва да поставите свой ограничител, който представлява
някаква дума (пр. EOF) и след данните трябва да поставите същата
дума.
Пример:
#!/bin/bash
cat << EOF
sth
data
line
EOF
Изпълнението на скрипта:
$ ./primer9
sth
data
line
$
Командата let в bash се използва за аритметични операции. С
нея можете да сравните две стойности или да извършвате различни
операции като събиране и умножение. Тези операции често се
използват за управление на контролни структури (например цикъла
for, за който ще прочетете по-нататък) или за извършване на
изчисления. Синтаксисът на командата е показан по-долу:
$ let value1 operator value2
32
Освен този синтаксис можете да използвате двойни скоби.
$ (( value1 operator value2 ))
Можете да използвате направо операторите за аритметични
операции ако и двете променливи са от един и същи тип (например
integer).
Пример:
#!/bin/bash
echo -n "Enter the first number: "
read var1
echo -n "Enter the second: "
read var2
declare -i var3
echo ----------
echo "$var1 + $var2 = $(( $var1+$var2 ))" # тук използваме двойни
скоби, както виждате трябва да сложим $ пред израза, за да се
изчисли
let res=$var1*var2
echo "$var1 * $var2 = $res"
var3=100
var3=$var3+10
echo "$var3" #
тъй като тази променлива е декларирана като integer не е нужно да
използваме командата let
33
ГЛАВА 2
DNS услуги и админисриране на хардуер под Линукс
2.1. Анализиране на защитата на DNS услуги.
Чрез IP адресите се осъществява адресирането на дейтаграмите,
които носят в себе си данните.Неудобното е, че те са числа и трудно се
запомнят. Затова се въвежда система за именуване – DNS.Domain Name
System Domain Name System (DNS) е йерархична разпределена база от
данни. Тя съхранява информация за съотвтствието между Internet хост
имена и IP адреси и обратно, информация за маршрутизиране на ел. поща
идр. данни, използвани от Internet приложения.Клиентите търсят
информация в DNS, извиквайки resolver library, която изпраща заявки до
един от сървърите за имена (name servers) и интерпретира отговорите.
BIND софтуерът съдържа сървър за имена named, и две библиотеки -
resolver libraries: liblwres и libbind.
ISC BIND
BIND (Berkeley Internet Name Domain ) е реализация на DNS
протоколите и осигурява отворена система за редистрибуция на основните
компоненти на Domain Name System:
- Domain Name System server (named);
- Domain Name System resolver library;
- средства за верифициране на операциите на DNS server.
Домейни и имена на домейни
Данните, съхранени в DNS са domain names, организирани в
дървовидна структура.Всеки възел в дървото се нарича domain и му се
дава етикет. Името на домейна във възела е поредица от етикетите,
показващи пътя от възела до корена (root). В писмена форма се представя
като низ от етикети, от дясно наляво, разделени с точки.
Домейните представляват области от имена. Домейните са от първо,
второ и трето ниво. (Ако не се брои root.) Няма пречки да има домейни от
четвърто ниво, но те почти не се използват. Основният домейн е така
нареченият root домейн. Той няма име и е един единствен. Представя се с
точка. Под него се нареждат домейните от първо ниво, top-level domain
(TLD ).
Управлението на TLDs е делегирано на различни организации от
34
страна на ICANN, която менижира IANA, и е отговорна за DNS root зоната.
Най-често използвани TLDs са: eneric top-level domains (gTLD) –отворени
за регистрация за всеки по света, например: com, net, org, biz и др.
DNS йерархия
Resolving
DNS е йерархична именна система с три компонента – именно
пространство (как се изграждат имената), resolver-и и именни сървъри
(name servers). Resolver-те са абонатите в Internet, които знаят URL и искат
да получат съответния IP адрес. Процесът на преобразуване се нарича
resolving. Той се извършва от DNS протокола.
Зони
За по-лесно администриране пространството с имената е разделено
на области, наречени зони (zones) Всяка зона започва от възел и се
простира надолу до “листата” (leaf nodes) или до възли, където стартират
други зони. Данните за всяка зона се съхраняват в сървър за имена (name
server) , който отговаря на запитвания (queries) в рамките на зоната,
използвайки DNS протокол. Данните, които са обвързани с всяко име на
домейн, се съхраняват под формата на ресурсни записи, resource records
(RRs).
От особена важност е да се разбере разликата между зона и домейн,
за да се вникне в същността на сървъра за имена. Зона е точката на
делегиране на DNS дървото. Зоната се състои от тези последователни части
от дървото на домейните, за които сървърът за имена има пълна
информация и върху която има власт. Състои се от всички имена на
домейни, от дадена точка надолу по дървото с изключение на тези, които са
делегирани на други зони. Точката на делегиране се маркира с един или
повече записа: NS records, в родителската зона, които трябва да съвпадат с
еквивалентни NS записи в корена на делегираната зона.
Напр., да вземем домейна example.com, който включва имена като
host.aaa.example.com и host.bbb.example.com. ,example.com зоната включва
делегирания за зоните aaa.example.com и bbb.example.com. Една зона може
да съответства точно на един единствен домейн, но може и да включва
само част от домейна. Като останалата част от него да бъде делегирана на
други сървъри за имена.
Всяко име в DNS дървото е domain, даже ако е terminal, т.е няма
subdomains (поддомейни). Всеки поддомейн е домейн и всеки домейн
с изключение на root (коренния) е също поддомейн. Терминологията не е
интуитивна, за по-добро разбиране прочетете RFCs 1033, 1034 и 1035.
35
Master и slave зони
Макар че BIND се нарича "domain name server", той се занимава
предимно със зони. Декларациите master и slave във файла named.conf
определят зони а не домейни. Ако питате някой друг сайт дали иска да бъде
slave сървър на вашия domain, вие всъщност молите за slave услуга за
някакъв набор от зони. Видове зони Master Сървърът чете данните за
зоната директно от локалния диск (т.е от zone file) и е овластен да дава
отговори за тази зона. Hint В тази зона се дефинират root-servers. Slave
Зона slave е реплика на master зона и получава данни за тази зона чрез
зонов трансфер. slave ще даде овластен отговор за зоната, само ако има
валидни (не timed out) данни за зоната. Редът master определя IP адрес/и на
master сървър/и, с които slave контактува, за да refresh или update копие на
зоната.
Authoritative Name Servers
Всяка зона се обслужва най-малко от един овластен сървър за имена
(authoritative name server), който държи всички данни за зоната. За по-
висока надеждност се препоръчва зоната да има два или повече такива
сървъри. В отговорите на authoritative servers, в пакета с отговора, е
вдигнат бит "authoritative answer" (AA). Така по-лесно се диагностицират
(debugging) DNS конфигурациите с инструменти като dig. Primary Master
authoritative server, където се поддържа главното (master) копие на
данните за зоната. Нарича се primary master сървър или просто primary.
Той зарежда съдържанието на зоната от локален файл, редактиран ръчно
или генериран от някакъв друг локален файл. Този файл се нарича зонов -
zone file или master file.
Slave Servers
Другите authoritative servers, slave сървъри (известни още като
secondary) зареждат съдържанието на зоната от друг сървър чрез процес
на репликация - zone transfer. Обикновено данните се прехвърлят
директно от primary master, но е възможно и от друг slave. Т.е, slave server
може да действа като master за подчинен slave server.
Caching Name Servers resolver библиотеките, които присъстват в
повечето операционни системи, са stub resolvers, т.е те не са способни да
изпълняват пълния процес на DNS резолюция, “говорейки” директно с
authoritative servers. Те разчитат на локален сървър за имена, който да
изпълнява резолюцията вместо тях. Такъв сървър се нарича “recursive”
(рекурсивен ) сървър за имена, защото изпълнява рекурсивни търсения за
сметка на локалните клиенти.
Caching (recursive) Servers
За да се подобри производителността, рекурсивните сървъри
кешират резултатите от търсенията, които са изпълнили. Процесите на
рекурсия и кеширане са взаимно свързани, на термините recursive server и
caching server често се гледа като на синоними. Перодът от време, за
36
който един запис се държи в кеша, се контролира от Time To Live (TTL)
полето в него.
Кеширащият сървър за имена не е необходимо да изпълнява сам
пълното рекурсивно търсене. Вместо това той препраща (forward) някои
или всички заявки, които не може да удовлетвори, от своя кеш към кеша на
друг сървър за имена, който се определя като forwarder.
Многофункционални сървъри
Сървърът за имена BIND може едновременно да бъде и master за
някои зони, и slave за други зони, и кеширащ (рекурсивен) сървър за
определен брой локални клиенти.
Все пак, функциите на овластени (authoritative) услуги за имена и
такива на caching/recursive са логически разделени. Затова е по-изгодно да
работят на различни машини. Така ще се повиши надеждността и
сигурността.
Инсталиране на bind9
yum install bind bind-utils -y
Конфигуриране на DNS сървър става чрез редактиране на файла
/etc/named.conf
Отваряме този файл
vi /etc/named.conf
Всеки един конфигурационен файл изглежда така :
/
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8)
DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; 192.168.1.101;}; ### Master DNS IP ###
# listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.1.0/24;}; ### IP Range ###
allow-transfer{ localhost; 192.168.1.102; }; ### Slave DNS IP ###
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable
recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
37
recursion.
- If your recursive DNS server has a public IP address, you MUST enable
access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "unixmen.local" IN {
type master;
file "forward.unixmen";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "reverse.unixmen";
allow-update { none; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
Създаваме Forward Zone файл, който ще направим в /etc/named.conf
vi /var/named/forward.unixmen
копираме следното съдържание
$TTL 86400
@ IN SOA masterdns.unixmen.local. root.unixmen.local. (
2011071001 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
38
)
@ IN NS masterdns.unixmen.local.
@ IN NS secondarydns.unixmen.local.
@ IN A 192.168.1.101
@ IN A 192.168.1.102
@ IN A 192.168.1.103
masterdns IN A 192.168.1.101
secondarydns IN A 192.168.1.102
client IN A 192.168.1.103
По същия начин създаваме Reverse Zone файл.
vi /var/named/reverse.unixmen
$TTL 86400
@ IN SOA masterdns.unixmen.local. root.unixmen.local. (
2011071001 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
@ IN NS masterdns.unixmen.local.
@ IN NS secondarydns.unixmen.local.
@ IN PTR unixmen.local.
masterdns IN A 192.168.1.101
secondarydns IN A 192.168.1.102
client IN A 192.168.1.103
101 IN PTR masterdns.unixmen.local.
102 IN PTR secondarydns.unixmen.local.
103 IN PTR client.unixmen.local.
Стартираме DNS
systemctl enable named
systemctl start named
Настройка на Firewall
firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --permanent --add-port=53/udp
firewall-cmd --reload
Настройки на правата
chgrp named -R /var/named
chown -v root:named /etc/named.conf
restorecon -rv /var/named
restorecon /etc/named.conf
39
2.2. Анализиране на мрежовото и системно
администриране под Linux.
2.2.1.Мрежовото администриране
Базови настройки за нашите интерфейси можем да правим от
NetworkManager
Фигура 2.1. Проверка за наличие на интернет и интернет адресите
ни
Фигура 2.2. Избиране на автоматично или ръчно въвеждане на
интернет адрес
40
За повече информация използваме командата ip addr show
[root@dido diqn]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state
UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:76:c8:8c brd ff:ff:ff:ff:ff:ff
inet 192.168.11.134/24 brd 192.168.11.255 scope global dynamic
eno16777736
valid_lft 1340sec preferred_lft 1340sec
inet6 fe80::20c:29ff:fe76:c88c/64 scope link
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc
noqueue state DOWN group default qlen 1000
link/ether 52:54:00:de:14:e8 brd ff:ff:ff:ff:ff:ff
inet 192.168.124.1/24 brd 192.168.124.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master
virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:de:14:e8 brd ff:ff:ff:ff:ff:ff
В началото виждаме lo което ни дава информация за така
наречения loopback interface. Това е специален виртуален
интерфейс който се използва за отстраняване на проблеми и
диагностика. В случая нашият интернет е пуснат(UP) през кабел и
интерфейсът ни се казва eno16777736.
За повече информация относно даден мрежови интерфейс
използваме командата ifconfig последвана от името на интерфейса
:
root@dido diqn]# ifconfig eno16777736
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu
1500
inet 192.168.11.134 netmask 255.255.255.0 broadcast 192.168.11.255
inet6 fe80::20c:29ff:fe76:c88c prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:76:c8:8c txqueuelen 1000 (Ethernet)
RX packets 219291 bytes 330185525 (314.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 52583 bytes 3195758 (3.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Тази команда ни дава информация за приетите(RX) и
41
предадените(TX) пакети,както и информация за грешки и загубени
пакети.
Ping е друга команда с която можем да проверим
свързаността.
[root@dido diqn]# ping google.com
PING google.com (212.39.82.180) 56(84) bytes of data.
64 bytes from 212-39-82-180.ip.btc-net.bg (212.39.82.180): icmp_seq=1
ttl=128 time=26.1 ms
64 bytes from 212-39-82-180.ip.btc-net.bg (212.39.82.180): icmp_seq=2
ttl=128 time=10.7 ms
64 bytes from 212-39-82-180.ip.btc-net.bg (212.39.82.180): icmp_seq=3
ttl=128 time=10.2 ms
^C
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 10.224/15.714/26.156/7.386 ms
Командата route ни дава информация за интерфейсите и
адресите им.
[diqn@dido ~]$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 eno16777736
192.168.11.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777736
192.168.124.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
traceroute проследява пътя на пакетите .
[diqn@dido ~]$ traceroute google.com
traceroute to google.com (212.39.82.181), 30 hops max, 60 byte packets
1 gateway (192.168.11.2) 0.363 ms 0.360 ms 0.329 ms
2 * * *
3 * * *
[diqn@dido ~]$ traceroute abv.bg
traceroute to abv.bg (194.153.145.104), 30 hops max, 60 byte packets
1 gateway (192.168.11.2) 0.401 ms 0.260 ms 0.295 ms
2 * * *
3 * * *
Мрежови настройки можем да правим и чрез инструментите
system-config-network и nmtui (NetworkManager)
42
Nmtui
Фигура 2.3. Графичен интерфейс на мрежовия мениджър
Фигура 2.4. System-config-network (насройки на мрежови интерфейс)
Фигура 2.5. Създаване на нов интерфейс или конфигуриране на
DNS
43
Фигура 2.6. Edit connection в случая че сме избрали DNS
конфигурация
[root@dido diqn]# nmcli general status
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled enabled enabled enabled
[root@dido diqn]# nmcli connection show
NAME UUID TYPE DEVICE
Profile 1 127218bc-0f9d-4c3d-8f37-9d0171c5e595 802-3-ethernet
eno16777736
System eth1 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04 802-3-ethernet --
System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 802-3-ethernet --
virbr0-nic 577c3da7-eea6-439d-b57d-f5f358507b14 generic virbr0-nic
virbr0 70c1d93b-900a-4cb1-9dbc-a10977feed12 bridge virbr0
root@dido diqn]# nmcli connection show --active
NAME UUID TYPE DEVICE
Profile 1 127218bc-0f9d-4c3d-8f37-9d0171c5e595 802-3-ethernet
eno16777736
virbr0-nic 577c3da7-eea6-439d-b57d-f5f358507b14 generic virbr0-nic
virbr0 70c1d93b-900a-4cb1-9dbc-a10977feed12 bridge virbr0
[root@dido diqn]# nmcli device status
DEVICE TYPE STATE CONNECTION
virbr0 bridge connected virbr0
eno16777736 ethernet connected Profile 1
virbr0-nic tap connected virbr0-nic
lo loopback unmanaged --
44
Пускане и спиране на интерфейс
[root@dido diqn]#nmcli con up id bond0
[root@dido diqn]#nmcli con up id port0
[root@dido diqn]#nmcli dev disconnect iface bond0
[root@dido diqn]#nmcli dev disconnect iface eth0
Конфигуриране на статичен IP адрес virbr0
[root@dido diqn]# nmcli connection modify virbr0 +ipv4.routes
192.168.122.0/24 ipv4.gateway 10.10.10.1
[root@dido diqn]# hostnamectl status
Static hostname: dido
Icon name: computer-vm
Chassis: vm
Machine ID: 10a59e25b96046ecac643a613cf67051
Boot ID: 301fadd9b3344190a97e5dfe7d8f921f
Virtualization: vmware
Operating System: Fedora 23 (Workstation Edition)
CPE OS Name: cpe:/o:fedoraproject:fedora:23
Kernel: Linux 4.5.5-201.fc23.x86_64+debug
Architecture: x86-64
Променяме името на хоста като използваме nmcli
[root@dido diqn]# nmcli general hostname
dido
[root@dido diqn]# nmcli general hostname my-server
[root@dido diqn]# nmcli general hostname
my-server
[root@dido diqn]# systemctl restart systemd-hostnamed
Nginx Web Server
Подобно на други приложения от този вид, архитектурата на
nginx е модулна - при компилиране на софтуера се определя кои
модули да бъдат вградени в него. Съществуват и над 20
потребителски модула.
nginx може да се използва като обратен прокси сървър, който
прехвърля всички или само определени заявки към други физически
сървъри. Крайните сървъри могат се избират от nginx на ротационен
принцип, но решенията кой от тях да се използва могат да се взимат
и чрез по-сложни алгоритми, благодарение на допълнителни
модули. Често срещана употреба на приложението е за обработване
на заявки за статично съдържание и прехвърляне на по-сложните
заявки за динамично съдържание към по-сложен уеб сървър,
45
например Apache. Въпреки това, nginx има пълна FastCGI
поддръжка и може да изпълнява скриптове на всеки език за
програмиране, който поддържа този стандарт. Софтуерът може да
се използва и като SMTP,POP3 и IMAP прокси сървър.
При определени ситуации, особено при обслужване на заявки
за статично съдържание, nginx е по-бърз и заема по-малко ресурси
от конкурентния софтуер – Apache.
[root@my-server diqn]# dnf install nginx
Last metadata expiration check: 0:53:33 ago on Mon Jun 13 17:00:29 2016.
Dependencies resolved.
[root@my-server diqn]# systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-
user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@my-server diqn]# sudo systemctl start nginx
[root@my-server diqn]# sudo systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor
preset: disabled)
Active: active (running) since Mon 2016-06-13 17:55:07 EEST; 10s ago
Process: 3200 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 3187 ExecStartPre=/usr/sbin/nginx -t (code=exited,
status=0/SUCCESS)
Process: 3163 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited,
status=0/SUCCESS)
Main PID: 3206 (nginx)
CGroup: /system.slice/nginx.service
├─3206 nginx: master process /usr/sbin/nginx
└─3207 nginx: worker process
Jun 13 17:55:04 my-server systemd[1]: Starting The nginx HTTP and
46
reverse....
Jun 13 17:55:06 my-server nginx[3187]: nginx: the configuration file /etc...k
Jun 13 17:55:06 my-server nginx[3187]: nginx: configuration file /etc/ngi...l
Jun 13 17:55:07 my-server systemd[1]: Started The nginx HTTP and reverse
....
Hint: Some lines were ellipsized, use -l to show in full.
[root@my-server diqn]# firewall-cmd --permanent --add-service=http
success
[root@my-server diqn]# firewall-cmd --permanent --add-service=https
success
[root@my-server diqn]# firewall-cmd --reload
success
[root@my-server diqn]# ip a | grep inet
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
inet 192.168.10.101/24 brd 192.168.10.255 scope global dynamic
eno16777736
inet6 fe80::20c:29ff:fe76:c88c/64 scope link
inet 192.168.124.1/24 brd 192.168.124.255 scope global virbr0
Въвеждаме нашият интернет адрес в браузара.
Фигура 2.7. Стартови екрани на nginx.
47
Отваряме vi /etc/nginx/nginx.conf и търсим server_name _;
и го заместваме с нашият интернет адрес.
Фигура 2.8. Стартови екрани на nginx
Фигура 2.9. Графичен интерфейс на конфигуратора на BIND
48
2.2.2.Системно администриране
Yum install system-config-bind създава и конфигурира зони ако
вашия сървър работи като DNS сървър
HTTP (Yum install system-config-httpd) конфигурира вашия
компютър като Apache web server
Фигура 2.10. Състояние на апачи сървъра
NFS (Yum install system-config-nfs) директории от моя компютър
могат да се споделят по мрежата с други компютри чрез NFS service
Фигура 2.11. Графичния интерфейс на NFS сървър
49
Root Password (Yum install system-config-rootpassword) можем
да сменяме root парола
Фигура 2.12. Инструмент чрез който се създава руут акаунт и
парола
Samba NFS (Yum install system-config-samba) конфигурира
самба за споделяне на файлове
Фигура 2.13. Графичен интерфейс на самба сървър
50
Services (system-config-services) може да показва кой услуги са
стартирани, оттук можем да ги пускаме и спираме
Фигура 2.14. Графичен интерфейс на конфигурационния панел
на услугите които са пуснати на системата
Authentication (authconfig-gtk)— сменя начина по който вашите
потребители се влизат в системта ви.
Фигура 2.15. Панел за настройки на акаунти
51
Date & Time (system-config-date)—конфигурираме дата и време
Фигура 2.16. Настройки на време и дата
Printing (system-config-printer) конфигурираме локален принтер
Фигура 2.17. Конфугурационен панел на принтер
SELinux Management (policycoreutils-gui)— инсталира графичен
интерфейс на SELinux и можем да правим настройки по него
Фигура 2.18. Графичен интерфейс на SElinux
52
Users & Groups (system-config-users) добавя, показва и сменя
потребители и групи
Фигура 2.19. Графичен интерфей на потребителския мениджър
Configuration Editor (gconf-editor) директно правим промени по
GNOME конфигурационната база данни
Фигура 2.20. Създадена от Filelight итерактивна карта, чрез която се
визуализира използваното пространство от системата.
53
Фигура 2.21. Акаунт на всеки потребител
Една много полезна функция е да можем да ползваме акаунта
на всеки потребител като сме su. Това става с по следния начин
както е показано по-горе
Journalctl команда която ни показва съобщения с конкретен
случай от процесите които се случват при буутването на систематa
Фигура 2.22. Акаунт на всеки потребител
54
journalctl -f ще ни даде информация директно от systemd journal
dmesg е команда която ни дава сведения за хардуера,кои
драйвери са засечени от ядрото по време на процеса на буутване .
dmesg | less също ще ни даде информация за нашия хардуер
lspci е команда която ни показва информация за това какво е
има на нашите PCI слотове и устройствата свързани с тях,ако към
тази команда сложим -v ще ни даде повече информация,ако
напишем -vvv ще ни даде информация за нашия Ethernet
контролер.Ето още няколко примера с тази команда
lsusb,lscpu.
Lsmod – показва информация за различните модули ,за да
получим отделна информация за всеки от тях използваме
/sbin/modinfo -d е1000 ,като е1000 е името на модула,може да е
друго в зависимост от това какво искаме да видим.
Работа с дяловете на хард диска
Ще прегледаме няколко приложения на инструмента fdisk .
fdisk -l ни дава информация за дяла на хард диска .Пример :
[root@dido home]# fdisk -l /dev/sda
Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf4dcfc78
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 1026047 1024000 500M 83 Linux
/dev/sda2 1026048 20971519 19945472 9.5G 8e Linux LVM
/dev – директорията в която се съхранява информацията за
нашия хардуер.
Sdа – понеже пише а това означава първи хард диск, в втори и
т.н.
Ако имаме цифрата 1 или 2 след а то ест sda1 първи хард диск
първи дял sda2 първи хард диск втри дял.
55
Чрез командата tail -f /var/log/messages ни изкарва
съобщения за различния хардуер който прикачваме .
fdisk -l /dev/sda | grep /dev/sda показва дяловете на моя първи
хард диск
[root@dido diqn]# fdisk -l /dev/sda | grep /dev/sda
Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
/dev/sda1 * 2048 1026047 1024000 500M 83 Linux
/dev/sda2 1026048 20971519 19945472 9.5G 8e Linux LVM
[root@dido diqn]# pvdisplay /dev/sda2
--- Physical volume ---
PV Name /dev/sda2
VG Name fedora
PV Size 9.51 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 2434
Free PE 0
Allocated PE 2434
PV UUID 0oUA3K-NodK-FJ88-Qp6j-HZQe-HluB-hRMxI6
Минималното количество информация която може да се
запише тук е 4 мб (PE Size,Physical Extent),а максималното PV Size
9.51 GiB. VG Name-volume group name.
За да видим информация свързана с volume group(VG Name)
използваме командата vgdisplay последвана от името в случая от
горната команда знаем че то е fedora.
root@dido diqn]# vgdisplay fedora
--- Volume group ---
VG Name fedora
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 9.51 GiB
PE Size 4.00 MiB
Total PE 2434
56
Alloc PE / Size 2434 / 9.51 GiB
Free PE / Size 0 / 0
VG UUID DGf6Pi-p61x-xfXc-4H9p-idmq-c1t3-HMiRnj
За да видим информация свързана с logical volumes
използваме командата lvdisplay
[root@dido diqn]# lvdisplay fedora
--- Logical volume ---
LV Path /dev/fedora/swap
LV Name swap
VG Name fedora
LV UUID cnV2RE-KKHV-Nycc-2ZHN-IwON-3b3a-tdrpIb
LV Write Access read/write
LV Creation host, time dido, 2016-05-30 19:17:10 +0300
LV Status available
# open 2
LV Size 1.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
--- Logical volume ---
LV Path /dev/fedora/root
LV Name root
VG Name fedora
LV UUID LJQ5ic-qSoX-EN25-jP3l-eFdn-2UDP-qPZcDB
LV Write Access read/write
LV Creation host, time dido, 2016-05-30 19:17:12 +0300
LV Status available
# open 1
LV Size 8.51 GiB
Current LE 2178
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
57
Фигура 2.23. Различните дялове, volume groups и logical
volumes образуват заедно цялостната файлова система на Линукс
На фигура 2.23 е показана как различните дялове и volume
groups, and logical volumes се образуват заедно цялостната файлова
система на Линукс. Устройство sda1 е форматирано като файлова
система и е монтирано на /boot директорията. Устройство sda2 е
обем от информация която представлява vg_abc volume group.
Тогава lv-home и lv-root са монтирани на /home и съответно на други
директории.
Всеки хардуер на нашия компютър си има уникален номер
които се използва при различни процедури ,затова е добре да знаем
как да го видим това става с командата blkid :
[root@dido diqn]# blkid
/dev/sr0: UUID="2015-10-29-21-39-35-00" LABEL="Fedora-Live-WS-x86_64-
23-10" TYPE="iso9660" PTUUID="6b8b4567" PTTYPE="dos"
/dev/sda1: UUID="5d904dcd-9aae-4f35-a4ac-948624c38249" TYPE="ext4"
PARTUUID="f4dcfc78-01"
/dev/sda2: UUID="0oUA3K-NOdK-FJ88-Qp6j-HZQe-HLuB-hRMxI6"
TYPE="LVM2_member" PARTUUID="f4dcfc78-02"
/dev/mapper/fedora-root: UUID="1c9e24ad-9fe4-4379-9d26-767e1ed6f9e3"
TYPE="ext4"
/dev/mapper/fedora-swap: UUID="0a8cc841-d1be-4c6e-a718-07bcf80c6a06"
TYPE="swap"
58
2.3. Анализиране на управлението и наблюдението с команди
за мониторинг
Smem – предоставя ни информация за консумираната рам
памет
Инсталиране :
yum install smem python-matplotlib python-tk
yum install smem
[root@my-server diqn]# smem
PID User Command Swap USS PSS RSS
811 root /sbin/audispd 80 100 114 1668
817 root /usr/sbin/sedispatch 288 96 133 2864
802 root /sbin/auditd -n 332 168 210 280
Дава ни информация за паметта ,която се използва от всички
потребители.
[root@my-server diqn]# smem -w
Area Used Cache Noncache
firmware/hardware 0 0 0
kernel image 0 0 0
kernel dynamic memory 786360 393080 393280
userspace memory 842476 150252 692224
free memory 155200 155200 0
За да видим консумирана памет от системата.
[root@my-server diqn]# smem -u
User Count Swap USS PSS RSS
rtkit 1 0 404 433 3556
nobody 1 0 224 483 1988
avahi 2 0 312 663 4936
chrony 1 0 740 820 3908
dbus 1 0 1900 1992 5752
colord 1 0 2560 2897 9888
polkitd 1 0 6488 6621 13360
mysql 2 0 73064 73552 80272
gdm 25 1976 108172 137032 375652
root 39 6308 201488 212783 391484
diqn 49 1776 351920 408822 988252
Подрежда потребителите по консумирана памет.
[root@my-server diqn]# smem -p
PID User Command Swap USS PSS RSS
811 root /sbin/audispd 0.01% 0.01% 0.01% 0.09%
817 root /usr/sbin/sedispatch 0.03% 0.01% 0.01% 0.16
59
Консумираната памет в проценти
Monitorix System and Network Monitoring Tool
Инсталационен процес :
yum install rrdtool rrdtool-perl perl-libwww-perl perl-MailTools perl-MIME-Lite
perl-CGI perl-DBI perl-XML-Simple perl-Config-General perl-HTTP-Server-Simple
perl-IO-Socket-SSL wget
wget http://www.monitorix.org/monitorix-3.8.1-1.noarch.rpm
rpm -ivh monitorix-3.8.1-1.noarch.rpm
chkconfig --level 35 monitorix on
service monitorix start
systemctl start monitorix
vi /etc/selinux/config – Търсим полето на което пише
enforcing и го променяме на disabled .
След това отваряме баузара и пишем
http://localhost:8080/monitorix/
Фигура 2. 24. Информация получавана от този инструмента
Monitorix.
60
Фигура 2. 25. Изобразяване на трафика през различните портове
Фигура 2. 26. Nmon Monitoring Tool in Linux
Дава информация в реално време.
Част от статистиките на CPU, Memoroy, Disks, Resource.
На фигура 2. 26 и 2. 27 са дадени Glances – Real Time System
Monitoring.
диплона работа3
диплона работа3
диплона работа3

More Related Content

Viewers also liked

downloadfile-1
downloadfile-1downloadfile-1
downloadfile-1
Hasib Khan
 
IMTIAZ AHMED_2015
IMTIAZ AHMED_2015IMTIAZ AHMED_2015
IMTIAZ AHMED_2015
imtiaz ahmed
 
USWillQuest
USWillQuestUSWillQuest
USWillQuest
Cynthia Chang
 
Hardware
HardwareHardware
Hardware
Nathaly moscoso
 
Hypnotize me: A Literature Review on the Relationship between Hypnosis and Me...
Hypnotize me: A Literature Review on the Relationship between Hypnosis and Me...Hypnotize me: A Literature Review on the Relationship between Hypnosis and Me...
Hypnotize me: A Literature Review on the Relationship between Hypnosis and Me...
Daria Jolobova
 
IRC SF Spring 06 Newsletter
IRC SF Spring 06 NewsletterIRC SF Spring 06 Newsletter
IRC SF Spring 06 Newsletter
Alina Potts, MPH
 

Viewers also liked (6)

downloadfile-1
downloadfile-1downloadfile-1
downloadfile-1
 
IMTIAZ AHMED_2015
IMTIAZ AHMED_2015IMTIAZ AHMED_2015
IMTIAZ AHMED_2015
 
USWillQuest
USWillQuestUSWillQuest
USWillQuest
 
Hardware
HardwareHardware
Hardware
 
Hypnotize me: A Literature Review on the Relationship between Hypnosis and Me...
Hypnotize me: A Literature Review on the Relationship between Hypnosis and Me...Hypnotize me: A Literature Review on the Relationship between Hypnosis and Me...
Hypnotize me: A Literature Review on the Relationship between Hypnosis and Me...
 
IRC SF Spring 06 Newsletter
IRC SF Spring 06 NewsletterIRC SF Spring 06 Newsletter
IRC SF Spring 06 Newsletter
 

Similar to диплона работа3

Lotus Domino Admin Blast: LCTY 2011
Lotus Domino Admin Blast: LCTY 2011Lotus Domino Admin Blast: LCTY 2011
Lotus Domino Admin Blast: LCTY 2011IBS Bulgaria
 
Mozllla Labs presentation
Mozllla Labs presentationMozllla Labs presentation
Mozllla Labs presentationBogomil Shopov
 
Minimal linux live
Minimal linux liveMinimal linux live
Minimal linux live
Ivan Davidov
 
Distributed storage
Distributed storageDistributed storage
Distributed storage
Host.bg
 
безопасност и защита Cloud computing 10995
безопасност и защита Cloud computing 10995безопасност и защита Cloud computing 10995
безопасност и защита Cloud computing 10995Petya Radeva
 
Embedded Gnu
Embedded GnuEmbedded Gnu
Embedded Gnu
Kaloyan Tsvetkov
 
Адаптация на Linux за ARM устройства
Адаптация на Linux за ARM устройстваАдаптация на Linux за ARM устройства
Адаптация на Linux за ARM устройства
Leon Anavi
 
latest tech: (bulgarian language) de da znamm
latest tech: (bulgarian language) de da znammlatest tech: (bulgarian language) de da znamm
latest tech: (bulgarian language) de da znamm
boqn1
 
5klas lesson01
5klas lesson015klas lesson01
5klas lesson01
Andriana Hadzhiyska
 
FABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin NakovFABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin NakovSvetlin Nakov
 
Open source: от "голо желязо" до JavaScript
Open source: от "голо желязо" до JavaScriptOpen source: от "голо желязо" до JavaScript
Open source: от "голо желязо" до JavaScript
Leon Anavi
 
Безопасност и защита
Безопасност и защитаБезопасност и защита
Безопасност и защитаFatih Dmrl
 
операционни системи
операционни системиоперационни системи
операционни системиmtrad
 
безопасност и защита Cloud computing 10995
безопасност и защита Cloud computing 10995безопасност и защита Cloud computing 10995
безопасност и защита Cloud computing 10995Petya Radeva
 
SEO курс, лекция 11 - От заявка до рендиране
SEO курс, лекция 11 - От заявка до рендиранеSEO курс, лекция 11 - От заявка до рендиране
SEO курс, лекция 11 - От заявка до рендиранеLily Grozeva
 

Similar to диплона работа3 (20)

Lotus Domino Admin Blast: LCTY 2011
Lotus Domino Admin Blast: LCTY 2011Lotus Domino Admin Blast: LCTY 2011
Lotus Domino Admin Blast: LCTY 2011
 
Mozllla Labs presentation
Mozllla Labs presentationMozllla Labs presentation
Mozllla Labs presentation
 
Minimal linux live
Minimal linux liveMinimal linux live
Minimal linux live
 
Glossary internet
Glossary internetGlossary internet
Glossary internet
 
Distributed storage
Distributed storageDistributed storage
Distributed storage
 
безопасност и защита Cloud computing 10995
безопасност и защита Cloud computing 10995безопасност и защита Cloud computing 10995
безопасност и защита Cloud computing 10995
 
Embedded Gnu
Embedded GnuEmbedded Gnu
Embedded Gnu
 
Адаптация на Linux за ARM устройства
Адаптация на Linux за ARM устройстваАдаптация на Linux за ARM устройства
Адаптация на Linux за ARM устройства
 
latest tech: (bulgarian language) de da znamm
latest tech: (bulgarian language) de da znammlatest tech: (bulgarian language) de da znamm
latest tech: (bulgarian language) de da znamm
 
5klas lesson01
5klas lesson015klas lesson01
5klas lesson01
 
FABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin NakovFABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin Nakov
 
br15_single
br15_singlebr15_single
br15_single
 
Open source: от "голо желязо" до JavaScript
Open source: от "голо желязо" до JavaScriptOpen source: от "голо желязо" до JavaScript
Open source: от "голо желязо" до JavaScript
 
Безопасност и защита
Безопасност и защитаБезопасност и защита
Безопасност и защита
 
Uroc3 8klas
Uroc3 8klasUroc3 8klas
Uroc3 8klas
 
mcpnc
mcpncmcpnc
mcpnc
 
br14
br14br14
br14
 
операционни системи
операционни системиоперационни системи
операционни системи
 
безопасност и защита Cloud computing 10995
безопасност и защита Cloud computing 10995безопасност и защита Cloud computing 10995
безопасност и защита Cloud computing 10995
 
SEO курс, лекция 11 - От заявка до рендиране
SEO курс, лекция 11 - От заявка до рендиранеSEO курс, лекция 11 - От заявка до рендиране
SEO курс, лекция 11 - От заявка до рендиране
 

диплона работа3

  • 1. 1 Увод Много компютърни потребители използват променена версия на системата GNU всеки ден, без да го осъзнават. Поради странно стечение на обстоятелствата, версията на GNU, която широко се използва днес често бива наричана „Линукс“, и много потребители не са наясно, че това е в общи линии системата GNU, разработвана от проекта GNU. Наистина има Линукс и хората го използват, но това е само част от операционната система. Линукс е ядрото — онази програма в системата, която заделя ресурсите на машината за другите програми, които изпълнявате. Ядрото е съществена част от една операционна система, но е безполезно само по себе си. То може да функционира само в контекста на завършена операционна система. Линукс се използва обикновено в комбинация с операционната система GNU — цялата система всъщност е GNU, с Линукс като добавка, или GNU/Линукс. Всички така наречени „Линукс“ дистрибуции на практика са дистрибуции на GNU/Линукс. Много потребители не са напълно наясно за разликата между ядрото, което е Линукс, и цялата система, която те също наричат „Линукс“. Двусмислената употреба на наименованието не спомага за изясняването на това недоразумение. Тези потребители често мислят, че Линус Торвалдс е разработил цялата система през 1991 г. с малко помощ.
  • 2. 2 СЪДЪРЖАНИЕ Мрежова и системна администрация под Linux Глава 1. Управление на групи и потребители. 1.1. Теоретични сведения за виртуални машини под Linux. 1.2. Теоретични сведения за управление на групи и потребители в Linux. 1.3. Команди за боравене с файлова ситема. 1.4. Процеси в Linux и Bash shell. Глава 2. DNS услуги и админисриране на хардуер под Линукс. 2.1. Анализиране на защитата на DNS услуги. 2.2. Анализиране на мрежовото и системно администриране при Linux. 2.2.1.Мрежово администриране. 2.2.2.Системно администриране 2.3. Анализиране на управлението и наблюдението с команди за мониторинг.
  • 3. 3 ГЛАВА 1 УПРАВЛЕНИЕ НА ГРУПИ И ПОТРЕБИТЕЛИ. 1.1. Теоретични сведения за виртуални машини под Linux. Разглеждане основите на виртуализацията. Оценяване на преимуществата от виртуализацията. Създаване и използване на виртуални машини. Виртуализацията представлява една от най-модерните тенденции в работата с мрежи в наши дни. Според някои познавачи на тази област виртуализацията е най-доброто нещо, което се е случвало в света на компютрите от изобретяването на транзистора насам. Ако все още не сте започнали да виртуализирате своята мрежа, тогава можете да считате, че в момента си стоите на перона и наблюдавате как влакът се отдалечава от вас. Този материал представлява кратко въведение във виртуализацията, като се набляга на нейното използване, за да дадете възможност на хардуера на вашия мрежов сървър да предостави повече сървъри с по-малко хардуер. Виртуализация Основната идея зад виртуализацията е да се използва софтуер, който да симулира съществуването на хардуер. Тази мощна идея ви дава възможност да стартирате повече от една независима компютърна система върху една- единствена физическа компютърна система. Нека да предположим, че вашата организация има нужда от общо 12 сървъра, за да покрие своите нужди. Вие можете да стартирате всеки един от тези 12 сървъра на отделен компютър като в този случай ще имате нужда от 12 компютъра в сървърната си стая, или можете да използвате виртуализация, за да стартирате тези 12 сървъра само на 2 компютъра. Като резултат всеки един от тези два компютъра ще трябва да симулира по шест компютърни системи, като всяка една от тях ще работи с един от вашите сървъри. Всеки симулиран компютър представлява една виртуална машина („virtual machine“ - VM). Във всички отношения всяка една виртуална машина представлява пълна, самостоятелна компютърна система със свой-собствен процесор (или по-вероятно, процесори), памет, дискови устройства, CD-ROM/DVD устройства, клавиатура, мишка, монитор, мрежови интерфейси, USB портове и т.н. Както един истински компютър, всяка виртуална машина
  • 4. 4 изисква операционна система, за да може да свърши някаква продуктивна работа. При една типична среда на мрежов сървър всяка виртуална машина работи със свое собствено копие на Windows Server 2012 (или по-стара версия). Операционната система си няма и представа, че работи на виртуална машина, а не на истинска машина. Използвани термини: - Host (Домакин). Това е реалният физически компютър, на който работят една или повече виртуални машини. - Bare metal (Оголен метал). Друг термин за компютъра- домакин, на който работят една или повече виртуални машини. - Guest (Гост). Още един термин за виртуална машина, която работи на домакин. - Guest operating system (Операционна система-гост). Операционна система, която работи в рамките на виртуалната машина. Сам по себе си, гостът е просто една машина; тя изисква операционна система, за да може да работи. Операционната система-гост е това, което вдъхва живот на госта. Лицензиране. Microsoft третира всяка една виртуална машина като отделен компютър. Ето защо, ако сте стартирали шест госта на един домакин и всеки гост работи с Windows Server 2012, тогава вие се нуждаете от шест лиценза за Windows Server 2012. Виртуализацията беше разработена за базирани на PC компютри в началото на 1990-те. Ho идеята всъщност е много по- стара. През 1972 IBM пусна една операционна система, която се казваше просто VM, и разполагаше с почти всички основни характеристики, които могат да бъдат открити в съвременните продукти за виртуализация. VM даваше възможност на администраторите на мейнфреймкомпютрите System/370 на IBM да създават множество независими виртуални машини, всяка от които се наричаше виртуална машина (virtual machine) или VM. Тази терминология все още се използва в наше време. Всяка VM можеше да работи с някоя от различните операционни системи-гости, които бяха съвместими със System/370 и се представяше на тази операционна система-гост като един пълен, независим компютър System/370 със свои-собствени процесорни ядра, виртуална памет, дискови дялове и устройства за вход/изход. Ядрото на самата система VM се наричаше хипервайзор - още един термин, който се запази до наши дни. Продуктът VM, който IBM пусна през 1972, всъщност се базираше на един експериментален продукт, който IBM пусна за
  • 5. 5 ограничено използване през 1967. Преимущества при виртуализация Може да се подозира, че виртуализацията е неефективна, защото един реален компютър винаги ще бъде по-бърз, отколкото един симулиран компютър. Въпреки че реалните компютри наистина са по-бързи от симулираните компютри, технологиите за виртуализиране са толкова напреднали, че намаляването на производителността за работата върху виртуализирана машина вместо на реална машина е само няколко процента. Малкото забавяне на виртуализираните машини се дължи по- скоро на простия факт, че дори и най-тежко натоварените сървъри използват по-голямата част от своето време, чакайки да им бъде възложена някаква работа. В действителност много от сървърите прекарват почти цялото си време в бездействие. Тъй като компютрите стават все по-бързи и по-бързи, те прекарват още по- голяма част от своето време, без да вършат нищо. Виртуализацията представлява великолепен начин за използване на тази неизползвана мощ за обработване. Освен това базово преимущество по отношение на ефективността виртуализацията има няколко преимущества: Хардуерни разходи. Когато използвате виртуализация, вие обикновено можете да спестите много пари чрез намаляване на хардуерните разходи. Нека да предположим, че заместите десет сървъра, всеки един от които струва 4 000 E, с един сървър- домакин. Вярно е, че ще трябва да похарчите повече от 4 000 E за този сървър, тъй като той трябва да бъде максимално оборудван с памет, процесорни ядра, мрежови интерфейси и т.н. Така че най- вероятно ще ви наложи да отделите между 15 000 и 20 000 Е за сървъра-домакин. Като цяло обаче ще ви трябват много по-малко от 40 000 Е, които щяхте да похарчите за десет отделни компютъра по 4 000 Е всеки. Енергийни разходи. Много организации откриха, че виртуализирането намалява тяхната обща енергийна консумация на сървърните компютри с над 80 процента. Това спестяване е директен резултат от използването на по-малко компютърен хардуер, за да се върши повече работа. Един компютър-домакин, на който работят десет виртуални сървъра, използва приблизително една десета от енергията, която би била необходима, ако всеки един от десетте сървъра работеше на отделен хардуер. Възстановяемост. Едно от най-големите преимущества на виртуализацията не е в спестяването на средства, а във
  • 6. 6 възможността за бързо възстановяване от хардуерни проблеми. Нека да предположим, че вашата организация има десет сървъра, всеки един от които работи на отделен хардуер. Ако някой от тези сървъри „падне“ поради хардуерен проблем - да речем, повредена дънна платка — този сървър ще остане свален дотогава, докато не оправите компютъра. От друга страна, ако тези десет сървъра работят като виртуални машини на два различни домакина и единият от тези домакини „падне“, тогава виртуалните машини, които работят на падналия домакин, могат да бъдат „вдигнати“ на другия домакин в рамките на минути. Разбира се, сървърите ще работят с по-малка ефективност на един- единствен домакин, отколкото биха работили на два домакина, но най-важното в случая е това, че всички те ще работят след кратък период на прекъсване. В действителност, ако се използват най-модерните хипервайзори, прехвърлянето от паднал домакин към друг домакин може да стане автоматично и моментално така, че изобщо да няма никакъв период на прекъсване. На фигура 1.1 и 1.2 е показано структурата на Red Hat Enterprise Virtualization. Фигура 1.1. Структура на Red Hat Enterprise Virtualization Red Hat Enterprise Virtualization е направен на базата на KVM hypervisor който е виртуална машина с отворен код.Освен това, Red Hat Enterprise Virtualization работи на Red Hat Enterprise Linux осигурявайки производителност на повече от един милион I/O в секунда (IOPS) на един виртуален сървър. Това означава, че малко
  • 7. 7 виртуални машини (VMS), се могат да постигнат същите резултати, спестяваме разходите за софтуер и хардуерни ресурси, без да жертваме производителност. С хост от който може да има 160 процесора и 4 ТВ от RAM, можем да виртуализираме доста голям обем от хардуер, един клъстър има ограничения от 200 хоста. Фигура 1.2. Enterprise Virtualization хипервайзор Enterprise Virtualization хипервайзор има същото ядро като Red Hat Enterprise Linux, можете да използват голямо разнообразие от сертифицирани хардуерни платформи и хипервайзора наследява техните функции. Подобно на хардуерна операционна система е много стабилна и наследява технологиите за сигурност като Security-Enhanced Linux (SELinux), и отделна Red Hat Secure Virtualization (sVirt). Архитектурата на виртуализация Red Hat третира всяка виртуална машина като свой собствен процес, който е управляван от хипервайзора на ниво ядро (kernel-level hypervisor). Тъй като всяка виртуална машина е процес, който може да бъде маркиран от SELinux, той създава граница за да осигори сигурност около всяка виртуална машина. Тази граница се наблюдава и налага от ядрото като ограничава достъпа на виртуалната машина на ресурси извън тази граница.
  • 8. 8 1.2. Теоретични сведения за управление на групи и потребители в Linux. Команди за боравене с файлова ситема. Първо ще разгелдаме командата YUM (Yellowdog Updater Modified). YUM е мениджър на хранилището. С него лесно можем да търсим, инсталираме, обновяваме и премахваме пакети. Разработен и разпространен под GPL (General Public License) като отворен код което означава, че всеки може да свали кода и да има достъп до него за да може да се оправят грешки и да се разработват пакети . Чрез YUM можете да инсталирате пакети директно от хранилища(repositories ).Той се използва в Red Hat базираните линукс системи. Хранилището е организирано като място където са събрани всички пакети които YUM може да използва. Всички необходими файлове за приложението са компилирани в един файлов формат с разширение .rpm. Пакетният мениджър RPM инсталира тези .rpm пакети. А софтуерен пакет на Linux не е нищо друго освен един компресиран архив на файлове, състоящ се от определена информация за продукта, програмните файлове, икони, библиотеки и т.н. Ето как Yum работи: 1. Checking /etc/yum.conf 2. Checking /etc/sysconfig/rhn/up2date (RHEL only) 3. Checking /etc/yum.repos.d/*.repo files 4. Downloading RPM packages and metadata from a YUM repository 5. RPM packages installed to Linux file system 6. Store YUM repository metadata to local RPM database Фигура1.3. Архитектура на процесите когато инсталираме rpm с yum
  • 9. 9 По-долу са дадени основните команди които се използват при yum и кратки обеснения към тях. yum install firefox - инсталира пакет,в случая firefox yum remove firefox -премахва пакетния yum update mysql -обновява с последна стабилна версия yum list openssh -търси пакет с това име yum list openssh-4.3p2 -ако искаме да търсим специфична версия на пакета yum search vsftpd -ако не помним името на пакета или търсим нещо , но не знаем точното му име yum info firefox -когато искаме да видим информация за даден пакет пред да го инсталираме yum list | less -списък с всички възможни за инсталиране пакети в базата данни на yum yum list installed | less -дава ви списък с всички команди инсталирани на системата yum provides -дава ни възможност да разберем кой пакет на кой файл принадлежи например ПРИМЕР # yum provides /etc/httpd/conf/httpd.conf Loaded plugins: fastestmirror
  • 10. 10 httpd-2.2.3-63.el5.centos.i386 : Apache HTTP Server Repo : base Matched from: Filename : /etc/httpd/conf/httpd.conf httpd-2.2.3-63.el5.centos.1.i386 : Apache HTTP Server Repo : updates Matched from: Filename : /etc/httpd/conf/httpd.conf httpd-2.2.3-65.el5.centos.i386 : Apache HTTP Server Repo : updates Matched from: Filename : /etc/httpd/conf/httpd.conf httpd-2.2.3-53.el5.centos.1.i386 : Apache HTTP Server Repo : installed Matched from: Other : Provides-match: /etc/httpd/conf/httpd.conf yum check-update -показва ни колко пакета от инсталираните на системата имат възможност да се обновят yum update - обновява системата с последните възможни пакети В Линукс няколко пакета могат да образуват група от пакети. Когато инсталираме тази група ние инсталираме всички пакети в нея и по долу са дадени няколко примера : yum groupinstall 'MySQL Database' yum groupupdate 'DNS Name Server' yum groupremove 'DNS Name Server' yum repolist -списък с всички възможни хранилища на системата
  • 11. 11 yum repolist all -списък с всички хранилища yum --enablerepo=epel install phpmyadmin -инсталира спецефичен пакет от специфично хранилище yum shell - yum ни дава достъп до shell, където можем да изпълним множество от команди. Управление на групи и потребители Команди за управление на потребителски акаунти: id - показва id на потребители и групи(id е уникален номер в системата) -id username useradd, usermod, userdel- стандартни команди за добавяне,модифициране и изтриване на потребител -useradd diayn -passwd username -usermod -L username – заключване на потребител -usermod -U username – отключване на потребител -userdel -r username – изтриваме потребител с опцията -r ние го изтриваме и от директорията /home и mail spool
  • 12. 12 Възможни опции при използване на потребителски акаунти: -c 'comment' - comment може да се замести с коментар по наш избор примерно искаме да напишем цялото име на потребителя -e date - дата от която акаунта е бил валиден -g group_name – име на група -G group_list – списък с допълнителни имена -m създава home директорията ако не съществува -M – да не създава home директорията -p password – паролата се криптира с crypt -r – създава се системен акаунт с UID по-малко от 1000 и без home директория -u uid - ID на потребителя който е уникален и по малък от 999 Команди за управление на групи. По долу са дадени командите за управление на групи: groupadd, groupmod, groupdel – стандартни команди за добавяне,модифициране и изтриване на групи. -groupadd diaynsgroup -usermod -a -G group1 username -чрез usermod можем да променяме настройките на акаунта, в случая опцията -а е много важна с нея потребителя може да е част от тази и други групи,ако не се използва тази опция той е част само от тази група. За премахване на потребител от група няма директна команда, затова първо трябва да изведем списък с групите в които участва потребителя: id -nG username group1 group2 group3 .... -Тогава слагаме групите в които искаме потребителя да не
  • 13. 13 бъде изтрит, а групата от която искаме да бъде изтрит я пропускаме, използваме и опцията –G: usermod -G group1,group3,... username В този случай потребителя username ще бъде премахнат от group2 Допълнителни команди: gpasswd – команда за администриране на /etc/group конфигурационен файл, pwck, grpck – команди които можем да използваме да проверим парола,група и вървящите с тях shadow files, pwconv, pwunconv – команда с която можем да преобразуваме в shadow passwords в стандартни и обратното. Команди чрез които можем да боравим с файловата системата Когато работим с Linux трябва да знаем много добре командите защото много често няма да има инсталиран графичен интерфейс, когато се налага да работим. Винаги може да се инсталира и графична среда, но за нея се изисква значително повече ресурс от машината от това тя да не е с графична среда. Въпреки, че може да е малко досадно в началото работата с командите в Linux е от изключително значение. Ето и няколко примерни команди : cd - смяна на директорията pwd - показва директорията в която се намираме в момента mkdir - създаване на директорията chmod - дава разрешение за файл или директория да се
  • 14. 14 чете,пише,редактира ls – показва какво има в директорията Една от най-базовите команди е cd, ето и няколко примера: $ cd /usr/share/ $ pwd /usr/share $ cd doc /usr/share/doc $ cd $ pwd /home/chris Тук е показана и командата pwd. Ако напишем само cd ние ще се върнем в /home директорията. Създаване на нова директория. $ mkdir test Името на директория е test Проверка на разрешението на директорията $ ls -ld test drwxr-xr-x 2 joe sales 1024 Jan 24 12:17 test За да променим разрешението на директорията използваме команда: $ chmod 700 test В случая разрешението е да можеш да правиш всичко rwx------ Показва скрити и не скрити файлове
  • 15. 15 ls -a . apple docs grapefruit pointer_to_apple .stuff watermelon .. banana grape .hiddendir script.sh .tmpfile Команда при която се показват файлове, които най-често са променяни: $ ls -at .tmpfile .hiddendir .. docs watermelon banana script.sh . .stuff pointer_to_apple grapefruit apple grape За да видите всичко, което е тип файл $ ls -F apple banana docs/ grape grapefruit pointer_to_apple@ script.sh* watermelon Без да показва файлове започващи с G $ ls --hide=g* apple banana docs pointer_to_apple script.sh watermelon За да видим информация за директорията $ ls -ld $HOME/test/ drwxrwxr-x. 4 joe joe 4096 Dec 18 22:00 /home/joe/test/ Създаване на директория на няколко слоя $ mkdir -p $HOME/test/documents/memos/
  • 16. 16 Показва всички файлове и директория назад $ ls -R Показва файловете по размер $ ls -S Даване на права на файлове След като сме поработили малко с Линукс няма начин да не сме се натъквали на съобщението „достъпът отказан“(Permission denied) . Permission в Линукс се свързва с това че можем да правим така че дадени файлове и директории да може да им се дава различен достъп на потребителя ,като по този начин да се предпазват различни файлове и директори които са важни за системата. Всеки файл има девет бита които определят достъпа до него .Тези битове обикновено изглеждат по следния начин - rwxrwxrwx. От тези девет бита първите три дават права на собственика на файла,следващите три на група,последните три на всички останали. Съответно трите букви означават r-read чета, w- write пиша, x-execute изпълнявам. Ако се появи тире на мястото на една от трите букви това означава ,че правото да се дава позволение е изключено(rwx). 1-когато даваме права на файл 2-когато даваме права на директорията Read – 1 можем да видим какво има във файла – 2 виждаме в кои файлове и директории се съдържа. Write – 1променяме съдържанието на файла,преименуваме го или го изтриваме – 2 добавяме/премахваме файлове и поддиректории към тази директория. Execute – 1 стартира файла като програма 2 – променя директорията като текуща директория,търси от директорията или изпълнява програма от директорията. Сега ще използваме командата ls -ld за да видим кой може да чете,пише или изпълнява този файл .
  • 17. 17 ПРИМЕР : $ ls -ld ch3 test -rw-rw-r-- 1 joe sales 4983 Jan 18 22:13 ch3 drwxr-xr-x 2 joe sales 1024 Jan 24 13:47 test Първата линия показва, че файла ch3 може да се чете и пише от притежателя и група. Всички останали потребители имат разрешението само да го четат което означава , че не могат да го променят или премахват. Втория ред ни показва директорията test. Собственика има правата да чете, пише и изпълнява, докато групата и всички останали потребители могат само да четат и изпълняват. Като резултат собственика може да добавя, сменя или изтрива файлове от директорията ,а всички останали могат четат файловете и да видят какво има в директорията. Промяна на правата с chmod (с цифри) Един от начините за промяна на правата на файл е с цифри r=4, w=2, and x=1, като всеки сбор от цифри дава различни права. Например за да зададен права да можем да правим всичко задаваме първата цифра 7 (4+2+1), след това за да могат само да четат група и всички останали пишем втора и трета цифра пишем 4, и така крайната цифра се получава 744. Комбинациите за даване на права могат да общ сбор от 0 до 7, като 0 означава че нямаме, а 7 означава че имаме пълни права. Ето и някои примери за даване на права с цифри и какво означават те : chmod 777 - rwxrwxrwx chmod 755 -rwxr-xr-x chmod 644 rw-r—r- chmod 000 --------- Ако искаме да дадем права на цяла директория можем да го направим като използваме -R например за директорията $HOME/myapps. Ето как ще стане :
  • 18. 18 chmod -R 755 $HOME/myapps По този начин всички файлове в директорията включително и самата директория имат тези права (755). Промяна на правата с букви Може да задаваме права ,като използваме (–) и (+),като тези знаци показват съответно ,кой няма и има права. Ето няколко примера: chmod a-w file правата са : r-xr-xr-x a-означава потребители(users), т.е. кой в случая няма да има има права, - това означава че в случая потребителите няма да имат права, ако имаме + това означава че имаме права, w – това показва за какво потребителите няма да имат права ,няма да могат да пишат (write). chmod o-x права rwxrwxrw- chmod go-rwx rwx------ В случая групи и всички останали не могат да работят с този файл. chmod u+rw rw------- Само потребителя може да чете и пише. chmod a+x --x--x--x chmod ug+rx r-xr-x--- chmod -R o-w $HOME/myapps
  • 19. 19 Този пример показва как в директорията myapps всички останали (“other”), нямат права да пишат. 1.3. Процеси в Linux и Bash shell. При стартиране на Linux се изпълняват няколко процеса. На фигура 1.4 е дадена последователността на процеси в Linux. Фигура 1.4. Процеси при стартирането на линукс систем 1 BIOS BIOS означава Basic Input/Output System . Извършва проверки по системата. Търси зарежда и изпълнява boot loader. Веднъж щом boot loader е засечена и заредила в паметта, BIOS и дава контроола на системата. Накратко казано BIOS зарежда и изпълнява MBR boot loader . 2. MBR MBR означава Master Boot Record. Той се намира на първия сектор на диска от който зарежда системта (bootable disk)/dev/sda. /dev е директорията в която се намира информация за нашия хардуер. sd означава scsi device, а първия диск, след това ако има цифра я означава кой дял (partition) e това.
  • 20. 20 MBR е голям по обем - 512 bytes. Има три компонента. Първият е boot loader и е 442 bytes. boot manager или още boot loader представлява междинна част от код, която помага на хардуера и фърмуера на вашата система да зареди операционната система. Вторият е partition table 64 bytes. И третият е mbr validation check който е 2 bytes. Накратко казано MBR зарежда и стартира GRUB. Фигура 1.5. Схема на MBR 3 GRUB GRUB идва от Grand Unified Bootloader. Ако имате инсталирани множество images на ядрото на системата ви, можете да изберете кой от тях да бъде изпълнено. GRUB ви показва началния екран, изчаква няколко секунди, ако не въведете нищо, се зарежда изображението на ядрото по подразбиране, както е посочено в конфигурационния файл на GRUB. Grub конфигурационния файл е /boot/grub/grub.conf . #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-194.el5PAE) root (hd0,0) kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/ initrd /boot/initrd-2.6.18-194.el5PAE.img
  • 21. 21 Както може да се вижда от тази информация ,тук е ядрото kernel и initrd image. Grub зарежда и изпълнява Kernel and initrd images. (тук съм дал примери как изглежда процеса с и без графичен интрефейс ) Фигура 1.6. GRUB при стартиране на системата 4. Kernel Маунтва се файловата система в “root=” in grub.conf.Kernel изпълнява /sbin/init . Init е първата програма стртирана от ядрото(първия процес в системата). initrd означава Initial RAM Disk. Initrd използва ядрото(Kernel) като временна файлова система ,докато ядрото зарежда и се маунтне истинската файлова система. Също така ядрото съдържа необходимите драйвери за всякакъв хардуер който можем да ползваме. Когато искаме да ползваме дадена конфигурация трябва трябва да проверим дали ядрото на системата поддържа хардуера и. 5. Init Init определя по подразбиране initlevel от /etc/inittab и потребителите могат да направят така че да се зареждат всякакви програми. Чрез ‘grep initdefault /etc/inittab’ можем да видим run level по подразбиране. Обикновено по подразбиране са номер 3 и 5.
  • 22. 22 6. Runlevel programs Когато системата зарежда, може да видите различни услуги да се стартират. Например, може да се видите, "“starting sendmail …. OK". Те са изпълнени от run level директорията, така както се зададени по подразбиране. В зависимост от настройките които са по подразбиране на init level ,системата ще стартира една от следните директории : Run level 0 – /etc/rc.d/rc0.d/ Run level 1 – /etc/rc.d/rc1.d/ Run level 2 – /etc/rc.d/rc2.d/ Run level 3 – /etc/rc.d/rc3.d/ Run level 4 – /etc/rc.d/rc4.d/ Run level 5 – /etc/rc.d/rc5.d/ Run level 6 – /etc/rc.d/rc6.d/ Програмите които стартират с S ще се стартират по стартирането на системата. S е за стартиране. Програмите които започват с К няма да се стартират . К означава kill. Това е накратко казано какво се случва когато стартираме Линукс. Това са няколко схеми, които описват по-подробно процесите. Фигура 1.7. Процеси при стартиране на Линукс
  • 23. 23 Фигура 1.8. Процеси при стартиране, рестартиране и спиране на системата. Създаване на процес в операционна система Операционните системи трябва да могат да създават процеси по някакъв начин.Ако система предназначена само за едно действие процесите които са необходими да се създават само при стартирането и и това е, но когато имаме по сложна система трябва тези процеси да могат да се включват и спират, за да има по-голяма ефективност и гъвкавост, подобно на автомобилен състезател ,който отстрани изглежда че са просто кара една бърза и хубава кола, всъщност за да е максимално бърз той извършва множество движения , преценя скоростта в завоите и т.н. Четири основно принципа са необходими за да се създаде процес :
  • 24. 24 1 Да се инициализира системата. 2 Да се изпълни така наречените system call.Те най-просто могат да се обяснят като функция на езика С която се извиква от стандартна библиотека. 3 Заявка на потребител да създаде нов процес. 4 Стартира се процес. Когато една система се стартира също така много процеси се стартират. Някои ние виждаме те се наричат foreground processes, но други работят без да можем да ги видим и имат специфични функции те наричат background processes. Например един такъв процес може да бъде направен да приема нашета поща ,през по- голямата част от деня той не е активен,но когато ние получим някакво съобщение той се активира . По същия начин например се обработват заявките от различните сайтове ,процеса който ги обработва не е активен през цялото време само когато е необходимо . Такива процеси са наричат daemons. В една голяма система съществуват много такива процеси. Bash shell Фигура 1.9. shell(обвивка). Всички UNIX системи поддържат голям брой програмни езици, позволяващи на потребителите да си правят свои собсвени програми. Всички дистрибуции имат поддръжка за програмиране за множество командни интерпретатори, езици от по-високо ниво като Perl и Tcl/TK и GUI програмиране за графични среди като KDE и GNOME. Най-често използваните обвивки (shells) са: bash – bourne again shell
  • 25. 25 sh - shell csh - C shell tcsh - Tenex C shell (C shell без поддръжка на tab-completion) zsh - Z shell ksh - Korn Shell Една програма за bash комбинира UNIX командите по даден начин, за да изпълни определена задача. Програмата за bash представлява текстов файл, съдържащ команди, които можете да въведете с най-обикновен текстов редактор като pico, vi и др. #!/bin/bash echo "Hello, World" За да направите традиционния Hello, World script. Можете да стартирате скрипта като напишете точка (.) пред името на файла. Ако файлът се казва hello, командата би изглеждала така: $ . hello Hello, World Другият начин е да направите скрипта изпълним: $chmod +x hello и да го стартирате с: $ ./hello Hello, World $ Скриптът hello съдържа два реда. Първия ред казва на системата коя програма да ползва, за да прочете командите във файла, а втория изкарва на екрана Hello, World. Можете да въвеждате коментари в скриптовете си чрез знака "#". #!/bin/bash # Това е коментар echo "Hello, World" # Това също. Променливи. За да присвоите някаква стойност на променлива трябва да използвате оператора за присвояване (знака за равенство (=)). Въведете името на променливата, знака за равенство и след това стойността й.
  • 26. 26 Пример: num=10 Обърнете внимание, че не трябва да използвате интервали около оператора за присвояване. Ако сложите интервал след него (num= 10), bash ще се опита да изпълни команда "num=" с аргумент 10. Можете да се обърнете към стойността на променлива чрез знака за долар ($). Ето как би изглеждал скриптът Hello, World ако използваме променливи: #!/bin/bash var="Hello, World" echo $var Въпреки че стойностите на променливите могат да бъдат произволни символи, ако включите символи,които се използват от обвивката, възникват проблеми. Тези символи са: интервал, точка (.), знак за долар ($), по-голямо (>) и по-малко (<), (|), (&), (*), ({) и (}). Тези знаци могат да се използват като стойност на променлива ако са поставени в двойни или единични кавички или с обратно наклонени черти. С двойни кавички можете да използвате всички запазени знаци без знака за долар ($). За да го включите в стойността на променливата можете да използвате обратно наклонена черта преди него ($) или да оградите стойността на променливата с единични кавички. Следващия пример илюстрира всичко описано до сега. #!/bin/bash num1=10 num2=20 msg1="$num1 < $num2 & $num2 > $num1" # Тук ще се покажат всички знаци без знака за долар, който използваме за да се обърнем към стойността на променливата. echo $msg1 msg2="$100 > $10" # Тук използваме обратно наклонена черта за да покажем знака за долар
  • 27. 27 echo $msg2 msg3='Here we can use all of these symbols: ".", ">", "<", "|", "$", etc' По този начин всички знаци ще се покажат на екрана. Единственият символ, който не може да се използва е единична кавичка (') echo $msg3 При всички примери по-горе не е нужно стрингът да се слага в променлива. echo ""$msg1" is not needed to print '$num1 < $num2 & $num2 > $num1'" Изпълнението на скрипта: $ ./primer1 10 < 20 & 20 > 10 $100 > $10 Here we can use all of these symbols: ".", ">", "<", "|", "$", etc $msg1 is not needed to print '10 < 20 & 20 > 10' $ За да присвоите на някоя променлива резултата от изпълнението на някаква команда, трябва да оградите командата в обратно наклонени апострофи. #!/bin/bash lsvar=`ls ~` echo $lsvar Изпълнението на скрипта: $ ./primer2 books docs ircd movies source work phun stuff $ Ако поставите команда в единични кавички след това можете да използвате името на тази променлива, като друго име на командата. #!/bin/bash lssrc='ls ~/source/c'
  • 28. 28 $lssrc Изпълнението на скрипта: $ ./primer3 me0w.c m00.c $ За да използвате резултата от изпълнението на команда в стринг или променлива трябва да заградите командата в скоби и да поставите знака за долар пред нея ($(ls)). #!/bin/bash echo "The date is $(date)" Изпълнението на скрипта: $ ./primer4 The date is пн юни 10 20:36:49 UTC 2002 $ В bash има и няколко специални променливи, които се използват за аргументите на скрипта за обвивката. $0 - име на команда $1 до $9 - аргументите на скрипта $* - всички аргументи от командния ред $@ - всички аргументи от командния ред поотделно $# - броят на аргументите от командния ред Ще разберете разликата между $* и $@ след като прочетете за контролната структура for-in. Погледнете долния пример за по-голяма яснота за специалните променливи. #!/bin/bash echo "The first argument is $1, the second $2" echo "All arguments you entered: $*" echo "There are $# arguments" Изпълнението на скрипта:
  • 29. 29 $ ./primer5 arg1 arg2 arg3 arg4 The first argument is arg1, the second arg2 All arguments you entered: arg1 arg2 arg3 arg4 There are 4 arguments $ Ако изпълните друг скрипт от текущо изпълняващият се, текущият скрипт спира изпълненитето си и предава контрола на другия. След изпълнението му се продължава първия скрипт. При този случай всички променливи, дефинирани в първия скрипт не могат да се използват във втория. Но ако експортирате променливите от първия те ще могат да се използват във втория. Това става с командата export. #!/bin/bash # Това е първият файл. var=100 export var ./primer6-a # EOF #!/bin/bash # Вторият файл. echo "The value of var is $var" # EOF Изпълнението на скрипта (обърнете внимание че вторият файл трябва да е primer6-a, ако използвате друго име, сменете името на файла в първия скрипт). $ ./primer6 The value of var is 100 $ Друг начин за деклариране на променливи е командата declare. Синтаксисът на тази команда е:
  • 30. 30 declare -тип име-на-променливата Типовете променливи са: -r - readonly -i - integer (цяло число) -а - array (масив) -x - export Пример: #!/bin/bash declare -i var # декларираме променлива от тип integer var=100 echo $var declare -r var2=123.456 # декларираме readonly променлива echo $var2 var2=121.343 # опитваме се да променим стойността на var2 echo $var2 # стойността на var2 ще е все още 123.456 Изпълнението на скрипта: $ ./primer7 100 123.456 bash: var2: readonly variable 123.456 $ Повече информация можете да видите в bash manual pages (man bash). User input, <<, аритметични операции За да четете входни данни от вашия script трябва да използвате командата read. В нея няма нищо трудно, но все пак вижте примера: Пример: #!/bin/bash
  • 31. 31 echo -n "Enter a string: " read str echo "String you entered: $str" Изпълнението на скрипта: $ ./primer8 Enter a string: hello String you entered: hello $ С оператора << можете да предавате данни на някоя команда. След него трябва да поставите свой ограничител, който представлява някаква дума (пр. EOF) и след данните трябва да поставите същата дума. Пример: #!/bin/bash cat << EOF sth data line EOF Изпълнението на скрипта: $ ./primer9 sth data line $ Командата let в bash се използва за аритметични операции. С нея можете да сравните две стойности или да извършвате различни операции като събиране и умножение. Тези операции често се използват за управление на контролни структури (например цикъла for, за който ще прочетете по-нататък) или за извършване на изчисления. Синтаксисът на командата е показан по-долу: $ let value1 operator value2
  • 32. 32 Освен този синтаксис можете да използвате двойни скоби. $ (( value1 operator value2 )) Можете да използвате направо операторите за аритметични операции ако и двете променливи са от един и същи тип (например integer). Пример: #!/bin/bash echo -n "Enter the first number: " read var1 echo -n "Enter the second: " read var2 declare -i var3 echo ---------- echo "$var1 + $var2 = $(( $var1+$var2 ))" # тук използваме двойни скоби, както виждате трябва да сложим $ пред израза, за да се изчисли let res=$var1*var2 echo "$var1 * $var2 = $res" var3=100 var3=$var3+10 echo "$var3" # тъй като тази променлива е декларирана като integer не е нужно да използваме командата let
  • 33. 33 ГЛАВА 2 DNS услуги и админисриране на хардуер под Линукс 2.1. Анализиране на защитата на DNS услуги. Чрез IP адресите се осъществява адресирането на дейтаграмите, които носят в себе си данните.Неудобното е, че те са числа и трудно се запомнят. Затова се въвежда система за именуване – DNS.Domain Name System Domain Name System (DNS) е йерархична разпределена база от данни. Тя съхранява информация за съотвтствието между Internet хост имена и IP адреси и обратно, информация за маршрутизиране на ел. поща идр. данни, използвани от Internet приложения.Клиентите търсят информация в DNS, извиквайки resolver library, която изпраща заявки до един от сървърите за имена (name servers) и интерпретира отговорите. BIND софтуерът съдържа сървър за имена named, и две библиотеки - resolver libraries: liblwres и libbind. ISC BIND BIND (Berkeley Internet Name Domain ) е реализация на DNS протоколите и осигурява отворена система за редистрибуция на основните компоненти на Domain Name System: - Domain Name System server (named); - Domain Name System resolver library; - средства за верифициране на операциите на DNS server. Домейни и имена на домейни Данните, съхранени в DNS са domain names, организирани в дървовидна структура.Всеки възел в дървото се нарича domain и му се дава етикет. Името на домейна във възела е поредица от етикетите, показващи пътя от възела до корена (root). В писмена форма се представя като низ от етикети, от дясно наляво, разделени с точки. Домейните представляват области от имена. Домейните са от първо, второ и трето ниво. (Ако не се брои root.) Няма пречки да има домейни от четвърто ниво, но те почти не се използват. Основният домейн е така нареченият root домейн. Той няма име и е един единствен. Представя се с точка. Под него се нареждат домейните от първо ниво, top-level domain (TLD ). Управлението на TLDs е делегирано на различни организации от
  • 34. 34 страна на ICANN, която менижира IANA, и е отговорна за DNS root зоната. Най-често използвани TLDs са: eneric top-level domains (gTLD) –отворени за регистрация за всеки по света, например: com, net, org, biz и др. DNS йерархия Resolving DNS е йерархична именна система с три компонента – именно пространство (как се изграждат имената), resolver-и и именни сървъри (name servers). Resolver-те са абонатите в Internet, които знаят URL и искат да получат съответния IP адрес. Процесът на преобразуване се нарича resolving. Той се извършва от DNS протокола. Зони За по-лесно администриране пространството с имената е разделено на области, наречени зони (zones) Всяка зона започва от възел и се простира надолу до “листата” (leaf nodes) или до възли, където стартират други зони. Данните за всяка зона се съхраняват в сървър за имена (name server) , който отговаря на запитвания (queries) в рамките на зоната, използвайки DNS протокол. Данните, които са обвързани с всяко име на домейн, се съхраняват под формата на ресурсни записи, resource records (RRs). От особена важност е да се разбере разликата между зона и домейн, за да се вникне в същността на сървъра за имена. Зона е точката на делегиране на DNS дървото. Зоната се състои от тези последователни части от дървото на домейните, за които сървърът за имена има пълна информация и върху която има власт. Състои се от всички имена на домейни, от дадена точка надолу по дървото с изключение на тези, които са делегирани на други зони. Точката на делегиране се маркира с един или повече записа: NS records, в родителската зона, които трябва да съвпадат с еквивалентни NS записи в корена на делегираната зона. Напр., да вземем домейна example.com, който включва имена като host.aaa.example.com и host.bbb.example.com. ,example.com зоната включва делегирания за зоните aaa.example.com и bbb.example.com. Една зона може да съответства точно на един единствен домейн, но може и да включва само част от домейна. Като останалата част от него да бъде делегирана на други сървъри за имена. Всяко име в DNS дървото е domain, даже ако е terminal, т.е няма subdomains (поддомейни). Всеки поддомейн е домейн и всеки домейн с изключение на root (коренния) е също поддомейн. Терминологията не е интуитивна, за по-добро разбиране прочетете RFCs 1033, 1034 и 1035.
  • 35. 35 Master и slave зони Макар че BIND се нарича "domain name server", той се занимава предимно със зони. Декларациите master и slave във файла named.conf определят зони а не домейни. Ако питате някой друг сайт дали иска да бъде slave сървър на вашия domain, вие всъщност молите за slave услуга за някакъв набор от зони. Видове зони Master Сървърът чете данните за зоната директно от локалния диск (т.е от zone file) и е овластен да дава отговори за тази зона. Hint В тази зона се дефинират root-servers. Slave Зона slave е реплика на master зона и получава данни за тази зона чрез зонов трансфер. slave ще даде овластен отговор за зоната, само ако има валидни (не timed out) данни за зоната. Редът master определя IP адрес/и на master сървър/и, с които slave контактува, за да refresh или update копие на зоната. Authoritative Name Servers Всяка зона се обслужва най-малко от един овластен сървър за имена (authoritative name server), който държи всички данни за зоната. За по- висока надеждност се препоръчва зоната да има два или повече такива сървъри. В отговорите на authoritative servers, в пакета с отговора, е вдигнат бит "authoritative answer" (AA). Така по-лесно се диагностицират (debugging) DNS конфигурациите с инструменти като dig. Primary Master authoritative server, където се поддържа главното (master) копие на данните за зоната. Нарича се primary master сървър или просто primary. Той зарежда съдържанието на зоната от локален файл, редактиран ръчно или генериран от някакъв друг локален файл. Този файл се нарича зонов - zone file или master file. Slave Servers Другите authoritative servers, slave сървъри (известни още като secondary) зареждат съдържанието на зоната от друг сървър чрез процес на репликация - zone transfer. Обикновено данните се прехвърлят директно от primary master, но е възможно и от друг slave. Т.е, slave server може да действа като master за подчинен slave server. Caching Name Servers resolver библиотеките, които присъстват в повечето операционни системи, са stub resolvers, т.е те не са способни да изпълняват пълния процес на DNS резолюция, “говорейки” директно с authoritative servers. Те разчитат на локален сървър за имена, който да изпълнява резолюцията вместо тях. Такъв сървър се нарича “recursive” (рекурсивен ) сървър за имена, защото изпълнява рекурсивни търсения за сметка на локалните клиенти. Caching (recursive) Servers За да се подобри производителността, рекурсивните сървъри кешират резултатите от търсенията, които са изпълнили. Процесите на рекурсия и кеширане са взаимно свързани, на термините recursive server и caching server често се гледа като на синоними. Перодът от време, за
  • 36. 36 който един запис се държи в кеша, се контролира от Time To Live (TTL) полето в него. Кеширащият сървър за имена не е необходимо да изпълнява сам пълното рекурсивно търсене. Вместо това той препраща (forward) някои или всички заявки, които не може да удовлетвори, от своя кеш към кеша на друг сървър за имена, който се определя като forwarder. Многофункционални сървъри Сървърът за имена BIND може едновременно да бъде и master за някои зони, и slave за други зони, и кеширащ (рекурсивен) сървър за определен брой локални клиенти. Все пак, функциите на овластени (authoritative) услуги за имена и такива на caching/recursive са логически разделени. Затова е по-изгодно да работят на различни машини. Така ще се повиши надеждността и сигурността. Инсталиране на bind9 yum install bind bind-utils -y Конфигуриране на DNS сървър става чрез редактиране на файла /etc/named.conf Отваряме този файл vi /etc/named.conf Всеки един конфигурационен файл изглежда така : / // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { 127.0.0.1; 192.168.1.101;}; ### Master DNS IP ### # listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; 192.168.1.0/24;}; ### IP Range ### allow-transfer{ localhost; 192.168.1.102; }; ### Slave DNS IP ### /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable
  • 37. 37 recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; zone "unixmen.local" IN { type master; file "forward.unixmen"; allow-update { none; }; }; zone "1.168.192.in-addr.arpa" IN { type master; file "reverse.unixmen"; allow-update { none; }; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; Създаваме Forward Zone файл, който ще направим в /etc/named.conf vi /var/named/forward.unixmen копираме следното съдържание $TTL 86400 @ IN SOA masterdns.unixmen.local. root.unixmen.local. ( 2011071001 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL
  • 38. 38 ) @ IN NS masterdns.unixmen.local. @ IN NS secondarydns.unixmen.local. @ IN A 192.168.1.101 @ IN A 192.168.1.102 @ IN A 192.168.1.103 masterdns IN A 192.168.1.101 secondarydns IN A 192.168.1.102 client IN A 192.168.1.103 По същия начин създаваме Reverse Zone файл. vi /var/named/reverse.unixmen $TTL 86400 @ IN SOA masterdns.unixmen.local. root.unixmen.local. ( 2011071001 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) @ IN NS masterdns.unixmen.local. @ IN NS secondarydns.unixmen.local. @ IN PTR unixmen.local. masterdns IN A 192.168.1.101 secondarydns IN A 192.168.1.102 client IN A 192.168.1.103 101 IN PTR masterdns.unixmen.local. 102 IN PTR secondarydns.unixmen.local. 103 IN PTR client.unixmen.local. Стартираме DNS systemctl enable named systemctl start named Настройка на Firewall firewall-cmd --permanent --add-port=53/tcp firewall-cmd --permanent --add-port=53/udp firewall-cmd --reload Настройки на правата chgrp named -R /var/named chown -v root:named /etc/named.conf restorecon -rv /var/named restorecon /etc/named.conf
  • 39. 39 2.2. Анализиране на мрежовото и системно администриране под Linux. 2.2.1.Мрежовото администриране Базови настройки за нашите интерфейси можем да правим от NetworkManager Фигура 2.1. Проверка за наличие на интернет и интернет адресите ни Фигура 2.2. Избиране на автоматично или ръчно въвеждане на интернет адрес
  • 40. 40 За повече информация използваме командата ip addr show [root@dido diqn]# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:76:c8:8c brd ff:ff:ff:ff:ff:ff inet 192.168.11.134/24 brd 192.168.11.255 scope global dynamic eno16777736 valid_lft 1340sec preferred_lft 1340sec inet6 fe80::20c:29ff:fe76:c88c/64 scope link valid_lft forever preferred_lft forever 3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:de:14:e8 brd ff:ff:ff:ff:ff:ff inet 192.168.124.1/24 brd 192.168.124.255 scope global virbr0 valid_lft forever preferred_lft forever 4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000 link/ether 52:54:00:de:14:e8 brd ff:ff:ff:ff:ff:ff В началото виждаме lo което ни дава информация за така наречения loopback interface. Това е специален виртуален интерфейс който се използва за отстраняване на проблеми и диагностика. В случая нашият интернет е пуснат(UP) през кабел и интерфейсът ни се казва eno16777736. За повече информация относно даден мрежови интерфейс използваме командата ifconfig последвана от името на интерфейса : root@dido diqn]# ifconfig eno16777736 eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.11.134 netmask 255.255.255.0 broadcast 192.168.11.255 inet6 fe80::20c:29ff:fe76:c88c prefixlen 64 scopeid 0x20<link> ether 00:0c:29:76:c8:8c txqueuelen 1000 (Ethernet) RX packets 219291 bytes 330185525 (314.8 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 52583 bytes 3195758 (3.0 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 Тази команда ни дава информация за приетите(RX) и
  • 41. 41 предадените(TX) пакети,както и информация за грешки и загубени пакети. Ping е друга команда с която можем да проверим свързаността. [root@dido diqn]# ping google.com PING google.com (212.39.82.180) 56(84) bytes of data. 64 bytes from 212-39-82-180.ip.btc-net.bg (212.39.82.180): icmp_seq=1 ttl=128 time=26.1 ms 64 bytes from 212-39-82-180.ip.btc-net.bg (212.39.82.180): icmp_seq=2 ttl=128 time=10.7 ms 64 bytes from 212-39-82-180.ip.btc-net.bg (212.39.82.180): icmp_seq=3 ttl=128 time=10.2 ms ^C --- google.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 10.224/15.714/26.156/7.386 ms Командата route ни дава информация за интерфейсите и адресите им. [diqn@dido ~]$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default gateway 0.0.0.0 UG 100 0 0 eno16777736 192.168.11.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777736 192.168.124.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 traceroute проследява пътя на пакетите . [diqn@dido ~]$ traceroute google.com traceroute to google.com (212.39.82.181), 30 hops max, 60 byte packets 1 gateway (192.168.11.2) 0.363 ms 0.360 ms 0.329 ms 2 * * * 3 * * * [diqn@dido ~]$ traceroute abv.bg traceroute to abv.bg (194.153.145.104), 30 hops max, 60 byte packets 1 gateway (192.168.11.2) 0.401 ms 0.260 ms 0.295 ms 2 * * * 3 * * * Мрежови настройки можем да правим и чрез инструментите system-config-network и nmtui (NetworkManager)
  • 42. 42 Nmtui Фигура 2.3. Графичен интерфейс на мрежовия мениджър Фигура 2.4. System-config-network (насройки на мрежови интерфейс) Фигура 2.5. Създаване на нов интерфейс или конфигуриране на DNS
  • 43. 43 Фигура 2.6. Edit connection в случая че сме избрали DNS конфигурация [root@dido diqn]# nmcli general status STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN connected full enabled enabled enabled enabled [root@dido diqn]# nmcli connection show NAME UUID TYPE DEVICE Profile 1 127218bc-0f9d-4c3d-8f37-9d0171c5e595 802-3-ethernet eno16777736 System eth1 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04 802-3-ethernet -- System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 802-3-ethernet -- virbr0-nic 577c3da7-eea6-439d-b57d-f5f358507b14 generic virbr0-nic virbr0 70c1d93b-900a-4cb1-9dbc-a10977feed12 bridge virbr0 root@dido diqn]# nmcli connection show --active NAME UUID TYPE DEVICE Profile 1 127218bc-0f9d-4c3d-8f37-9d0171c5e595 802-3-ethernet eno16777736 virbr0-nic 577c3da7-eea6-439d-b57d-f5f358507b14 generic virbr0-nic virbr0 70c1d93b-900a-4cb1-9dbc-a10977feed12 bridge virbr0 [root@dido diqn]# nmcli device status DEVICE TYPE STATE CONNECTION virbr0 bridge connected virbr0 eno16777736 ethernet connected Profile 1 virbr0-nic tap connected virbr0-nic lo loopback unmanaged --
  • 44. 44 Пускане и спиране на интерфейс [root@dido diqn]#nmcli con up id bond0 [root@dido diqn]#nmcli con up id port0 [root@dido diqn]#nmcli dev disconnect iface bond0 [root@dido diqn]#nmcli dev disconnect iface eth0 Конфигуриране на статичен IP адрес virbr0 [root@dido diqn]# nmcli connection modify virbr0 +ipv4.routes 192.168.122.0/24 ipv4.gateway 10.10.10.1 [root@dido diqn]# hostnamectl status Static hostname: dido Icon name: computer-vm Chassis: vm Machine ID: 10a59e25b96046ecac643a613cf67051 Boot ID: 301fadd9b3344190a97e5dfe7d8f921f Virtualization: vmware Operating System: Fedora 23 (Workstation Edition) CPE OS Name: cpe:/o:fedoraproject:fedora:23 Kernel: Linux 4.5.5-201.fc23.x86_64+debug Architecture: x86-64 Променяме името на хоста като използваме nmcli [root@dido diqn]# nmcli general hostname dido [root@dido diqn]# nmcli general hostname my-server [root@dido diqn]# nmcli general hostname my-server [root@dido diqn]# systemctl restart systemd-hostnamed Nginx Web Server Подобно на други приложения от този вид, архитектурата на nginx е модулна - при компилиране на софтуера се определя кои модули да бъдат вградени в него. Съществуват и над 20 потребителски модула. nginx може да се използва като обратен прокси сървър, който прехвърля всички или само определени заявки към други физически сървъри. Крайните сървъри могат се избират от nginx на ротационен принцип, но решенията кой от тях да се използва могат да се взимат и чрез по-сложни алгоритми, благодарение на допълнителни модули. Често срещана употреба на приложението е за обработване на заявки за статично съдържание и прехвърляне на по-сложните заявки за динамично съдържание към по-сложен уеб сървър,
  • 45. 45 например Apache. Въпреки това, nginx има пълна FastCGI поддръжка и може да изпълнява скриптове на всеки език за програмиране, който поддържа този стандарт. Софтуерът може да се използва и като SMTP,POP3 и IMAP прокси сървър. При определени ситуации, особено при обслужване на заявки за статично съдържание, nginx е по-бърз и заема по-малко ресурси от конкурентния софтуер – Apache. [root@my-server diqn]# dnf install nginx Last metadata expiration check: 0:53:33 ago on Mon Jun 13 17:00:29 2016. Dependencies resolved. [root@my-server diqn]# systemctl enable nginx.service Created symlink from /etc/systemd/system/multi- user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service. [root@my-server diqn]# sudo systemctl start nginx [root@my-server diqn]# sudo systemctl status nginx ● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2016-06-13 17:55:07 EEST; 10s ago Process: 3200 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 3187 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 3163 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 3206 (nginx) CGroup: /system.slice/nginx.service ├─3206 nginx: master process /usr/sbin/nginx └─3207 nginx: worker process Jun 13 17:55:04 my-server systemd[1]: Starting The nginx HTTP and
  • 46. 46 reverse.... Jun 13 17:55:06 my-server nginx[3187]: nginx: the configuration file /etc...k Jun 13 17:55:06 my-server nginx[3187]: nginx: configuration file /etc/ngi...l Jun 13 17:55:07 my-server systemd[1]: Started The nginx HTTP and reverse .... Hint: Some lines were ellipsized, use -l to show in full. [root@my-server diqn]# firewall-cmd --permanent --add-service=http success [root@my-server diqn]# firewall-cmd --permanent --add-service=https success [root@my-server diqn]# firewall-cmd --reload success [root@my-server diqn]# ip a | grep inet inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host inet 192.168.10.101/24 brd 192.168.10.255 scope global dynamic eno16777736 inet6 fe80::20c:29ff:fe76:c88c/64 scope link inet 192.168.124.1/24 brd 192.168.124.255 scope global virbr0 Въвеждаме нашият интернет адрес в браузара. Фигура 2.7. Стартови екрани на nginx.
  • 47. 47 Отваряме vi /etc/nginx/nginx.conf и търсим server_name _; и го заместваме с нашият интернет адрес. Фигура 2.8. Стартови екрани на nginx Фигура 2.9. Графичен интерфейс на конфигуратора на BIND
  • 48. 48 2.2.2.Системно администриране Yum install system-config-bind създава и конфигурира зони ако вашия сървър работи като DNS сървър HTTP (Yum install system-config-httpd) конфигурира вашия компютър като Apache web server Фигура 2.10. Състояние на апачи сървъра NFS (Yum install system-config-nfs) директории от моя компютър могат да се споделят по мрежата с други компютри чрез NFS service Фигура 2.11. Графичния интерфейс на NFS сървър
  • 49. 49 Root Password (Yum install system-config-rootpassword) можем да сменяме root парола Фигура 2.12. Инструмент чрез който се създава руут акаунт и парола Samba NFS (Yum install system-config-samba) конфигурира самба за споделяне на файлове Фигура 2.13. Графичен интерфейс на самба сървър
  • 50. 50 Services (system-config-services) може да показва кой услуги са стартирани, оттук можем да ги пускаме и спираме Фигура 2.14. Графичен интерфейс на конфигурационния панел на услугите които са пуснати на системата Authentication (authconfig-gtk)— сменя начина по който вашите потребители се влизат в системта ви. Фигура 2.15. Панел за настройки на акаунти
  • 51. 51 Date & Time (system-config-date)—конфигурираме дата и време Фигура 2.16. Настройки на време и дата Printing (system-config-printer) конфигурираме локален принтер Фигура 2.17. Конфугурационен панел на принтер SELinux Management (policycoreutils-gui)— инсталира графичен интерфейс на SELinux и можем да правим настройки по него Фигура 2.18. Графичен интерфейс на SElinux
  • 52. 52 Users & Groups (system-config-users) добавя, показва и сменя потребители и групи Фигура 2.19. Графичен интерфей на потребителския мениджър Configuration Editor (gconf-editor) директно правим промени по GNOME конфигурационната база данни Фигура 2.20. Създадена от Filelight итерактивна карта, чрез която се визуализира използваното пространство от системата.
  • 53. 53 Фигура 2.21. Акаунт на всеки потребител Една много полезна функция е да можем да ползваме акаунта на всеки потребител като сме su. Това става с по следния начин както е показано по-горе Journalctl команда която ни показва съобщения с конкретен случай от процесите които се случват при буутването на систематa Фигура 2.22. Акаунт на всеки потребител
  • 54. 54 journalctl -f ще ни даде информация директно от systemd journal dmesg е команда която ни дава сведения за хардуера,кои драйвери са засечени от ядрото по време на процеса на буутване . dmesg | less също ще ни даде информация за нашия хардуер lspci е команда която ни показва информация за това какво е има на нашите PCI слотове и устройствата свързани с тях,ако към тази команда сложим -v ще ни даде повече информация,ако напишем -vvv ще ни даде информация за нашия Ethernet контролер.Ето още няколко примера с тази команда lsusb,lscpu. Lsmod – показва информация за различните модули ,за да получим отделна информация за всеки от тях използваме /sbin/modinfo -d е1000 ,като е1000 е името на модула,може да е друго в зависимост от това какво искаме да видим. Работа с дяловете на хард диска Ще прегледаме няколко приложения на инструмента fdisk . fdisk -l ни дава информация за дяла на хард диска .Пример : [root@dido home]# fdisk -l /dev/sda Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xf4dcfc78 Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 1026047 1024000 500M 83 Linux /dev/sda2 1026048 20971519 19945472 9.5G 8e Linux LVM /dev – директорията в която се съхранява информацията за нашия хардуер. Sdа – понеже пише а това означава първи хард диск, в втори и т.н. Ако имаме цифрата 1 или 2 след а то ест sda1 първи хард диск първи дял sda2 първи хард диск втри дял.
  • 55. 55 Чрез командата tail -f /var/log/messages ни изкарва съобщения за различния хардуер който прикачваме . fdisk -l /dev/sda | grep /dev/sda показва дяловете на моя първи хард диск [root@dido diqn]# fdisk -l /dev/sda | grep /dev/sda Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors /dev/sda1 * 2048 1026047 1024000 500M 83 Linux /dev/sda2 1026048 20971519 19945472 9.5G 8e Linux LVM [root@dido diqn]# pvdisplay /dev/sda2 --- Physical volume --- PV Name /dev/sda2 VG Name fedora PV Size 9.51 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 2434 Free PE 0 Allocated PE 2434 PV UUID 0oUA3K-NodK-FJ88-Qp6j-HZQe-HluB-hRMxI6 Минималното количество информация която може да се запише тук е 4 мб (PE Size,Physical Extent),а максималното PV Size 9.51 GiB. VG Name-volume group name. За да видим информация свързана с volume group(VG Name) използваме командата vgdisplay последвана от името в случая от горната команда знаем че то е fedora. root@dido diqn]# vgdisplay fedora --- Volume group --- VG Name fedora System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 9.51 GiB PE Size 4.00 MiB Total PE 2434
  • 56. 56 Alloc PE / Size 2434 / 9.51 GiB Free PE / Size 0 / 0 VG UUID DGf6Pi-p61x-xfXc-4H9p-idmq-c1t3-HMiRnj За да видим информация свързана с logical volumes използваме командата lvdisplay [root@dido diqn]# lvdisplay fedora --- Logical volume --- LV Path /dev/fedora/swap LV Name swap VG Name fedora LV UUID cnV2RE-KKHV-Nycc-2ZHN-IwON-3b3a-tdrpIb LV Write Access read/write LV Creation host, time dido, 2016-05-30 19:17:10 +0300 LV Status available # open 2 LV Size 1.00 GiB Current LE 256 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 --- Logical volume --- LV Path /dev/fedora/root LV Name root VG Name fedora LV UUID LJQ5ic-qSoX-EN25-jP3l-eFdn-2UDP-qPZcDB LV Write Access read/write LV Creation host, time dido, 2016-05-30 19:17:12 +0300 LV Status available # open 1 LV Size 8.51 GiB Current LE 2178 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
  • 57. 57 Фигура 2.23. Различните дялове, volume groups и logical volumes образуват заедно цялостната файлова система на Линукс На фигура 2.23 е показана как различните дялове и volume groups, and logical volumes се образуват заедно цялостната файлова система на Линукс. Устройство sda1 е форматирано като файлова система и е монтирано на /boot директорията. Устройство sda2 е обем от информация която представлява vg_abc volume group. Тогава lv-home и lv-root са монтирани на /home и съответно на други директории. Всеки хардуер на нашия компютър си има уникален номер които се използва при различни процедури ,затова е добре да знаем как да го видим това става с командата blkid : [root@dido diqn]# blkid /dev/sr0: UUID="2015-10-29-21-39-35-00" LABEL="Fedora-Live-WS-x86_64- 23-10" TYPE="iso9660" PTUUID="6b8b4567" PTTYPE="dos" /dev/sda1: UUID="5d904dcd-9aae-4f35-a4ac-948624c38249" TYPE="ext4" PARTUUID="f4dcfc78-01" /dev/sda2: UUID="0oUA3K-NOdK-FJ88-Qp6j-HZQe-HLuB-hRMxI6" TYPE="LVM2_member" PARTUUID="f4dcfc78-02" /dev/mapper/fedora-root: UUID="1c9e24ad-9fe4-4379-9d26-767e1ed6f9e3" TYPE="ext4" /dev/mapper/fedora-swap: UUID="0a8cc841-d1be-4c6e-a718-07bcf80c6a06" TYPE="swap"
  • 58. 58 2.3. Анализиране на управлението и наблюдението с команди за мониторинг Smem – предоставя ни информация за консумираната рам памет Инсталиране : yum install smem python-matplotlib python-tk yum install smem [root@my-server diqn]# smem PID User Command Swap USS PSS RSS 811 root /sbin/audispd 80 100 114 1668 817 root /usr/sbin/sedispatch 288 96 133 2864 802 root /sbin/auditd -n 332 168 210 280 Дава ни информация за паметта ,която се използва от всички потребители. [root@my-server diqn]# smem -w Area Used Cache Noncache firmware/hardware 0 0 0 kernel image 0 0 0 kernel dynamic memory 786360 393080 393280 userspace memory 842476 150252 692224 free memory 155200 155200 0 За да видим консумирана памет от системата. [root@my-server diqn]# smem -u User Count Swap USS PSS RSS rtkit 1 0 404 433 3556 nobody 1 0 224 483 1988 avahi 2 0 312 663 4936 chrony 1 0 740 820 3908 dbus 1 0 1900 1992 5752 colord 1 0 2560 2897 9888 polkitd 1 0 6488 6621 13360 mysql 2 0 73064 73552 80272 gdm 25 1976 108172 137032 375652 root 39 6308 201488 212783 391484 diqn 49 1776 351920 408822 988252 Подрежда потребителите по консумирана памет. [root@my-server diqn]# smem -p PID User Command Swap USS PSS RSS 811 root /sbin/audispd 0.01% 0.01% 0.01% 0.09% 817 root /usr/sbin/sedispatch 0.03% 0.01% 0.01% 0.16
  • 59. 59 Консумираната памет в проценти Monitorix System and Network Monitoring Tool Инсталационен процес : yum install rrdtool rrdtool-perl perl-libwww-perl perl-MailTools perl-MIME-Lite perl-CGI perl-DBI perl-XML-Simple perl-Config-General perl-HTTP-Server-Simple perl-IO-Socket-SSL wget wget http://www.monitorix.org/monitorix-3.8.1-1.noarch.rpm rpm -ivh monitorix-3.8.1-1.noarch.rpm chkconfig --level 35 monitorix on service monitorix start systemctl start monitorix vi /etc/selinux/config – Търсим полето на което пише enforcing и го променяме на disabled . След това отваряме баузара и пишем http://localhost:8080/monitorix/ Фигура 2. 24. Информация получавана от този инструмента Monitorix.
  • 60. 60 Фигура 2. 25. Изобразяване на трафика през различните портове Фигура 2. 26. Nmon Monitoring Tool in Linux Дава информация в реално време. Част от статистиките на CPU, Memoroy, Disks, Resource. На фигура 2. 26 и 2. 27 са дадени Glances – Real Time System Monitoring.