Изграждане на SOHO сървър с Gentoo Linux
Ver. 0.1.3
Съдържание 1. Увод.............................................................................................................................................1 2. Цел и задачи на работата...........................................................................................................2 3. Определяне на необходимия софтуер......................................................................................3 3.1 Избор на операционна система..........................................................................................3 3.2 Избор на обслужващ софтуер............................................................................................4 3.2.1 DHCP............................................................................................................................4 3.2.2 DNS...............................................................................................................................5 3.2.3 Web-сървър...................................................................................................................5 3.2.4 Споделени мрежови ресурси......................................................................................6 3.3 Избор на софтуер за администриране...............................................................................7 3.3.1 Достъп до конзолата....................................................................................................7 3.3.2 Графична среда за администриране...........................................................................7 3.4 Избор на софтуер за наблюдение.......................................................................................7 3.5 Друг необходим софтуер....................................................................................................8 4. Изисквания към хардуера..........................................................................................................9 4.1 Хардуер на сървъра.............................................................................................................9 4.2 Периферни устройства.....................................................................................................10 4.3 Мрежово оборудване.........................................................................................................10 4.4 Данни за използваните компоненти................................................................................11 5. Реализация на системата.........................................................................................................12 5.1 Изтегляне на инсталационната среда..............................................................................12 5.2 Подготовка за инсталацията.............................................................................................13 5.3 Подготовка на твърдия диск.............................................................................................14 5.3.1 Създаване на дяловете..............................................................................................14 5.3.2 Създаване на софтуерен RAID.................................................................................14 5.3.3 Подготовка на LVM...................................................................................................15 5.3.4 Създаване на файлови системи................................................................................16 5.3.5 Монтиране на файловата система............................................................................17 5.4 Инсталация на системата..................................................................................................17 5.4.1 Преминаване към новата операционна система.....................................................17 5.4.2 Настройка на профила..............................................................................................18 5.4.3 Инсталиране и конфигуриране на ядрото...............................................................19 5.4.4 Настройка на системата............................................................................................20 5.4.5 Добавяне на потребител............................................................................................22 5.4.6 Конфигуриране на SSH за сигурен достъп.............................................................22 5.4.7 Инсталация на базовия софтуер...............................................................................23 5.4.8 Инсталация на софтуер за начално зареждане GRUB...........................................24 5.4.9 Рестартиране в инсталираната операционна система............................................25 5.5 Довършителни работи по инсталацията.........................................................................25 5.5.1 Обновяване на системата..........................................................................................29 5.6 Инсталиране и конфигуриране на защитната стена......................................................31 5.6.1 Тестова версия на пакетите......................................................................................32 5.6.2 Принцип на работа на Shorewall..............................................................................32 5.6.3 Минимална настройка на Shorewall........................................................................34 5.7 Webmin – уеб-администриране........................................................................................35 5.7.1 SSH пренасочване на портове..................................................................................36 5.7.2 Работа с Webmin........................................................................................................36 5.8 Инсталация на услугите...................................................................................................37 5.8.1 MySQL........................................................................................................................37 5.8.2 SNMP поддръжка.......................................................................................................38
5.8.3 DHCP Сървър.............................................................................................................38 5.8.4 DNS Сървър...............................................................................................................39 5.8.5 Уеб-сървър Apache.....................................................................................................39 5.8.6 PHP интерпретатор и интеграция с Apache уеб-сървъра.......................................39 5.8.7 Софтуер за споделяне на ресурси в локална мрежа...............................................39 5.8.8 Cacti – софтуер за събиране на информация и чертане на графики.....................40 5.9 Настройка на услугите......................................................................................................40 5.9.1 DNS/DHCP.................................................................................................................40 5.9.2 Apache уеб-услуги.....................................................................................................47 5.9.3 Споделяне на принтер...............................................................................................50 5.9.4 Добавяне на дял за споделени файлове...................................................................52 5.9.5 Споделяне на файлове и директории.......................................................................53 5.9.6 Отдалечено наблюдение...........................................................................................55 5.9.7 Позволяване на услугите в Shorewall......................................................................57 6. Система за електронна поща..................................................................................................58 6.1 Въведение...........................................................................................................................58 6.2 Цел и задачи.......................................................................................................................58 6.3 Архитектура на системата................................................................................................58 6.4 Създаване на SSL сертификати........................................................................................58 6.5 Инсталация на необходимия софтуер.............................................................................59 6.6 Настройка на компонентите.............................................................................................59 6.6.1 LDAP...........................................................................................................................59 6.6.2 SASL AuthD................................................................................................................62 7. Заключение...............................................................................................................................63 Библиография..............................................................................................................................64 Приложение А: Списък с инсталирани пакети...........................................................................I Приложение Б: Конфигурационни файлове..............................................................................V Приложение В: Списък на стартираните услуги и достъпа до тях........................................VI
Указател на илюстрациите Илюстрация 1: Локална мрежа с демилитаризирана зона.......................................................10 Илюстрация 2: Обща структура на локалната мрежа...............................................................11 Илюстрация 3: Структура на логическото управление на томове..........................................15 Илюстрация 4: Разделяне на зони в Shorewall..........................................................................32
Указател на екранните снимки Снимка 1: Links в Framebuffer....................................................................................................28 Снимка 2: Паралелно работещо обновяване.............................................................................28 Снимка 3: Напълно локализиран за работа в България Midnight Commander.......................28 Снимка 4: Вход в Webmin............................................................................................................35 Снимка 5: Настройка на Webmin интерфейса...........................................................................36 Снимка 6: Добавяне на подмрежа управлявана по DHCP.......................................................40 Снимка 7: Създаване на област за непознати клиенти.............................................................41 Снимка 8: Група с настройки за постоянните работни станции.............................................42 Снимка 9: Настройки предавани на участниците в групата....................................................42 Снимка 10: Списъци за контрол на достъпа до DNS................................................................43 Снимка 11: Настройки за адресите на които BIND очаква връзка..........................................43 Снимка 12: Изгледи в BIND........................................................................................................44 Снимка 13: Зона за закупения от потребителя домейн............................................................44 Снимка 14: Създаване на "A" запис...........................................................................................44 Снимка 15: Създаване на необходими синоними с „CNAME“ записи...................................45
Снимка 16: Указване на пощенски сървър за домейна с „MX“ запис....................................45 Снимка 17: Параметри при стартиране на Apache...................................................................46 Снимка 18: Процедура по добавяне на виртуален адрес за уеб-услугите..............................47 Снимка 19: Пренасяне на SSL настройки за създаденият хост...............................................48 Снимка 20: Задаване на адреси за виртуалните хостове..........................................................48 Снимка 21: Контрол на достъпа в CUPS...................................................................................49 Снимка 22: Добавяне на принтер в CUPS.................................................................................50 Снимка 23: Информация за принтера........................................................................................50 Снимка 24: Добавяне на логически том в LVM чрез Webmin.................................................51 Снимка 25: Създаване на LVM дял............................................................................................51 Снимка 26: Монтиране на LVM дял...........................................................................................52 Снимка 27: Настройки за Самба.................................................................................................52 Снимка 28: Добавяне на споделени директории.......................................................................53 Снимка 29: Създаване на споделена директория с права за собственика..............................53 Снимка 30: Редактиране на устройство в Cacti.........................................................................55 Снимка 31: Настройки за маскиране на локалната мрежа в Shorewall...................................56
Това произведение е лицензирано под Криейтив Комънс Признание-Споделяне на споделеното 2.5 България лиценз. За да видите копие на лиценза, посетете http://creativecommons.org/licenses/by-sa/2.5/bg/ или изпратете писмо до Криейтив Комънс на адрес: Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
Конвенции, използвани в документа Работа с конзолата Редактиране на съдържанието на текстов файл Команди, които потребителят трябва да въведе Ред, който потребителят трябва да промени Команди, които потребителят трябва да промени според нуждите си Данни, които потребителят трябва да промени според нуждите си Важна информация, която е добре да бъде запомнена (ще бъде използвана покъсно)
Списък на използваните съкращения SOHO - Small Office/Home Office GNU - GNU's Not Unix GPL - GNU General Public License BSD - Berkeley Software Distribution DHCP - Dynamic Host Configuration Protocol DNS - Domain Name Service BIND - Berkeley Internet Name Domain HTTP - Hypertext Transfer Protocol LEAF - Linux Embedded Appliance Firewall SMB - Server Message Block CUPS - Common UNIX Printing System SSH - Secure SHell VNC - Virtual Network Computing RDP - Remote Desktop Protocol MRTG - Multi Router Traffic Grapher SNMP - Simple Network Management Protocol USB - Universal Serial Bus PDF - Portable Document Format ISDN - Integrated Services Digital Network UTP - Unshielded Twisted Pair FTP - Foiled twisted pair FAT - File Allocation Table BIOS - Basic Input/Output System RAM - Random access memory LVM - Logical volume management MBR - Master Boot Record SMTP - Simple Mail Transfer Protocol POP3 - Post Office Protocol version 3 IMAP - Internet Message Access Protocol IP - Internet Protocol NAT - Network Address Translation TCP - Transmission Control Protocol SSL - Secure Sockets Layer SQL - Structured Query Language MAC - Media Access Control ACL - Access control list IPP - Internet Printing Protocol
Изграждане на SOHO сървър с Gentoo Linux
1. Увод В съвременният свят връзката с Интернет е по-необходима от телефона и факса. Всяка съвременна компания занимаваща се с търговия би искала собствена уеб-страница, дори електронен магазин. Повечето инженерни и икономически дейности в днешно време разчитат на информация от световната мрежа. Когато компютрите които трябва да се свържат към Интернет са повече от един се налага споделяне на връзката между тях. За целта може да се използва превключвател и управлението на мрежата да бъде от страна на доставчика, но това обикновено е нежелателен вариант от гледна точка сигурност и функционалност. В много случаи достатъчен би бил малък маршрутизатор, настройван чрез обикновен уеб-клиент. С такъв клиент разполагат повечето модерни операционни системи. Такива хардуерни устройства обикновено разполагат с вход за връзка с Интернет, няколко (обикновено четири) входа за компютри от локалната мрежа, малка памет и не много мощен процесор. Те предоставят освен споделяне на Интернет връзката и защитна стена за мрежата, както и някои други базови услуги. Тези устройства имат известни недостатъци. Не са мащабируемо решение – ако фирмата се разрасне ще трябва да се търси нов подход. Малко от тях имат възможност за включване на постоянно запомнящи устройства – често нужни за споделяне и съхранение на фирмената информация, така че да е постоянно достъпна за всички в офиса. Софтуера който такива устройства използват (често 4-16MB Линукс дистрибуция) е с минималните нужни за работата на устройството функции. Обикновено липсва софтуер за поддръжка на уеб-страници, както и други услуги които фирмата може да иска да предоставя или използва. Решенията на тези проблеми е добавянето на сървър, който да предоставя нужните услуги на локалната мрежа (като защита и споделяне на Интернет достъпа), имайки повече ресурси и пълно-функционално програмно осигуряване, с възможност за избор от множеството налични софтуерни пакети, и съответно по-богат набор от услуги които да предоставя на своите клиенти. Настоящата работа разглежда процеса по инсталация и настройка именно на такъв сървър за локална мрежа. Разгледани са масово използваните услуги използвани от малките компании, както и е конфигуриран примерен сървър за практическа демонстрация и тестове на работоспособността на решението. А. Цонков
-1-
Изграждане на SOHO сървър с Gentoo Linux
2. Цел и задачи на работата Целта на работата е описание на процеса по конфигуриране, както и самото конфигуриране на многофункционално устройство подходящо за малки мрежи. Устройството трябва да задоволява основните нужди за малки фирми и домашни потребители (SOHO1) с повече от един компютър нуждаещ се от достъп до Интернет. За да отговори на тези нужди устройството трябва да има функциите на маршрутизатор, защитна стена и сървър за локалната мрежа, както и да дава възможност за публикуване на определени услуги в световната мрежа. Основна цели на тази работа ще са настройките да бъдат максимално подробно описани, макар и общи – няма да се навлиза в специфични функции и допълнителни възможности, освен ако това не е нужно за работата на системата. Другият акцент в работата ще бъде сигурността, като предимно се гледа защитеността на вътрешната мрежа и самият сървър от атаки идващи от Интернет, и се предполага, че се има известно доверие на потребителите свързани към вътрешната мрежа. Поради това не са добавени настройки за ограничаване скоростта на достъп, както и допълнителни мерки за защита на администраторския интерфейс. Ако локалната мрежа на потребителя е несигурна той трябва да вземе съответните мерки! Задачите които трябва да бъдат решени са както следва: ●
Избор на софтуер и хардуер;
●
Инсталация на операционната система;
●
Конфигурация на необходимите услуги;
●
Проверка на работоспособността на системата;
●
Експерименти с производителност и поведение на системата;
●
Документация.
Известно е че всеки проблем може да има множество възможни решения, и автора дава една от алтернативите. Читателят сам трябва да прецени до колко тя е подходяща за неговите нужди, какви други възможности има и да проучи по-подробно интересуващите го области.
1 Small Office/Home Office - http://en.wikipedia.org/wiki/Small_office/home_office
А. Цонков
-2-
Изграждане на SOHO сървър с Gentoo Linux
3. Определяне на необходимия софтуер 3.1 Избор на операционна система За операционна система на разработвания сървър е избрана активно развиващата се UNIX-подобна операционна система Linux. Юникс (Unix tm) е операционна система разработена през 60-те години на 20-ти век от Bell Labs. В момента лицензните правата на UNIX се държат от „The SCO Group“. Днес под UNIX обикновено не се разбира конкретно онази операционна система, а всяка една с подобен дизайн, изпълнение, поведение и интерфейс като първата от класа, довела до появата на BSD, SunOS, Tru64, SCO, Irix, AIX, HP/UX и т.н. [1] Линукс също може да означава много неща. По същество, това е ядро на Юникс-подобна операционна система, написана от Линус Торвалдс през студентските му години в Финландия. То е лицензирано под GNU General Public License (GPL), и всеки може да го изтегли2, използва и модифицира за собствените си нужди. И все пак за напред под „Линукс“ ще разбираме хилядите дистрибуции базирани на това ядро и набора инструменти GNU, като Red Hat. Slackware. Mandriva, Debian. SuSE. Gentoo. [2] Поглеждайки DistroWatch откриваме информация за по-известните Линукс дистрибуции. Настоящата работа се спира на мета-дистрибуцията Gentoo. Това което я прави различна от останалите е допълнителната свобода с която разполагат потребителите и. Тя не е Линукс дистрибуция в класическия смисъл на думата, а е инструмент за създаване на дистрибуции. Освен това не е ограничена до Линукс, а може лесно да се използва за създаване и управление на FreeBSD система следвайки инструкциите3. За разлика от повечето известни Линукс дистрибуции, Gentoo няма версии. Подобно на FreeBSD тя има по-скоро начално състояние, в което е потребителя веднага след инсталацията, но при обновяване на системата, софтуерът на потребител инсталирал 2005.1 и друг инсталирал актуалната в момента версия 2007.0 ще бъде еднакъв, стига те да използват еднакви програми върху еднакви архитектури. 2 http://www.kernel.org/ 3 http://www.gentoo.org/doc/en/gentoo-freebsd.xml
А. Цонков
-3-
Изграждане на SOHO сървър с Gentoo Linux
Gentoo поддържа около десет компютърни архитектури. Това е една от най-лесно преносимите дистрибуции, тъй като характерно за нея е при инсталирането на дадено приложение, то да не се добавя като предварително подготвен бинарен пакет към софтуера на системата, а да се компилира от изходен код (например C++ проект). За целта се използва системата Portage, която е централизирано управлявано хранилище/база данни с информация за наличния софтуер, инструкции от къде да се изтегли изходният код, как да се компилира, както и на какви платформи е тестван и за кои се знае, че не е подходящ. По този начин освен лесен пренос на различни платформи, софтуерът използва максимално възможностите на конкретният хардуер върху който ще се използва. Освен това дава възможност на потребителя да избере кои възможности да включи при компилацията, и кои няма да ползва (например ако сървърът няма да работи в IPv6 мрежа не е нужно да се компилира кодът за работа с този протокол в мрежовите приложения)4.
3.2 Избор на обслужващ софтуер Избраната операционна система е достатъчно гъвкава за да бъде използвана добре както за работна станция, така и за сървър. По време на самата инсталация се получава само базов пакет програми - „Системни“. Това отново е нещо типично за BSD, но не и за Линукс, който е съставен от отделни пакети свързани от разработчика на дистрибуцията. За да функционира като сървър, машината предмет на настоящата работа ще има нужда от изброените по-долу пакети и техните зависимости, както и от някои инструменти и програми не пряко свързани с работата и като сървър, но подобряващи работата или улесняващи диагностиката и управлението на системата (например уеб-клиент, който може да се използва от текстова конзола). Тези допълнително инсталирани пакети са така нареченият „Свят“.
3.2.1 DHCP Сървърно приложение, осигуряващо автоматичното задаване на мрежови настройки на свързаните към същата физическа мрежа (или през мост) компютри – клиенти. 4 За повече информация: http://linux-bg.org/cgi-bin/y/index.pl?page=distro&key=gentoo http://www.gentoo.bg/ http://www.gentoo-wiki.com/Main_Page
А. Цонков
-4-
Изграждане на SOHO сървър с Gentoo Linux
Чрез използването на Dynamic Host Configuration Protocol (DHCP) се получава централизирано управление на раздаването на мрежови адреси, и при евентуална промяна в някой от параметрите не е нужно да се пренастройват клиентите един по един. Възможно е също задаване на различни настройки за познати и непознати клиенти. Така например лаптоп на бизнес партньор може да получава веднага достъп до определени мрежови ресурси, докато само служители на фирмата да имат достъп до други ресурси. Най-често използвана в Линукс е реализацията на ISC DHCP (в момента версия 3.0), която ще се използва и в настоящата работа. Друг вариант, използван предимно в системи предпочитащи минимизиране на ресурсите за сметка на функционалност е UDHCP, включен в доста базирани на Linux вградени системи5. Тъй като разглежданата мрежа не е голяма (под 250 компютъра) няма да има някакви специални изисквания към хардуера свързани с тази услуга.
3.2.2 DNS Услугата Domain Name Service (DNS) превръща имена на области в IP адреси и не е задължителна за повечето маршрутизатори, тъй като обикновено доставчикът на Интернет осигурява поне два DNS сървъра. Когато потребителят се явява в ролята на доставчик или иска да опише компютри от вътрешната си мрежа, или да поддържа свой собствен домейн се налага използването на собствен DNS сървър. За целта ще се използва широко разпространеният Berkeley Internet Name Domain (BIND 9)6. При него, както и при DHCP сървъра няма специални изисквания към хардуера.
3.2.3 Web-сървър За поддръжката на уеб-сайта на компанията, както и на някои административни инструменти и услуги за вътрешната мрежа ще има нужда от HTTP сървър. Тъй като няма ограничение на паметта или дисковото пространство (каквито има например в дискетните Линукс дистрибуции –
5 embedded systems 6 http://www.isc.org/products/BIND/bind9.html
А. Цонков
-5-
Изграждане на SOHO сървър с Gentoo Linux
виж LEAF7), ще бъде използван „най-разпространеният уеб-сървър в света в момента“ [3] – Apache httpd. Той предоставя големи възможности за конфигуриране и много от използваните в момента уеб-технологии са съвместими с него.
3.2.4 Споделени мрежови ресурси Лесната обмяната на фирмена информация между компютрите е едно от основните предимства на защитената локална мрежа. Но различните операционни системи имат различни протоколи за споделяне на ресурси. А) Файлове За да бъде по-общо решението представено в настоящия документ е допуснато, че ще се работи в хетерогенна мрежа, съдържаща Линукс, Уиндоус и Макинтош работни станции. Протоколът Server Message Block (SMB) е най-широко разпространен и добре поддържан от множество операционни системи за обмяна на файлове и споделяне на ресурси в локална мрежа. В Линукс този протокол се поддържа от Samba8 услугата, която ще бъде използван и в настоящото решение за споделяне на файлове и директории с клиенти от вътрешната мрежа. Б) Принтери Един от възможните подходи за споделяне на принтери в локалната мрежа е използването отново на Самба услугата, която от своя страна използва принтер-менажер за да изпраща документи към управляваните от сървъра принтери. Най-често използваният днес принтер-менажер е Common UNIX Printing System9 (CUPS). Той има вградена възможност за отдалечен печат и може да се използва от други популярни операционни системи без нуждата от използване на SMB споделени принтери.
7 Linux Embedded Appliance Firewall - http://leaf.sourceforge.net/ 8 http://www.samba.org/ 9 http://www.cups.org/
А. Цонков
-6-
Изграждане на SOHO сървър с Gentoo Linux
3.3 Избор на софтуер за администриране 3.3.1 Достъп до конзолата Класически начин за администриране на UNIX системи е Telnet протоколът, но той не осигурява защита от подслушване, както и други популярни атаки. Като негов наследник се налага Secure SHell (SSH). SSH позволява достъп до конзолата за управление през криптирана връзка, както и допълнителни възможности като обмяна на файлове и пренасочване на портове до услуги, създаване на криптирани сесии и т.н. За всеки сървър е добре да има настроена SSH услугата, тъй като тя дава най-пълни възможности за работа с системата (сякаш потребителя е пред нейните монитор, клавиатура и мишка), и ще бъде активно използван за настройката, а дори и за самата инсталация на разработвания сървър. Софтуерът който ще реализира този протокол (OpenSSH) е част от Gentoo системата.
3.3.2 Графична среда за администриране На самият сървър не се планира инсталиране на графична среда, която би позволила отдалечено администриране по протоколи, подобни на Virtual Network Computing10 (VNC) или Remote Desktop Protocol11 (RDP). Все пак за улесняване на администрирането на системата ще бъде инсталиран софтуер за настройка през уеб-клиент12, достъпен единствено от вътрешната мрежа и защитен с парола и криптиране на връзката. Използваният продукт се нарича Webmin13, и има версии за много дистрибуции, както и за други операционни системи.
3.4 Избор на софтуер за наблюдение Хронология на събитията случващи се в системата се пази от различните програми в журнални файлове. Те обикновено се управляват от Syslog демон. В Gentoo съществуват няколко такива демона, и в конкретният случай ще бъде използвана Syslog-NG реализацията.
10 11 12 13
http://en.wikipedia.org/wiki/VNC http://en.wikipedia.org/wiki/Remote_Desktop_Protocol например Mozilla Firefox http://www.webmin.com/
А. Цонков
-7-
Изграждане на SOHO сървър с Gentoo Linux
За по-добра визуализация на случващото се в системата ще се използват уеб-страници с графики за натоварване на процесора, мрежовите интерфейси и т.н. Такива функции се изпълнява от различни програми като Multi Router Traffic Grapher14 (MRTG) или Nagios, като голяма част от информацията обикновено се събира по протокола Simple Network Management Protocol15 (SNMP), за това ще се наложи да бъде инсталиран и net-snmp пакета. За нашата разработваната е избран лесния за настройка Cacti16.
3.5 Друг необходим софтуер Инструменти нужни на системата: Пакет grub ccache iproute2 vixie-cron syslog-ng lvm dhcpcd ppp php mysql
Име GRand Unified Bootloader Compiler Cache IP Routing v.2 Vixie Cron Daemon Sys Log – New Generation Logical Volume Management DHCP Client Daemon Point-to-Point Protocol PHP MySQL
Описание Инструмент за начално зареждане Кеш за ускоряване на пре-компилирането Мрежови инструменти за управление на IP Демон за изпълнение на команди по график Демон управляващ журналите с събития Пакет за управление на логически томове Клиент за DHCP протокола Инструменти за връзки от точка до точка Програмен език База данни
Незадължителни инструменти улесняващи администрирането: Пакет
Име
Описание
eix bind-tools reiserfsprogs pciutils eselect cups-pdf Text-Iconv htop unzip mc links nmap openntpd flagedit gentoolkit
Ebuild IndeXer BIND Tools Reiser File System Programs PCI Utilities E Select PDF for CUPS Тext International Conversion H-Table Of Processes Un-ZIP Midnight Commander Links Network mapper Network Time Protocol Portage Flag Editor Gentoo Toolkit
Подобрена система за търсене в Portage Инструменти за диагностика на BIND DNS Инструменти за работа с ReiserFS Инструменти за работа с PCI шината Административен инструмент в Gentoo Виртуален принтер превръщащ в PDF Perl връзка към функцията iconv() Интерактивен наблюдател на процесите Разкомпресираща програма за ZIP архиви Текстов файл менажер Текстов уеб-клиент Инструмент за анализ на мрежата Програми за синхронизиране на часовника Инструмент за управление на USE флагове Полезни инструменти за работа с Portage
14 http://oss.oetiker.ch/mrtg/ 15 http://en.wikipedia.org/wiki/Simple_Network_Management_Protocol 16 http://cacti.net
А. Цонков
-8-
Изграждане на SOHO сървър с Gentoo Linux
4. Изисквания към хардуера 4.1 Хардуер на сървъра Първият въпрос на който трябва да се отговори е „Какъв е минималният хардуер нужен за операционната система?“. Линукс ядрото е пригодено да работи на множество архитектури, сред които Intel x86, AMD64, ARM, PowerPC, MIPS [4]. Създадено оригинално за 32-битовите процесори на Intel вече работи и на множество 64-битови такива. Теоретично е възможно да инсталирате Gentoo на i486@50MHz процесор, но имайки предвид специфичното за тази дистрибуция компилиране на софтуера от изходен код, е по уместно ако използвате такава машина да се спрете на споменатите по-рано LEAF или Slackware. Препоръчително е процесорът да е минимум Pentium II @ 400MHz. Относно изискванията за оперативна памет – минималната памет за Линукс е 4 MB, като при специални модификации ядрото е било успешно стартирано и на 2-мегабайтова система. Разбира се както беше споменато за компилацията на софтуер е нужна повече памет, а тя не е скъп компонент. Препоръчва се минимум 256 MB RAM в системата17. Дисковото пространство за работоспособна Линукс система започва от едно флопи18 до няколко гигабайта, плюс пространството необходимо за потребителските файлове. Върху разпределянето на дисковото пространство ще се спрем поподробно в „Създаване на дяловете“, но за Gentoo се изисква минимум 4 GB. За да изпълнява поставената в настоящата работа задача, системата е нужно да има и два мрежови интерфейса – един за връзка към локалната мрежа и друг за връзка към Интернет. Най-често практикуваният начин на инсталация за Gentoo Линукс изисква минимална 50MB CD дистрибуция и връзка към Интернет. Посочените минимални изисквания19 към хардуерът на сървъра са достатъчни за реализирането на разглеждания в настоящата работа сървър20. 17 За i486 минимум 64MB 18 Около 2 MB компресирана файлова система 19 От изброените в предната глава основни програми, с най-големи изисквания към производителността на системата са Samba и Apache HTTP сървърите. 20 Умишлено не са споменати устройства като видео карта, оптично устройство (CD/DVD), флопи, USB портове, клавиатура и мишка и т.н., тъй като те не са необходими за инсталацията
А. Цонков
-9-
Изграждане на SOHO сървър с Gentoo Linux
4.2 Периферни устройства Въпреки че инсталацията може да бъде извършена и през мрежата, или чрез конзола по серийна връзка, когато е възможно е добре да има монитор и клавиатура директно свързани с сървъра. Разбира се според изискванията на заданието ще е необходим и поне един принтер за споделяне в локалната мрежа. Това може да бъде както принтер свързан директно към компютъра чрез USB или паралелен порт, така и мрежов принтер който е достъпен за сървъра (с цел контрол и журнал на достъпа на потребителите от локалната мрежа до принтера). Възможно е да се използва дори и софтуерен PDF принтер, който поставя получените от „отпечатването“ файлове в споделена мрежова директория.
4.3 Мрежово оборудване За изграждането на компютърната мрежа ще бъдат необходими следните устройства: Вече споменатите два мрежови интерфейса на сървъра. Те могат да бъдат ethernet, оптични, безжични, ISDN и т.н. Важното е единия да може да се свързва към доставчикът на Интернет, другия към преносната среда на локалната мрежа и да се поддържат от Линукс ядрото. ●
Сървърът ще изпълнява ролята на маршрутизатор за мрежата. Също така той ще бъде защитната стена, а ще предоставя и публично достъпни услуги. Това не е най-сигурната известна конфигурация, и за по-големи мрежи е по-добре да се направи разделяне на Илюстрация 1: Локална мрежа с функциите, като всички демилитаризирана зона публични услуги се изнесат в така наречената „демилитаризирана зона“, а функцията на маршрутизатор с „предварителна“ защитна стена се поеме от допълнително устройство. [5][6] ●
Превключвател – един или няколко на брой устройства, които да позволят свързване на достатъчно на брой клиенти към мрежата. ●
А. Цонков
- 10 -
Изграждане на SOHO сървър с Gentoo Linux
Безжичен мост/точка за достъп – при наличие на мобилни устройства като лаптопи, които трябва да имат достъп до мрежата. ●
●
Мрежови принтери
Илюстрация 2: Обща структура на локалната мрежа
4.4 Данни за използваните компоненти Сървърът ще бъде реализиран на компютър с следните компоненти: Дънна платка: Elitegroup P6IPAT Чипсет: 815EP ● Процесор: Intel Celeron 1GHz ● RAM: 256 MB SD-RAM ● Видео карта: Nvidia GeForce2 MX400 AGP 4x 64MB VRAM ● Твърд диск: Western Digital 40 GB PATA-66 ● Мрежови интерфейси: ○ CNet Pro 10/100Base-T/TX Ethernet controller ○ Realtek 8029 10Base-T Ethernet controller Вътрешният интерфейс е свързан към безжичен мост комбиниран с 5 портов превключвател Motorola WR850 с софтуер DD-WRT21. ●
Използвани са и UTP/FTP Cat.5 кабели за свързване между устройствата. 21 Линукс за безжични маршрутизатори. Погледнете http://www.dd-wrt.com/wiki/index.php/Main_Page
А. Цонков
- 11 -
Изграждане на SOHO сървър с Gentoo Linux
5. Реализация на системата След като се знае какво е нужно може да се пристъпи към същинската инсталация на системата. Ще се използва процедура подобна http://www.gentoo.org/doc/en/handbook/index.xml
на
описаната
в
5.1 Изтегляне на инсталационната среда Инсталационен диск за нужната архитектурата22 може да бъде изтеглен от някой от Българските огледални сървъри, например: http://distfiles.gentoo.bg/releases/ или от официалният сайт (с възможност за изтегляне по HTTP или Bittorent): http://www.gentoo.org/main/en/where.xml Както се споменава във инструкциите за инсталация на официалната страница, Gentoo може да бъде инсталиран и от други източници, например Knoppix компактдиск [7]. Достатъчно е дистрибуцията да ви позволява разделяне на диска и създаване на файловите системи които възнамерявате да използвате23, и да поддържа работата с тези файлови системи. Другото важно изискване за инсталациите при които няма изтеглени предварително пакети е дистрибуцията да може да конфигурира поне един от мрежовите интерфейси за връзка към Интернет по време на инсталацията. Ще бъде проведена инсталация на Gentoo линукс, като вместо официалното инсталационно CD, ще се инсталира от USB памет с дистрибуция SystemRescueCD24. Първо се изтегля последната налична версия от: http://sourceforge.net/project/showfiles.php?group_id=85811&package_id=88964, и следвайки инструкциите25: # fdisk -l ## За да се установи кое устройство отговаря на целевото USB
ВНИМАНИЕ: Следващите редове ще унищожат информацията на целевата USB флаш памет, а ако не се внимава може да се унищожи информация на твърдите дискове свързани към системата!!! # mkdiskimage -4 /dev/sdx 0 64 32
В горната команда x се заменя с установеното USB устройството. 22 http://gentoo-wiki.com/Safe_Cflags 23 Ако диска и файловите системи не са били подготвени предварително 24 Около 100 MB дистрибуция с сервизни инструменти (Linux, Windows и DOS) базирана на Gentoo 25 http://sysresccd.org/Sysresccd-manual-en_How_to_install_SystemRescueCd_on_an_USB-stick http://www.pendrivelinux.com/2007/02/20/booting-linux-from-usb-zip-on-older-systems/
А. Цонков
- 12 -
Изграждане на SOHO сървър с Gentoo Linux
Същият резултат може да бъде получен и с командата fdisk, променяйки геометрията на устройството на: 64 глави, 32 сектора в пътечка, максимален брой цилиндри, и създавайки активен дял26 4, с поне 128 MB. Следва форматиране с FAT 16 файлова система, и инсталиране на програма за начално зареждане и нужните файлове: # # # # # # # # # #
mkdosfs -n SysRescueCD -F 16 /dev/sdx4 syslinux -s /dev/sdx4 mount /dev/sdx4 /mnt/hd mount -oloop /път/до/изтегления/sysrescuecd.iso /mnt/cdrom cp /mnt/cdrom/syslinux/syslinux.cfg /mnt/hd/ cp /mnt/cdrom/sysrcd.dat /mnt/hd/ cp /mnt/cdrom/isolinux/* /mnt/hd/ cp /mnt/cdrom/bootdisk/* /mnt/hd/ umount /mnt/hd umount /mnt/cdrom
За бъде използвано така създаденото USB, в BIOS на компютъра на който ще го използваме задаваме Boot from USB-HDD, или USB-ZIP27.
5.2 Подготовка за инсталацията След като BIOS е бил настроен да зарежда така подготвената операционна система, тя се стартира с опции по подразбиране, и се изчаква зареждането. В конзолата трябва да бъдат въведени следните две команди: # /etc/init.d/sshd start # passwd New UNIX password: <тайна> Retype new UNIX password: <тайна>
След това се активира мрежата с28:
# net-setup
По този начин се позволява възможността за отдалечена връзка по SSH, и се сменя паролата на супер-потребителя29. Създава се SSH връзка до машината на която ще се инсталира30: nasko@nasko-lap ~ $ ssh root@10.1.1.102 The authenticity of host '10.1.1.102 (10.1.1.102)' can't be established. RSA key fingerprint is dd:f8:ed:41:07:1e:bf:58:57:61:3a:3f:7a:d1:25:9c. Are you sure you want to continue connecting (yes/no)? yes
26 partition 27 Помага при по-стари Award BIOS. Други опции които могат да влияят са Legacy USB support и USB Keyboard support 28 За по-подробни инструкции вижте Gentoo Handbook 29 Това са всички команди нужни за да позволят отдалечена инсталация. Те са валидни както за оригиналната дистрибуция Gentoo Minimal Boot CD, така и за използваната System Rescue CD 30 Под Windows може да се използва PuTTY http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
А. Цонков
- 13 -
Изграждане на SOHO сървър с Gentoo Linux Warning: Permanently added '10.1.1.102' (RSA) to the list of known hosts. Password: <тайна>
5.3 Подготовка на твърдия диск Използвана е вече познатата команда за установяване на устройството представляващо твърдият диск: sysresccd ~ # fdisk -l Disk /dev/hda: 40.0 GB, 40020664320 bytes 255 heads, 63 sectors/track, 4865 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/hda doesn't contain a valid partition table Disk /dev/sda: 1031 MB, 1031798272 bytes 64 heads, 32 sectors/track, 983 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes Device Boot /dev/sda4 *
Start 1
End 983
Blocks 1006576
Id 6
System FAT16
5.3.1 Създаване на дяловете Устройство Флагове Тип /dev/hda1 Bootable Linux ext3 (0x83)
Монтиране Размер / 1GB (достатъчно е под 256 MB)
/dev/hda2
Linux Swap (0x82) SWAP
2*RAM – в случая 512 MB
/dev/hda3
Linux LVM (0x8E) /dev/vg
Останало пространство
/dev/vg/var
LVM ext3
/var
1GB
/dev/vg/usr
LVM ext3
/usr
2GB
След използване на cfdisk се получава следното разделяне на диска: sysresccd ~ # cfdisk /dev/hda ... sysresccd ~ # fdisk -l /dev/hda Disk /dev/hda: 40.0 GB, 40020664320 bytes 255 heads, 63 sectors/track, 4865 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot /dev/hda1 * /dev/hda2 Solaris /dev/hda3
А. Цонков
Start 1 126
End 125 188
Blocks 1004031 506047+
Id 83 82
System Linux Linux swap /
189
4865
37568002+
8e
Linux
- 14 -
LVM
Изграждане на SOHO сървър с Gentoo Linux
5.3.2 Създаване на софтуерен RAID При наличие на повече от един твърд диск може да създадете софтуерен масив с цел подобряване на бързодействието и увеличаване на капацитета, и най-вече подобряване надеждността на системата. При наличие на три и повече диска се препоръчва да се използва RAID 5, а за пълнота ще бъде показана конфигурация за RAID 131. Нека приемем че системата съдържа два еднакви по размер диска (всеки по 40GB). Нека устройствата им са съответно /dev/hda и /dev/hdb. Всеки от тях се разделя аналогично на показаната в предната подточка конфигурация, като единствената разлика е типа на първия и третия дял – вместо Linux LVM (0x8E) се избира Linux raid autodetect (0xFD). Add here
5.3.3 Подготовка на LVM
...
Дялът с LVM32 определя Физически дялове LVM група Логически пространство в което (всякакви блокови томове дялове може да се създават устройства) под-дялове с /dev/vg/var vg динамично /dev/hda3 променящ се размер. /dev/vg/usr Например ако бъде установено, че /usr /dev/sda се препълва, а има /dev/vg/shr неизползвано място във /var и те са обикновени дялове създадени с fdisk – Илюстрация 3: Структура на логическото управление на томове системата трябва да бъде спряна, и да бъдат използвани специални инструменти33 за промяна на таблицата и файловите системи. С LVМ стига файловата система да поддържа динамична промяна на размера (повечето го поддържат, или имат кръпки които активират такава поддръжка) тези операции може да бъдат извършени без да се прекъсва работата на сървъра. Това дава възможност и за добавяне или подмяна пространство от физически дискове към един или друг логически дял. ...
31 http://gentoo-wiki.com/HOWTO_Gentoo_Install_on_Software_RAID_mirror_and_LVM2_on_top_of_RAID 32 Logical Volume Management 33 Например parted или Partition Magic
А. Цонков
- 15 -
Изграждане на SOHO сървър с Gentoo Linux
Първата стъпка е подготвянето на физическите дялове за LVM. В разработвания пример това е /dev/hda3: sysresccd ~ # pvcreate /dev/hda3 Physical volume "/dev/hda3" successfully created
Ако бяха използвани още твърди дискове или дялове на дискове, съответно трябваше да бъдат изброени на този ред за бъдат подготвени за включване в група на томовете. Създаване на нужните групи на томовете34: sysresccd ~ # vgcreate vg /dev/hda3 Volume group "vg" successfully created
И последно – създаване на самите логически устройства в дадената група: sysresccd Logical sysresccd Logical
~ # lvcreate volume "var" ~ # lvcreate volume "usr"
-L 1G -n var vg created -L 2G -n usr vg created
В горните команди съответно с -L се задава размера на дяла, а с -n името му. Забележка: Ако се наложи започване на инсталацията от начало, след като дисковете са били правилно разделени и форматирани, вече създадените логически дялове може да бъдат отново активирани с командите: # vgscan –mknodes # vgchange -a y
5.3.4 Създаване на файлови системи Вече са настроени „файловата система“ на дяла /dev/hda3. Остава да бъдат подготвени другите четири дяла. Изборът на файлова система в настоящата работа е стандартната за Линукс, журнална файловата система ext3 за всички дялове. За потребителя може да е по-подходяща друга файлова система (например reiserfs или xfs). sysresccd ~ # mkfs.ext3 -m 5 -L ROOT -O dir_index /dev/hda1 ... sysresccd ~ # mkfs.ext3 -m 1 -O dir_index /dev/vg/var ... sysresccd ~ # mkfs.ext3 -m 1 -O dir_index /dev/vg/usr ...
Опцията -m 1 дава резервиране на 1 процент за супер-потребителят, а O dir_index активира оптимизация за търсене в големи директории чрез балансирани дървета. Създаване и активиране на Swap дяла: sysresccd ~ # mkswap /dev/hda2 34 Volume Groups
А. Цонков
- 16 -
Изграждане на SOHO сървър с Gentoo Linux Setting up swapspace version 1, size = 542863 kB no label, UUID=23023353-cd3f-45fa-9a01-6f2e1c48b66f sysresccd ~ # swapon /dev/hda2
5.3.5 Монтиране на файловата система Сега е момента да бъдат свързани подготвените физически дискове във вида в който ще бъдат подредени на сървъра. Това става в създадената за целта под-директория /mnt/gentoo: sysresccd ~ # mount sysresccd ~ # mkdir sysresccd ~ # mkdir sysresccd ~ # mount sysresccd ~ # mount sysresccd ~ # df -h Filesystem tmpfs /dev/sda4 /dev/loop0 udev tmpfs tmpfs /dev/hda1 /dev/mapper/vg-var /dev/mapper/vg-usr
/dev/hda1 /mnt/gentoo/ /mnt/gentoo/var /mnt/gentoo/usr /dev/vg/var /mnt/gentoo/var/ /dev/vg/usr /mnt/gentoo/usr/ Size 123M 983M 103M 123M 123M 123M 958M 1008M 2.0G
Used Avail Use% Mounted on 13M 111M 11% / 183M 801M 19% /mnt/cdrom 103M 0 100% /mnt/livecd 2.8M 121M 3% /dev 3.5M 120M 3% /mnt/livecd/lib/firmware 0 123M 0% /mnt/livecd/usr/portage 18M 892M 2% /mnt/gentoo 34M 965M 4% /mnt/gentoo/var 68M 1.9G 4% /mnt/gentoo/usr
5.4 Инсталация на системата Вече може да започне инсталацията на системните файлове (system) на сървъра. Преминава се през задължителното сверяване на системното време, и изтегляне на необходимите файлове от Интернет: sysresccd ~ # ntpdate bg.pool.ntp.org # или ръчно с date MMDDhhmmYYYY ... sysresccd ~ # cd /mnt/gentoo/ sysresccd gentoo # links http://www.gentoo.org/main/en/mirrors.xml
От където трябва да бъде изтеглен последният stage3 файл за подходяща архитектура. Това може да направите и със с следната команда от Български огледален сървър: sysresccd gentoo # wget \ http://distfiles.gentoo.bg/releases/x86/current/stages/stage3i686-2007.0.tar.bz2
Извършва се разкомпресиране, със запазване правата на файловете, в текущата директория: sysresccd gentoo # tar xvjpf stage3-*.tar.bz2 ...
А. Цонков
- 17 -
Изграждане на SOHO сървър с Gentoo Linux
5.4.1 Преминаване към новата операционна система Налага се няколко неща, които ще са нужни в новата система да бъдат прехвърлени от инсталационната среда. Това са настройките за DNS клиента, връзките към устройства в /dev и информацията за процесите в /proc. sysresccd gentoo # cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf sysresccd gentoo # mount -t proc none /mnt/gentoo/proc sysresccd gentoo # mount -o bind /dev /mnt/gentoo/dev
Със следните команди директорията /mnt/gentoo става корен на файловата система, с което, макар и все още да се използва ядрото от инсталационният диск, започва работата в средата на проектирания сървър: sysresccd gentoo # chroot /mnt/gentoo /bin/bash sysresccd / # env-update --- 'profiles/arch.list' is empty or not available. Empty portage tree? >>> Regenerating /etc/ld.so.cache... sysresccd / # source /etc/profile sysresccd / # export PS1="(chroot) $PS1"
Предупредителното съобщение по-горе е нормално. Преди да „бъде попълнен“ portage ще бъдат настроени огледални сървъри от Българското Интернет пространство: (chroot) sysresccd / # nano /etc/make.conf CFLAGS="-O2 -march=pentium3 -pipe -fomit-frame-pointer"35 MAKEOPTS="-j2"36 LINGUAS="bg en" FEATURES="parallel-fetch fixpackages ccache " CCACHE_SIZE="1G" SYNC="rsync://rsync.gentoo.bg/gentoo-portage/" GENTOO_MIRRORS="http://distfiles.gentoo.bg/ http://mirrors.ludost.net/gentoo/ "
Следва изтегляне на актуален списък с пакети за системата [8]: (chroot) sysresccd / # emerge --sync . . # Този процес ще отнеме известно време (над 100 MB за изтегляне) .
След което, ако има предупредително съобщение, че е налична нова версия на Portage се извършва обновяване: (chroot) sysresccd / # emerge portage
5.4.2 Настройка на профила Проверява се дали профилът, който се използва е нужния, и ако не се променя с желания: 35 http://gentoo-wiki.com/Safe_Cflags 36 Препоръчителна стойност е (брой_процесори + 1)
А. Цонков
- 18 -
Изграждане на SOHO сървър с Gentoo Linux
Make it smarter (Using eselect): (chroot) sysresccd / # ls -FGg /etc/make.profile lrwxrwxrwx 1 48 Jun 11 15:30 /etc/make.profile -> ../usr/portage/profiles/default-linux/x86/2007.0/
(chroot) sysresccd / # ln -snf /usr/portage/profiles/defaultlinux/x86/2007.0/server /etc/make.profile
Няколко настройки за локализация на системата, съответно: (chroot) sysresccd / # cp /usr/share/zoneinfo/Europe/Sofia /etc/localtime (chroot) sysresccd / # nano -w /etc/locale.gen en_US.UTF-8 UTF-8 bg_BG.UTF-8 UTF-8
5.4.3 Инсталиране и конфигуриране на ядрото Изтегля се актуално ядро с командата: (chroot) sysresccd / # emerge -av gentoo-sources These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] sys-kernel/gentoo-sources-2.6.20-r8
USE="-build -symlink" 42,598 kB
Total: 1 package (1 new), Size of downloads: 42,598 kB
Would you like to merge these packages? [Yes/No] <Y> ...
Отива се в директорията и се стартира средата за настройка на ядрото. От нея се избира кои компоненти да бъдат включени в ядрото <*>, кои да бъдат компилирани като модули <M>, за да може да се активират при нужда, и кои няма да бъдат използвани на тази система < >. (chroot) sysresccd / # cd /usr/src/linux (chroot) sysresccd linux # make menuconfig Code maturity level options ---> [*] Prompt for development and/or incomplete code/drivers Loadable module support ---> [*] Enable loadable module support [*] Module unloading [*] Forced module unloading Processor type and features ---> Processor family (Pentium-III/Celeron(Coppermine)...) ---> (ако ще се използва процесор с HT или повече ядра или процесори се активира SMP) [?] Symmetric multi-processing support Networking ---> [*] Network packet filtering framework (Netfilter) ---> (Да се добавят наличните модули за защитната стена без obsolete) Device Drivers ---> (Зарежда се драйвер за нужните IDE/SATA/SCSI контролери във ядрото (<*>)) ATA/ATAPI/MFM/RLL support ---> <*> Intel PIIXn chipsets support Multi-device support (RAID and LVM) ---> <*> Device mapper support Network device support ---> (Зареждат се като модули (<M>) драйвери за използваните мрежови карти)
А. Цонков
- 19 -
Изграждане на SOHO сървър с Gentoo Linux (Ако се използва PPPoE трябва да се включат PPP модулите) <*> PPP (point-to-point protocol) support <*> PPP support for async serial ports <*> PPP support for sync tty ports (Ако се използват USB клавиатура или мишка трябва да се включи HID) USB Support ---> <*> USB Human Interface Device (full HID) support Graphics support ---> <*> Support for frame buffer devices <*> VESA VGA graphics support VESA driver type (vesafb) ---> Console display driver support ---> <*> Framebuffer Console support <M> Hardware Monitoring support File systems ---> (Поддръжка във (<*>) ядрото за всички използвани за стартиране файлови системи) <*> Ext3 journalling file system support --- /proc file system support [*] Virtual memory file system support (former shm fs) Native Language Support ---> (utf8) Default NLS Option <*> NLS UTF-8
Сега просто трябва да бъде стартиран процеса по компилация на настроеното ядро с командата: (chroot) sysresccd linux # make && make modules_install ... Root device is (3, 2) Boot sector 512 bytes. Setup is 6978 bytes. System is 1447 kB Kernel: arch/i386/boot/bzImage is ready (#1) Building modules, stage 2. ... if [ -r System.map -a -x /sbin/depmod ]; then /sbin/depmod -ae -F System.map 2.6.20-gentoo-r8; fi
За сега инсталацията на ядрото ще бъде отложена докато бъде инсталиран инструментът за начално зареждане GRUB. Не трябва да се забравя да бъдат добавени модулите които трябва да се зареждат при стартиране на системата към /etc/modules.autoload.d/kernel-2.6
5.4.4 Настройка на системата Налага се да бъдат направени още няколко стъпки по настройване на системата и описание на конфигурацията ú. Първо – описание на начина на свързване на дяловете които се използват във файла /etc/fstab: (chroot) sysresccd linux # nano /etc/fstab #/dev/BOOT /boot ext2 2 /dev/hda1 / ext3 1
А. Цонков
- 20 -
noauto,noatime
1
noatime
0
Изграждане на SOHO сървър с Gentoo Linux /dev/hda2 0 /dev/vg/var 2 /dev/vg/usr 2 /dev/cdrom 0 #/dev/fd0 0 proc 0 shm 0
none
swap
sw
0
/var
ext3
noatime
1
/usr
ext3
noatime
1
/mnt/cdrom
audo
noauto,ro
0
/mnt/floppy
auto
noauto
0
/proc
proc
nodev,nosuid,noexec
0
/dev/shm
tmpfs
nodev,nosuid,noexec
0
Следва конфигурация на мрежата. Първо – избор на име за сървъра. После – настройка на първия мрежов интерфейс (eth0) за вътрешната мрежа, а втория за външната (eth1). (chroot) sysresccd linux # nano /etc/conf.d/hostname HOSTNAME="gentoo" (chroot) sysresccd linux # nano /etc/hosts # IPv4 and IPv6 localhost aliases 127.0.0.1 gentoo.privnetwork gentoo localhost (chroot) sysresccd linux # nano /etc/conf.d/net37 dns_domain_lo="privnetwork" dns_servers_lo="127.0.0.1" config_eth0=( "192.168.10.1/24" ) config_eth1=( "dhcp" ) (chroot) sysresccd linux # ln -s net.lo /etc/init.d/net.eth1 (chroot) sysresccd linux # rc-update add net.eth0 default * net.eth0 added to runlevel default (chroot) sysresccd linux # rc-update add net.eth1 default * net.eth1 added to runlevel default
С последните две команди се указва, че двата мрежови интерфейса трябва да бъдат настроени при стартиране на системата, с параметрите зададени за тях в файла /etc/conf.d/net Следва задаване на сигурна парола за супер-потребителя. Не е нужно да се споменава, че тя трябва да е минимум 8 символа, и да съдържа главни, малки букви, цифри и специални знаци (като ~!@#$%^&*()_+). (chroot) sysresccd linux # passwd New UNIX password: <тайна> Retype new UNIX password: <тайна> passwd: password updated successfully
Някои общи настройки за системата се намират в файла /etc/rc.conf : (chroot) sysresccd linux # nano /etc/rc.conf
За българска клавиатурна подредба в конзолата се използва: (chroot) sysresccd linux # nano /etc/conf.d/keymaps 37 За повече информация вижте http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=4
А. Цонков
- 21 -
Изграждане на SOHO сървър с Gentoo Linux #KEYMAP="us" KEYMAP="bg_pho-utf8" DUMPKEYS_CHARSET="iso-8859-1"
За настройка на часовата зона се редактира файла /etc/conf.d/clock: (chroot) sysresccd linux # nano /etc/conf.d/clock TIMEZONE="Europe/Sofia" CLOCK_SYSTOHC="yes"
За локализация на програмите се създава файл със следното съдържание: (chroot) sysresccd linux # nano /etc/env.d/02locale LC_ALL="bg_BG.UTF-8" LANG="bg_BG.UTF-8"
И за зареждане на шрифт поддържащ кирилица в конзолата: (chroot) sysresccd linux # nano /etc/conf.d/consolefont #CONSOLEFONT="default8x16" CONSOLEFONT="Cyr_a8x16"
С това38 системата е настроена за работа на български с програмите, които го поддържат.
5.4.5 Добавяне на потребител Работата в системата като супер-потребител не е препоръчителна, освен когато за дадена операция се изискват такива права. За това трябва да бъдат създадени потребители поне за администраторите на системата: (chroot) sysresccd linux # useradd -m -G users,wheel,portage -s /bin/bash nasko (chroot) sysresccd linux # passwd nasko New UNIX password: <парола> Retype new UNIX password: <парола> passwd: password updated successfully
Горната команда създава потребител nasko с главна група users, и член на групите wheel – за да има право да изпълнява su и да влиза като суперпотребител, и portage за да може да търси в пакетната система и да симулира инсталации.
5.4.6 Конфигуриране на SSH за сигурен достъп Време е SSH да бъде настроен за сигурна връзка със сървъра. За целта се забранява влизането от супер-потребител (ще се изисква първоначално влизане като потребител от групата wheel, а при нужда, смяна на достъпа с командата su). Също така се забранява влизането с пароли39, като вместо това за всеки потребител който ще влиза по SSH трябва да има качен на сървъра публичен ключ. Той, комбиниран с частният му ключ, който 38 Като се имат предвид и настройките LINGUAS направени по-рано в /etc/make.conf и /etc/locale.gen 39 http://gentoo-wiki.com/SECURITY_SSH_without_a_password
А. Цонков
- 22 -
Изграждане на SOHO сървър с Gentoo Linux
трябва да съхранява добре, и винаги със силна парола, ще позволява еднозначна идентификация на потребителя и право на достъп. [6] Първо, върху клиентската машина се създава rsa или dsa двойка ключове40 (Може да се използва един и същи публичен ключ на всички сървъри които ще се администрират. Тогава ключовете се генерират веднъж и публичният се разпространява по машините): nasko@nasko-lap ~ $ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/nasko/.ssh/id_dsa): Created directory '/home/nasko/.ssh'. Enter passphrase (empty for no passphrase): <добра_парола> Enter same passphrase again: <добра_парола> Your identification has been saved in /home/nasko/.ssh/id_dsa. Your public key has been saved in /home/nasko/.ssh/id_dsa.pub. The key fingerprint is: f3:d5:2f:74:13:a0:7a:9f:3e:13:45:34:a3:99:c1:0c nasko@nasko-lap nasko@nasko-lap ~ $ cd ~/.ssh nasko@nasko-lap ~/.ssh $ scp id_dsa.pub nasko@10.1.1.102: Password: <парола> id_dsa.pub 100% 602 0.6KB/s 00:00
Сега файла id_dsa.pub съдържа публичният ключ, който трябва да се постави в директорията на съответния потребител на сървъра: (chroot) sysresccd linux # su nasko $ cd ~/ $ mkdir -p .ssh $ chmod 700 .ssh
$ cat id_dsa.pub >> .ssh/authorized_keys $ chmod 600 .ssh/authorized_keys $ rm id_dsa.pub $ exit
И последно – конфигурация на самия SSH сървър: (chroot) sysresccd linux # nano /etc/ssh/sshd_config PermitRootLogin no PubkeyAuthentication yes PasswordAuthentication no ChallengeResponseAuthentication no Subsystem sftp /usr/lib/misc/sftp-server
(chroot) sysresccd linux # rc-update add sshd default
С последната команда се задава автоматичното стартиране на SSH демона при зареждане, за да може да се осъществява отдалечена връзка до сървъра след неговото рестартиране.
5.4.7 Инсталация на базовия софтуер Първо нека да бъде инсталирана програмата която се грижи за записването на събитията случващи се в системата: (chroot) sysresccd linux # emerge -av syslog-ng logrotate 40 Под Windows може да се използва инструмента PuTTYGen
А. Цонков
- 23 -
Изграждане на SOHO сървър с Gentoo Linux ... (chroot) sysresccd linux # rc-update add syslog-ng default
Добавя се и процес който да изпълнява команди по график: (chroot) sysresccd linux # emerge -av vixie-cron ... (chroot) sysresccd linux # rc-update add vixie-cron default
Инсталира се софтуер за файловите системи използвани на сървъра (за ext2/3 е включен в системата) (chroot) sysresccd linux # emerge -av reiserfsprogs (chroot) sysresccd linux # emerge -av lvm2
И накрая нужните мрежови инструменти: (chroot) sysresccd linux # emerge -av dhcpcd (chroot) sysresccd linux # emerge -av ppp
5.4.8 Инсталация на софтуер за начално зареждане GRUB Тук, както с повечето от останалите инсталирани пакети има повече от една алтернатива за програма за начално зареждане, но за главните PC архитектури една от най-удобните е GRUB. (chroot) sysresccd linux # emerge -av grub ... (chroot) sysresccd linux # make install sh /usr/src/linux-2.6.20-gentoo-r8/arch/i386/boot/install.sh 2.6.20gentoo-r8 arch/i386/boot/bzImage System.map "/boot" In order to use the new kernel image you have just installed, you will need to reboot the machine. First, however, you will need to either make a bootable floppy diskette, re-run LILO, or have GRUB installed. Checking for ELILO...No GRUB is installed. To automatically switch to new kernels, point your default entry in menu.lst to /boot/vmlinuz-2.6.20-gentoo-r8 (chroot) sysresccd linux # nano /boot/grub/menu.lst default 0 timeout 3 splashimage=(hd0,0)/boot/grub/splash.xpm.gz title=Gentoo root (hd0,0) kernel /boot/vmlinuz root=/dev/hda1 udev vga=0x318 video=vesafb:mtrr:3,ywrap title=Gentoo (Old) root (hd0,0) kernel /boot/vmlinuz-old root=/dev/hda1 udev
Като опциите vga и video са полезни ако има активирана framebuffer поддръжка за конзолата в ядрото. GRUB се инсталира в Master Boot Record на главният твърд диск: А. Цонков
- 24 -
Изграждане на SOHO сървър с Gentoo Linux (chroot) sysresccd linux # grub --no-floppy grub> find /boot/vmlinuz # Открива се кой дял съдържа ядрото (hd0,0) grub> root (hd0,0) # Открития се задава за root дял (от гледна точка на GRUB) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0) # Инсталация в MBR Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/boot/grub/ stage2 /boot/grub/menu.lst"... succeeded Done. grub> setup (hd0,0) # Незадължителна инсталация в Boot Sector на дяла Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0,0)"... failed (this is not fatal) Running "embed /boot/grub/e2fs_stage1_5 (hd0,0)"... failed (this is not fatal) Running "install /boot/grub/stage1 (hd0,0) /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded Done. grub> quit
5.4.9 Рестартиране в инсталираната операционна система Последните нужни стъпки преди сървъра да заработи автономно с собственото си ядро и инструменти са демонтирането на дяловете и рестартирането. (chroot) sysresccd linux # exit exit sysresccd gentoo # cd / sysresccd / # umount /mnt/gentoo/proc/ /mnt/gentoo/dev/ /mnt/gentoo/usr/ /mnt/gentoo/var/ /mnt/gentoo/ sysresccd / # reboot Broadcast message from root (pts/0) (Mon Jun 11 22:03:06 2007): The system is going down for reboot NOW! sysresccd / # exit logout Connection to 10.1.1.102 closed. nasko@nasko-lap ~ $
А. Цонков
- 25 -
Изграждане на SOHO сървър с Gentoo Linux
5.5 Довършителни работи по инсталацията Ако всичко е минало без проблеми, новата система е вече стартирана и работоспособна. Сега отново би трябвало да може да се осъществи връзка с нея по SSH, но този път като обикновен потребител, създаден по-рано: nasko@nasko-lap ~ $ ssh nasko@192.168.10.1 -i ~/.ssh/id_dsa Enter passphrase for key '/home/nasko/.ssh/id_dsa': <добра_парола>
Като ако потребителите на двете системи (както е в случая) съвпадат, а частния ключ на клиентската система има име и път по подразбиране (отново е изпълнено в случая) командата се опростява до ssh <адрес_на_сървъра>. Сега е добре да се почисти и обнови системата, за което разбира се са нужни права на супер-потребител: nasko@gentoo ~ $ su Password: <паролата на супер-потребителя> gentoo nasko # rm /stage3-*.tar.bz2* gentoo nasko # update-modules --force gentoo nasko # emerge gentoolkit gentoo nasko # emerge pciutils gentoo nasko # emerge unzip gentoo nasko # emerge htop gentoo nasko # emerge eselect gentoo nasko # emerge flagedit gentoo nasko # emerge ccache # Софтуер кеширащ вече компилирани файлове41 gentoo nasko # emerge -pv mc These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] dev-util/pkgconfig-0.21-r1 USE="-hardened" 976 kB [ebuild N ] dev-libs/glib-2.12.11 USE="-debug -doc -hardened" 2,857 kB [ebuild N ] app-misc/mc-4.6.1-r3 USE="gpm ncurses nls pam unicode -7zip -X -samba -slang" 3,867 kB Total: 3 packages (3 new), Size of downloads: 7,698 kB
Горният изход от командата, показва какво би се инсталирало, и с какви настройки. Той сочи че пакета app-misc/mc ще бъде компилиран с поддръжка на gpm ncurses nls pam unicode, но без поддръжка за slang. Тъй като тази поддръжка ще се използва и то за цялата система, а не само за конкретният пакет я активираме използвайки инсталираната по-горе flagedit. Освен това ще бъде добавен още един полезен за сървър поддържащ сайтове флаг – vhosts: 41 Помага за ускоряване инсталацията на вече компилирани пакети (при малка промяна в настройките им) За повече информация: http://ccache.samba.org/
А. Цонков
- 26 -
Изграждане на SOHO сървър с Gentoo Linux gentoo nasko # flagedit +slang +vhosts gentoo nasko # emerge -av mc These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] dev-util/pkgconfig-0.21-r1 USE="-hardened" 976 kB [ebuild N ] sys-libs/slang-1.4.9-r2 USE="unicode -cjk" 629 kB [ebuild N ] dev-libs/glib-2.12.11 USE="-debug -doc -hardened" 2,857 kB [ebuild N ] app-misc/mc-4.6.1-r3 USE="gpm ncurses nls pam slang unicode -7zip -X -samba" 3,867 kB Total: 4 packages (4 new), Size of downloads: 8,326 kB Would you like to merge these packages? [Yes/No] <Y> ... Следващият инструмент който е полезно да се инсталира е текстов/графичен уебклиент. Отново ще бъдат активирани някои опции, но този път не за цялата система, а единствено за него: gentoo nasko # emerge -pv links These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] www-client/links-2.1_pre26 USE="gpm ssl unicode -X -directfb -fbcon -javascript -jpeg -livecd -png -sdl -svga -tiff" 3,831 kB Total: 1 package (1 new), Size of downloads: 3,831 kB gentoo nasko # flagedit www-client/links +fbcon +javascript +jpeg +png +tiff gentoo nasko # cat /etc/portage/package.use # Просто проверка в файла където всъщност се пазят флаговете (flagedit е улеснение, но може да се редактира и ръчно) www-client/links fbcon javascript jpeg png tiff gentoo nasko # emerge -av links These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] media-libs/tiff-3.8.2-r2 USE="zlib -jbig -jpeg -nocxx" 1,314 kB [ebuild N ] media-libs/jpeg-6b-r7 621 kB [ebuild N ] media-libs/libpng-1.2.18 USE="-doc" 610 kB [ebuild N ] www-client/links-2.1_pre26 USE="fbcon gpm javascript jpeg png ssl tiff unicode -X -directfb -livecd -sdl -svga" 3,831 kB Total: 4 packages (4 new), Size of downloads: 6,374 kB Would you like ... gentoo nasko # gentoo nasko # gentoo nasko #
А. Цонков
to merge these packages? [Yes/No] <Y> flagedit app-portage/eix +sqlite emerge eix # Софтуер за бързо търсене в Portage update-eix
- 27 -
Изграждане на SOHO сървър с Gentoo Linux
Сега е момента за пълно обновяване на системата, тъй като използвания stage3 файл е версия 2007.0. От тогава за част от софтуера са излязли нови версии, някои USE флагове са се променили (например добавения по-горе slang), и е възможно част от зависимостите на даден софтуер да изискват нови пакети. За да се премине към най-новите стабилни версии на софтуера се използва командата: gentoo nasko # emerge -DuNav system ... Total: 47 packages (39 upgrades, 5 new, 1 in new slot, 2 reinstalls), Size of downloads: 106,988 kB Would you like to merge these packages? [Yes/No] <нов ред/Y>
Където (D) значи задълбочено претърсване – не само за главните пакети, а и за зависимостите, (u) значи обновяване, (N) значи нови USE флагове, (a) значи питай преди да започнеш – давайки възможност за преглед на предстоящите действия42 и (v) значи показване на подробности. Тази операция обикновено отнема известно време, така че ще бъде отворена нова SSH сесия и ще се използва многозадачната среда за други настройки на сървъра, или при работа директно на конзолата може да се премине на друг терминал (с Alt+F2), и да се изпробва графичният уебклиент: gentoo login: root Password: <тайна> gentoo ~ # /etc/init.d/gpm start # стартира поддръжката на мишка в конзолата # Ако често ще се използва локалната конзола за работа, може да се включи по #подразбиране: gentoo ~ # rc-update add gpm default gentoo ~ # links В меню Settings\Terminal settings се включва UTF-8 I/O В меню Settings\Language се избера Bulgarian В меню Настройки\Кодиране се избера Windows 1251 Избера се Настройки\Запази настройките gentoo ~ # links -g www.gentoo.bg
42 Добра практика е да добавяте -av към всяка emerge команда
А. Цонков
- 28 -
Изграждане на SOHO сървър с Gentoo Linux
Ако всичко е наред (налично е ядро с поддръжка на framebuffer в конзолата) трябва да се получи страницата на Gentoo.BG:
Снимка 1: Links в Framebuffer
Снимка 2: Паралелно работещо обновяване
Докато в другата конзола продължава процеса по обновяване, може да се излезе от супер-потребителския акаунт, за да се направят настройки на links за обикновените потребители. gentoo ~ # clear; logout gentoo login: nasko Password: <тайна> nasko@gentoo ~ $ links nasko@gentoo ~ $ mc
Снимка 3: Напълно локализиран за работа в България Midnight Commander
Ако всичко е наред (използва се UTF-8 в клиентския терминал) би трябвало да се получи нещо като показаното на снимката.
А. Цонков
- 29 -
Изграждане на SOHO сървър с Gentoo Linux
5.5.1 Обновяване на системата В предната точка беше използвана командата emerge -DuNav world, за да се обнови системата. Тя сравнява наличната в момента portage база данни с инсталираният на системата софтуер за да открие пакети нуждаещи се от прекомпилиране. Съответно за в бъдеще преди да се обнови света е нужно да се синхронизира portage. В Gentoo това става с командата emerge --sync, но тъй като се използва eix за индексиране и бързо търсене в базата данни е подобре да се използва eix-sync. Обновяване на системата може да се прави, когато е излязла версия поправяща пропуск в сигурността или функция която ще се използва, или може да се обновява всяка седмица, но не се препоръчва синхронизиране почесто от два пъти седмично. gentoo nasko # eix-sync * Removing old portage-cache in /var/cache/edb/dep ... ] * Running emerge --sync ... ] * Copying old /var/cache/eix cache to /var/cache/eix.previous ... ] * Running update-eix ... ] Diffing databases (11690 - 11686 packages) ... gentoo nasko # emerge -DuNav world ...
[ ok [ ok [ ok [ ok
След като системата е обновена, може да бъдат почистени43 неизползваните пакети (зависимости на пакети които са деинсталирани и т.н.). Потребителят трябва да бъде изключително внимателен със следните команди, и ако не е сигурен, по-добре да не ги използва! Трябва да се провери дали е наистина безопасно да се деинсталират всички изброени пакети: gentoo nasko # emerge --depclean -av gentoo nasko # emerge --prune -av
Може също да бъдат изтрити Линукс ядрата които вече няма да се използват (стига да са (или бъдат) деинсталирани правилно при почистването на системата с emerge -Pav gentoo-sources): gentoo nasko # du -sh /usr/src/* # Проверка на списъка с ядра и заетото място gentoo nasko # emerge -Cav =sys-kernel/gentoo-sources-2.6.x-ry gentoo nasko # rm -r /usr/src/linux-2.6.x-gentoo-ry # Изтриване на ненужните
Ако ядрото няма повече да се използва и за резервно зареждане може да бъдат премахнати записите за него в /boot/grub/menu.lst и да се изтрият: gentoo nasko # rm -r /lib/modules/2.6.x-gentoo-ry gentoo nasko # rm /boot/config-2.6.x-gentoo-ry \ 43 http://gentoo-wiki.com/TIP_Free_up_disk_space_in_Gentoo
А. Цонков
- 30 -
Изграждане на SOHO сървър с Gentoo Linux /boot/System.map-2.6.x-gentoo-ry /boot/vmlinuz-2.6.x-gentoo-ry
След описаното в предните стъпки почистване, а и по принцип периодично е добре да се прави проверка за нарушени връзки и липсващи библиотеки с следната команда: gentoo nasko # revdep-rebuild -av
Сега може да се освободи малко дисково пространство като бъдат изтрити изходният код на стари версии на пакети които са били обновени: gentoo nasko # eclean-dist -dif # Унищожителен, интерактивен, защита на ограничените ... * Total space that has been freed in distfiles directory: 7.3 M gentoo nasko # eclean-pkg -di # Унищожителен, интерактивен gentoo nasko # rm -r /var/tmp/portage/* # Ако има случайни остатъци от компилации
И последната задължителна стъпка след обновяване на системата е проверка за нужда от промени по конфигурационните файлове: gentoo nasko # etc-update Scanning Configuration files... Automerging trivial changes in: /etc/man.conf Automerging trivial changes in: /etc/init.d/modules The following is the list of files which need updating, each configuration file is followed by a list of possible replacement files. 1) /etc/bash/bashrc (1) ... 11) /etc/ssh/sshd_config (1) Please select a file to edit by entering the corresponding number. (don't use -3, -5, -7 or -9 if you're unsure what to do) (-1 to exit) (-3 to auto merge all remaining files) (-5 to auto-merge AND not use 'mv -i') (-7 to discard all updates) (-9 to discard all updates AND not use 'rm -i'):
Тук един по един се преглеждат файловете които ни интересуват (например обикновено промените в /еtc/init.d са нормални и нямат нужда от внимание – просто се приемат). File: /etc/conf.d/._cfg0000_clock 1) Replace original with update 2) Delete update, keeping original as is 3) Interactively merge original with update 4) Show differences again Please select from the menu above (-1 to ignore this update):
За всеки файл може да се избере дали да се заместят съществуващия с обновения (1), да се запази стария файл – новия просто се опитва да върне направени от потребителя настройки до стойности по подразбиране и не са нужни (2). При по-сложни ситуации, в които трябва да се запазят част от промените, а да се оставят и част от съществуващите настройки може да се използва интерактивният режим (3) и допълнителните опции за редактиране които той предоставя. А. Цонков
- 31 -
Изграждане на SOHO сървър с Gentoo Linux 1) Replace /etc/ssh/sshd_config with merged file 2) Show differences between merged file and original 3) Remerge original with update 4) Edit merged file 5) Return to the previous menu Please select from the menu above (-1 to exit, losing this merge):
Последно е добре да проверим за излишни настройки с: gentoo nasko # eix-test-obsolete
5.6 Инсталиране и конфигуриране на защитната стена За сега единствената услуга която работи на сървъра е SSH. Тя е проектирана да бъде сигурна и достъпна от всякъде, така че това е нормално. Но преди да започне инсталацията на останалите услуги е добре да се настрои защитна стена, която да контролира достъпа между Интернет, вътрешната мрежа и сървъра. Защитната стена определя кой до какви услуги има достъп. В Линукс44 тази функция се изпълнява от iptables. Писането директно на iptables правила дава максимална гъвкавост при изготвянето на защитната стена, но изисква много добри мрежови познания, както и познания по вътрешната организация на iptables и Линукс ядрото и лесно може да бъде допусната грешка при по-сложни конфигурации. За това вместо се работи директно с нея, ще бъде използван един от популярните скриптове за генериране на защитни стени – Shorewall. gentoo nasko # eix shorewall * net-firewall/shorewall Available versions: 3.0.8 3.2.9 ~3.2.10 ~3.4.2 ~3.4.3 Homepage: http://www.shorewall.net/ Description: Shoreline Firewall is an iptables-based firewall for Linux. ...
Тук може да се види наличието на различни версии, от които да се избере коя да се инсталира. В Gentoo има няколко типа версии. По подразбиране се инсталира най-новата стабилна версия. Това в случая е 3.2.9. Освен стабилна може да има тестови версии (~), маскирани (M) (с забранена инсталация) версии и версии не изпробвани на архитектурата на сървъра (-*).
44 Версии на ядрото 2.4 и 2.6
А. Цонков
- 32 -
Изграждане на SOHO сървър с Gentoo Linux
5.6.1 Тестова версия на пакетите В случая последната тестова версия е 3.4.3. За се избере тестова версия, трябва да е позволена за конкретната архитектура (в случая x86). Това става като се добави подобен ред в файла /etc/portage/package.keywords: =app-emulation/wine-0.9.38 ~x86
За защитната стена е добре да се инсталира последната налична версия, за това ще бъде позволено винаги използването на тестовата версия: gentoo nasko # flagedit net-firewall/shorewall -- ~x86 gentoo nasko # cat /etc/portage/package.keywords net-firewall/shorewall ~x86 gentoo nasko # emerge -av shorewall
Забелязва се, че Shorewall зависи от iptables. Освен това в случая се инсталира още един пакет полезен за мрежовото администриране – iproute2.
5.6.2 Принцип на работа на Shorewall Тъй като Shorewall е абстрактен слой над iptables, вместо да се работи с мрежови интерфейси, се разглежда разделяне на света, с който комуникира защитната стена на зони45. Ще се използват три зони от тип „IPv4“. Това ще са вградената зона <Firewall>, зоната за вътрешна мрежа (loc), и за Интернет (net). Към всяка от зоните си може да се свърже един или няколко интерфейса или мрежи от даден интерфейс. В случая ще се свърже eth0 към loc, а eth1/ppp0 към net. След като са определени зоните, трябва да се зададат правилата – кои връзки са позволени и на къде. На пример, както беше дискутирано, трябва да се позволи достъпа до SSH в защитната стена от всякъде. Също в зависимост от нуждите може да се позволи достъп до сървъра по DNS, SMTP, POP3, IMAP и HTTP/HTTPS само от вътрешната мрежа или от всякъде, достъп до SMB протоколите само от вътрешната мрежа и т.н.46
45 За повече информация - http://www.shorewall.net 46 Достъпът до DHCP услугата е по-особен, и се осигурява при настройка на интерфейсите.
А. Цонков
- 33 -
Изграждане на SOHO сървър с Gentoo Linux
XXXXX
SSH Зона: net Интерфейс: eth1
Интернет
SSH, SMB, ... Зона: fw
Сървър
Илюстрация 4: Разделяне на зони в Shorewall
Зона: loc Интерфейс: eth0
Локална мрежа
Следващата важна стъпка е настройката на правила за пакетите за които няма правила, или така наречените „действия по подразбиране“. Такива са недопускането на пакети от Интернет към сървъра, освен ако изрично не е позволено с правило, както и пропускането на пакети от вътрешната мрежа към Интернет. Тъй като конфигурацията предполага единствен реален IP адрес за сървъра, и частни адреси за останалите компютри, за да могат те да използват Интернет се налага превръщане между реалният и частните адреси. Това се нарича маскиране47 и в този случай се маскират връзките идващи от eth0, и излизащи през eth1/ppp0. Остава само да се дефинира вътрешният интерфейс като безопасен при спряла защитна стена, за да може в случай на авария да е затворен достъпа до Интернет, но да е възможно да се администрира през локалната мрежа. За да се стартира защитната стена трябва да бъде разрешена в файла shorewall.conf.
5.6.3 Минимална настройка на Shorewall Настройват се зоните и интерфейсите по следния начин: gentoo nasko # cd /etc/shorewall/ gentoo nasko # man shorewall-zones # Винаги може да се направи справка с инсталираните помощни файлове и наръчници gentoo shorewall # nano zones #ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS 47 Masquerading или Network Address Translation (NAT)
А. Цонков
- 34 -
Изграждане на SOHO сървър с Gentoo Linux fw firewall loc ipv4 net ipv4 gentoo shorewall # nano #ZONE INTERFACE loc eth0 net eth1 gentoo shorewall # nano #INTERFACE HOST(S) eth0
interfaces BROADCAST detect routestopped
OPTIONS dhcp tcpflags,nosmurfs,dhcp OPTIONS
Добавят се необходимите правила: gentoo shorewall # nano policy #SOURCE DEST POLICY LOG LIMIT:BURST # LEVEL loc net ACCEPT net all DROP fw all ACCEPT all all REJECT gentoo shorewall # nano rules #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ # PORT PORT(S) DEST LIMIT GROUP #SECTION ESTABLISHED #SECTION RELATED SECTION NEW SSH/ACCEPT all fw Webmin/ACCEPT loc fw
Тъй като не се използват секциите ESTABLISHED и RELATED може да бъде активирана FASTACCEPT=Yes оптимизацията. За сега няма да бъдат добавяни други правила. Данните за останалите услуги ще се конфигурират през уеб-интерфейса до който е позволен достъп от локалната мрежа. Остава единствено проверката на конфигурацията за грешки, и активиране на стената: gentoo shorewall # shorewall check WARNING: Shorewall startup is disabled. To enable startup, set STARTUP_ENABLED=Yes in /etc/shorewall/shorewall.conf ... Shorewall configuration verified STARTUP_ENABLED=Yes CLAMPMSS=1490 # Ако има PPP връзка към която се рутира трафик от друг интерфейс FASTACCEPT=Yes # Ако няма правила в ESTABLISHED и RELATED gentoo shorewall # /etc/init.d/shorewall start * Caching service dependencies ... ] * Starting firewall ... ] gentoo shorewall # rc-update add shorewall default * shorewall added to runlevel default
А. Цонков
- 35 -
[ ok [ ok
Изграждане на SOHO сървър с Gentoo Linux
Вече сървърът е защитен, и стената ще се включва по подразбиране при начално зареждане на системата. Забележка: Не трябва да се разчита единствено на защитната стена за контрол на достъпа до услугите предоставяни от сървъра! Услугите винаги трябва да се настройват сякаш няма защитна стена – те трябва да бъдат сигурни и без нея, защото в случай на дефект в конфигурацията, тя не се стартира, и отавя отворен достъпа от вътрешната мрежа. Освен това хората с SSH достъп могат да пренасочват портове сякаш връзките идват от самия сървър. Ако той вярва на връзки от себе си (както е в показаната конфигурация) и има услуги настроени без мисъл за сигурността може да се стигне до нежелани последствия!
5.7 Webmin – уеб-администриране За да се улесни настройката на сървъра в останалата част от документа ще бъде инсталиран малък HTTPS сървър, приемащ връзки на TCP порт 10000, който позволява конфигуриране на множество услуги и общо администриране на системата през обикновен уеб-клиент. gentoo shorewall # emerge -av webmin gentoo shorewall # rc-update add webmin default gentoo shorewall # /etc/init.d/webmin start
Ако по някаква причина се наложи смяна на паролата за достъп може да се използва командата: gentoo ~ # /usr/libexec/webmin/changepass.pl /etc/webmin admin <парола>
Сега би трябвало да е възможна връзка от локалната мрежа към адрес https://<адрес_на_сървъра>:10000/
5.7.1 SSH пренасочване на портове За да може да се получи връзка до тази услуга през Интернет към сървъра ще се използва пренасочване на портове по следният начин: На клиентския компютър се осъществява SSH връзка към сървъра,Снимка 4: Вход в Webmin като се задава насочване на порт 10000 към локален порт (например) 10101: А. Цонков
- 36 -
Изграждане на SOHO сървър с Gentoo Linux <потребител>@nasko-lap ~ $ ssh <IP_на_сървъра> -L 10101:localhost:10000 Enter passphrase for key '/home/<потребител>/.ssh/id_dsa': <парола>
След това, в уеб-клиента се осъществява връзка към https://localhost:10101/. Тя се криптира от SSH, и сървъра от своя страна осъществява връзката към localhost:10000, както е указано в -L опцията погоре.
5.7.2 Работа с Webmin От Webmin Configuration може да се промени езика и останалите настройки на самият Webmin, но чрез него може да се настрои и защитната стена, а дори и LVM дяловете!
Снимка 5: Настройка на Webmin интерфейса
Полезно е в показания на снимката IP Access Control да се укаже изрично достъп само от вътрешната мрежа, или дори само от IP адреса на администратора, както и в SSL настройките да се активира опцията „Redirect non-SSL requests to SSL mode?“ А. Цонков
- 37 -
Изграждане на SOHO сървър с Gentoo Linux
5.8 Инсталация на услугите 5.8.1 MySQL gentoo shorewall # emerge -av mysql ... * You might want to run: * "emerge --config =dev-db/mysql-5.0.42" * if this is a new install. ... gentoo nasko # emerge --config =dev-db/mysql-5.0.42 ... * Insert a password for the mysql 'root' user * Avoid ["'\_%] characters in the password > <парола_на_SQL_администратора> * Retype the password > <парола_на_SQL_администратора> ... gentoo nasko # /etc/init.d/mysql start gentoo nasko # rc-update add mysql default
5.8.2 SNMP поддръжка Инсталация и минимална конфигурация, позволяваща достъп от сървъра до SNMP данните48: gentoo shorewall # flagedit net-analyzer/net-snmp +lm_sensors gentoo shorewall # emerge -av net-snmp gentoo shorewall # nano /etc/snmp/snmpd.conf # sec.name source community com2sec local localhost public # sec.model sec.name group MyROGroup v1 local group MyROGroup v2c local group MyROGroup usm local # incl/excl subtree mask view all included .1 80 # context sec.model sec.level match read write access MyROGroup "" any noauth exact all none syslocation Sofia, Bulgaria syscontact GentooAdmin <admin@privnetwork> gentoo shorewall # /etc/init.d/snmpd start * Starting net-snmpd ... ] gentoo shorewall # rc-update add snmpd default * snmpd added to runlevel default
notif none
[ ok
Включеният флаг lm_sensors не е задължителен, но с подходящите модули в ядрото ще позволи отчитане на параметри като температури и напрежения в компютъра и процесора. 48 Съответно и не е най-сигурната възможна конфигурация. Виж http://gentoo-wiki.com/Cacti/SNMP_host_setup
А. Цонков
- 38 -
Изграждане на SOHO сървър с Gentoo Linux
5.8.3 DHCP Сървър Следва инсталация на последната стабилна версия на DHCP, и с цел подобряване на сигурността се позволяват връзки единствено от вътрешната мрежа. gentoo shorewall # eix -e dhcp * net-misc/dhcp Available versions: 3.0.3-r9
~3.0.5 ~3.0.5-r1 [M]~3.1.0_alpha2
[M]~3.1.0_alpha3
Homepage: Description:
http://www.isc.org/products/DHCP ISC Dynamic Host Configuration Protocol
gentoo shorewall # emerge -av dhcp gentoo shorewall # nano /etc/conf.d/dhcpd DHCPD_IFACE="eth0"
5.8.4 DNS Сървър gentoo shorewall # emerge -av bind bind-tools
За сега няма нужда да се правят други настройки. Всичко ще бъде конфигурирано през Webmin, и маркирано за автоматично стартиране при зареждане на системата.
5.8.5 Уеб-сървър Apache Активира се многонишков режим на работа (изискване на Cacti), и се инсталира сървъра с зависимостите му: gentoo shorewall # flagedit net-www/apache +threads gentoo shorewall # emerge -av apache
Следва избор на възможности за активиране, и стартиране на сървъра: gentoo shorewall # nano /etc/conf.d/apache2 APACHE2_OPTS="-D SSL -D PHP5"
За да се избегне повторно редактиране на файла от сега се активира поддръжката на PHP, което следва да бъде инсталирано. Зададените тук опции трябва да бъдат въведени в модулът за управление на Apache в Webmin!
5.8.6 PHP интерпретатор и интеграция с Apache уеб-сървъра gentoo shorewall # flagedit dev-lang/php +curl +gd +imap +sockets +threads +tokenizer +zip gentoo shorewall # emerge -av php gentoo shorewall # /etc/init.d/apache2 start gentoo shorewall # rc-update add apache2 default
А. Цонков
- 39 -
Изграждане на SOHO сървър с Gentoo Linux
5.8.7 Софтуер за споделяне на ресурси в локална мрежа gentoo gentoo gentoo gentoo gentoo
shorewall shorewall shorewall shorewall shorewall
# # # # #
flagedit =app-text/ghostscript-gpl-8.57 -- ~x86 flagedit net-print/cups +jpeg +png +ppds +samba +tiff emerge -av samba emerge -av cups-pdf emerge -av Text-Iconv
Трябва да се отбележи, че Samba има като зависимост CUPS, така че те се инсталират едновременно с горната команда. Добавен е и принтер, превръщащ документите в PDF файлове. gentoo gentoo gentoo gentoo
shorewall shorewall shorewall shorewall
# # # #
/etc/init.d/cupsd start rc-update add cupsd default /etc/init.d/samba start rc-update add samba default
5.8.8 Cacti – софтуер за събиране на информация и чертане на графики gentoo shorewall # emerge -av cacti ... * To install cacti-0.8.6j-r6 into a virtual host, run the following command: * * webapp-config -I -h <host> -d cacti cacti 0.8.6j-r6 ...
След като се настроят виртуалните хостове ще трябва да се изпълни съответната команда.
5.9 Настройка на услугите Макар и стартирани, повечето услуги на сървъра не вършат нищо, и дори не са добре защитени – разчита се само на защитната стена. Следва поетапно конфигуриране с Webmin.
5.9.1 DNS/DHCP Разглеждат се като взаимно свързани услуги. Правят се следните допускания: Потребителят е регистрирал домейн в публичното пространство. За примера това ще бъде privnetwork ●
●
Вътрешната мрежа има адрес от клас C: 192.168.10.0/24
●
Тя се разделя логически на четири под-мрежи с адреси: ○
А. Цонков
192.168.10.0 – 192.168.10.63: Резервирани за сървъри;
- 40 -
Изграждане на SOHO сървър с Gentoo Linux
192.168.10.64 – 192.168.10.127: DHCP адресно пространство за познати клиенти; ○
192.168.10.128 – 192.168.10.191: DHCP адресно пространство за гости на мрежата (непознати клиенти); ○
192.168.10.192 – 192.168.10.255: Адресно пространство за ръчно задаване на IP адреси или бъдещи разширения. ○
●
Адреса от вътрешната мрежа за сървъра е 192.168.10.1
Той ще има пълно име gentoo.privnetwork, и ще бъде достъпен още с псевдонимите www.privnetwork, mail.privnetwork и admin.privnetwork ●
Външният интерфейс на сървъра се конфигурира по DHCP от Интернет доставчика. ●
Снимка 6: Добавяне на подмрежа управлявана по DHCP
Първата стъпка е добавянето на подмрежа включваща адресните пространства за познати и непознати клиенти.
А. Цонков
- 41 -
Изграждане на SOHO сървър с Gentoo Linux
Следва задаване на две области в създадената подмрежа. Първата с адреси 192.168.10.65-192.168.10.126 за познатите клиенти – с включена опция Deny за „допускане на непознати клиенти“. Втората област е съответно с обхват 192.168.10.129-192.168.10.190 и Allow за „допускане на непознати клиенти“.
Снимка 7: Създаване на област за непознати клиенти
Създава се и група за постоянните работни станции в мрежата, с постоянни вътрешни адреси (в зависимост от MAC адреса) и дълги срокове за даване на адреса.
А. Цонков
- 42 -
Изграждане на SOHO сървър с Gentoo Linux
Снимка 8: Група с настройки за постоянните работни станции
От екрана на новосъздадената група се избира „Edit Client Options“ и се задават настройките за постоянните клиенти. Същото може да се направи и с настройките за Област 2 на подмрежата.
Снимка 9: Настройки предавани на участниците в групата
И на края – добавяне на съответните машини в групата.
А. Цонков
- 43 -
Изграждане на SOHO сървър с Gentoo Linux
Сега в „Client Options – For all networks, hosts and groups“ се задава стил за обновяване на DDNS на „Ad-Hoc“, след което сървърът е конфигуриран и може да бъде стартиран: gentoo shorewall # /etc/init.d/dhcpd start gentoo shorewall # rc-update add dhcpd default
В DNS конфигурацията се започва с дефиниране на списъци за контрол на достъпа, задавайки съответно lo за сървъра и local за вътрешната мрежа [6] [9]:
Снимка 10: Списъци за контрол на достъпа до DNS
Ако потребителят желае, може да настрои препращане към DNS сървъри на доставчика, но в случая ще се разчита единствено на собствената услуга за превръщане на имената в IP адреси. Задава се слушане на всички адреси (по-подразбиране) и рекурсивни заявки само от ACL lo.
Снимка 11: Настройки за адресите на които BIND очаква връзка А. Цонков
- 44 -
Изграждане на SOHO сървър с Gentoo Linux
Създават се два изгледа за клиенти – private е изглед с достъп само от local и lo, но позволява рекурсивни запитвания. Изгледа public се използва за дефиниране на DNS записите така, както света трябва да ги вижда. Там се описва нашия домейн и имената на сървърите участващи в него. Снимка 12: Изгледи в BIND След това се създава master зона за областта privnetwork, и в нея се задава за сървър с имена – gentoo, и негови синоними (CNAME) съответно както бяха описани по-рано.
Снимка 13: Зона за закупения от потребителя домейн
Снимка 14: Създаване на "A" запис А. Цонков
- 45 -
Изграждане на SOHO сървър с Gentoo Linux
Забележка: mail записът е по-добре да не с CNAME, а да се направи с A запис както е gentoo.
Снимка 15: Създаване на необходими синоними с „CNAME“ записи
Снимка 16: Указване на пощенски сървър за домейна с „MX“ запис
Следва всички (предварително дефинирани) зони да се преместят в изглед „private“. Добре е да се създаде и обратна зона за така дефинираната права, но това не е задължително. Трябва и изрично да се позволи използването на изгледа за рекурсивни запитвания от вътрешната мрежа. allow-recursion { lo;
А. Цонков
- 46 -
Изграждане на SOHO сървър с Gentoo Linux local; };
Остава да се направи същата права зона в изгледа public, но този път използвайки външния IP адрес. За примера това е 10.1.1.102. С тези действия сървърът е настроен и готов за стартиране: gentoo shorewall # rc-update add named default gentoo shorewall # /etc/init.d/named start gentoo shorewall # nano /etc/conf.d/net dns_domain="privnetwork" dns_search="privnetwork" dns_servers="127.0.0.1" dhcp_eth1="nodns nontp nonis" gentoo shorewall # /etc/init.d/net.eth1 restart gentoo shorewall # cat /etc/resolv.conf # Generated by net-scripts for interface eth1 domain privnetwork search privnetwork nameserver 127.0.0.1
С последните редове се задава игнориране на настройките за DNS сървър от доставчика, и използване на собствения BIND.
5.9.2 Apache уеб-услуги В конфигурацията на Apache ще бъдат зададени два виртуални адреса. Първият, и отварящ се по подразбиране за уеб-клиенти които не поддържат виртуални хостове ще е свързан с адрес www.privnetwork. На него ще е разположен официалният сайт на компанията. Вторият – с адрес admin.privnetwork ще съдържа графиките за производителността на сървъра, но на него може да бъдат сложени и панел за администриране на MySQL, графики за използването на Apache и т.н. Не трябва да се забравя, че в модула за Apache в Webmin трябва да се зададе: Defined parameters: -D SSL -D PHP5
Снимка 17: Параметри при стартиране на Apache
А. Цонков
- 47 -
Изграждане на SOHO сървър с Gentoo Linux
Снимка 18: Процедура по добавяне на виртуален адрес за уеб-услугите
Създават се двата виртуални адреса на порт 80, и един за SSL връзки за порт 443 49. Автора е на мнение, че файла за настройка на SSL сървър по подразбиране не е на правилното място (в директория /etc/apache2/modules.d), и е по-правилно да се създаде файл описващ виртуалният хост в директорията отделена за целта (т.е. /etc/apache2/vhosts.d). По тази причина ще се наложи ръчното пренасяне на част от оригиналният файл към новосъздадения50. [6]
49 Няма начин да се създадат повече от един именуван виртуален сървър за SSL връзки! Възможно е при използването на множество IP адреси. 50 Пълният текст на този файл може да бъде открит на приложеният към работата архив на файловете с настройки
А. Цонков
- 48 -
Изграждане на SOHO сървър с Gentoo Linux
Снимка 19: Пренасяне на SSL настройки за създаденият хост
Снимка 20: Задаване на адреси за виртуалните хостове
За базовата конфигурация е нужно да зададем при какви „адреси“ да се зарежда единия или другия виртуален сървър. След това може да се тества връзката от самия сървър, тъй като защитната стена все още не позволява връзки от мрежата: gentoo shorewall # /etc/init.d/apache2 restart gentoo shorewall # apache2 -S -D SSL -D PHP5 VirtualHost configuration:
А. Цонков
- 49 -
Изграждане на SOHO сървър с Gentoo Linux wildcard NameVirtualHosts and _default_ servers: _default_:443 gentoo.privnetwork (/etc/apache2/vhosts.d/30_ssl_vhost.conf:2) *:80 is a NameVirtualHost default server www.privnetwork (/etc/apache2/vhosts.d/10_www_vhost.conf:2) port 80 namevhost www.privnetwork (/etc/apache2/vhosts.d/10_www_vhost.conf:2) port 80 namevhost admin.privnetwork (/etc/apache2/vhosts.d/20_admin_vhost.conf:2) Syntax OK
gentoo shorewall # links http://localhost/ gentoo shorewall # links https://localhost/
5.9.3 Споделяне на принтер Тъй като ще се използва PDF принтер, трябва да се имат предвид следните забележки: За да могат да се отпечатват файлове с имена на кирилица може да се наложи превръщане на кодиранията на имената. За повече информация погледнете документацията на cups-pdf 51. ●
Отпечатаните документи се поставят по подразбиране в /var/spool/cups-pdf/<потребител>. За да бъде използваема тази директория ще бъде споделена във Samba. ●
За конфигурация на CUPS може да се използват както Webmin, така и собствения конфигурационен панел, намиращ се на порт 631. Webmin за жалост не може да настройва използвания виртуален PDF принтер, за това или трябва да се позволи достъпа до конфигурационния панел от мрежата (което не се препоръчва) или да се използва пренасочване на портове, или links. В случая принтера ще бъде добавен използвайки втория метод: nasko@nasko-lap ~ $ ssh 10.1.1.102 -L 1631:localhost:631
Следва свързване с панела от уеб-клиент към адрес http://localhost:1631 CUPS трябва да се настрои да приема връзки от мрежата: Listen 192.168.10.1:631
Снимка 21: Контрол на достъпа в CUPS 51 http://www.cups-pdf.de/documentation.shtml
А. Цонков
- 50 -
Изграждане на SOHO сървър с Gentoo Linux
Снимка 22: Добавяне на принтер в CUPS
За марка на принтера се избира „Postscript“, и за модел „Generic ...“. Получава се нещо като показаното на графиката:
Снимка 23: Информация за принтера
Остава да се позволи достъп до принтерите, като се отвори порт за връзка в защитната стена [10]. А. Цонков
- 51 -
Изграждане на SOHO сървър с Gentoo Linux
5.9.4 Добавяне на дял за споделени файлове
Снимка 24: Добавяне на логически том в LVM чрез Webmin.
Към системата ще бъде добавен логически том за съхраняване на споделените файлове с големина 2 GB.
Снимка 25: Създаване на LVM дял
Ще се създаде EXT3 файлова система и ще се монтира в директория /mnt/shared. След това в него ще бъде създадена директория software, която по-късно да се публикува в локалната мрежа използвайки Samba. Това става от настройките на тома – бутон „Create file system of type:“ и избран тип в А. Цонков
- 52 -
Изграждане на SOHO сървър с Gentoo Linux
падащия списък „(ext3)“. Пак от същият екран с настройки се избира и монтирането в указаната директория, но тя първо трябва да бъде създадена. Ще бъде използван факта, че файловата система още не се използва за да и добавим оптимизацията за търсене с балансирани дървета 52. gentoo shorewall # tune2fs -O dir_index /dev/vg/shared gentoo shorewall # mkdir /mnt/shared
Снимка 26: Монтиране на LVM дял
5.9.5 Споделяне на файлове и директории53 За конфигурацията се използва Samba Windows File Sharing модула на Webmin. Първо в Unix мрежовите настройки се задават интерфейси eth0 и lo. Задават се общите настройки на сървъра [9]:
Снимка 27: Настройки за Самба 52 Тези команди могат да бъдат изпълнени и от конзолата в „Others/Command Shell“ на Webmin 53 http://www.samba.org/samba/docs/Samba-HOWTO-Collection.pdf
А. Цонков
- 53 -
Изграждане на SOHO сървър с Gentoo Linux
За работа с имена на файлове на кирилица е добре да се добавят следните редове в края на секция [global] в конфигурационния файл [11]: dos charset = 855 unix charset = UTF8 display charset = CP1251
Тъй като споделянето на домашните директории при някои конфигурации може да доведе до проблеми със сигурността се препоръчва тяхното деактивиране чрез настройката Available : Не. Следва създаване на необходимите споделяния на директории. За първата директория, файлове от PDF принтера, може да се активира Guest Access : Да. Освен това ако ще се използва контрол на достъпа чрез потребители54 е добре те да се организират в групи. Така групата потребители, които ще печатат на PDF принтера ще могат да трият отпечатаните си файлове като се добавят в Read/write users или Read/write groups. [12]
Снимка 28: Добавяне на споделени директории
Следва аналогично споделяне на /mnt/shared/software, и евентуално добавяне на потребители за достъп с права за писане до ресурсите.
Снимка 29: Създаване на споделена директория с права за собственика 54 Друга възможност е файлове да не могат да се променят чрез Samba, а само чрез други методи като SSH/SCP или FTP сървър. Всички споделени директории трябва да са маркирани като „само за четене“.
А. Цонков
- 54 -
Изграждане на SOHO сървър с Gentoo Linux
Забележка: За да имат потребителите определени права в Самба, е необходимо да притежават нужните права и върху файловата система, например няма да могат да трият файлове, ако нямат „w“ флаг върху директорията от която искат да трият.
5.9.6 Отдалечено наблюдение Идва времето за довършване конфигурацията на по-рано инсталираната Cacti. webapp-config -I -h ssl.privnetwork -d cacti cacti 0.8.6j-r6 gentoo ~ # mysqladmin -p --user=root create cacti Enter password: <парола_за_MySQL> gentoo ~ # mysql -p cacti < /var/www/ssl.privnetwork/htdocs/cacti/cacti.sql Enter password: <парола_за_MySQL> gentoo ~ # mysql -p --user=root mysql Enter password: <парола_за_MySQL> Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A gentoo ~ #
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 Server version: 5.0.42-log Gentoo Linux mysql-5.0.42 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY '<парола_за_cacti>'; Query OK, 0 rows affected (0.02 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye gentoo ~ # nano /var/www/ssl.privnetwork/htdocs/cacti/include/config.php $database_password = "<парола_за_cacti>";
Следва отваряне на тунел през SSH, пренасочвайки порт 1443 към localhost:443 на сървъра, и отваряне на адрес https://localhost:1443/cacti/. След кратък инсталационен процес Cacti събира нужната му информация, и предоставя екран за влизане с първоначални потребителско име „admin“ и парола „admin“. Веднага след влизането се предлага промяната на паролата! Важно е, както винаги, да бъде сменена със сигурна парола. Остава да се добави процес в Cron, който през равни интервали ще събира информацията за която Cacti ще чертае графики, а именно следната команда55: gentoo ~ # crontab -u apache -e 55 Същото може да бъде извършено и с модула „Scheduled Cron Jobs“ на Webmin
А. Цонков
- 55 -
Изграждане на SOHO сървър с Gentoo Linux */5 * * * * /usr/bin/php /var/www/ssl.privnetwork/htdocs/cacti/poller.php > /dev/null 2>&1
Следва конфигуриране на системата да събира достъпната по SNMP информация [13]. ●
Добавя се устройство;
●
Инсталират се разширения56;
●
Избират се желаните графики за хоста;
●
Добавят се към процеса за събиране на данни;
Добавят интерфейси); ●
●
се
желаните
индексирани
Наблюдава се събират ли се правилно данните.
Снимка 30: Редактиране на устройство в Cacti 56 В случая се използва http://forums.cacti.net/about11590-0-asc-45.html
А. Цонков
данни
- 56 -
(като
мрежови
Изграждане на SOHO сървър с Gentoo Linux
5.9.7 Позволяване на услугите в Shorewall За достъп до услугите трябва да се въведе следният списък с правила: Action DNS/ACCEPT HTTP/ACCEPT SSH/ACCEPT SMB/ACCEPT IPP/ACCEPT HTTPS/ACCEPT Webmin/ACCEPT Ping/ACCEPT
Source Any Any Any Zone loc Zone loc Any Zone loc Zone loc
Destination Firewall Firewall Firewall Firewall Firewall Firewall Firewall Firewall
Protocol Source ports Destination ports Any Any Any Any Any Any Any Any
За да маршрутизира пакети между двата си интерфейса единствената нужна настройка за конкретното решение е добавянето на правило за маскиране на вътрешната мрежа за трафика изпращан към Интернет.
Снимка 31: Настройки за маскиране на локалната мрежа в Shorewall
След прилагане на промените по защитната стена сървърът е конфигуриран за работа.
А. Цонков
- 57 -
Изграждане на SOHO сървър с Gentoo Linux
6. Система за електронна поща 6.1 Въведение 6.2 Цел и задачи 6.3 Архитектура на системата Използва се eGroupware, интегриран с пощенската система чрез LDAP. [14]
6.4 Създаване на SSL сертификати gentoo ~ # openssl req -nodes -new -keyout private.key -out server.csr ... Country Name (2 letter code) [AU]:BG State or Province Name (full name) [Some-State]:. Locality Name (eg, city) []:Sofia Organization Name (eg, company) [Internet Widgits Pty Ltd]:Sicera Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:ldap.sicera.org Email Address []:hostmaster@sicera.org ... gentoo ~ # chmod 600 private.key
Това генерира частният ключ (опцията -nodes се използва тъй като OpenLDAP не може да работи с криптирани частни ключове). Този файл трябва да е недостъпен за света! Публичният ключ може или да бъде подписан от себе си57, или от външна организация като CAcert. gentoo ~ # openssl x509 -req -in server.csr -out server.crt -days 365 -signkey private.key gentoo ~ # ren server.crt ldap.sicera.org.crt
Сега разполагаме с подписан публичен ключ за LDAP сървърът ни във файла ldap.sicera.org.crt. Този файл може да се разпространява свободно (безопасно е да бъде четен от LDAP клиентите, и сървърът им го изпраща автоматично за установяване на шифрована връзка).
57 selfsigned
А. Цонков
- 58 -
Изграждане на SOHO сървър с Gentoo Linux
6.5 Инсталация на необходимия софтуер В предната глава бяха инсталирани голяма част от пакетите нужни за системата за обмяна на електронна поща. Ще бъдат използвани и следните допълнителни компоненти: gentoo gentoo gentoo gentoo gentoo gentoo gentoo gentoo gentoo
~ # flagedit +ldap +sasl ~ # flagedit dev-libs/cyrus-sasl +authdaemond ~ # emerge -av openldap pam_ldap nss_ldap cyrus-sasl ~ # chown ldap:ldap -R /var/lib/openldap-{ldbm,data,slurp} ~ # flagedit www-apps/egroupware +gd +ical +jpgraph ~ # emerge -av egroupware ~ # cd /etc/openldap openldap # cp `equery f egroupware |grep .schema$` schema/ openldap # nano schema/rfc2307bis.schema
#attributetype ( 1.3.6.1.1.1.1.0 NAME 'uidNumber' # DESC 'An integer uniquely identifying a user in an administrative domain' # EQUALITY integerMatch # SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 # SINGLE-VALUE ) # #attributetype ( 1.3.6.1.1.1.1.1 NAME 'gidNumber' # DESC 'An integer uniquely identifying a group in an administrative domain' # EQUALITY integerMatch # SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 # SINGLE-VALUE )
Потребителят може да трябва да коментира първите два атрибута от файла rfc2307bis.schema, тъй като те са вградени в OpenLDAP. Освен схемите по-горе, идващи с дистрибуцията на eGroupware, ще е нужна nimele.schema58, която може да бъде намерена в приложение към този документ.
6.6 Настройка на компонентите 6.6.1 LDAP Първо се избират интерфейсите за местоположението на конфигурационния файл:
връзка
с
gentoo openldap # nano /etc/conf.d/slapd OPTS="-h 'ldaps:// ldap:// ldapi://%2fvar%2frun%2fopenldap %2fslapd.sock'" gentoo openldap # nano slapd.conf include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/rfc2307bis.schema include /etc/openldap/schema/nimel.schema include /etc/openldap/schema/mozillaabpersonalpha.schema include /etc/openldap/schema/evolutionperson.schema modulepath
/usr/lib64/openldap/openldap
58 Оригинално публикувана на Neokraft.net, създадена от Olivier Meunier.
А. Цонков
- 59 -
OpenLDAP
и
Изграждане на SOHO сървър с Gentoo Linux moduleload
back_hdb.so
database suffix checkpoint cachesize rootdn password-hash
hdb "dc=sicera,dc=org" 1024 5 # <kbyte> <min> 10000 "cn=manager,dc=sicera,dc=org" {crypt}
TLSCipherSuit HIGH TLSCertificateFile ~/ldap.sicera.org.crt TLSCertificateKeyFile ~/private.key TLSVerifyClient never security ssf=1 update_ssf=112 simple_bind=64 access to dn.base="" by * read access to dn.base="cn=Subschema" by * read ###### Mail system access control access to attrs=userPassword,userPKCS12 by self write by * auth access to attrs=shadowLastChange by self write by * read ###### Addressbook ACL ### Personal Addressbook access to dn.regex="^cn=([^,]+),ou=personal,ou=contacts,virtualDomain=([^,] +),dc=sicera,dc=org$" attrs=entry by dn.exact,expand="uid=$1,ou=users,virtualDomain=$2,dc=sicera,dc=org" read by users none break access to dn.regex="cn=([^,]+),ou=personal,ou=contacts,virtualDomain=([^,] +),dc=sicera,dc=org$" attrs=children by dn.exact,expand="uid=$1,ou=users,virtualDomain=$2,dc=sicera,dc=org" write by * none access to dn.regex="cn=([^,]+),ou=personal,ou=contacts,virtualDomain=([^,] +),dc=sicera,dc=org$" attrs=entry,@inetOrgPerson,@mozillaAbPersonAlpha,@evolutionPerson by dn.exact,expand="uid=$1,ou=users,virtualDomain=$2,dc=sicera,dc=org" write by * none ### Group Addressbook access to dn.regex="^cn=([^,]+),ou=shared,ou=contacts,virtualDomain=([^,] +),dc=sicera,dc=org$" attrs=entry by group.expand="cn=$1,ou=groups,virtualDomain=$2,dc=sicera,dc=org" read by * none access to dn.regex="cn=([^,]+),ou=shared,ou=contacts,virtualDomain=([^,] +),dc=sicera,dc=org$" attrs=children by group.expand="cn=$1,ou=groups,virtualDomain=$2,dc=sicera,dc=org" write by * none access to dn.regex="cn=([^,]+),ou=shared,ou=contacts,virtualDomain=([^,] +),dc=sicera,dc=org$" attrs=entry,@inetOrgPerson,@mozillaAbPersonAlpha,@evolutionPerson by group.expand="cn=$1,ou=groups,virtualDomain=$2,dc=sicera,dc=org" write by * none
А. Цонков
- 60 -
Изграждане на SOHO сървър с Gentoo Linux ##### End of Addressbook ACL access to * by * none #disallow bind_anon index index index index
accountActive,virtualDomain eq sn,cn,mail,givenname eq,subinitial uid eq,subinitial memberUid,gidNumber,uidNumber eq
Създаваме парола за администратора на LDAP директорията: gentoo openldap # echo rootpw slapd.conf
`slappasswd -h {Md5}` >>
/etc/openldap/
Задават се клиентски настройки в следните файлове: gentoo openldap # nano ldap.conf # Файла в директорията на OpenLDAP за клиентски настройки!!! BASE dc=sicera, dc=org URI ldap://ldap.sicera.org TLS_CERT ~/ldap.sicera.org.crt TLS_KEY ~/private.key #TLS_CACERT ~/ldap.sicera.org.crt # ако е "selfsigned" TLS_CACERTDIR /etc/ssl/certs TLS_REQCERT demand
Следва редактиране и на другият ldap.conf файл на системата, отговарящ за настройките на NSS/PAM: gentoo openldap # nano /etc/ldap.conf host 127.0.0.1 base dc=sicera,dc=org
Докато OpenLDAP все още не е стартиран се добавя базовата структура (в примера има един виртуален домейн. Добавете колкото домейна са нужни!): entoo openldap # nano mastercnf.ldif dn: dc=sicera,dc=org objectClass: dcObject objectClass: organization objectClass: top dc: sicera o: sicera.org dn: virtualDomain=sicera.org,dc=sicera,dc=org virtualDomain: sicera.org postfixTransport: virtual: objectClass: NimelVirtualDomain dn: ou=contacts,virtualDomain=sicera.org,dc=sicera,dc=org ou: contacts objectClass: organizationalUnit objectClass: top
А. Цонков
- 61 -
Изграждане на SOHO сървър с Gentoo Linux dn: ou=groups,virtualDomain=sicera.org,dc=sicera,dc=org ou: groups objectClass: organizationalUnit objectClass: top dn: ou=users,virtualDomain=sicera.org,dc=sicera,dc=org ou: users objectClass: organizationalUnit objectClass: top gentoo openldap # slapadd -l mastercnf.ldif gentoo openldap # rm mastercnf.ldif
6.6.2 SASL AuthD gentoo openldap # nano /etc/conf.d/saslauthd SASLAUTHD_OPTS="${SASLAUTHD_OPTS} -a ldap" SASLAUTHD_OPTS="${SASLAUTHD_OPTS} -O /etc/saslauthd.conf" gentoo openldap # nano /etc/saslauthd.conf ldap_servers: ldaps://127.0.0.1:636 ldap_bind_dn: cn=manager,dc=sicera,dc=org ldap_bind_pw: <тайна> ldap_search_base: dc=sicera,dc=org ldap_auth_method: custom ldap_version: 3 ldap_filter: (|(&(mail=%u@%d)(!(shadowExpire=0))) (shadowExpire=*)))) gentoo openldap # nano /etc/pam.d/imap #%PAM-1.0
(&(mail=%u)(!
auth include common-auth account include common-account password include common-password session include common-session gentoo openldap # cp /etc/pam.d/imap /etc/pam.d/smtp gentoo openldap # cp /etc/pam.d/imap /etc/pam.d/sieve
А. Цонков
- 62 -
Изграждане на SOHO сървър с Gentoo Linux
7. Заключение Проектираният в настоящата работа сървър представлява модерно решение, използващо последните налични софтуерни технологии за решаване нуждите на малки локални мрежи свързани към Интернет. Сървърът изпълнява функциите на множество устройства, които иначе биха работили в мрежата, като по този начин намалява разходите. Основната му цел е осигуряването на защитен достъп до Интернет на потребителите от локалната мрежа, но наред с поддържащите функции по тази му основна дейност, са добавени и други полезни за малките мрежи услуги. Сред тях са споделяне на мрежови принтери и файлове за компютрите свързани към вътрешния интерфейс и собствен уеб-сървър, достъпен от световната мрежа. Основни предимства на настоящото решение са леснотата на неговото внедряване и доброто отношение цена/качество, както и възможностите за разрастване. В проектираният в настоящата работа сървър се отделя внимание на сигурността, но с цел опростено внедряване не са въведени найвисоките възможни практики за сигурност. Автора смята, че за малки мрежи, не съдържащи особено конфиденциална информация това решение, заедно с забележките относно сигурността в текста представят достатъчно сигурна система, запазваща високо ниво на функционалност. Като недостатъци на решението трябва да се посочат нуждата от квалифициран специалист за инсталация и поддръжка на сървъра, както и зависимостта на работата на мрежата от едно устройство в което са концентрирани множество услуги. В настоящата работа не са разгледани множество по-напреднали теми за мрежово администриране, като маршрутизиране през повече от един доставчик, резервираност на услуги, резервни копия на информацията (Backup), както и решения като ограничаване на трафика, контрол на качеството на услугата, разширено маршрутизиране. На тези теми ще трябва да бъде обърнато допълнително внимание при бъдещо разрастване на потребителската мрежа.
А. Цонков
- 63 -
Изграждане на SOHO сървър с Gentoo Linux
Библиография 1: Matthew D. Fuller, BSD vs Linux, 2007, http://www.overyonder.net/~fullermd/rants/bsd4linux/bsd4linux1.php 2: Wikipedia, Linux distribution, 2007, http://en.wikipedia.org/wiki/Linux_distribution 3: Netcraft Ltd, June 2007 Web Server Survey, 2007, http://news.netcraft.com/archives/web_server_survey.html 4: TimeSys, Embedded Linux Resources, 2007, http://www.timesys.com/processor/ 5: Wikipedia, Междумрежова защитна стена, 2007, http://bg.wikipedia.org/wiki/Междумрежова_защитна_стена 6: Майкъл Бауър, Linux - Сигурност на сървъри (второ издание), 2005 7: Gentoo Foundation, Inc, Gentoo Linux x86 Handbook, 2007, http://www.gentoo.org/doc/en/handbook/handbook-x86.xml 8: Милен@NETGUARD Ltd., Кратък наръчник за инсталация на Gentoo 2007.0, 2007, http://wiki.gentoo.bg/index.php/Quick_Install_Guide 9: Крейг Хънт, Linux Мрежови Сървъри, 2002 10: GentooWiki, Linux printer sharing with CUPS, 2007, http://gentoowiki.com/HOWTO_Linux_printer_sharing_with_CUPS 11: Генади Атанасов, Кирилизация на Windows, 2001, http://injinera.bgplus.com/beznakisvane/otraz/onetouch.htm 12: Джон Х. Терпстра, Йелмер Р. Верноой, Samba 3 - официално ръководство , 2005 13: Reinhard Scheck, Cacti 0.8.6 HowTo, 2006, http://docs.cacti.net/ 14: Joydeep Bakshi, eGroupware 1.4.001 installation in SuSe 9.3 remote server, 2007, http://www.infoservices.in/solutions/egroupware.html
А. Цонков
- 64 -
Изграждане на SOHO сървър с Gentoo Linux
Приложение А: Списък с инсталирани пакети [I] app-admin/eselect (1.0.7@19.06.2007): Modular -config replacement utility [I] app-admin/perl-cleaner (1.04.3@20.04.2007): User land tool for cleaning up old perl installs [I] app-admin/php-toolkit (1.0-r2@19.06.2007): Utilities for managing installed copies of PHP [I] app-admin/python-updater (0.2@12.06.2007): Script used to remerge python packages when changing Python version. [I] app-admin/syslog-ng (1.6.11-r1@12.06.2007): syslog replacement with advanced filtering features [I] app-admin/webapp-config (1.50.15@19.06.2007): Gentoo's installer for web-based applications [I] app-admin/webmin (1.350@17.06.2007): Webmin, a web-based system administration interface [I] app-arch/bzip2 (1.0.4@12.06.2007): A high-quality data compressor used extensively by Gentoo Linux [I] app-arch/cpio (2.7-r2@17.06.2007): A file archival tool which can also read and write tar files [I] app-arch/gzip (1.3.12@17.06.2007): Standard GNU compressor [I] app-arch/tar (1.16.1@12.06.2007): Use this to make tarballs :) [I] app-arch/unzip (5.52-r1@22.06.2007): Unzipper for pkzip-compressed files [I] app-crypt/hashalot (0.3-r2@20.04.2007): CryptoAPI utils [I] app-crypt/opencdk (0.5.7@19.06.2007): Open Crypto Development Kit for basic OpenPGP message manipulation [I] app-editors/nano (2.0.4@12.06.2007): GNU GPL'd Pico clone with more functionality [I] app-misc/ca-certificates (20070303-r1@12.06.2007): Common CA Certificates PEM files [I] app-misc/mc (4.6.1-r3@12.06.2007): GNU Midnight Commander cli-based file manager [I] app-misc/mime-types (7@19.06.2007): Provides /etc/mime.types file [I] app-misc/pax-utils (0.1.15@20.04.2007): Various ELF related utils for ELF32, ELF64 binaries useful tools that can check files for security relevant properties [I] app-portage/eix (0.8.8@24.06.2007): Small utility for searching ebuilds with indexing for fast results [I] app-portage/flagedit (0.0.5@12.06.2007): CLI use flags and keyword editor, for system wide or /etc/portage files [I] app-portage/gentoolkit (0.2.3-r1@17.06.2007): Collection of administration scripts for Gentoo [I] app-shells/bash (3.2_p15-r1@12.06.2007): The standard GNU Bourne again shell [I] app-text/ghostscript-gpl (8.57@19.06.2007): GPL Ghostscript - the most current Ghostscript, AFPL, relicensed [I] app-text/libpaper (1.1.21@24.06.2007): Library for handling paper characteristics [I] app-text/poppler (0.5.4-r1@19.06.2007): PDF rendering library based on the xpdf-3.0 code base [I] dev-db/mysql (5.0.42@17.06.2007): A fast, multi-threaded, multi-user SQL database server. [I] dev-db/mysql-init-scripts (1.2@17.06.2007): Gentoo MySQL init scripts. [I] dev-db/sqlite (3.3.17(3)@24.06.2007): SQLite: an SQL Database Engine in a C Library. [I] dev-lang/perl (5.8.8-r2@20.04.2007): Larry Wall's Practical Extraction and Report Language [I] dev-lang/php (5.2.2-r1(5)@19.06.2007): The PHP language runtime engine: CLI, CGI and Apache2 SAPIs. [I] dev-lang/python (2.4.4-r4(2.4)@12.06.2007): Python is an interpreted, interactive, objectoriented programming language. [U] dev-libs/apr (0.9.12@19.06.2007 -> 0.9.12#[0m 1.2.8(1)#[0m): Apache Portable Runtime Library [U] dev-libs/apr-util (0.9.12@19.06.2007 -> 0.9.12#[0m 1.2.8(1)#[0m): Apache Portable Runtime Library [I] dev-libs/expat (1.95.8@20.04.2007): XML parsing libraries [I] dev-libs/glib (2.12.11(2)@12.06.2007): The GLib library of C routines [I] dev-libs/gmp (4.2.1-r1@12.06.2007): Library for arithmetic on arbitrary precision integers, rational numbers, and floating-point numbers [I] dev-libs/libgcrypt (1.2.2-r1@19.06.2007): general purpose crypto library based on the code used in GnuPG [I] dev-libs/libgpg-error (1.5@19.06.2007): Contains error handling functions used by GnuPG software [I] dev-libs/libmcrypt (2.5.7@19.06.2007): libmcrypt is a library that provides uniform interface to access several encryption algorithms. [I] dev-libs/libol (0.3.18@12.06.2007): Support library for syslog-ng [I] dev-libs/libpcre (6.6(3)@12.06.2007): Perl-compatible regular expression library [I] dev-libs/libtasn1 (0.3.5@19.06.2007): provides ASN.1 structures parsing capabilities for use with GNUTLS [I] dev-libs/libxml2 (2.6.28(2)@19.06.2007): Version 2 of the library to manipulate XML files [I] dev-libs/lzo (2.02-r1(2)@19.06.2007): An extremely fast compression and decompression library
А. Цонков
I
Изграждане на SOHO сървър с Gentoo Linux [I] dev-libs/mpfr (2.2.1_p5@12.06.2007): library for multiple-precision floating-point computations with exact rounding [I] dev-libs/openssl (0.9.8d@20.04.2007): Toolkit for SSL v2/v3 and TLS v1 [I] dev-libs/popt (1.10.7@20.04.2007): Parse Options - Command line parser [I] dev-perl/Array-RefElem (1.00@12.06.2007): Set up array elements as aliases [I] dev-perl/Authen-PAM (0.16@17.06.2007): Interface to PAM library [I] dev-perl/DBD-mysql (3.0008@17.06.2007): The Perl DBD:mysql Module [I] dev-perl/DBI (1.54@17.06.2007): The Perl DBI Module [I] dev-perl/Data-DumpXML (1.06@12.06.2007): Dump arbitrary data structures as XML [I] dev-perl/DelimMatch (1.06@12.06.2007): A Perl 5 module for locating delimited substrings with proper nesting [I] dev-perl/Locale-gettext (1.05@12.06.2007): A Perl module for accessing the GNU locale utilities [I] dev-perl/Net-Daemon (0.39@17.06.2007): Abstract base class for portable servers [I] dev-perl/Net-SSLeay (1.30@17.06.2007): Net::SSLeay module for perl [I] dev-perl/PlRPC (0.2018@17.06.2007): The Perl RPC Module [I] dev-perl/TermReadKey (2.30@19.06.2007): Change terminal modes, and perform non-blocking reads [I] dev-perl/Text-Iconv (1.4@22.06.2007): A Perl interface to the iconv() codeset conversion function [I] dev-perl/XML-Generator (0.99@17.06.2007): Perl XML::Generator - A module to help in generating XML documents [I] dev-perl/XML-Parser (2.34@12.06.2007): A Perl extension interface to James Clark's XML parser, expat [I] dev-php/adodb (4.94@19.06.2007): Active Data Objects Data Base library for PHP. [I] dev-python/pycrypto (2.0.1-r5@20.04.2007): Python Cryptography Toolkit [I] dev-python/python-fchksum (1.7.1@20.04.2007): Python module to find the checksum of files [I] dev-util/ccache (2.4-r7@12.06.2007): fast compiler cache [I] dev-util/libconf (0.40.00@12.06.2007): Centralized abstraction layer for system configuration files [I] dev-util/pkgconfig (0.21-r1@12.06.2007): Package config system that manages compile/link flags [I] mail-mta/ssmtp (2.61-r2@12.06.2007): Extremely simple MTA to get mail off the system to a Mailhub [I] media-fonts/gnu-gs-fonts-std (8.11@19.06.2007): Ghostscript Standard Fonts [I] media-libs/fontconfig (2.4.2(1.0)@19.06.2007): A library for configuring and customizing font access [I] media-libs/freetype (2.3.4-r2(2)@19.06.2007): A high-quality and portable font engine [I] media-libs/jpeg (6b-r7@12.06.2007): Library to load, handle and manipulate images in the JPEG format [I] media-libs/libart_lgpl (2.3.19-r1@19.06.2007): a LGPL version of libart [I] media-libs/libpng (1.2.18(1.2)@12.06.2007): Portable Network Graphics library [I] media-libs/t1lib (5.0.2(5)@19.06.2007): A Type 1 Font Rasterizer Library for UNIX/X11 [I] media-libs/tiff (3.8.2-r2@12.06.2007): Library for manipulation of TIFF (Tag Image File Format) images [I] net-analyzer/cacti (0.8.6j-r6(0.8.6j-r6)@19.06.2007): Cacti is a complete frontend to rrdtool [I] net-analyzer/net-snmp (5.4@19.06.2007): Software for generating and retrieving SNMP data [I] net-analyzer/nmap (4.20@23.06.2007): A utility for network exploration or security auditing [I] net-analyzer/rrdtool (1.2.15-r3@19.06.2007): A system to store and display time-series data [I] net-dialup/ppp (2.4.4-r4@12.06.2007): Point-to-Point Protocol (PPP) [I] net-dns/bind (9.4.1-r1@17.06.2007): BIND - Berkeley Internet Name Domain - Name Server [I] net-dns/bind-tools (9.4.1-r1@17.06.2007): bind tools: dig, nslookup, and host [I] net-firewall/iptables (1.3.5-r4@17.06.2007): Linux kernel (2.4+) firewall, NAT and packet mangling tools [I] net-firewall/shorewall (3.4.3@17.06.2007): Shoreline Firewall is an iptables-based firewall for Linux. [I] net-fs/samba (3.0.24-r3@19.06.2007): SAMBA is a suite of SMB and CIFS client/server programs for UNIX [I] net-libs/c-client (2004a-r1@19.06.2007): UW IMAP c-client library [I] net-libs/gnutls (1.4.4-r1@19.06.2007): A TLS 1.0 and SSL 3.0 implementation for the GNU project [I] net-mail/mailbase (1@12.06.2007): MTA layout package [I] net-mail/mailwrapper (0.2.1@12.06.2007): Program to invoke an appropriate MTA based on a config file [I] net-misc/curl (7.15.1-r1@19.06.2007): A Client that groks URLs [I] net-misc/dhcp (3.0.3-r9@17.06.2007): ISC Dynamic Host Configuration Protocol [I] net-misc/dhcpcd (3.0.16-r1@12.06.2007): A DHCP client [I] net-misc/iputils (20060512@20.04.2007): Network monitoring tools including ping and ping6 [I] net-misc/ntp (4.2.4_p0@23.06.2007): Network Time Protocol suite/programs [I] net-misc/openssh (4.5_p1-r1@12.06.2007): Port of OpenBSD's free SSH release [I] net-misc/rsync (2.6.9-r2@12.06.2007): File transfer program to keep remote files into sync [I] net-misc/wget (1.10.2@20.04.2007): Network utility to retrieve files from the WWW
А. Цонков
II
Изграждане на SOHO сървър с Gentoo Linux [I] net-nds/openldap (2.3.35-r1@12.06.2007): LDAP suite of application and development tools [I] net-print/cups (1.2.10-r1@19.06.2007): The Common Unix Printing System [I] net-print/cups-pdf (2.4.2@21.06.2007): Provides a virtual printer for CUPS to produce PDF files. [I] net-print/foomatic-db-ppds (20060720@19.06.2007): linuxprinting.org PPD files for postscript printers [I] net-print/foomatic-filters (3.0.20060720@19.06.2007): Foomatic wrapper scripts [I] net-print/foomatic-filters-ppds (20070501@19.06.2007): linuxprinting.org PPD files for nonpostscript printers [I] net-www/apache (2.0.58-r2(2)@19.06.2007): The Apache Web Server. [I] perl-core/PodParser (1.35@20.04.2007): Base class for creating POD filters and translators [I] perl-core/Sys-Syslog (0.18@17.06.2007): Provides same functionality as BSD syslog [I] perl-core/Test-Harness (2.64@20.04.2007): Runs perl standard test scripts with statistics [I] sys-apps/acl (2.2.39-r1@20.04.2007): Access control list utilities, libraries and headers [I] sys-apps/attr (2.4.32@20.04.2007): Extended attributes tools [I] sys-apps/baselayout (1.12.9-r2@12.06.2007): Filesystem baselayout and init scripts [I] sys-apps/busybox (1.4.2@12.06.2007): Utilities for rescue and embedded systems [I] sys-apps/coreutils (6.9-r1@17.06.2007): Standard GNU file utilities (chmod, cp, dd, dir, ls...), text utilities (sort, tr, head, wc..), and shell utilities (whoami, who,...) [I] sys-apps/debianutils (2.17.5@12.06.2007): A selection of tools from Debian [I] sys-apps/diffutils (2.8.7-r2@17.06.2007): Tools to make diffs and compare files [I] sys-apps/ed (0.5@17.06.2007): Your basic line editor [I] sys-apps/file (4.21@12.06.2007): identify a file's format by scanning binary data for patterns [I] sys-apps/findutils (4.3.4@12.06.2007): GNU utilities for finding files [I] sys-apps/gawk (3.1.5-r3@12.06.2007): GNU awk pattern-matching language [I] sys-apps/grep (2.5.1a-r1@12.06.2007): GNU regular expression matcher [I] sys-apps/groff (1.19.2-r1@20.04.2007): Text formatter used for man pages [I] sys-apps/hdparm (7.3@17.06.2007): Utility to change hard drive performance parameters [I] sys-apps/help2man (1.36.4@12.06.2007): GNU utility to convert program --help output to a man page [I] sys-apps/iproute2 (2.6.19.20061214@17.06.2007): kernel routing and traffic control utilities [I] sys-apps/kbd (1.12-r8@20.04.2007): Keyboard and console utilities [I] sys-apps/less (394@20.04.2007): Excellent text file viewer [I] sys-apps/lm_sensors (2.10.1@19.06.2007): Hardware Monitoring user-space utilities [I] sys-apps/man (1.6e-r3@12.06.2007): Standard commands to read man pages [I] sys-apps/man-pages (2.56@24.06.2007): A somewhat comprehensive collection of Linux man pages [I] sys-apps/mktemp (1.5@20.04.2007): allow safe temporary file creation from shell scripts. [I] sys-apps/module-init-tools (3.2.2-r3@17.06.2007): Kernel module tools for the 2.6 kernel [I] sys-apps/net-tools (1.60-r13@12.06.2007): Standard Linux networking tools [I] sys-apps/pciutils (2.2.3-r2@17.06.2007): Various utilities dealing with the PCI bus [I] sys-apps/portage (2.1.2.7@11.06.2007): The Portage Package Management System. The primary package management and distribution system for Gentoo. [I] sys-apps/sandbox (1.2.17@20.04.2007): sandbox'd LD_PRELOAD hack [I] sys-apps/sed (4.1.5@20.04.2007): Super-useful stream editor [I] sys-apps/shadow (4.0.18.1@20.04.2007): Utilities to deal with user accounts [I] sys-apps/sysvinit (2.86-r8@20.04.2007): /sbin/init - parent of all processes [I] sys-apps/tcp-wrappers (7.6-r8@20.04.2007): TCP Wrappers [I] sys-apps/texinfo (4.8-r5@20.04.2007): The GNU info program and utilities [I] sys-apps/util-linux (2.12r-r7@12.06.2007): Various useful Linux utilities [I] sys-apps/which (2.16@20.04.2007): Prints out location of specified executables that are in your path [I] sys-boot/grub (0.97-r3@12.06.2007): GNU GRUB 2 boot loader [I] sys-devel/autoconf (2.61(2.5)@20.04.2007): Used to create autoconfiguration files [I] sys-devel/autoconf-wrapper (4-r3@20.04.2007): wrapper for autoconf to manage multiple autoconf versions [I] sys-devel/automake (1.6.3(1.6)@19.06.2007 1.9.6-r2(1.9)@12.06.2007 1.10(1.10)@20.04.2007): Used to generate Makefile.in from Makefile.am [I] sys-devel/automake-wrapper (3-r1@20.04.2007): wrapper for automake to manage multiple automake versions [I] sys-devel/binutils (2.16.1-r3@20.04.2007): Tools necessary to build programs [I] sys-devel/binutils-config (1.9-r4@12.06.2007): Utility to change the binutils version being used [I] sys-devel/bison (2.2@20.04.2007): A yacc-compatible parser generator [I] sys-devel/flex (2.5.33-r2@12.06.2007): GNU lexical analyser generator [I] sys-devel/gcc (4.1.2(4.1)@12.06.2007): The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking [I] sys-devel/gcc-config (1.3.16@12.06.2007): Utility to configure the active toolchain compiler [I] sys-devel/gettext (0.16.1@20.04.2007): GNU locale utilities [I] sys-devel/gnuconfig (20070118@12.06.2007): Updated config.sub and config.guess file from GNU
А. Цонков
III
Изграждане на SOHO сървър с Gentoo Linux [I] sys-devel/libperl (5.8.8-r1(1)@20.04.2007): Larry Wall's Practical Extraction and Reporting Language [I] sys-devel/libtool (1.5.22(1.5)@20.04.2007): A shared library tool for developers [I] sys-devel/m4 (1.4.9@12.06.2007): GNU macro processor [I] sys-devel/make (3.81@20.04.2007): Standard tool to compile source trees [I] sys-devel/patch (2.5.9-r1@12.06.2007): Utility to apply diffs to files [I] sys-fs/device-mapper (1.02.10-r1@12.06.2007): Device mapper ioctl library for use with LVM2 utilities [I] sys-fs/e2fsprogs (1.39-r2@12.06.2007): Standard EXT2 and EXT3 filesystem utilities [I] sys-fs/lvm2 (2.02.10@12.06.2007): User-land utilities for LVM2 (device-mapper) software. [I] sys-fs/reiserfsprogs (3.6.19-r1@12.06.2007): Reiserfs Utilities [I] sys-fs/sysfsutils (1.3.0-r1@19.06.2007): System Utilities Based on Sysfs [I] sys-fs/udev (104-r12@20.04.2007): Linux dynamic and persistent device naming support (aka userspace devfs) [I] sys-kernel/gentoo-sources (2.6.20-r8(2.6.20-r8)@11.06.2007): Full sources including the Gentoo patchset for the 2.6 kernel tree [I] sys-kernel/linux-headers (2.6.17-r2@20.04.2007): Linux system headers [I] sys-libs/com_err (1.39@20.04.2007): common error display library [I] sys-libs/cracklib (2.8.9-r1@20.04.2007): Password Checking Library [I] sys-libs/db (4.3.29-r2(4.3)@20.04.2007): Oracle Berkeley DB [I] sys-libs/gdbm (1.8.3-r3@20.04.2007): Standard GNU database libraries [I] sys-libs/glibc (2.5-r3(2.2)@12.06.2007): GNU libc6 (also called glibc2) C library [I] sys-libs/gpm (1.20.1-r5@20.04.2007): Console-based mouse driver [I] sys-libs/ncurses (5.6(5)@12.06.2007): console display library [I] sys-libs/pam (0.78-r5@20.04.2007): Linux-PAM (Pluggable Authentication Modules) [I] sys-libs/pwdb (0.62@20.04.2007): Password database [I] sys-libs/readline (5.2_p2@12.06.2007): Another cute console display library [I] sys-libs/slang (1.4.9-r2@12.06.2007): Console display library used by most text viewer [I] sys-libs/ss (1.39@20.04.2007): Subsystem command parsing library [I] sys-libs/timezone-data (2007e@12.06.2007): Timezone data (/usr/share/zoneinfo) and utilities (tzselect/zic/zdump) [I] sys-libs/zlib (1.2.3-r1@12.06.2007): Standard (de)compression library [I] sys-process/cronbase (0.3.2@12.06.2007): base for all cron ebuilds [I] sys-process/htop (0.6.5@21.06.2007): interactive process viewer [I] sys-process/procps (3.2.7@12.06.2007): Standard informational utilities and process-handling tools [I] sys-process/psmisc (22.3@12.06.2007): A set of tools that use the proc filesystem [I] sys-process/vixie-cron (4.1-r10@12.06.2007): Paul Vixie's cron daemon, a fully featured crond implementation [I] virtual/ghostscript (0@19.06.2007): Virtual for Ghostscript [I] virtual/init (0@20.04.2007): Virtual for various init implementations [I] virtual/libiconv (0@20.04.2007): Virtual for the GNU conversion library [I] virtual/libintl (0@20.04.2007): Virtual for the GNU Internationalization Library [I] virtual/mysql (5.0@17.06.2007): Virtual for MySQL client or database [I] virtual/perl-MIME-Base64 (3.07@12.06.2007): Virtual for MIME-Base64 [I] virtual/perl-Storable (2.15@17.06.2007): Virtual for Storable [I] virtual/perl-Sys-Syslog (0.18@17.06.2007): Virtual for Sys-Syslog [I] www-client/links (2.1_pre26(2)@12.06.2007): links is a fast lightweight text and graphic webbrowser
Общо 197 пакета.
А. Цонков
IV
Изграждане на SOHO сървър с Gentoo Linux
Приложение Б: Конфигурационни файлове Приложени към работата са налични копия на следните директории с настройки: apache2/ bind/ conf.d/ shorewall/
Има копия на следните файлове: smb.conf cupsd.conf dhcpd.conf env_d_02locale fstab grub_menu.lst kernel_config locale.gen make.conf snmpd.conf sshd_config
А. Цонков
V
Изграждане на SOHO сървър с Gentoo Linux
Приложение В: Списък на стартираните услуги и достъпа до тях gentoo ~ # rc-status -a Runlevel: boot bootmisc [ started ] checkfs [ started ] checkroot [ started ] clock [ started ] consolefont [ started ] hostname [ started ] keymaps [ started ] localmount [ started ] modules [ started ] net.lo [ started ] rmnologin [ started ] urandom [ started ] Runlevel: default apache2 [ started ] cupsd [ started ] dhcpd [ started ] lm_sensors [ started ] local [ started ] mysql [ started ] named [ started ] net.eth0 [ started ] net.eth1 [ started ] netmount [ started ]
А. Цонков
VI
Изграждане на SOHO сървър с Gentoo Linux samba [ started ] shorewall [ started ] snmpd [ started ] sshd [ started ] syslog-ng [ started ] vixie-cron [ started ] webmin [ started ] gentoo ~ # netstat -ln Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address State tcp 0 0 127.0.0.1:3306 LISTEN tcp 0 0 0.0.0.0:139 LISTEN tcp 0 0 0.0.0.0:80 LISTEN tcp 0 0 0.0.0.0:10000 LISTEN tcp 0 0 192.168.10.1:53 LISTEN tcp 0 0 127.0.0.1:53 LISTEN tcp 0 0 0.0.0.0:22 LISTEN tcp 0 0 192.168.10.1:631 LISTEN tcp 0 0 127.0.0.1:631 LISTEN tcp 0 0 127.0.0.1:953 LISTEN tcp 0 0 0.0.0.0:443 LISTEN tcp 0 0 0.0.0.0:445 LISTEN udp 0 0 0.0.0.0:1024 udp 0 0 192.168.10.1:137 udp 0 0 0.0.0.0:137 udp 0 0 192.168.10.1:138 udp 0 0 0.0.0.0:138 udp 0 0 0.0.0.0:161 udp 0 0 192.168.10.1:53 udp 0 0 127.0.0.1:53 udp 0 0 0.0.0.0:67 udp 0 0 0.0.0.0:631 raw 0 0 0.0.0.0:1 ●
PORT 22/tcp
А. Цонков
Foreign Address 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 0.0.0.0:*
Достъп до услуги от самия сървър: STATE SERVICE open ssh
VERSION OpenSSH 4.5 (protocol 2.0)
VII
7
Изграждане на SOHO сървър с Gentoo Linux 53/tcp open domain 80/tcp open http Apache httpd 139/tcp open netbios-ssn Samba smbd 3.X (workgroup: PRIVNETWORK) 443/tcp open ssl/http Apache httpd 445/tcp open netbios-ssn Samba smbd 3.X (workgroup: PRIVNETWORK) 631/tcp open ipp CUPS 1.2 953/tcp open rndc? 3306/tcp open mysql MySQL 5.0.42-log 10000/tcp open http Webmin httpd PORT STATE SERVICE VERSION 53/udp open domain ISC Bind (Fake version: 9.4.1) 67/udp open|filtered dhcps 137/udp open netbios-ns Samba nmbd (workgroup: PRIVNETWORK) 138/udp open|filtered netbios-dgm 161/udp open snmp SNMPv1 server (public) 631/udp open|filtered unknown 1024/udp open|filtered unknown ●
Достъп до услуги от вътрешната мрежа:
PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 4.5 (protocol 2.0) 53/tcp open domain 80/tcp open http Apache httpd 139/tcp open netbios-ssn Samba smbd 3.X (workgroup: PRIVNETWORK) 443/tcp open ssl/http Apache httpd 445/tcp open netbios-ssn Samba smbd 3.X (workgroup: PRIVNETWORK) 631/tcp open ipp CUPS 1.2 10000/tcp open http Webmin httpd PORT STATE SERVICE VERSION 53/udp open domain ISC Bind (Fake version: 9.4.1) 67/udp open|filtered dhcps 137/udp open netbios-ns Samba nmbd (workgroup: PRIVNETWORK) 138/udp open|filtered netbios-dgm 1900/udp open|filtered UPnP ●
PORT 22/tcp 53/tcp 80/tcp 113/tcp 443/tcp PORT 53/udp 67/udp
А. Цонков
Достъп до услуги от външната мрежа: STATE SERVICE VERSION open ssh OpenSSH 4.5 (protocol 2.0) closed domain open http Apache httpd closed auth open ssl/http Apache httpd STATE SERVICE VERSION open domain ISC Bind (Fake version: 9.4.1) open|filtered dhcps
VIII