In Fire We Trust

In the darkest corner light will shine



11 Jun

Print This Post The Perfect SOHO router - Part 2
read in english 

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

Серията се състои от следните статии:

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

Желязото
За този проект използваме следният хардуер

Compaq Deskpro series small factor machine
CPU: 333 mhz
RAM: 256 mb
HDD: 6,4 GB
LAN: 1 x Intel Ether Express (onboard), 1 x Davicom.

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

Инсталация на базова система
Това е като цяло прост процес. Намерете си любимото CD с дебиан 3.1 и да започваме. Първата важна точка в дневният ред е по какъв начин да разделим диска. Аз лично препоръчвам следната конфигурация:

/boot - 100 MB
/ - 2 GB
swap - 256 MB
/home - REST

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

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

Следва да инсталираме системата. Аз препоръчвам клона testing, тъй-като в него има по нови версии на софтуера и е достатъчно стабилен за нашите цели. По време на самата инсталация не избирайте никакъв профил от предложените ви. Изберете сигурна парола за root и не създавайте допълнителен потребител.

Минимизиране
След като вече сме завършили инсталацията време е да я минимизираме. За целта ще използваме пакета deborphan. Той се използва за да покаже пакети които не се използват. Нашата цел с неговото инсталиране е да премахнем абсолютно всичко което не ни е нужно. За целта ще се наложи неколкократно извикване на следният ред

apt-get remove --purge \
`deborphan -a --no-show-section --guess-all | \
grep -v "ssh\|deborphan\|bash\|apt\|nano\|kernel\|ssl"`

Редът е разделен на няколко реда за четимост
Идеята на този ред е да изчисти абсолютно всички пакети които не са необходими или не се използват като пропусне пакетите които имат ssh, deborphan, apt, nano, kernel, ssl или bash в името си.
Необходимо е тази команда да се изпълни няколко пъти тъй като софтуерът не е рекурсивен. Тази стъпка не е строго необходима но помага.
Допълнително инсталираме пакета localepurge с чиято помощ ще отстраним ненужните локали. С него изберете същите езици/локали които сте избрали при инсталацията.

Инсталиране на необходимият ни софтуер
Първо нека да доведем системата до най-новото състояние в клона който сме избрали

apt-get update
apt-get --purge dist-upgrade
apt-get --purge dist-upgrade -f

Следва да премахнем всички налични за момента кернели и да инсталираме такъв който ние искаме. Специално за дебиан кернелът се намира в пакет с име от типа kernel-image, linux-image. Открийте и премахнете всички подобни пакети

apt-get remove --purge [package list]

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

apt-get install linux-image-2.6.18-4-686

Кернелът е достатъчно бърз и има всичко което ще ни трябва.

Поради изборът ни на услуги ще се налоги да инсталираме малко допълнителен софтуер

apt-get install iptables iproute bind9 bind9-host dhcp lighttpd php4-cgi php4-cli phpsysinfo mrtg samba ntp ntpdate proftpd ncftp vim logwatch rkhunter denyhosts iptraf mtr-tiny snmp snmpd iputils-ping lsof openssh-server visudo

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

Последната задача която стои пред нас на този етап от инсталацията е да добавим собствен потребител със негов собствен ssh ключ за повишаване на сигурността и да му гарантираме правото да изпълнява команди посредством sudo.

adduser managementuser
cd ~managementuser/
mkdir .ssh
cat /root/managementuser-key.pub > .ssh/authorized_keys2
chown -R managementuser:managementuser .ssh
usermod -G sudo managementuser
visudo

Забележка: файлът /root/managementuser-key.pub е публичният ssh ключ който сме генерирали предварително и копирали по някакъв начин на нашият рутер. Ключове се генерират най-лесно със ssh-keygen.
Командата visudo редактира файла /etc/sudoers. Там трябва да добавим/откоментираме редът
%sudo ALL=NOPASSWD: ALL
който позволява на всички принадлежащи в групата sudo да изпълняват всички команди без парола.

Заключение
Като цяло в това се състои нашата базова инсталация. От тук на сетне тя трябва да бъде настроена. Всички останали задачи ще изпълняваме посредством ssh като първо се свързваме с нашият потребител managementuser и в последствие ставаме root посредством sudo su -

Серията продължава в The Perfect SOHO router - Part 3

10 Responses to “The Perfect SOHO router - Part 2”

  1. 1
    mortimor Says:

    Здрасти,
    много яко начинание, с каквото мога бих помогнал/допринесъл.
    Понеже в първа част спомена, че всичко трябва да се премисли преди инсталацията поне аз лично смятам, че /var трябва да ти/ние е в отделен дял.

  2. 2
    zeridon Says:

    Вар при дебиан е малко хищен и труден за защита. Причините за това са следните:
    1) там са периодичните листи и свалените пакети за обновление и логовете и т.н. което дефинира като минимално място около 1 Г … не е проблем нека да е така
    2) в момента в който го отделя изпитвам страхотната нужда да му се сложат опции “noexec,nosuid” но ако ги сложим не можем да инсталираме дебиански пакети. Взимайте тези две забележки под внимание и със два скрипта в структурата на apt-get може да се реализира.

    Ще го опиша малко по късно след като тествам как точно се държи

  3. 3
    Валяк Says:

    1. За малка мрежа - до 30-50 компютъра бих препоръчал, използването на dnsmasq вместо bind и dhcpd тъй като е:
    1.1. много леко
    1.2. поддържа едновременно dnscache, dhcp
    1.3. много лесно се настройва - чете от /etc/hosts и /etc/ethers и всичко работи перфектно.

    2. Вместо denyhosts може да се използва blocksshd - пърл скрипт, който е вързан към firewall-а
    може да праща мейли с whois на атакуващия. За повече инфо: http://webreality.org/content/view/18/34/ - има някои нови неща, статията не е за последната версия.

    3. lighttpd е доста добър избор, но ако ще се използват php скриптове и/или скриптове, които имат модул за apache е много по добре да се сложи apache, особенно за работа на машина на 300mhz с 256mb памет, не че няма да работи, просто е по бързо и заема много по малко памет от статично заредени cgi-ки, също така има open_basepath в php.ini което за 1 юзър машина е сравнително сигурно(има още някоя друга опция за сигурност - за справка: http://georgi.unixsol.org/texts/presentations/php-security.pdf ).

    ами… май е това като коментари - дано да са градивни :) и успех!

    относно други дистрота: най лесния и евтин вариянт, който би уредил един офис по-малко 100кв.м. и по-малко 20-30 служителя - Linksys WRTG54L с инсталиран openwrt whiterussian и ajax интерфейса - върши перфеткна работа, 5 портов суич, ако фирмата иска файлов сървър, има такива wireless рутъри с usb2, на които просто им се включва usb диск и всичко работи на 6 :), харчи малко ток :), не заема място.

  4. 4
    zeridon Says:

    Относно dnsmasq - добра забележка, бях забравил за него. Ще го добавя като алтернатива.
    Относно denyhosts и blocksshd - сега ще погледна да видя какви са възможностите и дали няма да е по удачен. Ако се оттърва от python … бих казал че ще е добре :)
    За Lighttpd - все още не съм убеден. Приемаме ситуацията че spawn-ваме само 2 инстанции на php, всички ненужни модули на lighttpd са изключени и в скриптовете си почистваме достатъчно добре променливите, а да и не ползваме нищо странно/критично. В такъв случай остава само memory usage-a да сравним

    lighttpd + php-cgi

    29467 www-data  25   0 13580 5564 2112 S  0.0  3.5   0:07.34 php-cgi
    29457 www-data  22   0  9308 2904 2164 S  0.0  1.8   0:00.18 php-cgi
    29466 www-data  20   0  9440 2148 1348 S  0.0  1.4   0:00.08 php-cgi
    29456 www-data  16   0  4288 1456  732 S  0.0  0.9   0:01.05 lighttpd

    apache + mod_php

    7732 www-data  15   0 23236 9144 3008 S  0.0  3.6   0:05.39 apache2
    7727 root      16   0 19256 7428 3932 S  0.0  2.9   0:00.12 apache2
    7733 www-data  16   0 19256 5024 1480 S  0.0  2.0   0:00.00 apache2
    7746 www-data  16   0 19256 4556 1048 S  0.0  1.8   0:00.00 apache2

    Статистиката е взета от top на машини с 45 дни uptime
    Бих казал че апача яде повече рам. Вярно предоставя доста повече възможности но не ги ползваме.

  5. 5
    llegolas Says:

    по-добре вградената ланка да е към вътрешната мрежа.
    Нали си чувал “Когато гръм удари как суи4овете светят…”

  6. 6
    zeridon Says:

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

  7. 7
    llegolas Says:

    Покажи ми тази квартална мрежа в София и с удоволствие ще си закажа лаптопа директно, но докато говорим за реалността а не за рая на сисадмините - вградената ланка навътре :)
    и ще дам още 5 лева пове4е и ще си взема Realtec вместо Davicom :)

  8. 8
    zeridon Says:

    megalan

    е оптиката не е до всеки блок ами на 2 - 4, мрежата е зарита под земята, външните кабели са не повече от 10 - 20 м и са прикожани към стената. В студентски град техните мрежи са дори още по-добри.

    /офф: да не се караме за глупости. Напълно ясно ми е какви са последствията от закачането на вградена ланка на кофти кабел.

  9. 9
    Валяк Says:

    Здрасти пак,

    за lighttpd, май си прав :), можеби единствения недостатък е, че спаунва сиджиайки, но здраве да е, едва ли рутъра
    ще има сайт с 10000 посещения на ден :)

    За blocksshd-то - пърл с 4-5 модулчета, определено по малко и по добро от питона за нещо толкова просто!

  10. 10
    The Perfect SOHO router - Part 4 « In Fire We Trust Says:

    [...] Base install - i will describe the way our system will be installed and minimized [...]

Вашият коментар

XHTML: Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <code lang="language"> [lang_en][/lang_en] [lang_bg][/lang_bg] <ul> <ol>


In Fire We Trust

Say NO to trud