Основи на системната администрация в Линукс

UNIX-like системи – история и концепция

Unix е компютърна операционна система, разработена през 1969 година от група специалисти от AT&T. В състава на работната група влизат Кен Томпсън, Денис Ричи и Дъглас Мак Илрой. В днешно време Unix има различни версии, разработени през годините от AT&T, както и от други комерсиални доставчици и некомерсиални организации.

Само системи, напълно съвместими и сертифицирани по UNIX спецификацията (Single UNIX Specification) могат да се наричат „UNIX“. Другите се наричат „Юникс подобни“ (Unix-like). Тоест Linux и Mac OS X са Unix-like.

Unix е проектирана като преносима, многозадачна и многопотребителска операционна система, с йерархична файлова структура, голям брой малки програми които могат да бъдат навързани заедно чрез интерпретатор на команден ред (bash) и чрез канали (pipe). Тази концепция е известна като философията на Unix.

В Unix операционната система ядрото отговаря за пускане и спиране на програмите, за работа с файловите системи и други. Най-важната му задача обаче е, че то контролира директния достъп до хардуера. Затова ядрото има специални привилегии за достъп до системата, което води до отделянето на „потребителско“ и „системно“ пространство.

Тъй като новото комерсиално лицензиране на UNIX през 80-те години на 20-ти век не е изгодно за академично използване, разработчици от Бъркли продължават да развиват BSD Unix като алтернатива на UNIX System. Така се ражда BSD лиценза който е свободен за ползване и операционни системи като FfeeBSD, NetBSD и OpenBSD, които се използват широко и до днес.

Какво е Линукс и Линукс дистрибуция

Линус Торвалдс e Роден е в Хелзинки, Финландия на 28 декември 1969 г. Още Като студент през 1991 г. той написва ядрото Линукс (Linux Kernel), занимавайки се с Unix, разпространява го сред приятели студенти и програмисти чрез университетския FTP сървър и всеки започва да добавя по нещо и да го подобрява.

Linux (Линукс) е общото название, което се дава на всички операционни системи, основаващи се на ядрото Linux Kernel, системните инструменти и библиотеки от проекта GNU. Различните такива операционни системи се наричат Линукс дистрибуции, като те се различават по това с какъв друг софтуер пристигат.

Ubuntu е базирана на една от най-големите Линукс дистрибуции Debian. За разлика от всички други Debian деривати Ubuntu изпреварва родителя си и оглавява челните позиции по популярност. Според Canonical, към 2011 г. Ubuntu се ползва от около 20 милиона потребители. Тя е на челно място и в списъка на най-популярните дистрибуции на Линукс за уеб сървъри.

Други известни имена на Линукс дистрибуции които може да чуете са Debian, slackware, RedHad, Fedora, Centos, Mint, PCLinuxOS, openSUSE, elementary, KNOPPIX, Arch, Kali и др.

Линукс ядрото – Linux Kernel

Линукс ядрото е сърцето на операционната система. Всъщност, то е самата операционна система. Зарежда се със стартирането на компютъра и се заключва в паметта до изключването на машината. Има две основни задачи да обслужва хардуера на ниско ниво и да създава средата, необходима за работата на процесите.

Линукс ядрото се характеризира като монолитно – един голям изпълним файл (максимално няколко мегабайта), съдържащ множество логически разделени компоненти.

Модулите дават възможност на ядрото да придобива временни пълномощия, каквито не са му вродени при компилацията. Ядрото може да зарежда динамично допълнителни парчета код, за да изпълни конкретна задача и след това да изчисти модула от паметта.

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

Обвивката на ядрото – Bash Terminal

Bash (Bourne Again SHell) е не само команден интерпретатор но и език за писане на скриптове. bash скриптовете ви позволяват да автоматизирате множество задачи. Много от програмите, които може да намерите за Linux са bash скриптове. Ако искате да разберете как работят те или да ги редактирате трябва да разбирате синтаксиса на bash. Познаването на bash, ви позволява да напишете ваши собствени програми, които да изпълняват определени задачи.

Файлова система

Файловата система в Линукс не използва идентификатори на устройствата (C:,D:,E:) а организира всичко в една единствена йерархична дървовидна структура. Всеки нов хард диск се добавя към тази дървовидна структура като нейно под-дърво. Мястото където присъединяваме (монтираме) диска, може да е във всяка една поддиректория от главната в която пожелаем.

Основната директория “/” се нарича root директория. В нея са разположени всички други директории, всички файлове, всички устройства, всичко, което системата използва.

/bin - основни програми на операционната система
/boot - ядрото на операционната система
/dev - файловете (устройства), отговарящи на хардуерa
/etc - глобални конфигурационни файлове
/home - домашните директории на потребителите
/lib - най-важните системни библиотеки
/mnt - обикновено тук се монтират външните устройства
/opt - инсталации на големи софтуерни пакети, като KDE и Gnome
/proc - достъп до различни параметри на операционната система
/root - домашната директория на root потребителя
/sbin - основни програми използвани от root
/tmp - временни файлове
/usr - повечето инсталирани програми, помощната информация и др.
/var - данни на системните програми

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

Основни Линукс команди

cd – промяна на директорията
ls – показване на файловете
pwd – knowing where you are
cp – копиране на файлове
ln – създаване на символни връзки
mv – преместване и преименуване на файлове
rm – изтриване на файлове
tail – наблюдавай какви промени се случват в даден файл
top – програма за следене на CPU-то и паметта
who – виж кой още е влезнал в системата

Tекстов редактор Nano

Прозорецът на редактора се състои от 3 части. Най-отгоре е лентата, в която в ляво се изобразява версията на редактора, в средата името на текущия файл, и в дясно индикация дали файлът е променен след последното записване. В средата на екрана се изобразява съдържанието на обработвания файл. Третият ред отдолу е предназначен за важни съобщения, а на последните два реда е помощната информация с опциите за възможните команди. Може да се активира и мишка.

 GNU nano 2.5.3              File: text.txt                      Modified  

                                [ Wrote 1 line ]
^G Get Help ^O Write Out ^W Where Is ^K Cut Text  ^J Justify  ^C Cur Pos
^X Exit     ^R Read File ^\ Replace  ^U Uncut Text^T To Spell ^_ Go To Line

Линукс не е Windows

Линукс общността не се опитва да предложи на средностатистическия Windows потребител една заменяща ОС. Един Windows потребител трябва да осъзнае, че той е само един опитен Windows потребител, а не опитен компютърен потребител. Този прост факт причинява доста трудности на по-напредналите Windows потребители. Всичките излишни бутони и падащи менюта в системната администрация, без които не може да се направи даден софтуер лесен за употреба, са просто препятствия, които се пречкат на опитния потребител. За това голяма част от конфигурационните файлове в Linux са текстове файлове въпреки, че има възможност това да се направи с менюта през web страничка например.

Потребители в системата

Администраторът на системата се нарича root потребител. Той има всички права над всичко и всички. Останалите потребители имат ограничени права спрямо операционната система и пълни права във собствената си директория, която се намира в директорията /home. Това означава, че потребителят може да се разпорежда само със директориите и файловете в директорията на акаунта си /home/потребител, но не с файлове и директории на други потребители или в системните директории. Всички програми и услуги, стартирани от определен потребител, придобиват неговите права. Някои програми, предназначени за управление на операционната система, не могат да се стартират от обикновен потребител, а само от root.

Права потребителите

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

1. Файловете трябва да се указват дали са изпълними или не.
2. Чия собственост е файла или директорията.
3. Права за употреба на файловете и директориите. Тук имаме три варианта:
a) права на собственика,
b) права на потребителите от групата
c) права на другите потребители

Тези три пункта имат следните възможности:
a) файла или директорията са забранени
b) файла или директорията може да се отворят, но не и да се променят
c) файла или директорията може да се отварят и променят.

samyil@desktop:~$ ls -la
total 200
drwxr-xr-x 32 samyil samyil  4096 апр 25 16:21 .
drwxr-xr-x  3 root   root    4096 мар 31 19:53 ..
drwx------  3 samyil samyil  4096 апр  1 02:26 .adobe
-rw-------  1 samyil samyil 10957 апр 26 02:22 .bash_history
-rw-r--r--  1 samyil samyil   220 мар 31 19:53 .bash_logout
-rw-r--r--  1 samyil samyil  3771 мар 31 19:53 .bashrc
drwx------ 24 samyil samyil  4096 апр 20 11:00 .cache
drwxr-xr-x  2 samyil samyil  4096 мар 31 20:26 Music
drwxrwxr-x  2 samyil samyil  4096 апр  2 23:51 .nano

Символите в началото на всеки ред представляват флаговете, показващи правата за изпълнение на файла или директорията. d показва, че файла представлява директория. Липсата на такъв символ указва, че файла си е обикновен файл. Останалите символи описват правата за достъп до файла от различните потребители. Както казахме, имаме три групи потребители: собственик, група и останалите. За всяка такава група има три варианта за достъп: r (четене ), w (писане ) и x (изпълнение). Така получаваме последователност от 10 символа, описващи правата за достъп. Посочената поредица от флагова ни казва, че Music е директория, собственика може да я изпълнява, да чете и пише в нея. Потребителите от групата могат само да я изпълняват (разглеждат) и да четат файловете, докато останалите могат само да отварят тази директория. Да се изпълни една директория? Значи, че може да се разгледа съдържанието на тази директория. Ако за някой потребител директорията не е означена с x , то той не може да види съдържанието и.

Създаване собственик и група на файл.

chown samyil:samyil /home/samyil/new.txt

Създаване права на файл.

chmod 777 /home/samyil/new.txt
7 read, write and execute rwx
6 read and write          rw-
5 read and execute        r-x
4 read only               r--
3 write and execute       -wx
2 write only              -w-
1 execute only            --x
0 none                    ---

su – превключване между потребителите

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

С командата su знаейки паролата на даден потребител, винаги можете да влезете в неговият акаунт и да ползвате неговите права.

su име на потребител

Докато сме в системата като обикновен потребител промпта изглежда така:

samyil@host2:~$

Когато влезем в системата като root вече промта ще изглежда така;

root@host2:~#

Промпта е променен и знака # показва че сте root.

sudo – превръщане в root

Sudo е програма за Unix подобните операционни системи която позволява на потребителите да работят с програми с привилегии за сигурност на root потребител. За разлика от съответната команда su, потребителите трябва да представят собствената си парола за удостоверяване, а не паролата на root.

Конфигурационния файл на sudo е /etc/sudorc а за да се причисли обикновения потребител в групата sudo трябва да се добави в /etc/group обикновенно като sudo:x:xx:обикновен-потребител.

За да се изпълни команда като root от текущия потребител се добавя само sudo преди командата

samyil@host2:~$ sudo service apache2 restart
[sudo] password for samyil:*****************
 * Restarting web server apache2      [ OK ]
samyil@host2:~$

Програмиране на bash

Една програма за bash комбинира UNIX командите по даден начин, за да изпълни определена задача. Програмата за bash представлява текстов файл, съдържащ команди, които можете да въведете със най-обикновен текстов редактор като nano. Този текстов файл се нарича скрипт за обвивката.

Изпълняваме в терминала “nano script” за да отвори редактора nano файла script и въвеждаме:

#!/bin/bash
echo "Hello, World"

с Ctrl+O запаметявайки файла а с Ctrl+x излизаме от него

за да създадем традиционния Hello, World script трябва да направим скрипта изпълним

chmod 755 script

А за да го изпълним

samyil@desktop:~$ ./script
Hello, World

pipe в shell

Pipe е една от най-важните характеристики, които са налични в Linux shell. Тази функция е просто удивителна за хора, които не са запознати с концепцията за pipe. Te са напълно изненадани когато видят че работи. С използването на pipe се свързват две или повече програми. С pipe обикновенно с изхода на дадена команда изпращаме поток от данни за да действа като вход за друга команда.

пример:

root@host:~# ls -la /var/log/ | grep mail
-rw-r--r--  1 syslog adm           0 мар 25 06:25 mail.err
-rw-r-----  1 syslog adm         144 мар 24 14:10 mail.err.1
-rw-r-----  1 syslog adm         422 фев 28 23:42 mail.err.2.gz
-rw-r-----  1 syslog adm        1988 фев 27 11:06 mail.err.3.gz
-rw-r--r--  1 syslog adm    11069351 апр 28 12:50 mail.log
-rw-r--r--  1 syslog adm    10353702 апр 24 06:25 mail.log.1
-rw-r--r--  1 syslog adm      923847 апр 18 06:25 mail.log.2.gz
-rw-r--r--  1 syslog adm      783193 апр 10 06:25 mail.log.3.gz
-rw-r--r--  1 syslog adm     1247165 апр  3 06:25 mail.log.4.gz
root@host:~# cat * | grep "Linux" | grep -v "UNIX" | wc -l

Създаване и изтриване на потребители

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

samyil@desktop:~$ sudo adduser ivan
[sudo] password for samyil:
Adding user `ivan' ...
Adding new group `ivan' (1001) ...
Adding new user `ivan' (1001) with group `ivan' ...
Creating home directory `/home/ivan' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: ****
Retype new UNIX password: ****
passwd: password updated successfully
Changing the user information for ivan
Enter the new value, or press ENTER for the default
	Full Name []:
	Room Number []:
	Work Phone []:
	Home Phone []:
	Other []:
Is the information correct? [Y/n] y

Нека видим какво направи скрипта:

създаде директoрия:

samyil@desktop:~$ sudo ls -la /home/ivan/
total 32
drwxr-xr-x 2 ivan ivan 4096 апр 28 13:12 .
drwxr-xr-x 4 root root 4096 апр 28 13:12 ..
-rw-r--r-- 1 ivan ivan  220 апр 28 13:12 .bash_logout
-rw-r--r-- 1 ivan ivan 3771 апр 28 13:12 .bashrc
-rw-r--r-- 1 ivan ivan 8980 апр 28 13:12 examples.desktop
-rw-r--r-- 1 ivan ivan  675 апр 28 13:12 .profile

потребител във файла:

samyil@desktop:~$ sudo cat /etc/passwd | grep ivan
ivan:x:1001:1001:,,,:/home/ivan:/bin/bash

паролата му в:

samyil@desktop:~$ sudo cat /etc/shadow | grep ivan
ivan:$6$h/gHX8qn$G.0BuGUEiwZfWdovdGKGsaHyYyev9PTrjoFLKwLvona1GaQHnTmBKP1G08C8OaPm.bVqDPycYX9CdcPU3uJO51:16919:0:99999:7:::

добави потребител ivan към група ivan

samyil@desktop:~$ sudo cat /etc/group | grep ivan
ivan:x:1001:

Изтриване на Иван:

samyil@desktop:~$ sudo deluser --remove-home ivan
Looking for files to backup/remove ...
Removing files ...
Removing user `ivan' ...
Warning: group `ivan' has no more members.
Done.

Мрежа в Линукс

Няма такова нещо като Cisco мрежи, Windows мрежи или Linux мрежи ! Има мрежови стандарти, които се поддържат от всички. Както производители на хардуер така и разработчици на софтуер.

RFC (Request for Comments) е термин за компютърни мрежи и Интернет и представлява работен документ с пореден номер в серия от такива документи, съдържащ предложения за стандарти или допълнителна информация. Тези документи се използват широко от общностите на Интернет и Юникс потребителите. Поредицата от RFC документи започва през 1969 като част от проекта ARPANET, предшественик на Интернет. Днес това е официалният канал, през който IETF и други Интернет организации публикуват стандарти.

OSI (на английски: Open Systems Interconnection Basic Reference Model) е теоретичен модел, описващ принципния начин на комуникация в компютърните мрежи. OSI моделът предоставя обща рамка, която производителите и разпространителите да следват при проектиране на хардуера, операционните системи и протоколите, като дефинира стандартните спецификации за комуникация между системите.

командата ifconfig: Най-важния аспект на Линукс е работата му в мрежа. Основната команда, която служи за конфигурирането на мрежата е ifconfig. Чрез нея може да се задават IP адресите на мрежовите интерфейси, мрежовата маска и т.н.

enp2s0    Link encap:Ethernet  HWaddr d0:50:99:59:45:8d
          inet addr:192.168.10.101  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::e07e:75be:3cef:a457/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6482389 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7428944 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4147355784 (4.1 GB)  TX bytes:8140197137 (8.1 GB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:17550 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17550 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:2797709 (2.7 MB)  TX bytes:2797709 (2.7 MB)

enp2s0 и lo са идентификаторите на мрежовите интерфейси, като enp2s0 е първата мрежова карта, а lo е интерфейса осигуряващ loopback. Този интерфейс съществува винаги, даже и ако компютъра няма инсталирана мрежова карта. inet addr показва IP адреса, който е присвоен на съответния интерфейс; Bcast – адреса за броадкаст на мрежата; Mask – мрежовата маска. Link encap показва типа на интерфейса. Ако интерфейса е мрежова карта Hwaddr показва нейния хардуерен адрес (MAC адрес).

ifconfig enp2s0 192.168.10.101/24

командата route. Чрез нея администратора може да манипулира маршрутизиращата таблица на ядрото на операционната система. Най-простото използване на командата е:

route add default gw 192.168.10.1

DNS сървъри за имена: Ако се конфигурира gateway, компютъра ще получи и достъп до Интернет. Достъпът до Интернет изисква и задаване на DNS сървър във файла /etc/resolv.conf.

nameserver 8.8.4.4
nameserver 8.8.8.8

командата ping

Ping е компютърна програма за мрежова администрация, използвана за проверка на достъпността на хостове в интернет или локална мрежа. Използва протокола (ICMP). Името пинг произлиза от сонарната терминология.
Ping работи на принципа на ехото, като изпраща съобщение чрез ICMP протокола до отдалечен компютър. Съобщението съдържа „искане“ за отговор от хоста. В този процес се измерва времето от предаване на съобщението до времето на получаването му от първоначалния компютър (двупосочния път) и се записва всяка загуба на пакети. Резултатите от теста се отпечатват на екрана под формата на статистически съобщения.
Резултат от програмата Ping, при тестване на хоста google.com:

sami@sami:~$ ping abv.bg
PING abv.bg (194.153.145.104) 56(84) bytes of data.
64 bytes from abv.bg (194.153.145.104): icmp_req=1 ttl=60 time=9.10 ms
64 bytes from abv.bg (194.153.145.104): icmp_req=2 ttl=60 time=8.46 ms
64 bytes from abv.bg (194.153.145.104): icmp_req=3 ttl=60 time=8.19 ms
64 bytes from abv.bg (194.153.145.104): icmp_req=4 ttl=60 time=8.96 ms
^C
--- abv.bg ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 8.199/8.682/9.107/0.379 ms

Ping може да се стартира чрез използване на различни опции в командния ред, които позволяват специални режими на работа, като например да се уточни размера на изпращаните пакети и др. С Ping може да се злоупотребява, обикновено под формата елементарна DoS атака, в която програмата е настроена така, че да изпраща много пакети с големи размери, които да „наводнят“ атакувания хост и да затруднят работата му.

командата traceroute

Често пъти е полезно да бъде проследен маршрута, по който даден пакет поема пътя от компютъра източник до хоста местоназначение. TCP/IP стековете включват помощна програма за проследяване на маршрута, която позволява да идентифицирате маршрутизаторите, през които преминава съобщението.
В следващият пример е използване командата traceroute за да бъде проследен маршрута на пакетите от източника до местоназначението:

sami@sami:~$ traceroute abv.bg
traceroute to abv.bg (194.153.145.104), 30 hops max, 60 byte packets
 1  172.16.50.1 (172.16.50.1)  3.660 ms  3.642 ms  3.634 ms
 2  93.155.130.57 (93.155.130.57)  3.625 ms  3.616 ms  3.606 ms
 3  212.70.158.89 (212.70.158.89)  10.177 ms * *
 4  netinfo.bix.bg (193.169.198.168)  10.149 ms  10.150 ms  10.142 ms
 5  abv.bg (194.153.145.104)  10.131 ms  10.124 ms  10.115 ms

Както можете да видите, проследяването показва IP адрес и името на препращащия компютър или маршрутизатор. На пакета са му били необходими четиринадесет скока, за да достигне до своето местоназначение, което е хостьт с име www.google.bg. Времената за отиване и връщане (в милисекунди) са показани за всеки скок.

командата nmap

Nmap (Network Mapper) е порт-скенер с отворен код създаден от Гордън Лайън. Използва се за откриване на хостове и активни услуги в компютърна мрежа.
Nmap изпраща специално изработени пакети до хостa и след това анализира отговорите. За разлика от други порт-скенери, Nmap проверява условията в мрежата (претоварване на мрежата и др.) преди сканирането. Благодарение на голямата общност от активни потребители, които предоставят информация и подобряват характеристиките му, Nmap е успял да разшири възможностите си за сканиране, като освен, че открива, дали един хост е активен или определен порт е отворен, той може да определи операционната система на хоста и нейната версия, наименованието и версиите на услугите, които са активни на хоста, типа на устройството, наличието на защитна стена и др.

sami@sami:~$ nmap 10.129.3.7

Starting Nmap 6.00 ( http://nmap.org ) at 2012-12-18 09:55 EET
Nmap scan report for 10.129.3.7
Host is up (0.011s latency).
Not shown: 987 closed ports
PORT     STATE    SERVICE
21/tcp   open     ftp
22/tcp   open     ssh
53/tcp   open     domain
80/tcp   open     http
139/tcp  filtered netbios-ssn
445/tcp  filtered microsoft-ds
1433/tcp open     ms-sql-s
1947/tcp open     sentinelsrm
2000/tcp open     cisco-sccp
2002/tcp open     globe
3389/tcp open     ms-wbt-server
8080/tcp open     http-proxy
8291/tcp open     unknown
Nmap done: 1 IP address (1 host up) scanned in 14.40 seconds

SSH – Отдалечен достъп

Основeн инструмент на системния администратор за достъп до отдалечен Линукс е SSH.

SSH, или Secure Shell, е протокол, използван за сигурен достъп в отдалечени системи. Това е най-разпространеният начин за достъп до отдалечен Linux и Unix подобни сървъри.

Инструментът на Linux за свързване към отдалечена система, използвайки SSH съвсем естествено също се нарича ssh и ползва следния синтаксис:

samyil@desktop:~$ ssh samyil@host2.itservice-bg.net -p 22
The authenticity of host 'host2.itservice-bg.net (93.155.130.11)' can't be established.
ECDSA key fingerprint is SHA256:6/4c07gAUtmnTeM35ZqiNBYoZFkMKcC1UF+VPyYmBgI.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'host2.itservice-bg.net' (ECDSA) to the list of known hosts.
samyil@host2.itservice-bg.net's password:
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 4.2.0-35-generic x86_64)

 * Documentation:  https://help.ubuntu.com/
Last login: Thu Apr 28 08:38:46 2016 from 93.155.130.38
samyil@host2:~$ w
 09:43:47 up 6 days,  8:17,  2 users,  load average: 0,00, 0,04, 0,05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
samyil   pts/1    93.155.130.38    08:38   27:04   0.07s  0.00s sshd: samyil
samyil@host2:~$

Инструментът за Windows за свързване към отдалечена система, използвайки SSH се нарича putty, безплатен е за ползване и се стартира без да се инсталира.

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

Debian подобните системи разполагат с “пакети” което е общо взето колекция от файлове за една програма пакетирани в един общ файл, с който се работи по-лесно. Във всеки пакет има специфични файлове, наречени инсталационни скриптове, които се четат от инсталатора и указват къде да се копират останалите файлове от пакета в системата.

Много от програмите ползват еднакви други програми и библиотеки. За това във Линукс повечето програми ползват споделени ресурси от библиотеки когато това е възможно. Така не се налага пакетите на програмите да носят всичко необходимо със себе си и да бъдат ненужно големи, както това става в други операционни системи. Когато един пакет се нуждае от друг пакет, това се нарича зависимост. Всеки пакет в Линукс знае от какво зависи, работата на инсталатора е да удовлетвори тези зависимости.

Хранилищата се намират на сървъри в Интернет в които има пакети и пакетния мениджър просто ги тегли и инсталира. Самия пакетен мениджър съхранява информация в себе си къде се намира и какво има в дадено хранилище.

опресняване на базата данни на хранилищата

sudo apt-get update

обновление на всички пакети

sudo apt-get upgrade

инсталиране на повече от един пакет

sudo apt-get install apache2 php5 libapache2-mod-php5 mysql-server mysql-client

инсталиране на един пакет и дейснталирането му

sudo apt-get install php5-xcache
sudo apt-get --purge remove php5-xcache

поправка на пакетите

sudo apt-get install -f

автоматично почистване на системата от ненужни пакети

sudo apt-get autoclean
sudo apt-get autoremove

Какво е сървър

Сървър е компютър, стартиращ сървърен софтуер и предоставящ една или повече услуги на други компютри в мрежата. Сървърните услуги обикновенно представляват база данни, WEB, SAMBA, MAIL, FTP, DNS, GAME, NTP, PROXY, DATABASES, PRINT сървър и др.

Сървърният софтуер се характеризира с това, че работи на базата на приложение, което слуша за заявки (request) и връща отговор (response), като и двете операции са по предварително зададен протокол. Тъй като заявката може да пристигне по всяко време, сървърният софтуер е постоянно стартиран, чакайки за заявка.

Сървърът е компютър, който работи съвместно с други компютри в компютърна мрежа. При комуникацията сървърът предоставя услуги към останалите компютри, наричани клиенти. Терминът „сървър“ е пряко свързван с модела за обслужване (наричан още мрежова архитектура) клиент-сървър, който представлява антипод на модела P2P (peer to peer, равен към равен).

DNS сървър – Bind

Системата за домейн имената (DNS, Domain Name System) представлява базовата технология, върху която е изграден интернет. Компонентите които изграждат DNS са IP адресите и домейн имената.

Домейн имената са названия на сайтовете в интернет и представляват една или няколко думи, отделени с точка от съответния домейн от високо ниво, например domain.com. Домейните са обвързани с IP адресите, тъй като всеки сайт е разположен върху някаква машина, която има съответен IP адрес.

През 1984 г., четирима студенти от Калифорнийски университет, Бъркли написват първата Unix имплементация, наречена Berkeley Internet Name Domain (BIND) сървър. Днес това е една от най-разпространените сървърни програми за изпълняване на DNS заявки.

Главен конфигурационен файл.

samyil@host:~$ sudo cat /etc/bind/named.conf.local
};
zone "itservice-bg.net" {
        type master;
	allow-query { any; };
        allow-transfer {93.155.130.11;};
        file "/etc/bind/pri.itservice-bg.net";
};

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

samyil@host:~$ sudo cat /etc/bind/pri.itservice-bg.net
$TTL              86400
@ IN      SOA     ns1.itservice-bg.net. support.itservice-bg.net. (
                  2016042202 ; serial, todays date + todays serial #
                  28800      ; refresh, seconds
                  7200       ; retry, seconds
                  604800     ; expire, seconds
                  86400 )    ; minimum, seconds
;

cloud             86400 A   93.155.130.11
data              86400 A   93.155.130.11
host              86400 A   93.155.130.14
host2             86400 A   93.155.130.11
itservice-bg.net. 86400 A   93.155.130.14
mail              86400 A   93.155.130.14
netmon            86400 A   93.155.130.11
ns1               86400 A   93.155.130.14
ns2               86400 A   93.155.130.11
smtp              86400 A   93.155.130.14
www               86400 A   93.155.130.14
itservice-bg.net. 86400 MX  10    mail.itservice-bg.net.
itservice-bg.net. 86400 MX  20    host2.itservice-bg.net.
itservice-bg.net. 86400 NS        ns1.itservice-bg.net.
itservice-bg.net. 86400 NS        ns2.itservice-bg.net.
itservice-bg.net. 86400 TXT       "v=spf1 a mx ptr ip4:93.155.130.14 -all"

Проверка на домейна с кой IP адрес е асоцииран.

samyil@host:~$ ping mail.itservice-bg.net
PING mail.itservice-bg.net (93.155.130.14) 56(84) bytes of data.
64 bytes from host.itservice-bg.net (93.155.130.14): icmp_seq=1 ttl=64 time=0.008 ms
64 bytes from host.itservice-bg.net (93.155.130.14): icmp_seq=2 ttl=64 time=0.010 ms
^C
--- mail.itservice-bg.net ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2998ms
rtt min/avg/max/mdev = 0.008/0.009/0.010/0.002 ms

FTP сървър – Proftpd

File Transfer Protocol (Протокол за пренос на файлове, FTP) представлява мрежов протокол от тип клиент-сървър, предоставящ възможност за обмяна на файлове между машини, свързани в локална мрежа или в Интернет. Протоколът за пренос на файлове използва тип комуникация между клиент и сървър. Клиентът е специално разработена програма, чрез която се предоставя лесен начин за използване на възможностите за комуникация. Протоколът предоставя възможността за изпълняване на операции на сървъра като показване на съдържанието на директории, смяна на директорията, създаване на директории и триене на файлове.

ProFTPD (съкратено от Pro FTP демон) е FTP сървър. ProFTPD е софтуер за свободно ползване с отворен код, съвместим с Unix-подобни системи. Изключително богат на функции FTP сървър, излагайки голямо количество опции за конфигуриране от потребителя.

конфигурационен файл: /etc/proftpd/proftpd.conf

След като е инсталиран proftpd директно обслужва локалните потребители в системата, но може и да се конфигурира с виртуални такива свързвайки го с база данни.

Най често употребявания графичен клиент е Filezilla.

HTTP сървър – Apache

Web сървърът приема, обработва и отговаря на HTTP заявки. Тези заявки се подават от Web браузърите, които клиентските компютри използват за комуникиране, изпращане и получаване на информация по Интернет. Взаимоотношението между Web сървъра и Web клиента се нарича взаимоотношение клиент-сървър.

Apache Web Server е най-често използвания Web сървър в Интернет. Причината за неговата популярност е стабилността и поддръжката на множество езици като PHP, ASP, JSP, Perl, CGI, SSI и много други. Apache поддържа множество сайтове на един сървър. Това става чрез конфигуриране на виртуални хостове. В практиката често се използва термина “shared hosting” споделен хостинг.

Главният конфигурационен файл на Apache е /etc/apache2/apache2.conf.

Конфигурационен файл на домейна http://files.itservice-bg.net

sudo nano /etc/apache2/sites-available/files.itservice-bg.net.conf

В конфигурационните файлове се описват така наречените директиви, които сървъра използва за управлението си.

<VirtualHost *:80>
        ServerAdmin support@itservice-bg.net
        ServerName files.itservice-bg.net
        ServerAlias www.files.itservice-bg.net
        DocumentRoot /home/samyil/files
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<Directory /home/samyil/files>
        Options Indexes FollowSymLinks
</Directory>

.htaccess (hypertext access) е конфигурационен файл за Apache web сървъри, който има въздействие в рамките на директория и нейните поддиректории. Чрез този файл вие можете да направите промени в настройките на сървъра за вашия сайт, без да имате достъп до основния конфигурационен файл на сървъра.

order allow,deny
allow from all
deny from 93.155.130.38
deny from 93.155.169.0/24

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

samyil@host2:~$ sudo service apache2
Usage: apache2 {start|stop|graceful-stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean}

Moдyлнaтa cиcтeмa нa Арасhе пoзвoлявa мoдyли дa бъдaт зapeждaни или cпиpaни в зaвиcимocт oт нyждитe нa администратора. Ядpoтo нa Арасhе ocтaвa непроменено и ce зapeждaт caмo дoпълнитeлни мoдyли, ĸoитo пpeдocтaвят paзлични фyнĸции. Същecтвyвa гoлямo paзнooбpaзиe oт нaличие мoдyли. Пpимep: mоd_рhр, пpи ĸoйтo ce вгpaждa РНР интepпpeтaтop в пpoцeca.

samyil@host2:~$ sudo apachectl -M
Loaded Modules:
 core_module (static)
 so_module (static)
 watchdog_module (static)
 http_module (static)
 log_config_module (static)
 logio_module (static)
 version_module (static)
 unixd_module (static)
 access_compat_module (shared)
 actions_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 auth_digest_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgi_module (shared)
 dav_module (shared)
 dav_fs_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 fastcgi_module (shared)
 fcgid_module (shared)
 filter_module (shared)
 include_module (shared)
 mime_module (shared)
 mpm_prefork_module (shared)
 negotiation_module (shared)
 php5_module (shared)
 python_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 socache_shmcb_module (shared)
 ssl_module (shared)
 status_module (shared)
 suexec_module (shared)
 suphp_module (shared)

В Apache е обърнато сериозно внимание на регистриране на събития в сървъра като основно те са два вида, грешки и посещения:

samyil@host2:~$ sudo tail -f /var/log/apache2/error.log
[sudo] password for samyil:
[Thu Apr 28 09:01:20.010044 2016] [suexec:notice] [pid 6513] AH01232: suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)
[Thu Apr 28 09:01:20.018817 2016] [auth_digest:notice] [pid 6514] AH01757: generating secret for digest authentication ...
[Thu Apr 28 09:01:20.019359 2016] [:notice] [pid 6517] FastCGI: process manager initialized (pid 6517)
[Thu Apr 28 09:01:20.038341 2016] [:notice] [pid 6514] mod_python: Creating 8 session mutexes based on 150 max processes and 0 max threads.
samyil@host2:~$ sudo tail -f /var/log/apache2/access.log
157.55.39.84 - - [28/Apr/2016:10:37:27 +0300] "GET /baza/ic_power/sm_data/SG5842A_data.pdf HTTP/1.1" 200 482856 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
93.155.130.4 - nagiosadmin [28/Apr/2016:10:37:38 +0300] "GET /nagios3/cgi-bin/status.cgi?host=all&limit=0 HTTP/1.1" 200 17521 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36"
93.155.130.4 - nagiosadmin [28/Apr/2016:10:38:08 +0300] "GET /nagios3/cgi-bin/status.cgi?host=all&limit=0 HTTP/1.1" 200 17524 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.86 Safari/537.36"

Сървър за база данни – MySQL

MySQL е многопоточна, многопотребителска, SQL (Structured Query Language) система за управление на бази данни.

Достъпни са програмни интерфейси, позволяващи програми, написани на различни програмни езици да имат достъп до MySQL бази данни. Такива са: C, C++, C#, Java, Perl, PHP, Python, Ruby и други като всеки от тях има специфичен програмен интерфейс.

MySQL е най популярна за Интернет приложения писани на езика PHP така наречената база данни LAMP (Linux-Apache-MySQL-PHP)

MySQL може да се администрира в терминал с командите mysql и mysqladmin а също и с популярната алтернатива, написана на PHP phpMyAdmin през уеб браузер.

SMTP сървър – Postfix

SMTP (Simple Mail Transfer Protocol) е Интернет стандарт host-to-host имейл транспортен протокол и традиционно оперира с TCP порт 25. SMTP протокола се използва от повечето имейл системи, които изпращат поща. Писмата след това могат да се изтеглят с POP3 или IMAP от локален клиент или програма. Широко разпространение е получил в началото на 80-те години (1980). Преди това е бил използван (Unix to Unix Copy Program) протокола, който изисква от изпращача пълен маршрут до получателя или постоянно съединение между компютрите на изпращача и получателя. SMTP протоколът е създаден да бъде еднакво полезен на който и да е компютър и потребител.

Postfix е безплатен пощенски сървър с отворен код (MTA – mail transfer agent),осигурява електронната поща между сървърите препращайки я, написан е като алтернатива на Sendmail MTA.

Squirrelmail WEB mail

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

Dovecot IMAP/POP3 сървър

Dovecot е IMAP и POP3 сървър с отворен код за Linux/UNIX подобни системи, написан предимно с идеята да повиши сигурността. Dovecot за първи път го обявен през юли 2002 г. разработчиците му основно имат за цел създаването на лек, бърз и лесен за настройване с отворен код MailServer. Dovecot може да се използва в търговска употреба без никакви лицензионни такси, има и комерсиална версия която се предлага като Dovecot Pro. По неофициални данни над 60% от IMAP сървърите в света се обслужват от Dovecot.

Dovecot работи със стандартни MBOX, Maildir формати. Той е напълно съвместим с всички IMAP/POP3 куриерски сървъри, както и пощенски клиенти с достъп до пощенските кутии директно. Dovecot поддържа всички съвремени схеми за удостоверяване за IMAP и POP3 протокола.

SASL удостоверяване

Simple Authentication Security Layer (SASL) е рамка за удостоверяване и сигурност на данните в интернет протоколи. Тя описва механизмите за удостоверяване от протоколи за приложения, на теория позволява всеки един механизъм за удостоверяване поддържан от SASL да се използва във всеки протокол приложение, което използва SASL. В пощенския сървър чрез SASL клиента се удостоверява чрез Transport Layer Security (TLS) който е част от SASL.

Amavisd – пощенски филтър

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

Spamassassin – антиспам

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

Clamav – пощенски антивирус

ClamAV AntiVirus е безплатен, с отворен код антивирусен софтуер с инструментариум който може да открие много видове зловреден софтуер. Една от основните му функции е в пощенския сървър като мейл скенер за вируси. Приложението е разработено за Unix/Linux но има версии и на трети страни и за Windows

Samba сървър – споделяне на файлове

Server Message Block(SMB) e протокол който се използва от Windows базирани компютри за организиране на достъп до файлове и принтери, така наречените споделени файлове (shared files) и споделени принтери (shared printers). С конфигурирането на Samba сървър под Линукс може да се организира достъп до дисковете и принтерите за Windows машини.

samyil@host2:~$ sudo nano /etc/samba/smb.conf
[global]
wins support = no
dos charset = CP1251
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = ubuntu
security = user
map to guest = bad user
dns proxy = no
domain master = no
preferred master = no
local master = no
os level = 8

[Public]
path = /mnt/hdd4/Public
browsable =yes
writable = no
guest ok = yes
read only = yes

Syslog – запис на събитията

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

Протоколът syslog е клиент-сървър тип. Syslog клиентът изпраща малки текстови съобщения/пакети (по-малки от 1024 байта) към syslog сървъра. Той се нарича най-често “syslogd“, “syslog daemon” или “syslog server“. Пакетите могат да се изпращат по UDP и/или TCP. Често данните се предават в чист текст, но има възможност да се предават криптирани с помощта на програми.

В Линукс Syslog записва съобщенията си в различни файлове в зависимост от програмите в директорията /var/log/

samyil@host:~$ ls /var/log/
alternatives.log       fontconfig.log         ntpstats
alternatives.log.1     fsck                   php5-fpm.log
alternatives.log.2.gz  installer              php5-fpm.log.1
apache2                ispconfig              php5-fpm.log.2.gz
apt                    ispconfig_install.log  php5-fpm.log.3.gz
auth.log               kern.log               php5-fpm.log.4.gz
auth.log.1             kern.log.1             php5-fpm.log.5.gz
auth.log.2.gz          kern.log.2.gz          php5-fpm.log.6.gz
auth.log.3.gz          kern.log.3.gz          php5-fpm.log.7.gz
auth.log.4.gz          kern.log.4.gz          php5-fpm.log.8.gz
boot.log               lastlog                pure-ftpd
btmp                   mail.err               rkhunter.log
btmp.1                 mail.err.1             rkhunter.log.1
clamav                 mail.err.2.gz          rkhunter.log.2.gz
dbconfig-common        mail.err.3.gz          rkhunter.log.3.gz
dist-upgrade           mail.log               rkhunter.log.4.gz
dmesg                  mail.log.1             rkhunter.log.old
dmesg.0                mail.log.2.gz          suphp
dmesg.1.gz             mail.log.3.gz          syslog
dmesg.2.gz             mail.log.4.gz          syslog.1
dmesg.3.gz             memcached.log          syslog.2.gz
dmesg.4.gz             mysql                  syslog.3.gz
dpkg.log               mysql.err              syslog.4.gz
dpkg.log.1             mysql.log              syslog.5.gz
dpkg.log.2.gz          mysql.log.1.gz         syslog.6.gz
fail2ban.log           mysql.log.2.gz         syslog.7.gz
fail2ban.log.1         mysql.log.3.gz         udev
fail2ban.log.2.gz      mysql.log.4.gz         upstart
fail2ban.log.3.gz      mysql.log.5.gz         wtmp
fail2ban.log.4.gz      mysql.log.6.gz         wtmp.1
faillog                mysql.log.7.gz

Cron – автоматизиране на задачи

Cron Jobs е автоматизиран процес за стартиране на определени задачи и процеси. Чрез него можете да задавате време за изпълнение на даден процес, както и да настройвате период за повторение на изпълнението на процеса. Ако желаете да стартирате изпълнението на php, perl, python, bash скриптове в различен период от време.

# ┌───────────── min (0 - 59)
# │ ┌────────────── hour (0 - 23)
# │ │ ┌─────────────── day of month (1 - 31)
# │ │ │ ┌──────────────── month (1 - 12)
# │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
# │ │ │ │ │
# │ │ │ │ │
# * * * * *  command to execute
# m h dom mon dow user	command
17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly
25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

Fail2ban – защита от атаки

Fail2ban е скрипт написан на езика Python с основна цел предотвратяване на прониквания в сървъра, Brute Force речникова атака или DoS отказ на услуга.

Fail2ban работи чрез наблюдение на лог файлове (например /var/log/auth.log, /var/log/apache/access.log и т.н.), за избрани записи и се изпълняват скриптове, базирани на тях. Най-често това се използва за блокиране на избраните IP адреси, които могат да принадлежат на хората които се опитват да нарушат сигурността на системата. Той може да забрани всякакъв IP адрес, който прави твърде много опити за влизане или извършва друго нежелано действие в срок, определен от администратора. Fail2ban обикновено блокира IP адрес в рамките на определен период от време така, че след това блокирването отпада. Скрипта използва iptables защитната стена която е по подразбиране в Линукс.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.