От няколко дни правя firewall за офиса ми, защото досега ползвах маскарадинг на ip-тата а трябва да прекарвам всичко през SNAT, абе объркана истояи 😆 Просто трябваше да пренапиша цялата рутерска логика. Както обичам да казвам речено сторено, написах го firewall-a всичко хубаво работи сега додие време да изрязвам портове ip-та кои да има достъп и кои не. Стана ми лошо като си дадох сметка че трябва да напиша около 40 правила за достъп, то само копи и песит пак не си е хава. Тогава програмиста в мен проговори ами наприво само да ги прави. Всичко беше ясно – идеята в 2 отделни фаила пиша портове и ip-та изчитат се създават се правила за разрешаване и всичко друго е изрязано. Самия код се получи доста „тънък“ чак неочаквано малък

##Allow and DROP ip and ports
while read PORT
do
while read IP
do
$IPT -A INPUT -p tcp -s $IP --dport $PORT -j ACCEPT
done < /etc/firewall/allow_ip
$IPT -A INPUT -p tcp --dport $PORT -j DROP
done < /etc/firewall/ports

Скриптчето е адски ясно цикъл в цикъла първия чете от /etc/firewall/ports a втория от /etc/firewall/allow_ip и се създават правилта 🙂

ps Заради синктактичното оцветяване не се показва корекно знака < а се показва html еквивалента му &lt;

Както знаете от доста време едни dreambox-ове ми вгорчават живота 🙂 Понякога забива CAM модула без видима причина и се налага рестарта му или понякога дори на целия приемник. Общо взето приемниците имат добър уеб интерфеис за оправление и всичко се прави лесно през него, НО (голямо но) е възможно да го позлвам само когато съм в офиса защото съм ги скрил зад рутера там. Като цяло единствения вариант за контрол оставаше да се ssh-на към рутиращата машина и след това към приемниците с telnet. Обаче наскоро разбрах че приемниците могат да приемат команди от външни скриптове рефлектиращи върху cgi-bin директорията. Примерно/cgi-bin/admin?command=reboot ще рестартира приемника. Супер нали 😉 Като цяло надращих набързо едно php с което да изпълнявам команди по приемниците, НО имах още един приблем – автентификацията. През уеб иска потребителско име и парола – нормално нещо но щеше да отнеме доста писане ако не ми бяха дали идеята да пробвам по стария начин за оторизация с подаване на информация в url http://root:dreambox@dreambox/cgi-bin/admin?command=reboot и сработи 🙂 от тук нататък нещата са ясни 🙂

function exe_command($dreambox,$command){
 $result = @fsockopen("$dreambox", 80 , $errno, $errstr, 4); //check if dreambox is accessble ovear lan
 if($result) {
 echo "Command executed for $dreambox";
 @fopen("http://root:dreambox@$dreambox$command","r");
 do_form($dreambox);
 }else{
 echo "Bad no access to $dreambox";
 do_form($dreambox);
 }
 }

Това ми е основната фукнция в контрол панела другото са валидизациия на променливи и хтмл генератори.

ps Ето го и почти пълен списък с командите които подържа приемника 🙂 Също така може да се имитират и натискания на бутони пак с подобни команди 🙂 ако някои е заинтересован да свирка

Днес сменях фирмуаяра на един Linksys WRT54Gs v7 🙂 Като цяло модела е супер с едно изключение трябва да му се пренапише boot firmware-то Сиреч 😉 да се изтрият всички области на ром чипа и да се напишат наново от стартиращите процеси до самия фирмуаяр а не както при обикновеното флашване да се пренапише само конкретната област с фирмуаяр. Ако не осъзнавате каква е опасноста нека да го кажа така ако се прецака софтуера които които обслюва рутера ви винаги има втори кото се грижи за основните буутващи процеси и спасението е лесно 😉 В случая аз пипах по това което ми осигуряваше защиатта ахахха ако мигне тока или нещо такова чао чао рутерче или пък не съвсем 😉 Ако всичко е омаже и няма накъде има едно краино спасение отваря се рутера и се флашва с jTag кабелче. Е за мое щастие не ми се наложи да мина през ада 😉 следвах доста конкретно инструкциите и немах проблемче. Като цялосъвета ми е ако си купувате от GS серията не го правете поради 2 основни прични ромчето им е малко и побира само окастерените версии на dd-wrt не че е голяма загубаа ама аз съм маниак и ако евентуално ви се свиждат 20-30 кинта за GL серията изберете си рутер ревизия 1-4 защото те немат нужда от пренаписвнане на буут-а. Ако все пак имате WRT54GS версия >4 по добре помолете прител дето не го е страх да пипа здраво и смело по рутера 😉 и задължително да си носи jTag кабелче че не се знае какво може да се случи 😈

Сега да ви почерпя едно весело парче от един още по весел фимл „The New Guy

http://www.youtube.com/watch?v=rZVKl7dkdfw

Купих си рутерче (краино време беше) модела е Linksys WRT54G v2. Донякаде модела е ветеран но това не е проблем 🙂 по важното е че подържа линукски firmware. Флашването с dd-wrt стана на 15-тата минута след като беше в ръцете ми 😈 Като цяло флашването става без проблеми през уеб интерфеиса (както на повечето linksys-и) Просто нямаше как да оставя рутера да седи с бъгавия фирмен софтуер абсолютен срам за Cisco според мен 😉 След това си поиграх малко с настроиките и понабримчих обхавата на машинарита и се държи адски стабилно. Ако тая вечер не и чоплех рутаците и ако не бях сбозил хавата с един скрит още щехе да в ъптаим беше жива 2 дни без да има нужда от рестарт 🙂 не е кои знае какво постижени сега ще видя колко ще издържи. Отделно се порових в нета видях някви адски модове по самия рутер от рода на присаждане MMC/CD мемори карта и разни други таквиа които мисля да изпробвам 😉

ps. Купих си и палатка 🙂 Моя собствена палатка. Надявам се скоро да я изтествам 🙂