Linux

Неофициално ръководство за работа с Ubuntu linux 6.10

ТУК

Топ 10 на Линукс дистрибуции.

Вие знаете, че Linux ви спестява пари за лицензиране и поддръжка. Но какви са нашите възможности за Linux като сървърна операционна система? Изброени са десетте най-големи Линукс сървър дистрибуции. Някой от вас може да не е наясно кои са. Квалифицираното разпределение за включване в този списък е лекота на употреба, наличната търговска подкрепа и надеждността на данни център.

Ubuntu – на върха на почти всички свързани с Linux списъци, на базата на Debian и Ubuntu е в един клас, от само себе си. Той превъзхожда всички други дистрибуции по своята проста инсталация и лесен за употреба, Ubuntu оставя другите много назад ж класацията.
Red Hat – Red Hat Enterprise Linux (RHEL) стартира като малка Linux компания и сега е основна сила в търсенето на Rackspace Datacenter. Тази дистрибуция е любимец на големи компании по целия свят. Постоянно се обновява и има нон-стоп подкрепа на Red Hat.
SUSE – Novell собственост на SUSE Linux е стабилна, лесна за поддръжка и предлага 24×7 бърза реакция на Novell подкрепа за онези, които не разполагате с време или търпение за дълги разговори за отстраняване на проблеми. Novell ще ви предложи и специалисти да помогнат на място, за да зареди.
Mandriva – Разпространен е в САЩ, Mandriva може да е малко чужд за българите и Европа. Това е невероятно добре конструирана Linux дистрибуция, идва от Франция и се борят за приемане в Европа и Южна Америка. На техният уебсайт се твърди, че са Linux доставчик в световен мащаб. Името му и изграждането му произтичат от Mandrake Linux и Connectiva Линукс дистрибуции.
Xandros – Ако предпочитате Linux дистрибуция с връзка на Microsoft, Xandros е за вас. Слуховете настрана, Xandros и Microsoft си сътрудничат, което е известно в техническите среди като „кооперация“. Това означава, че те се развиват на базата на сътрудничество. За да разберете повече за тази уникална гледна точка, вижте страницата на  Xandros.
Slackware е търговска дистрибуция, Slackware поддържа отношения с няколко компании, които я предлагат срещу такса. Един от най-ранните налични дистрибуции, Slackware има много поддръжници. Нейните разработчици редовно пускат нови версии.
Debian – Ако сте объркани от включването на Дебиан тук, не бъдете. Debian няма формално търговска подкрепа, но можете да се свържете с Debian- консултанти по целия свят чрез тяхната страница. Debian участва във всички други дистрибуции, включително разпределението на Ubuntu, Linux Mint и Vyatta.
Vyatta – е повече използвана за рутери и защитни стени, отколкото PC-базирана система, но ако искате добра сигурност е хубажо да се използват тези приложения’ Vyatta работи добре за сигурността на вашите комуникационни нужди. Вижте безплатната версия на Vyatta Linux.
CentOS – Вярно е, че CentOS не е чисто с търговска цел, но, тъй като тя е базирана на Red Hat Enterprise Linux, можете да използвате търговска подкрепа за него. CentOS има своите собствени хранилища и подкрепата на Общността и не е същото като Fedora.

Linux –
Unbreakable Linux – Oracle Unbreakable Linux е Red Hat Enterprise Linux с някои лога на Oracle. Oracle се конкурира директно с Red Hat с тяхното разпределение и доста успешно, тъй като закупени чрез подкрепа на Oracle е половината от цената на еквивалентен модел на Red Hat.

Инсталиране и базово конфигуриране. Файлови масиви, RAID масиви.

Ext2: Традиционална файлова система за Linux, създадена скоро след създаването на Linux. Много стабилна, но не предлага Журнална функционалност, което означава, че при проблем й трябва много време за да възстанови файловата система. Използва се за малки обеми, които са предимно само за, четене.

Ext3: В основата си, Ext3 е Ext2, но с добавена журнална функционалност, която позволява много бързо възстановяване на файловата система при проблеми с нея. Ext3 за съхраняване на данни, но не е най-добрата файлова система за, когато се използват много файлове в една директория. Индексиращата способност, използвана в Ext3 е доста ограничена.

Ext4: Журнална файлова система, основана на Ext3. Основна особеност е увеличаването на максималния размер на един раздел от диска до 1 ексабайт (260 байта), при размер на блока 4кб, и увеличение на допустимия размер за един файл до 16 терабайта. В Ext4 е представен механизъм за пространствено (extent) записване на файлове, което означава, че един голям файл се записва в диапазон от съседни блокове, което води до повишаването на производителността при работа с големи файлове и намаляване на фрагментацията. Един extent, може да заеме до 128MB от съседни блокове с големина 4kb.

XFS: Много важна особеност е, че е предназначена за “големи”, което означава големи файлове, големи обеми данни, големи файлови системи. Друга особеност е, че е 64-битова файлова система и е много добро решение за съхраняване на данни.

ReiserFS: В края на 1990 Hans Reiser създава ReiserFS, революционна файлова система, организирана по много различен начин, сравнено с файловите системи съществуващи дотогава. ReiserFS предлага върхова производителност, особено в среди в които се работи с много на брой малки файлове. Заради не добрата комуникация с кернела има известни проблеми със стабилността. В среди в които се работи с големи файлове, ReiserFS е добър избор за файлова система, но заради нестабилността си, рано или късно могат да бъдат очаквани проблеми с нея.

JFS: Една от първите журнални файлови системи, създадена е от IBM. Разработването на тази файлова система е спряно, поради което не се препоръчва използването и в нови сървъри.

RAID 0 (striping) – Дисков масив от два или повече хард диска, много бърза работа с данни, но няма защита при повреда на някой от дисковете. Информацията се разделя на блокове и се записва едновременно на наличните дискове.

RAID 1 (mirroring) – Един диск се използва като активен, а другия се използва като backup disk. Всичко което се случва на активния диск, се случва и на резервния, и така по всяко време резервния е еднакъв с активния. Ако активния диск дефектира, резервния може да го замени. Много сигурен метод за работа, но не предлага голяма производителност . Ако се работи в среда в която трябва да се записват много файлове по хард дисковете, не се препоръчва използването на RAID 1, а създаване на RAID 1 с помощта на два отделни контролера за повишаване на скоростта на работа. За по-статични обеми от данни RAID 1 е прекрасно решение.

RAID 10 – Предлага най-доброто от RAID 0 и RAID 1. Имаме добра производителност и добра отказоустойчивост едновременно. Единствения недостатък е, че трябва да имаме минимум 4 диска за да го създадем.

RAID 5 – Част от информационното пространство е заделено за определяне на валидността и евентуално възстановяване на информацията. Тези блокове обикновено се наричат контролни. Това води до намаляване на полезния обем на тома за сметка на повишаваме на неговата надеждност. Размерът на полезния информационен обем на лентовия набор с контрол по, четност е равен на (N-1)*S, където N е общия брой дискове, участващи в набора, а S е размерът на всеки дисков дял, участващ в този набор. При пропадане на един диск от Лентов набор с контрол по, четност, системата продължава да работи без загуба на информация, генерирайки информацията от пропадналия диск. Пропадането на два диска обаче е фатално.

Команден ред – бърз преглед на основните команди.

Основни команди:

ls – показва файловете в текущата директория. ls –a показва скритите файлове

cd – използва се за смяна на директория

kill – използва се за принудително спиране на даден процес

su – влизате под друг псевдоним ( root )

sudo file – изпълнява файлове изискващи Super-User Rights

df – показва заетото място на диска

locate – търсите файл

find / -name „file“ – претърсва цялото дърво за файл

head file – показва първите 5 реда от даден файл

tail file – показва последните 5 реда от даден файл

cat file – показва съдържанието на файлът в терминалът

passwd – променяте паролата си

cp – позволява копирането на съдържанието на един файл във друг файл със същото или различно име.

Полезни инструменти.

Инсталиране и конфигуриране на SSH server/client. Cron jobs, runlevels.

Създаване на Secure Shell Server(SSH)

Един от начини за инсталиране на SSH сървър е с командата apt-get install openssh-server. Хубаво е SSH сървъра да се инсталира на всички клиентски машини, които ще администрираме отдалечено.

Веднъж инсталиран сървъра е активен по подразбиране. Ако съществува защитна стена или други защитни блокове, трябва да се разреши TCP/IP порт 22. SSH сървъра се управлява от два конфигурационни файла, /etc/default/ssh и /etc/ssh/sshd_config

Конфигурационен файл на SSH сървър

/etc/ssh/sshd_config

Първата директива е по подразбиране и може да се коментира, ако конфигурираме достъпа на различен порт в /etc/default/ssh

Port 22

Следващите директиви използват default host keys, създадени по време на инсталацията. Достъпа за, четене и писане до тези ключове е позволен само за root акаунта.

HostKey /etc/ssh/ssh_host_rsa_key

HostKey /etc/ssh/ssh_host_dsa_key

Следващата директива намалява риска свързан с непривелигировани процеси:

UsePrivilegeSeparation yes

Тези директиви изпращат всички логове свързани с проверката в /var/log/secure. Всеки който се логне или се опита да се логне в системата се записва.

SyslogFacility AUTH

LogLevel INFO

Директиви свързани с проверката. LoginGraceTime е в секунди. Влизането в root акаунта е позволено по подразбиране, затова е препоръчително директивата
PermitRootLogin.

StrictModes проверява собственика с директорията на логнатия user; без нея, други могат да имат достъп до user, който не им е разрешил достъп до своите файлове.

LoginGraceTime 120

PermitRootLogin yes

StrictModes yes

Друга възможност е да се разреши на потребителите да се логват отдалечено без парола, но не е препоръчително:

PermitEmptyPasswords no

Директивата PasswordAuthentication е много важна. Когато е коментирана, тя влияе на настройките по подразбиране. Изключваме я само когато искаме да предпазим SSH сървъра от използване на пароли изпращани по мрежата.

# PasswordAuthentication yes

Когато не искаме да се предават паролите за връзка към SSH сървъра по мрежата използваме Passphrases. На клиентския компютър се създава двойка ключове
private/public с командата ssh-keygen. Използваме ключова фраза, когато ни попита не трябва да оставяме полето за ключовата фраза празно. Друго предимство е, че фразата се проверява само веднъж с локалния ключ и не се изпраща по мрежата.

След като е готова двойката ключове, копираме public ключа на SSH сървъра и клиента вече може да се свързва със сървъра.

Cron jobs

Cron демона се грижи да пуска дадена програма по разписание. Cron постоянно проверява за промени в конфигурационния му файл /etc/crnotab, което означава, че не трябва да го рестартираме всеки път когато внасяме някаква промяна.

Задаването на променливите в файла /etc/crnotab имат следния синтаксис:

/etc/crnotab

Variable=Value

Следния коментар показва как са организирани отделните колони в конфигурационния файл:

# m h dom mon dow user command

четенето отляво на дясно е: минута, час, ден от месеца, месец, ден от седмицата, потребител и команда.

Пример:

5 4 3 2 * root apt-get update

Това означава стартиране на командата apt-get update на всеки 3-ти февруари в 4:05 сутринта. ”*” означава, че командата се отнася за всички стандарти стойност за тази колона. В нашия пример означава, че няма значение кой ден от седмицата е 3-ти февруари.

Обикновените потребители могат да използват командата crontab, и да създават cron jobs за собствените си акаунти. Има 4 параметъра свързани с командата crontab.

-u user позволява на root потребител да променя задачите на друг потребител.

-l показва моментните настройки в crontab файла

-r премахва зададени настройки

-e променя съществуващи настройки.

За конфигуриране на cron jobs за собствения акаунт, се стартира командата crontab –e, и добавяме променливите и командите които искаме да се стартират по разписание. Синтаксиса е същия като описания по-горе, с изключение на това, че не се изисква име на потребител. Важно е, че потребителя трябва да има достатъчно права за да се изпълнят тези команди.

Използване на настройки за сигурност:

Достъпа на потребителите до cron deamon могат да се регулират от файловете /etc/cron.allow и /etc/cron.deny. Ако тези файлове не съществуват (както е по подразбиране), достъпа до cron не е ограничен. Ако имаме въведени потребители в /etc/cron.allow, всички други потребители няма да могат да използват cron. Ако няма файл /etc/cron.allow, потребителите въведени във файла /etc/cron.deny също нямат достъп до cron.

Runlevels

Процесът init, който е процес номер едно, е родителят на всички процеси. След като ядрото инициализира всички устройства, програмата init се изпълнява и стартира целия софтуер. Тя се конфигурира от файла /etc/inittab.

За да се разбере процеса init и файла inittab, трябва да се разберат нивата на работа (runlevels). В хардуера на системата няма нищо, което да разпознава нивата на работа; те са изцяло софтуерна конструкция. init и inittab са причината нивата на работа да засягат състоянието на системата. Дефинирани са няколко нива на работа, които обхващат всички възможни състояния на системата-от спряно състояние, до изпълнение на множество процеси за множество потребители.

ниво на работа 0 кара init да спре всички работещи процеси и да спре системата

ниво на работа 1 се използва за поставяне на системата в еднопотребителски режим. Това ниво на работа може да бъде идентифицирано и с буквата S вместо числото 1.

Ниво на работа 2 е специален режим, в който се поддържат множество потребители, но не се поддържа поделяне на файлове.

Ниво на работа 3 се използва за осигуряване на пълна многопотребителска поддръжка с пълна гама услуги. Това е подразбиращо се ниво на работа за сървъри, които използват влизане в конзолата в текстов режим.

Ниво на работа 4 не се използва от системата. Чрез него може да се създаде собствено състояние на системата.

Ниво на работа 5 инициализира системата като специализиран X Windows терминал. Използва се широко като алтернатива за системи, конфигурирани да стартират Х-среда при стартирането си.

Ниво на работа 6 кара init да спре всички работещи процеси и да рестартира системата.

Един запис в inittab има следния формат:

етикет:ниво-на-работа:действие:процес

Често използвани етикети са:

-id – реда, който идентифицира подразбиращото се ниво на работа, използвано от

init

-si – процеса на инициализация на системата

-ln – където n е число от 1 до 6, обозначава нивото на работа, инициализирано от

този процес

-ud – процеса на обновяване

-ca – процеса, който се стартира при натискане на Ctrl+Alt+Del

-pf – процеса, който се стартира когато UPS подаде сигнал за прекъсване на захранването

-pr – процеса, който се стартира при възстановяване на захранването от UPS, преди системата напълно да бъде спряна

-x – процеса, който превръща системата в Х терминал

Управление на обновленията, файлови хранилища (repositories), избор и инсталиране на пакети. Инсталиране от сорс.

За системния администратор е важно да знае как да управлява обновленията. За големи мрежи трябва да се знае и как отдалечени хранилища да могат да се използват локално. Понеже Ubuntu е стъпил на Debian Linux, много от уменията и ключовите команди са едни и същи.

Съвременните Linux дистрибуции използват файлове от различни хранилища, които се настройват в конфигурационния файл /etc/apt/sources.list.

Заради връзката си с Debian, Ubuntu използва инсталационни пакети създадени за Debian. За инсталиране на пакети които са свалени локално се използва командата dpkg. Командата аpt-* е с по-големи възможности, защото може да инсталира пакети, които за зависими от други пакети, от отдалечени хранилища.

Хранилищата се конфигурират в файла /etc/apt/sources.list. Съществуват 4 основни типа хранилища:

main включва пакети под свободен open source license

restricted включва пакети които не са под свободен open source license

universe включва пакети под свободен open source license

multiverse ограничено е до пакети които не са под свободен open source license

Първите две директиви в конфигурационния файл се отнасят за main и
restricted хранилища. Първата започва с deb команда, която се отнася за стандартните пакети, а втората с командата deb-src, която се свързва с придружаващия сорс код към пакетите от същото хранилище.

deb http://bg.archive.ubuntu.com/ubuntu/lucid main restricted

deb-src http://bg.archive.ubuntu.com/ubuntu/ lucid main restricted

Командата dpkg е основна при Debian. Изисква да имаме административни права, в повечето случаи dpkg се изпълнява с командата sudo. Следващата команда работи за всякакви пакети, приемайки, че няма зависимости, като въвеждаме и пътя до съответния пакет.

$ sudo dpkg -i sysv-rc-conf_*_all. deb

Ако се появи съобщение за някаква зависимост, едно от решенията е да се включи и този пакет в dpkg командата.

За да се провери дали някой пакет е инсталиран се използва командата dpkg –l .

$ dpkg -l sysv-rc-conf

Desired=Unknown/Install/Remove/Purge/Hold

| Status=Not/Installed/Config-f/Unpacked/Failed-cfg/Half-inst/t-aWait/T-pend

|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)

||/ Name             Version             Description

i i sysv-rc-conf     0.99-6              SysV init runlevel configuration

Ако името на пакета е написано правилно, ще видим статуса за този пакет. Първите два от трите символа вляво от името на пакета “ii”, показват статуса. Първия символ е “желания” статус, където “i” идва от install, а p от purge. Втория символ е актуалния статус, n идва от not installed, а i от installed.

Стартирането на командата dpkg –l, без конкретен пакет, показва списък с всички инсталирани пакети.

С командата dpkg –L, можем да видим всички файлове и директории инсталирани от конкретен пакет.

$ dpkg -L sysv-rc-conf

Инсталиране от сорс.

Преди да инсталираме програма от сорс код(tar. gz, . gz), трябва първо да компилираме кода. Навигираме с командата cd до директорията в която се намира сорс кода и пишем:

./configure

make

sudo make install

clean install

./configure – проверява дали необходимите зависимости са инсталирани вече

make – компилира сорс кода, а make install- инсталира програмата

clean install – премахва временните файлове получени от предходните операции

Потребители и групи

Всеки потребител, който влиза в Linux система се идентифицира с потребителски акаунт. Потребителския акаунт контролира достъпа до системата чрез потребителското име и парола. След като потребителят влезе в системата, неговите привилегии се контролират посредством потребителския идентификатор (UID) и груповия идентификатор (GID) на акаунта. Тези стойности, дефинирани при създаването на потребителския акаунт, контролират сигурността на файловата система и определят кои потребители кои процеси контролират.

За създаването на нов потребител се използва командата sudo, защото само потребител с root права може да създава потребители. Името на новия потребител трябва да е с дължина до 8 символа, без цифри и специални знаци.

$ sudo useradd –m –c ‘Ivan Petrov’ ipetrov

Командата useradd има няколко опции. –m създава домашна директория за потребителя. –c добавя description на новия потребител, който в случая е ipetrov.

По подразбиране новосъздадения потребител е без парола. Тя се задава допълнително с командата passwd.

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

sudo /usr/sbin/useradd -D

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

SHELL – използвания shell

HOME – пътя до домашната папка на потребителя

INACTIVE – максималния брой дни след изтичане на паролата, когато тя може да бъде сменена

EXPIRE – датата на изтичане на потребителския акаунт

GROUP – групов идентификатор

SKEL – директория, която съдържа обща конструкция на потребителска директория

Използването на EXPIRE е полезно, когато искаме да създадем временен акаунт, който ще се изключи на някаква определена дата, като формата е YYYY-MM- DD.

sudo useradd –e 2011-09-15 temp_account

тази команда създава нов акаунт с име temp_account, който ще бъде изключен на 15-ти септември 2011г. С изпълнението на useradd командата с опцията –D, могат да бъдат променяни настройките по подразбиране.

sudo useradd –D –s /bin/bash променяме shell-a

-b path/to/default/home Определяне пътя до домашната папка на новия потребител

-e date Определяме датата на изтичане

-f days Задаване на дните след изтичане на паролата, преди акаунта да

бъде спрян

-g group Задаваме група

-s shell Задаваме shell

При създаването на потребител се създава автоматично и група с неговото име и той става член на тази група. В нашия случай при създаването на ipetrov, той се присъединява автоматично към групата ipetrov, която се нарича основна. Потребителя може да се присъедини и към други групи, наречени допълнителни.

За проверка на принадлежността на даден потребител, се използва командата

$ id ipetrov

uid=1001(ipetrov) gid=1001(ipetrov) groups=1001(ipetrov)

Всеки потребител и група получават идентификатори UID и GID при създаването им. UID е в порядъка от 0 до 65535, като root потребителя винаги е с UID 0. GID също е от 0 до 65535, и root потребителя винаги е с GID 0. Ако изпълним предната команда за root потребител ще видим следния резултат.

$ id root

uid=0(root) gid=0(root) groups=0(root)

Ubuntu дистрибуцията резервира диапазона от 1 до 999 за UID и GID, които стартират услуги- например за потребител който стартира database или web сървъри. Така, че при създаване на първия потребител, той получава UID и GID 1000.

Има два метода за добавяне на потребител към група или групи. При първия, можем да добавим потребител към група или групи още при създаването му с командата

Има два метода за добавяне на потребител към група или групи. При първия, можем да добавим потребител към група или групи още при създаването му с командата useradd. Втория е като модифицираме вече съществуващ потребител с командата usermod.

$ sudo useradd –m –c ‘Petar Petrov’ –G printing, finance ppetrov

Използването на –G, ни позволява да изброим групи, разделяни със запетая, към които искаме да присъединим потребителя. Потребителя има за основна група ppetrov и искаме да го присъединим към допълнителните групи printing и finance.

Ако изпълним тази команда ще получим грешка, защото тия две групи трябва да съществуват преди да можем да присъединяваме потребители към тях. Няма да бъде създаден новия потребител и грешката ще бъде:

useradd: group ‘printing’ does not exist

useradd: group ‘finance’ does not exist

В такъв случай трябва първо да създадем тези две групи с командата groupadd

$ sudo groupadd printing

$ sudo groupadd finance

Командата groupadd може да се използва и със следната опция:

-g GID Задава GID на групата, който трябва да е уникален.

Опцията –g се използва когато искаме да презапишем автоматично генерирания идентификатор на групата със специфичен номер.

Сега ако опитаме да създадем новия потребител, няма да имаме проблеми защото групите към които искаме да го присъединим вече ги има създадени.

Можем да добавим и съществуващ потребител към дадена група с командата usermod:

$ sudo usermod -a -G accounts ppetrov

С добавянето на опцията –а (append), –G и името на групата можем да добавим потребителя ppetrov към групата accounts.

За изтриване на потребител или група се използват командите userdel и groupdel.

$ sudo userdel ppetrov

С тази команда изтриваме потребителя, но тя не изтрива неговата домашна папка. За нейното изтриване трябва да се добави и опцията –r към командата. Това ще изтрие домашната папка на потребителя и всички файлове в нея, но няма да изтрие файлове извън нея, даже и да принадлежат на изтривания потребител.

За изтриване на група използваме командата:

$ sudo groupdel finance

Така ще изтрием групата, но е важно да се знае, че с groupdel не може да се изтрие основната група на който и да е потребител. Примерно не можем да изтрием групата ppetrov, преди да сме изтрили потребителя ppetrov първо.

Пароли

Когато създаваме нов потребител, трябва да му зададем и парола, за което се използва командата passwd, която работи по единия от двата начина, в зависимост кой я изпълнява. Ако обикновен потребител, като ppetrov, стартира командата ще бъде попитан да смени собствената си парола.

$ passwd

Changing password for ppetrov.

(current) UNIX password:

Enter new UNIX password:

Retype new UNIX password:

Ако стартираме програмата като root потребител можем да сменим паролата на конкретен потребител.

$ sudo passwd ipetrov

Мрежови интерфейси – първична настройка, конфигурационни файлове.

С командата ifconfig виждаме мрежовите настройки. Първия ред ни показва хардуерния адрес на Ethernet картата(eth0).

eth0 Link encap:Ethernet HWaddr 00:0c:29:15:2a:4e

Следващия ред ни показва текущия IP адрес и мрежовата маска.

inet addr:192. 168. 0. 104 Bcast:192. 168. 0. 255 Mask:255. 255. 255. 0

С командата ifconfig можем да конфигурираме мрежовите интерфейси, примерно да зададен нов IP адрес на eth0.

$ sudo ifconfig eth0 192. 168. 100. 1

За спиране и пускане на eth0 изпълняваме следните команди:

$ sudo ifconfig eth0 down

$ sudo ifconfig eth0 up


Мрежови интерфейси – първична настройка, конфигурационни файлове.

 

Конфигурационни файлове

 

DHCP клиент

Настройките за DHCP клиента се правят чрез конфигурационния файл /etc/dhcp3/dhclient.conf. Използват се следните директиви:

send Предоставя информация за последващите директиви

host-name Задава hostname

request Изисква информация, свързана с последващите директиви

subnet-mask Задава мрежова маска

broadcast-address Задава broadcast адрес

routers Отбелязва IP адреса за свързаните рутери

domain-name Отбелязва domain името за локалната мрежа

domain-name-servers Свързва се с DNS сървъра

netbios-name servers Добавя WINS сървър

netbios-scope Намира логически NETBIOS мрежи в локалната мрежа

/etc/hosts

Преди DNS сървъра да стане популярен, данните с host имената и IP адресите са се пазили в текстов файл /etc/hosts. В него имаме примерно такъв запис:

192.168.0.60 linux1.mommabears.com laptop

/etc/resolv.conf

В този конфигурационен файл се записват IP адресите на DNS сървърите, които искаме да ползваме:

nameserver 192.168.0.1

/etc/network/interfaces

Тук се съхраняват мрежовите настройки. Директивата auto позволява да бъде конфигуриран конкретния мрежов интерфейс.

auto eth0

Без тази директива мрежовия интерфейс няма да се стартира при стартиране на скрипта за рестартиране на мрежовите функции:

/etc/init.d/networking restart.

Следващата директива оказва начина на настройване на IP адреса.

iface eth0 inet dhcp

Така ще получим адрес от DHCP сървъра, ако искаме да го настроим ръчно, dhcp се заменя със static.

Ако няма конфигуриран DNS на DHCP сървъра, можем да го настроим със следната директива:

dns-nameservers 68.87.69.146  68.87.85.98

Маршрутизиране

Конфигурирането на iptables се прави с командата route.

$ route

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Iface

192.168.112.0 * 255.255.255.0 U 0 0 eth0

default 192.168.112.2 0.0.0.0 UG 100 0 eth0

Можем да използваме командата route и да зададем default gateway на мрежата.

$ sudo route add default gw 192.168.0.1 dev eth0

Ако имаме само една физическа мрежова карта, не е нужно да използваме dev eth0

Хардуерно рутиране

За връзка между хардуерния(МАС) адрес на мрежовата карта и IP адрес се грижи ARP протокола. Командата arp ни показва ARP таблица с хардуерните и IP адресите. С нея могат да се откриват проблеми, като повтарящи се адреси в мрежата, или може да се обновява таблицата ако има нужда от това.

$ arp

Address HWtype HWaddress Flags Mask Iface

192.168.112.2 ether 00:18:DE:38:44:71 C eth0

Ако таблицата е празна, означава, че не са правени никакви връзки към друг компютър.

За премахване на информация от ARP таблицата се използва командата arp –d.

$ sudo arp -d 192.168.11.254

Премахва цялата ARP информация за този IP адрес. За добавяне към таблицата:

$ sudo arp -s 192.168.11.254 00:50:56:EC:7D:50

Пренасочване

Linux системите, често се налага да бъдат конфигурирани като рутер. Следващата команда ни казва, че системата не е конфигурирана като рутер:

$ cat /proc/sys/net/ipv4/conf/default/forwarding

0

Ако локалния компютър има две или повече мрежови карти, тогава вече може да се конфигурира като рутер. За да се направи това активираме следната директива в /etc/sysctl. conf

net. ipv4. ip_forward=1

Не е нужно да рестартираме системата, просто изпълняваме:

$ sudo sysctl –p, което препрочита конфигурационния файл.

И накрая за да потвърдим промените изпълняваме:

$ cat /proc/sys/net/ipv4/ip_forward

Минимална графична среда

Не всички инструменти за администриране са достъпни от команден ред, например настройка на принтери, затова се налага използването на графичен интерфейс(GUI).

Има 3 основни пакета свързани с графичния интерфейс: X Window Server, Графична среда и Window Manager.

The X Server

The X Server e “двигателя” на GUI, като повечето Linux системи включват тази технология. Като цяло X Server се инсталира автоматично, когато изберем графична среда и евентуално Window Manager. Въпреки това, X Server може да бъде доста персонализиран.

Графична среда

Графичната среда се асоциира с икони, прозорци, ленти с инструменти, папки, тапети и десктоп джаджи. Конкретно ще разгледаме GNOME графичната среда.

Window Manager

Window Manager е система, която контролира разположението и външния вид на прозорците в GUI.

Инсталиране на GNOME

 

Основната ни цел не е да инсталираме графична среда, а минимална такава. Ще инсталираме само пакетите, които са ни нужни за администриране на системата. Включват опростен GNOME desktop, gnome-core и терминал за команден ред:

$ sudo apt-get install gnome-core gnome-terminal xauth xorg

Като включваме и пакета xorg за X server и пакета xauth за проверка. След като инсталацията завърши, GUI може да се стартира с командата startx.

DHCP и DNS – инсталиране, конфигуриране, графични инструменти за настройка.

DNS – Domain Name System

DNS представлява йерархична разпределена база данни с хиляди сървъри в Интернет обработващи заявките за имена и адреси. DNS премахва необходимостта от всеобхватна, централно поддържана таблица, заменяйки я с разпределена йерархична база данни. Разпределянето намалява обема на данните, управлявани от всеки отделен сървър. Използва се и локално кеширане с цел информацията да се поддържа по-близо до тези, които се нуждаят от нея, без ненужно изпращане на информация.

Стандартните DNS пакети се основават на Barkeley Internet Name Domain (BIND). За инсталиране на BIND и съответната документация, използваме командата:

$ sudo apt-get install bind9 bind9-host bind9-doc resolvconf

Въпреки, че пакета resolvconf не е необходим, може да ни помогне с изпращането на заявки към други DNS услуги.

Съществуват 4 типа DNS сървъри: Master, Slave, caching-only и forwarding-only.

Master DNS server Пази достоверни записи за домейна. Заявките за IP адреси от други хостове могат да бъдат кеширани или препращани.

Secondary master DNS server Разчита на master DNS сървъра за данни, като е познат още като slave DNS сървър

Caching-only DNS server Пази текущите заявки. Ако отговора не е в локалния кеш, се обръща към други DNS сървъри.

Forwarding-only DNS server Препраща всички заявки към други DNS сървъри.

Файлова структура на BIND

По-голямата часто от данните и конфигурационните файлове на BIND се намират в директорията /etc/bind/.

DNS Configuration File Description

db.0                            Reverse zone file for the default zone

db.127                       Reverse zone file for the loopback interface

db.255                       Reverse zone file for the broadcast zone

db.empty                  Reverse zone designated for private IP address networks

db.local                  Zone file for the loopback interface

db.root                                List of root servers for the Internet

named.conf                        Primary BIND9 configuration file

named.conf.local         BIND9 configuration file for administrator input

named.conf.options          BIND9 configuration file for caching and forwarding

rndc.key                  Authentication key for DNS requests; can be changed

with the rndc-confgen command

zones.rfc1918                 File for reverse lookups of private IP address networks

/etc/default/bind9    File with start parameters for the BIND9 service

Конфигуриране на стандартен DNS сървър

За конфигурирането на DNS сървър ни трябва име на домейн, както и имената на хостовете и IP адресите на системите в локалната мрежа. Трябва да знаем и кои системи са създадени като name servers и mail servers. От тази информация, можем да създадем подходящи данни за forward и reverse заявките, в отделни zone файлове. За целта ще конфигурираме няколко системи в домейна example. org

Forward заявките връщат IP адреси като 192.168.0.50 за домейн имена като ubuntuserver. example. org. Подобни търсения могат да се пазят в база данни като /etc/hosts или DNS zone файл. Ние ще използваме файла db.example.org. Reverse търсенето изисква обратна версия на същата база данни, като използваме файла db.192 за обратната база данни.

Определяме ubuntulucid.example.org с IP адрес 192.168.0.104 като name server и e-mail server. Конфигурираме и няколко клиента в същата мрежа в двата zone файла: forward (db.examle.org) и reverse (db.192).

Файла /etc/bind/named.conf.local е запазен за администраторите за създаване на DNS сървър. Каквато промяна се направи в него, тя автоматично се включва в основния конфигурационен файл /etc/bind/named.conf. За целта, добавяме следната строфа, която се отнася за forward zone файла.

zone „example.com“ {

type master;

file „/etc/bind/db.example.org“;

allow-transfer { 192.168.0.104; 192.168.0.153; };

};

Тази строфа ни показва, че конфигурираме master DNS сървър. Директивата allow-transfer ни показва ограничения достъп до slave или Secondary DNS сървъри на определени IP адреси. В нашия случай сме добавили IP адреса на локалния master сървър (192.168.0.104), защото след трансфериране на неговата база данни в slave DNS сървъра, master ще спре да работи.

Данните свързани с тази зона са отбелязани във файла /etc/bind/db.example.org, като първо добавяме следната строфа в reverse zone файла:

zone „0.168.192.in-addr.arpa“ {

type master;

file „/etc/bind/db.192“;

allow-transfer { 192.168.0.104; 192.168.0.153; };

};

Директивата „0.168.192.in-addr.arpa“ се базира на обърнатите (reverse) IP адреси, а in-addr. arpa е стандартен суфикс за обърнати (reverse) бази данни. /etc/bind/db.192 е конфигурационния файл в който се търси за обърнати (reverse) бази данни.

The Forward Zone File

За създаване на master DNS сървър, ни трябва да създадем поне един forward zone файл. За да го създадем, ще използваме копие на forward zone файла на localhost-a, който се намира в /etc/bind/db.local, със следната команда:

$ sudo cp /etc/bind/db.local /etc/bind/db.example.org

Записът $TTL 604800 в този файл показва Time To Live за данните на DNS сървъра в секунди.

Записът SOA (Start Of Authority) е уводен за всички zone файлове, като описва от коя zone идва, и e-mail-a на администратора за този сървър.

Следният ред определя michael@example. org

@ IN SOA ns1.example.org.michael.example.org. (

Серийния номер се генерира на базата на датата и номера на версията. Примерно първата база създадена 20-ти май 2011:

2011052001 ; Serial

Честотата на опресняване (в секунди), показва колко дълго изчаква DNS slave сървъра, преди да провери за ъпдейти от който и да е master DNS сървър.

7200 ; Refresh

Retry интервала, определя колко, често DNS slave сървъра се опитва да се свърже с master сървъра, в нашия случай-на всеки час:

3600 ; Retry

Ако няма отговор от DNS master сървъра в края на зададения срок, в нашия случай-24 часа, локалния сървър спира приемането на заявки за конкретния домейн:

24H ; Expire

TTL е минималния период от време, в което другите DNS сървъри, трябва да пазят local zone информацията в кеша-една седмица при нас:

604800 ) ; Negative Cache TTL

Ако създаваме forward базата от нулата, за празни редове е хубаво да използваме точка и запетая:

;

IN определя Internet-style данните, а NS е запис за name server, който се отнася до името на DNS сървъра, в нашия случай – ns1.example.org:

IN NS ns1.example.org.

MX е запис за Mail Exchange сървър, който насочва e-mail информацията към конкретния компютър. Ако имаме повече от един mail сървър, можем да добавим повече от един MX запис, във forward database файла:

IN MX 10 mail.example.org.

IN MX 20 mail1.example.org.

A определя authoritative записа за zone. Например, ако това е zone of authority за example.org, (IN) authoritative записа за ubuntuserver.example.org съответства на IP адреса 192.168.0.50.

ubuntuserver IN A 192.168.0.50

The Reverse Zone File

Reverse zone файла позволява на DNS сървъра да конвертира от IP адрес в hostname. Необходимата строфа е добавена предварително в конфигурационния файл /etc/named.conf.local.

За да създадем reverse zone файл, започваме от reverse zone файла за localhost-a, /etc/bind/db.127, със следната команда:

$ sudo cp /etc/bind/db.127 /etc/bind/db.192

DHCP Server

DHCP сървъра е създаден за автоматично конфигуриране на IP адреси в мрежата, като може лесно да бъде настроен да указва gateways, маршрути и др.

Създаване на Dynamic Host Configuration Protocol (DHCP) сървър

За Ubuntu съществуват няколко пакета за DHCP сървър. Стария dhcpd пакет се използва само за IPv4 адреси, а по-новия dhcp3 и за IPv4 и за IPv6 адреси.

Инсталиране

Два основни пакета са свързани с DHCP сървъра:главен сървър, и DHCP relay, ако трябва да се прави връзка с отдалечени мрежи. За инсталирането на сървъра използваме следната команда:

$ sudo apt-get install dhcp3-server

DHCP Relay

Ако трябва да конфигурираме връзка до друга мрежа, най-лесния начин е да се конфигурира DHCP сървъра на gateway-a с директна връзка до тази мрежа. В случай, че това не е възможно, трябва да инсталираме dhcp3-relay пакета на gateway компютър, който има връзка към мрежата в която е DHCP сървъра, както и връзка към отдалечената мрежа. Използваме командата:

$ sudo apt-get install dhcp3-relay

Конфигурационен файл

Базовата версия на конфигурационния файл, който се намира в /etc/dhcp3/dhcpd.conf, не може да раздава IP адреси без да бъде модифициран. В конфигурационния файл, обновяването на Dynamic DNS е изключено със следната директива:

ddns-update-style none;

Стандартната стойност, която позволява на DHCP сървъра да обновява информацията в конфигуриран Dynamic DNS сървър е interim.

IP адресите се отдават под наем за определен брой секунди, преди да бъдат подновени. Това време е дефинирано от следните директиви: default-lease-time и max-lease-time, като втората директива определя максимума от време преди да се обнови IP адреса.

default-lease-time 600;

max-lease-time 7200;

Следващата примерна строфа, конфигурира DHCP сървъра със следните настройки 10.254.239.0/255.255.255.224, които определят IP адреси в диапазона между 10.254.239.1 до 10.254.239.31. Директивата range ограничава DHCP сървъра да раздава адреси от 10.254.239.10 до 10.254.239.20.

Директивата option routers определя gateway host-a, който се добавя в маршрутната таблица на клиента.

#subnet 10.254.239.0 netmask 255.255.255.224 {

# range 10.254.239.10 10.254.239.20;

# option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;

#}

Следващата примерна строфа ще работи за отдалечена мрежа свързана чрез BOOTP, използвайки dhcp-relay сървър конфигуриран на gateway компютър. Директивата broadcast-address указва broadcast адреса.

#subnet 10.254.239.32 netmask 255.255.255.224 {

# range dynamic-bootp 10.254.239.40 10.254.239.60;

# option broadcast-address 10.254.239.31;

# option routers rtr-239-32-1.example.org;

#}

Следващата строфа ни показва как можем да зададем конкретен IP адрес на конкретен хост, с помощта на хардуерния адрес на мрежовата карта. Например за хоста с име gateway1 и MAC адрес на картата 98:76:54:FE:DC:BA:

host gateway1 {

hardware ethernet 98:76:54:FE:DC:BA

fixed-address 10.254.239.31

}

След като сме готови с конфигурирането, стартираме сървъра с командата:

$ sudo /etc/init.d/dhcp3-server start

За да се конфигурира DHCP сървъра с помощта на графичният инструмент се изпълнява:

$ sudo apt-get install gadmintools

След като се инсталират тези помощни инструменти, графичният инструмент се стартира с:

$ sudo gadmin-dhcpd

Създаване на файлов сървър. Samba server – конфигуриране, графични инструменти за настройка.

Samba е с отворен код създаден в началото от IBM и адаптиран от Microsoft. Позволява споделянето на файлове и принтери между Linux и Microsoft машини. С излизането на Samba 4. 0, може да се конфигурира и като домейн контролер в Active Directory.

Инсталиране на Samba

Най-лесния начин за инсталиране на Samba сървър е с инструмента tasksel. Пускаме командата sudo tasksel и избираме Samba file server.

Настройването на Samba минава през 5 основни стъпки.

Създаване на директория, която ще бъде споделена

Задаване на позволенията за тази директория

Конфигуриране на smb.conf за указване на споделянето

Създаване на Samba потребителски акаунт

Тестване достъпа до споделената директория

Създаване на директория, която ще бъде споделена

Използване на командата mkdir. Акo искаме да споделим локална папка с името /share, я създаваме с командата:

$ sudo mkdir /share

Задаване на позволения на локална директория

Добър подход е да се създаде нова група и така всички членове на тази група да имат достъп до споделената папка. Ако приемем, че името на тази група е sambagroup, използваме chgrp sambagroup /share за да направим тази група собственик на папката share. Така сме сигурни, че само потребителите от тази група ще имат пълен достъп до споделената директория.

Указване за споделената директория

След създаването на директорията, която ще бъде споделена, трябва да се укаже коя е тя и къде се намира, в конфигурационния файл на Samba. Отиваме в секцията Share Definitions в конфигурационния файл /etc/samba/smb.conf, и добавяме следните редове:

[share]

comment=shared directory

read only=no

path=/share

guest ok=yes

Последния добавен ред, guest ok=yes, позволява и на потребители без конкретни права да имат достъп до споделения ресурс.

За проверка изпълняваме следната команда, която ще покаже списък с наличните share.

Smbclient –L localhost

Създаване на Samba потребителски акаунт

Преди да създадем Samba акаунт, трябва да има създаден Linux такъв предварително. Което означава, че създаваме един и същ потребител два пъти. За създаването на Samba акаунт използваме командата smbpasswd –a Ivan, която първо ще поиска да въведем паролата за новия акаунт два пъти и след това ще го създаде.

Тестване достъпа до споделената директория

За да проверим дали Samba сървъра работи коректно ще използваме командата mount:

mount –t smbfs –o username=Ivan //localhost/share /mnt

Ако тази команда успее да монтира споделената папка в /mnt директорията, значи Samba сървъра работи.

Samba команди

 

findsmb Показва системите които отговарят на Samba заявки, и имат споделени директории или принтери.

mount.cifs Монтира споделени Samba директории.

net Осигурява достъп, подобно на NET командата на Microsoft.

nmblookup Изпълнява запитване за Samba/CIFS сървър.

pdbedit Управлява потребителските акаунти в Security Accounts Manager

(SAM) базата.

smbclient Показва споделените ресурси на конкретен Samba сървър.

smbcontrol Изпраща съобщения до Samba сървъри.

smbpasswd Създава парола за Microsoft мрежа на даден потребител.

smbstatus Показва статуса на връзката от Samba сървъра.

smbtree Прави списък със споделените ресурси на всички свързани Samba сървъри.

tdbbackup Архивира Samba бази данни в /var/lib/samba.

umount.cifs Размонтирва споделените Samba директории.

Конфигурационен файл.

Настройването на Samba сървъра се осъществява с промяна в конфигурационния файл /etc/samba/smb.conf. В него съществуват два типа коментари. Първия (#) се използва за общ коментар, а втория (;) се използва за коментиране на директиви, които са, често използвани в по-късен етап.

Global Settings: Browsing

# Change this to the workgroup/NT-domain name your Samba server will part of

workgroup = WORKGROUP

Тук се настройва името на работната група, по подразбиране е WORKGROUP.

# server string is the equivalent of the NT Description field

server string = %h Server (Samba, Ubuntu)

%h е променлива която прочита локалното hostname.

dns proxy = no

Ако променим тази настройка на yes, търсенето на имена може да се извърши чрез DNS бази данни.

Networking

Понякога се налага Samba сървъра да се конфигурира на системи с повече от една мрежови карти, които обслужват различни мрежи. В такъв случай се използват следните директиви:

interfaces = 192.168.0.0/24

interfaces = eth1

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

; bind interfaces only = yes

Присъединяване към домейн, конфигуриране като домейн контролер, присъединяване към Active Directory мрежа.

Конфигуриране на Samba като домейн контролер

В Windows среда, за управлението на потребителите на група от компютри се използва домейн. За да се използва и Samba като домейн контролер трябва да се конфигурира подобно на NT4 домейн контролер.

Първата стъпка е за използване на Samba като домейн контролер е да се направят правилните настройки в конфигурационния файл.

[global]

netbios name = STN

workgroup = BG

security = user

passdb backend = ldapsam:ldap://192.168.1.200

logon script = %U. bat

domain master = yes

os level = 50

local master = yes

preferred master = yes

domain logons = yes

logon path = %Nprofiles%U

logon drive = H:

logon home = %N%U

logon script = logon.cmd

[netlogon]

comment = Network Logon Service

path = /home/samba/netlogon

guest ok = yes

read only = yes

share modes = no

[profiles]

comment = User profiles

path = /home/samba/profiles

guest ok = no

browseable = no

create mask = 600

directory mask = 0700

netbios name Това е името с което ще се вижда сървъра в Microsoft мрежа.

security Този параметър определя какво ниво на сигурност ще бъде използвано. За домейн контролер security = user

passdb backend Използва се за да определим къде ще се запазва информацията за потребителите и групите

logon script Този параметър се отнася за bat файла който се стартира автоматично при  логване на Windows потребител. Местоположението на този скрипт се указва с параметъра path в секцията [netlogon].

domain master Този параметър указва, че сървъра се грижи за актуализиране на

списъка на всички членове в цялата мрежа

local master Определя кой сървър се грижи за списъка с компютрите в локална

част от мрежата

os level Задаването на local master и domain master не ни гарантира, че нашия сървър  ще бъде master browser. За повишаване шанса му да бъде такъв се използва този параметър, като стойността му трябва да е по-голяма от 32.

preferred master Този параметър за принудителна смяна на master browser, при стартирането на Samba сървъра

domain logins Задаваме yes на този параметър за да направим сървъра домейн

контролер

login path Показва къде се намира профила на потребителя

logon home Определя къде се намира домашната папка

Създаване на Workstation акаунт

След като създадохме домейн контролер, трябва да добавим и работни станции към него, като за всяка работна станция, която ще е члена на домейна, трябва да създадем и workstation акаунт на Samba сървъра. Пак първо трябва да добавим акаунта в базата на локалния сървър, и след това да направим workstation акаунт в базата на Samba сървъра. Името на акаунта завършва със знак ($), което означава, че акаунта е за workstation.

useradd ws10$

След това добавяме акаунта и на Samba сървъра:

smbpasswd –a –m ws10

При smbpasswd командата не е нужно да добавяме ($) към името на акаунта, за това се грижи опцията -m

Присъединяване към Active Directory

Първата стъпка за интегрирането на Samba към Active Directory е да я направим член на домейна.

Създаваме потребителски акаунт за нашия потребител в Active Directory.

Създаваме Samba потребител като Linux потребител и му задаваме правата за достъп. За да осигурим достъп на потребителя използваме chmod 770 в директорията която споделяме.

Променяме конфигурационния файл smb.conf:

[global]

workgroup = Името нa домейна

password server = IP адреса на 200Х сървъра

security = ADS

Добавяне на Samba сървъра към Active Directory. Използваме командата net на

Samba сървъра за създаването на акаунт в Active Directory: net ads join –U Administrator%password (като заменяме password с паролата на администратора на Active Directory).

VPN – какво представлява, как се инсталира и как се конфигурират сървър и клиенти.

При нужда за изграждане на сигурна връзка между два компютъра, които не са в една локална мрежа, или между две мрежи се създава Virtual Private Network (VPN). Съществуват много решения за VPN мрежи, като най-популярното е OpenVPN.

Инсталиране и конфигуриране на OpenVPN

Инсталира се с командата apt-get install openvpn, която инсталира необходимия софтуер и стартира openvpn демона.

Отиваме в /usr/share/doc/openvpn/examples/easy-rsa/2.0 и копираме съдържанието в /etc/openvpn/easy-rsa. В последните 5 реда на файла /etc/openvpn/easy-rsa/vars въвеждаме лични данни.

export KEY_COUNTRY=”US”

export KEY_PROVINCE=”CA”

export KEY_CITY=”SanFrancisco”

export KEY_ORG=”Fort-Funston”

export KEY_EMAIL=”me@myhost. mydomain”

cd /etc/openvpn/easy-rsa/ ## Отиваме в директорията easy-rsa

sudo chown -R root:admin . ## Даваме права за писане в нея

sudo chmod g+w . ##

source . /vars ## Изпълняваме новия vars файл

./clean-all ## Изтрива всички ключове, ако има такива.

./build-ca ## Създаваме сертификата

./build-key-server yourserver## Създава ключовете за сървъра

Създаване на ключове за сървъра

/etc/openvpn/easy-rsa$ source ./vars

/etc/openvpn/easy-rsa$ ./build-key-server yourserver

След създаването на ключовете за сървъра е нужно да създадем и ключове за клиента

/etc/openvpn/easy-rsa$ source ./vars

/etc/openvpn/easy-rsa$ ./build-key clientname

Следващата стъпка е да се създаде Diffle-Hellman параметри, които са нужни при размяна на ключове между сървъра и клиента. За целта се използва командата build-dh

/etc/openvpn/easy-rsa$ ./build-dh

Копиране на ключовете при клиента

След създаване на всички необходими ключове идва времето да ги копираме на клиентската машина.

1. Използваме ssh за връзка до клиента и създаваме директория в която ще сложим

ключовете, mkdir /etc/openvpn/keys

2. Затваряме ssh връзката.

3. От сървъра с помощта на scp, копираме клиентските ключове при клиента.

scp client1* root@client-ip-or-name:/etc/openvpn/keys

4. Копираме и сертификата:

scp ca. crt root@client-ip-or-name:/etc/openvpn/keys

Конфигуриране на VPN сървъра

След като са готови ключовете, трябва да създадем конфигурационния файл за сървъра и клиента.

Копираме файла server.conf.gz от /usr/share/doc/openvpn/examples/sample-config-files в /etc/openvpn/ и го разархивираме:

sudo gunzip server.conf.gz

Примерен конфигурационен файл:

port 1194

proto udp

dev tun

ca /etc/openvpn/keys/ca.crt

cert /etc/openvpn/keys/server.crt

key /etc/openvpn/keys/server.key

dh /etc/openvpn/keys/dh1024.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

keepalive 10 120

comp-lzo

persist-key

persist-tun

status /var/log/openvpn-status.log

verb 3

След създаването на конфигурационния файл стартираме OpenVPN service:

/etc/init.d/openvpn start

Конфигуриране на клиентския файл

Инсталираме OpenVPN на клиентския компютър и копираме примерния конфигурационен файл client.conf от /usr/share/doc/openvpn/examples/sample-config-files в /etc/openvpn/

Примерен конфигурационен файл:

client

remote 192.168.1.99

port 1194

proto udp

dev tun

resolv-retry infinite

nobind

ca /etc/openvpn/keys/ca.crt

cert /etc/openvpn/keys/client1.crt

key /etc/openvpn/keys/client1.key

keepalive 10 120

user nobody

group nogroup

persist-key

persist-tun

status /var/log/openvpn-status.log

verb 3

mute 20

comp-lzo

След създаването на конфигурационния файл стартираме OpenVPN service:

/etc/init.d/openvpn start

File Transfer Protocol – FTP

FTP клиент е инсталиран по подразбиране в повечето операционни системи, включително и в Ubuntu. vsFTP е сървъра който се използва много, често за предоставяне на FTP услуга.

Инсталира се със следната команда:

$ sudo apt-get install vsftpd

Два са конфигурационните файлове за FTP сървъра:

/etc/vsftpd.conf

/etc/ftpusers

Като първия е стандартен, а втория се използва и от други FTP сървъри за конфигуриране на потребители, които нямат права на достъп чрез сървъра.

Сигурност – AppArmor, TCP Wrappers, Port Security с iptables.

AppArmor

AppArmor е инструмент, интегриран в Ubuntu, който използва възможностите на Linux ядрото, чрез създаден профил за дадено приложение, да определя какво може или не може да прави то. Такъв профил може да се създава за всяко едно приложение. По принцип, ако едно приложение се стартира като root и има AppArmor профил, профила определя какво може да прави приложението, независимо, че потребителя е влязъл като root. Това означава, че с AppArmor профила, може да се задават ограничения и на root потребител.

TCP WRAPPERS

Както се разбира от името, TCP Wrappers осигурява защита за услугите, които работят с TCP пакети. Тези услуги могат да се видят във файла /etc/services . TCP Wrappers правилата са зададени в файловете /etc/hosts allow и /etc/hosts deny. Клиентите и потребителите които са въведени в /etc/hosts allow, им е позволен достъпа, а на клиентите и потребителите които са в /etc/hosts deny е забранен. За да не се стига до конфликти, правилата се разглеждат в следния ред:

Прочитат се правилата в /etc/hosts allow. Ако правилата позволяват достъп, се осигурява контрол на съответната услуга.

Прочитат се правилата в /etc/hosts deny. Ако правилата в този файл забраняват достъпа, информацията се изпраща обратно на клиента, съгласно правилото.

Ако няма правило свързано с хоста, клиента или услугата и в двата файла, се

осигурява достъп и контрол на съответната услуга.

PORT SECURITY с IPTABLES

Защитните стени базирани на iptables командите са особено популярни по няколко причини. Първата, могат да бъдат настроени да проверяват всеки мрежов пакет, който преминава през нейните защитни правила. iptables командата е позната като филтър за пакети.

Командата има следния вид:

iptables -t tabletype <action direction> <packet pattern> -j <what to do>

Ядрото на Linux категоризира трафика на защитната стена в три групи и прилага различни правила за филтриране на всяка категория трафик:

Входящ за защитната стена Входящия трафик се проверява според входните правила на защитната стена, преди да бъде приет.

Изходящ за защитната стена Изходящия трафик се проверява според изходните правила на защитната стена, преди да бъде изпратен.

Трафик за препращане Трафикът, препращан през Linux системата, се проверява според правилата за препращане на защитната стена.

Наборите от правила INPUT и OUTPUT могат да бъдат използвани, когато системата действа като хост. Правилата FORWARD се използват, когато системата действа като маршрутизатор.

Ядрото на Linux поддържа списък от правила наречени вериги (chains). Използвайте следните опции с командата iptables, за да създадете или изтриете правила, дефинирани от потребителя, да добавите правила към веригата от правила, да изтриете правила от веригата и да промените реда на правилата във веригата:

-A Добавя правила към края на верига

-D Изтрива селектирани правила от верига

-E Преименува верига

-F Премахва всички правила от верига

-I Вмъква правила във верига

-L Извежда списък на всички правила в дадена верига

-N Създава дефинирана от потребителя верига със зададено име

-P Задава подразбиращата се политика

-R Заменя правило във веригата

-X Изтрива зададената дефинирана от потребителя верига

-z Нулира броячите на байтове и пакети във всички вериги


Инструменти за архивиране

Използват се две основни команди за архивиране на данни: tar и rsync.

The Tape Archive (tar)

С помощта на tar командата, можем да пакетираме група от файлове в един архив. Ако искаме да архивираме домашната папка на потребителя ipetrov пишем следната команда:

$ tar cvzf ipetrovbackup. tar.gz /home/ipetrov

За разархивиране използваме:

$ tar xvzf ipetrovbackup. tar.gz

Алгоритми за компресия

За tar командата има два основни алгоритъма за компресия на данните. gzip командата използва DEFLATE алгоритъма, който се използва при zip файловете в Windows.

Втория алгоритъм bzip2, използва използва Burrows-Wheeler алгоритъма, който предлага по-добра компресия, но за сметка на скоростта, спрямо gzip.

Sync Remotely (rsync)

При пускане за първи път на командата rsync, копирането на файловете става бавно, за сметка на по следваща работа с нея. Първоначално всички файлове се копират в определената папка, а след това се сравняват файловете само за съществуващи промени в тях, и се синхронизират, като се копират само различните.

Инструменти за отдалечено администриране

Ще разгледаме три приложения за отдалечено администриране: Remote Desktop, Putty и Webmin.

Remote Desktop (rdesktop)

rdesktop е клиент, предназначен за свързване към компютри с Microsoft Windows операционни системи, посредством протокола RDP. Инсталираме го със следната команда:

$ sudo apt-get install rdesktop

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

rdesktop IP_remote_computer ;като се отваря логин прозорец за въвеждане на потребителско име и парола за влизане в отдалечения компютър. Могат да се използват и следните параметри към командата:

-f : За режим на цял екран

-p: Въвежда се паролата за отдалечения компютър

-u: Въвежда се потребителя за логване към отдалечения компютър

Putty

Putty е свободно разпространяван клиент използващ различни протоколи за отдалечен достъп, включително SSH. Telnet, rlogin. Инсталира се с командата:

$ sudo apt-get install putty  ;и пак се използва в графичния режим, чрез терминала в който пишем putty и ни се отваря основния прозорец на програмата

Някои от основните функции на Putty са:

– Записване на хостове и настройки за употреба след това

– Контрол върху ключовете за криптиране на SSH и версията на протокола

– SCP и SFTP клиенти за командния ред

– Контрол върху препращането на портове със SSH, както и вградено X11 препращане

– Пълна Xterm, VT102 и ECMA-48 терминална емулация

– Поддръжка на сесии – т. е. потребителите могат да запазват настройките си в сесии и извикват при стартирането на програмата

Основните функции на програмата се виждат в имената на изпълнимите файлове:

PuTTY – основният Telnet и SSH клиент

PSCP – SCP клиент за сигурно копиране на файлове от командния ред

PSFTP – SFTP клиент за трансфери на файлове (подобен на FTP)

PuTTYtel – Telnet клиент

Plink – интерфейс от командния ред за PuTTY

Pageant – агент за автентикация за PuTTY, PSCP и Plink

PuTTYgen – генератор на RSA и DSA ключове

Webmin

Webmin е web-базиран инструмент за конфигуриране на операционни системи през интерфейса на браузъра. С него е възможно да се конфигурират потребители, услуги или конфигурационни файлове, може да се настройват и приложения като Apache HTTP Server, PHP или MySQL. Webmin е писан на Perl изцяло, и не използва никакви допълнителни модули, което води до опростено, леко и бързо изпълняване на команди.

В браузъра се въвежда https://name_domain.com:10000/ и се зарежда страницата за администриране.


Troubleshooting – основни проблеми и как да ги разрешим

Въпреки, че Ubuntu Server е изключително стабилна сървърна операционна система, понякога възникват проблеми, както от софтуерно, така и от хардуерно естество. Понякога откриването на проблема не е толкова лесно и са нужни години опит за лесно справяне с различните проблеми, които могат да възникнат. С разбирането на това как функционират отделните компоненти, лесно можем да изберем подходящия инструмент и подход за справянето с тях.

Локализиране на проблема

Първата стъпка за откриване на проблема е да рестартираме сървъра и да изчакаме да видим ще се появи ли проблема, защото повечето услуги се стартират при буутващия процес. За целта трябва да знаем различните стъпки през които минава този процес:

Инициализиране на хардуера. Случва се по време на Power On Self Test (POST), като се проверява дали различните хардуерни компоненти се инициализират правилно. Ако има някакъв проблем не стигаме до Grub-a, а се чува звуков сигнал и се изписва съобщение за грешка.

Зареждане на Grub. Ако инициализацията премине успешно, сървъра, чете boot loader-a от master boot record (MBR) на boot устойството. MBR включва два важни компонента. Първия е Grub boot loader, който заема първите 446 байта от MBR и се грижи за стартирането на операционната система, като прочита конфигурационния файл от директорията /boot/grub. Втория компонент е partition table, който се грижи за това да има достъп до всички файлове на сървъра. Ако на тази стъпка се получи грешка, тя ще е свързана с Grub-a, и ядрото няма да може да се зареди, а ако няма грешки ще се появи меню с избор кое ядро да се зареди.

Kernel and initrd loading: Ако ядрото започне да зарежда, това още не означава, че всичко е наред. Възможно е някои драйвери свързани с ядрото да не се заредят. В повечето случаи, ако се случи това се появява съобщение “kernel panic”, или просто ядрото спира да зарежда. Ако сме прекомпилирали ядрото и се появи kernel panic след рестарт е ясно от къде е проблема, или мислим какво последно сме правили, като проверяваме и параметрите на Grub-a. Ако всичко е наред, най-вероятно става въпрос за счупен драйвер или initrd. Upstart: В Ubuntu Server, Upstart се грижи за стартирането на процеса init и свързаните с него основни услуги, като изпълнява всички скриптове от директорията /etc/event.d/. Рядко могат да се видят съобщения за грешки, защото, Upstart е услуга, отговорна за стартирането на други услуги. Ако нито една от услугите не може да се инициализира, или получим грешка свързана с init, значи нещо не е наред с Upstart-a. Обръщаме внимание и дали можем да, четем от директорията /etc/event.d/. Основни услуги. Веднъж като е зареден Upstart, запоява изпълняването на скриптовете в /etc/event.d/. Обикновено, тези скриптове не изпълняват нищо, а ни препращат към други скриптове, които се намират в /etc/init.d/ и се изпълняват от директория, която съответства на текущия runlevel. Например, ако текущия runlevel е 3, услугите които се стартират се стартират от директорията /etc/rc3.d/. Такава директория има за всеки runlevel от 0 до 6 включително, определяща какво трябва точно да се случи в конкретния runlevel. Ако някой от тези скриптове не се изпълни коректно, ще видим съобщение за грешка. Заради това, че това са основни услуги, като услугата за зареждане на файловата система например, системата най-вероятно ще спре, като ни даде ясен знак къде нещо не е наред. Ако проблема е очевиден, просто можем да се справим с него, но има случаи когато това не е така и трябва да проследим реда на стартиране на скриптовете за да открием проблема. Например, ако забележим, че не се зарежда SSH, е ясно, че проблема е в някой от скриптовете които се изпълняват точно преди него. Мрежа. Когато има проблеми с мрежата, се появяват проблеми и с други услуги,които са зависими от нея. Мрежата се стартира от скрипта /etc/init.d/networking, който чете от /etc/network/interfaces, коя мрежова конфигурация трябва да се стартира. Ако има някакъв проблем с мрежата, най-често проблема е грешка в този скрипт. След като сме решили, че проблема е отстранен, тестваме мрежовата свързаност, като най-добрия инструмент за това е ping.



15 Responses to Linux

  1. Howdy I am so glad I found your blog, I really found you by error, while I was searching on Google for something else, Nonetheless I am here now and would just like to say thanks a lot for a fantastic post and a all round exciting blog (I also love the theme/design), I don’t have time to read it all at the moment but I have saved it and also included your RSS feeds, so when I have time I will be back to read more, Please do keep up the awesome job.

  2. I like this web blog very much so much great information.

  3. Heya i’m for the first time here. I came across this board and I find It really useful & it helped me out a lot. I hope to give something back and aid others like you aided me.

  4. I’ll immediately take hold of your rss feed as I can not to find your email subscription link or newsletter service. Do you’ve any? Please permit me recognize in order that I may just subscribe. Thanks.

  5. Avatar BennyL
    BennyL says:

    I noticed that it’s hard to find your website in google, i found it on 24th spot, you should
    create some social bookmarks to rank it in google and increase traffic. I had the same problem with my blog, your should search in google for – Insane google ranking boost – it helped me a lot

  6. super article you gots here, thank you for sharing it!

  7. Great post. I’m experiencing some of these issues as well..

  8. Hi there! This post could not be written any better!
    Reading this post reminds me of my good old room
    mate! He always kept talking about this. I will forward this article to him.
    Fairly certain he will have a good read. Many thanks for sharing!

  9. As a Newbie, I am continuously searching online for articles that can aid me. Thank you

  10. Hello! I just would like to give a huge thumbs up for the great info you have here on this post. I will be coming back to your blog for more soon.

  11. Why didnt I think about this? I hear exactly what youre saying and Im so pleased that I came across your weblog. You actually know what youre talking about, and you made me feel like I really should learn much more about this. Thanks for this; Im officially a huge fan of your weblog

  12. I wanted to say Appreciate providing these details, youre performing an excellent job with the site…

  13. Linux – Сервиз за компютри,