The Perfect SOHO router - Part 2
read in
Това е втората част от серия от статии в които ще обясня как да създадем перфектният SOHO рутер. Държа да отбележа че това е моята идея за рутер със всичките и предимства и недостатъци.
Серията се състои от следните статии:
- Общи насоки, идеи, нужни услуги и размисли - тук ще се постарая аргументирано да обоснова защо съм избрал този комплект от софтуер и услуги
- Инсталация на базовата система - ще опиша методът по който ще инсталираме и минимизираме нашата система
- Конфигуриране на DNS и DHCP услугите - тук ще опиша обосновано конфигурациите които смятам за оптимални
- Конфигуриране на рутирането - като цяло тук е сърцето на нашият рутер. Ще предложа някои трикове за улесняване на живота, както и насоки към по-специфични задачи
- Конфигуриране на елементарна система за наблюдение и статистика
- Разширяване възможностите на нашият рутер - ще опиша някои дреболии които могат да направят живота ни много по лесен, удобен и приятен
В тази част ще инсталираме нашият рутер, ще изхвърлим абсолютно всичко излишно и инсталираме необходимият ни софтуер. Идеята зад целият процес е да минимизираме както използваното дисково пространство така и самата употреба на диска. По този начин също така ще намалим количеството използван софтуер което ще улесни нашата поддръжка.
Желязото
За този проект използваме следният хардуер
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









Здрасти,
12. June 2007 at 0:06много яко начинание, с каквото мога бих помогнал/допринесъл.
Понеже в първа част спомена, че всичко трябва да се премисли преди инсталацията поне аз лично смятам, че /var трябва да ти/ние е в отделен дял.
Вар при дебиан е малко хищен и труден за защита. Причините за това са следните:
1) там са периодичните листи и свалените пакети за обновление и логовете и т.н. което дефинира като минимално място около 1 Г … не е проблем нека да е така
2) в момента в който го отделя изпитвам страхотната нужда да му се сложат опции “noexec,nosuid” но ако ги сложим не можем да инсталираме дебиански пакети. Взимайте тези две забележки под внимание и със два скрипта в структурата на apt-get може да се реализира.
Ще го опиша малко по късно след като тествам как точно се държи
12. June 2007 at 9:351. За малка мрежа - до 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 :), харчи малко ток :), не заема място.
12. June 2007 at 11:12Относно dnsmasq - добра забележка, бях забравил за него. Ще го добавя като алтернатива.
Относно denyhosts и blocksshd - сега ще погледна да видя какви са възможностите и дали няма да е по удачен. Ако се оттърва от python … бих казал че ще е добре :)
За Lighttpd - все още не съм убеден. Приемаме ситуацията че spawn-ваме само 2 инстанции на php, всички ненужни модули на lighttpd са изключени и в скриптовете си почистваме достатъчно добре променливите, а да и не ползваме нищо странно/критично. В такъв случай остава само memory usage-a да сравним
lighttpd + php-cgi
apache + mod_php
Статистиката е взета от top на машини с 45 дни uptime
12. June 2007 at 15:13Бих казал че апача яде повече рам. Вярно предоставя доста повече възможности но не ги ползваме.
по-добре вградената ланка да е към вътрешната мрежа.
14. June 2007 at 11:43Нали си чувал “Когато гръм удари как суи4овете светят…”
Да речем че мрежата е свястно сглобена. Т.е. изцяло под земята, оптика до всеки блок, switch-а е в много добре изолирана кутия, на завет, сухо и т.н. и понеже сме умни сме си сложили гръморазрядна защита. В такъв случай е по удачно по стабилната, разбирай тази която пражи по малко проблеми, да е от външната страна.
14. June 2007 at 12:18Покажи ми тази квартална мрежа в София и с удоволствие ще си закажа лаптопа директно, но докато говорим за реалността а не за рая на сисадмините - вградената ланка навътре :)
14. June 2007 at 12:27и ще дам още 5 лева пове4е и ще си взема Realtec вместо Davicom :)
megalan
е оптиката не е до всеки блок ами на 2 - 4, мрежата е зарита под земята, външните кабели са не повече от 10 - 20 м и са прикожани към стената. В студентски град техните мрежи са дори още по-добри.
/офф: да не се караме за глупости. Напълно ясно ми е какви са последствията от закачането на вградена ланка на кофти кабел.
14. June 2007 at 12:42Здрасти пак,
за lighttpd, май си прав :), можеби единствения недостатък е, че спаунва сиджиайки, но здраве да е, едва ли рутъра
ще има сайт с 10000 посещения на ден :)
За blocksshd-то - пърл с 4-5 модулчета, определено по малко и по добро от питона за нещо толкова просто!
18. June 2007 at 13:48[...] Base install - i will describe the way our system will be installed and minimized [...]
11. September 2007 at 11:02