Reborn

And from the ashes the Phoenix rose reborn
  • Начало
  • About

The Perfect SOHO router – Part 2

Владимир | 12/06/2009

Това е втората част от серия от статии в които ще обясня как да създадем перфектният 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 sudo

В процеса на инсталация ще бъдат инсталирани допълнителни пакети от които зависи работата на желаните от нас.Последната задача която стои пред нас на този етап от инсталацията е да добавим собствен потребител със негов собствен 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

Коментари
Няма коментари »
Категории
Статии
Tags
bash, cd 3, Code, compaq deskpro, debian, deborphan, dhcp, firewall, installation, intel ether express, LAN, lang, management, mb hdd, ram 256, router, secure, simple, soho, ssh
RSS коментари RSS коментари
Trackback Trackback

The Perfect SOHO router – Part 1

Владимир | 12/06/2009

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

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

  • Общи насоки, идеи, нужни услуги и размисли – тук ще се постарая аргументирано да обоснова защо съм избрал този комплект от софтуер и услуги
  • Инсталация на базовата система – ще опиша методът по който ще инсталираме и минимизираме нашата система
  • Конфигуриране на DNS и DHCP услугите – тук ще опиша обосновано конфигурациите които смятам за оптимални
  • Конфигуриране на рутирането – като цяло тук е сърцето на нашият рутер. Ще предложа някои трикове за улесняване на живота, както и насоки към по-специфични задачи
  • Конфигуриране на елементарна система за наблюдение и статистика
  • Разширяване възможностите на нашият рутер – ще опиша някои дреболии които могат да направят живота ни много по лесен, удобен и приятен

Е да започваме с първата част.
Идеята
От известно време си мисля за тази серия от статии. Темата със SOHO рутерите е интересна от много гледни точки. От една страна това трябва да са евтини машини. От друга трябва да са достатъчно ефективни за да вършат работата. И може би последната гледна точка е че никъде няма описано подобно нещо. И вече наистина последно – просто ми е приятно да го напиша.

Нужни услуги
Тук трябва да се вложи най много мисъл. Трябва да се определи точно какви услуги ще се изпълняват на нашият рутер. Абсолютният минимум е рутиране/маскиране и SSH. Реално това е напълно достатъчно но и леко неудобно. Моят минимум е следният:

  • Рутиране/маскиране/НАТ – без него няма смисъл от рутер
  • SSH – за мениджмънт от конзола
  • Кеширащ DNS – за наша собствена фалшива зона, скорост и частична независимост от нашия доставчик
  • DHCP сървър който да ни настройва мрежата автоматично
  • Минималистична web базирана система за наблюдение, статистики и елементарни проверки

Като цяло това е един добър комплект услуги които предоставят удобство на работа и изискват минимална поддръжка. Лично аз предпочитам допълнително да имам следните допълнителни услуги:

  • Самба – за да укротя малко windows машините в мрежата. Предоставя MasterBrowser и WINS
  • NTP сървър – предоставя точно време
  • FTP сървър – за да мога отдалечено да си качвам дреболии

Размисли
Така вече сме избрали услугите, остана изборът на дистрибуция. Лично аз предпочитам дебиан и на него ще реализирам целият проект. Всеки е свободен да избере каквото иска, и най-вече това което му е удобно. Трябва от рано да се помисли за това как ще се проверява сигурността, кой ще има право на достъп до машината, дали ще се ползват квоти/ограничения във времето. Какъв тип маскиране ще се ползва и още дреболии. Повечето от тези въпроси изникват в процеса на работа, така че моля първо прочетете цялата серия и тогава започнете работа.

Общи насоки
Това не е елементарен проект. Предполага се че имате прилична представа какво точно се опитвате да постигнете. Всяка грешка допусната по време на инсталацията може наистина да ви ухапе след време. Така че мислете навреме и по няколко пъти.

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

Коментари
Няма коментари »
Категории
Статии
Tags
debian, dhcp, dns, firewall, router, secure, simple, soho, ssh, ssh ssh, web
RSS коментари RSS коментари
Trackback Trackback

A dead simple webserver in bash

Владимир | 12/06/2009

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

Защо
Ами по ред причини. Може да искате да имате много елементарни статистики, да речем натоварване на машината. Може да искате да паркирате някаква много елементарна страничка. Не искате да пускате пълнофункционален сървър и може би още тон причини.

Предпоставки
Ще предположим следното:

  • Този web сървър ще е статичен
  • Ще сервира една единствена страница/файл независимо какво иска клиента
  • Ще работи на порт 8080

Теория на операцията

  • Трябва ни нещо което да посрещне входящата заявка – в случая ще ползваме netcat който популярно е наричан “TCP/IP swiss army knife” заедно с един малък wrapper script.
  • Трябва по някакъв начин да разберем че е дошла заявка – в случая това изобщо не ни интересува. В момента в който дойде трафик на нашия порт значи някой праща заявка, като свърши трафика значи заявката е свършила и ще си сервираме нашият отговор.
  • Трябва да конструираме правилен отговор за да не объркаме клиента който ни пита за нещо.
  • След това си вмъкваме нашето съобщение/файлче.
  • И накрая разбира се терминираме сесията.

Реализация
Wrapper script-а който ще напишем за netcatима една единствена цел. Да стартира netcat след като той излезе, като слага известно забавяне. Забавянето е необходимо от гледна точка на предпазване от DoS атака. Не е ефективно но е елементарно. А и все пак се очаква че това нещо няма да работи на production машина.

/var/www/bashserver/netcat-server.sh

#!/bin/bash
#
# Simple wrapper for keeping nc alive as it exits after successfull request
# at least on debian it acts this way.
# Author: vvitkov
# ver: 0.1
# date: 18.07.2007
# licence: CC BY-SA 3.0

NC=$(which nc)
while [ ] ; do
$NC -l -p  8080 -e /var/www/bashserver/webserver.sh
sleep 1
done

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

  • -l – локален режим. Тоест nc ще работи като сървър.
  • -p – порта на който ще слуша.
  • -е – при връзка изпълни този скрипт и върни каквото върне той.

С това първата ни задачка по посрещането на трафика е изпълнена.

/var/www/bashserver/webserver.sh

#!/bin/bash
#
# Simple bash webserver. Nothing fancy
# Author: vvitkov
# ver: 0.1
# date: 18.07.2007
# licence: CC NC-BY-SA 3.0

# Our simple file which we will serve
FILE='/var/www/bashserver/message.txt'
# Construct propper headers
echo -e "HTTP/1.0 200 OK\r"
echo -e "Content-Type: `/usr/bin/file -bi \"$FILE\"`\r"
echo -e "\r"

# Now lets spit our data
cat "$FILE"

# And lets finish the transmission.
echo -e "\r"

Простичко нали. И което е по интересното върши добра работа.

Идеи за развиване
Модифициране на webserver.sh така че да приема параметър с който да се описва порта на който да слуша. Втори параметър който да указва кой файл точно да се изпълнява а не да е твърдо закодирано за webserver.sh. Евентуално дори трети параметър който да се предава към файла който изпълняваме и да указва кой файл да връщаме.
Модифициране на webserver.sh така че да бъде научен да разбира от заявките, а не просто да сервира един единствен файл.

Заключение
Този вебсървър е със много ограничено приложение и кажи речи пълна неизползваемост, но за определени цели върши работа.

Коментари
Няма коментари »
Категории
Статии
Tags
bash, debian, FILE, simple, sleep, swiss army knife, tcp ip, var, web web, webserver, wrapper script
RSS коментари RSS коментари
Trackback Trackback

Secure communication with Jabber and GnuPG

Владимир | 12/06/2009

Комуникацията е нещо важно. Не трябва да се подценява стойността на подслушаната информация въпреки че може да ви изглежда абсолютно безполезна. Особенно неприятно е да разбереш че само защото някой е подслушал невнимателното ти споменаване за любим плод и вече банковата ти сметка е опразнена. Мдаааа черногледо но напълно вероятно.
И така за да не ви се случват подобни работи в интернет пространството се препоръчва използване на криптиране. В днешната ни статия ще опишем как да защитите един от комуникационните канали а именно моменталната комуникация или както е известна IM. За огромно съжаление на някои потребители няма да се спрем на защитаването на всички възможни IM протоколи а само на един, а именно jabber

Използван Софтуер
Gajim
PSI
GnuPG

Идеята
Идеята е да криптираме съобщенията си посредством асиметрично криптиране (в главната роля GnuPG) и после да ги пускаме в Jabber мрежата. Използваните (тествани) клиенти са Gajim, PSI. За другите клиенти поровете из нета.

Изпълнението
Предполагаме че вече имате инсталирано всичко необходимо, т.е. jabber клиент който поддържа GnuPG и самото GnuPG.

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

Има различни инструменти но в случая ще използваме конзолното приложение gpg.

gpg --batch --gen-key params

Във файла params са описани параметрите за генериране на ключа. Повече информация за формата на файла може да се открие gen-key non-interactively

примерен файл

Key-Type:DSA
Key-Length:1024
Key-Usage:encrypt,sign
Passphrase:parola
Name-Real:test1
Name-Email:tes...@jabber.org
Name-Comment:jabber encryption
 
%commit

Вече си имаме ключ. Сега трябва да го закачим за нашият клиент.
Това става от настройките на акаунта ни

За PSI

psi-chose-key

За Gajim

gajim-chose-key

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

И последната стъпка която е необходима е на хората с които ще си чатим сигурно да присвоим публични ключове. Естествено необходимо е да се сдобием с тези ключове но както обяснихме е полезно те да са публикувани.
Операцията по присвояването на публичните ключове се извършва в менюто за конкретният контакт.

За PSI

psi-assign-key

За Gajim

gajim-assign-key

И накрая вече можем да започнем да си чатим сигурно. Единственото необходимо нещо е да включим криптирането посредством катинарчето в прозореца

За PSI

psi-secured-chat

За Gajim

gajim-secured-chat

Е това е всичко. Сега вече поне с някои хора може да си чатите сигурно.

Коментари
Няма коментари »
Категории
Статии
Tags
encryption, Gajim, gnupg, gpg, jabber, params, Psi, secure
RSS коментари RSS коментари
Trackback Trackback

Какво се случи тук сега

Владимир | 12/03/2009

Ако не сте забелязали този блог изглежда вече доста по различно от преди. Най-малкото някак си няма никакво съдържание останало. Да прави сте така е. Изби ме желание да започна наново да го пиша.

Статиите заради които най-вероятно сте дошли ще се появят малко по късно, след като реша точно какво да ги правя :)

Коментари
Няма коментари »
Категории
Разни
Tags
lqlqlq, new, reborn
RSS коментари RSS коментари
Trackback Trackback

Next Entries »

Разни Лични

  • БирБлог
  • На море
  • Шумилницата

Blogroll

  • Summerborn

Етикети

bash Code debian dhcp dhcpd dns dnsmasq encryption firewall fun gnupg installation iproute iptables jabber linux lqlqlq management memdisk mrtg n900 netboot new nokia Norton ntp pcsuite php ping port reborn router routing rsync secure shaper simple soho squid ssh tftp web webserver Конкурс сигурност
rss RSS коментари valid xhtml 1.1 get firefox