Archive for December, 2014

2014-12-30 31C3 ден 4

Tuesday, December 30th, 2014

И последен ден на 31C3.

Започнах с лекцията за online гласуването в Норвегия – имаше реализирана система на база на ел-Гамал (където има интересната възможност да се събират криптирани числа, без да се виждат), по принцип “стандартът” по темата е горе-долу този (не помня url-тата по въпроса). Докато тествали открили няколко бъга, но като цяло защитата в дълбочина ги спряла. Отказали са се от системата, понеже не давала нищо повече – не се увеличил броя гласуващи и като цяло гласувалите по internet не били различни от тези, които гласували на място.

“Why are computers so @#!*, and what can we do about it?” беше сравнително скучно (някъде по средата излязох да ям и го слушах през gsm-а), поредното нещо по темата как трябва да си правим кода доказуем и да ползваме технологиите за целта.

Във “State of the onion” имаше разни интересни неща, които съм си отбелязал – ooniprobe (мислех да взема една хардуерна проба, но вероятно просто софтуерното нещо ще е достатъчно), направили са TOR weekly news, и Roger е разказвал на NSA около 2008ма колко е готин TOR и във Washington post има статия по въпроса (след като едно от leak-натите неща от Snowden са били бележките на хората от NSA от тая среща).

Infrastructure review беше доста интересно, setup-ът им става все по-голям всяка година и все по-интересен, чак ми идва желание да се включа в някой екип. Гледайте го за повече подробности.

TOR deanonimization talk-а разказа как са изброили доколкото е възможно hidden service-ите в мрежата и какво горе-долу има на тях. Също така обясниха как с pattern-а на трафика, ако човек има достъп до guard node на потребителя и има достатъчно места, на които да следи изходящия трафик, има някакъв вариант да се види къде отива, както и ако имат някакъв такъв достъп до guard node на hidden service. Като цяло нищо ново, и за съжаление нямаше хубаво описание на ловенето на traffic pattern-и.

Не останах да гледам закриването, него и още няколко неща ще си ги гледам на запис като ми остане време. Имам да хващам полет в ранната сутрин и трябва да стана в 5, та ще се спи…

2014-12-23 31C3 ден 3

Tuesday, December 30th, 2014

(това го пиша в доста насмукано състояние, да се приема за оправдание за грешките)

Сутринта започна с лекция за full-body scanners, т.е. скенерите, които от известно време се ползват на американските летища и разни други места за разглеждане на пътниците. Хората бяха разгледали един от скенерите (Rapiscan Secure 1000), който работи с backscatter рентгенови лъчи. Нещата, които разказаха са, че:
– скенерът не генерира достатъчно радиация, за да е опасен (нивата са съвсем мижави), и като цяло не е лесно да е пипне така, че да е опасен;
– има начин да се подслушва донякъде образа, който вади, извън самия скенер (почти като подслушването на нечий монитор, като се знаят периодите на хоризонтално и вертикално сканиране и като може да се уловят отдалече разсеяните лъчи);
– оригиналният софтуер може да записва картинки (на ДИСКЕТА), твърди се, че тоя на TSA нямал тая функционалност;
– има вариант да се атакува машината, т.е. да се пренесе през нея нещо, което трябва да хване, по няколко начина (например като се направи да е само спрямо фона и да не се различава от него, или като се нанесе по тялото и да не се отличава от него, в случая с пластичния експлозив).
Този тип машини в момента не се ползват от TSA, понеже са искали да се отърват от гледането на “голи” хора, и софтуера да казва “еди-къде-си по човека има съмнителен обект”, а още никой не е успял да го напише (и звучи като доста безнадеждна задача).
Имаше и други забавни моменти, например как са си купили машината от ebay и се опитват да се снабдят с машина от другия вид (ако не се лъжа, с милиметрови вълни), за да изследват и нея.

Let’s build a quantum computer не беше лошо, в общи линии беше някакъв малък увод (непълен) в квантовите компютри и как човекът за две години като дипломна работа е сглобил 2-qubit-ов компютър, който работи при около 10-13 градуса по Келвин.

Между останалите лекции се засякох с Филип Пепс (от FOSDEM) и си говорехме с него и още някой по темата за техните видео записи и мрежата им, и как може да им потрябват hack-ове от типа на опъването-на-кабели-като-за-български-internet (лепена оптика с duct tape по стените, например). Има шанс да ходя до там да се забавлявам догодина…

Лекцията за NORX/Caesar беше за един конкурс за authenticated encryption, шифър с метод за прилагане. Представиха конкурса и техния участник (който изглежда интересен, но е цял шифър с метода и бая ме притеснява), направен със съвсем прости операции и като цяло доста по-прост от доста блокови шифри, които съм виждал.
Странно ми беше, че конкурса е за метод за прилагане И шифър, т.е. не просто за за метода (като нещо, което да замести GCM/CBC и компания), та за това голяма част от участниците просто ползват AES.

Лекцията за ядрените оръжия беше леко забавно, но в нея нямаше нищо, което го няма в wikipedia.

Докато си почивах, се запознах с човека от totalism.net, в общи линии hackerspace на един остров не-съвсем-в-нищото, където има net, топло е и човек може да си работи и почива спокойно, като даже не излиза особено скъпо. Bandwidth-а им не е много, но ако някой ден реша да ходя на “почивка”, може да е там…

Последва стандартния whisky workshop, на който се насмуках прилично. Харесах си сериозно само едно уиски, някакъв странен edition на glenfarcas, дето беше cask strength, 60 градуса и с истински вкус/
аромат.

Гледах лекцията за Computer science in DPRK (т.е. по темата Северна Корея), имаше интересни моменти – как имат клон на OSX с превод (почти на принципа, на който нашите хора едно време крадяха и превеждаха софтуер директно в binary-тата), как имат таблет с аналогова телевизия, клон на andoid с patch-нати app-ове (и добавени, като например един с речи на лидерите им). Като цяло доста полезна гледна точка (лекторът беше водил лекции там в един от университетите).

А лекцията за exploit-ването в perl беше адски забавна, как явно самите хора, които ползват perl не схващат някои негови кривотии и как самият език не се държи по очаквания начин (т.е. как реално погледнато някои неща в него се държат като в shell script, а не като в LISP) и какви адски забавни атаки могат да се получат (например, да се пробута аргумент който като се предаде на функция, да се приеме като два аргумента и да избута тия след него). Аз лично се смях с глас…

2014-12-28 31C3 ден 2

Monday, December 29th, 2014

Втори ден на CCC. Сутринта беше тихо, само в irc се обсъждаше миризмата на крака и какво може да се направи по въпроса.

Започнах с tea with RIPE, говорихме си малко за RIPE Atlas пробите и пихме чай, ама аз някъде по средата трябваше да бягам за друга лекция (това със слушането на лекциите през локалната gsm мрежа е страхотно, може да се слуша лекцията, докато вървиш към нея (и закъсняваш)).

Първата, на която ходих беше “Why is GPG unusable”, която беше сравнително бедна от страна на съдържание, имаше базови идеи, къде да четем и т.н. и как проблемите в gpg/pgp са същите от около 15 години и нищо не е направено по тях. Имаше нещо интересно – книгата “Evil by design”, която мисля да погледна.
(полезни отбелязани бележки: трябва да се тества с потребителите, cryptocat се ползва, щото е готин, identities в момента (като pgp fingerprint-а) не са особено използваеми, щото не могат да се помнят).

Telecoms & NSA лекцията беше основно историческа, като някаква част от нещата съм ги чел в “The codebreakers” (как още от първата световна война тогавашния еквивалент на NSA е събирал копия на всички телеграми), лекторът е работил в NSA и е писал малко книги по темата, като интересното сега беше една статия в the intercept, както и документ за разследването на щатското министерство на правосъдието на NSA (в което NSA се описва като криминална организация и трябва да се зачете по-подробно).

Лекцията за internet-базираното гласуване в Естония беше също доста интересна. Атаките, които те описваха бяха основно на оперативно ниво (клиенти, как можем да се доберем до инсталацията на сървъра и т.н.), т.е. самата система изглежда работеща. Спрямо post-а ми по темата имат частично решение на първия проблем – всеки може да подаде колкото си иска гласа и се зачита последния, така че човек може да гласува пред някой, да си вземе парите и после да гласува както си иска. Системата им дава QR код, който важи 30 минути след гласуването, чрез който (криптографски сигурно) може да се провери дали системата е отчела вярно за кого си гласувал.
Имаше доста интересно описание как са атакували и счупили системата за гласуване във Вашингтон, през някакъв нормален shell injection.
Като цяло освен нещата, които аз бях отбелязал съществува проблема, че реално нищо в хардуера и софтуера ни не е достатъчно сигурно, че да му вярваме. Също така, поне с това, което знаем/можем в момента, моментът с купуването на гласове/принуждаване не може да бъде избегнат и е някакъв tradeoff за всяко отдалечено гласуване.

Finding the Weak Crypto Needle in a Byte Haystack обясни метод, чрез който при криптоанализ може да се търси повторение на keystream в поток от данни. Схемата е доста проста и с квадратична сложност (което при криптографията е нищо работа) и изглежда съвсем тривиално за реализация.

Information Control and Strategic Violence не струваше, лекцията беше да ни кажат, че в Сирия има корелация между насочеността на убийствата и работещия internet (т.е. колкото повече работи internet-а, толкова повече убитите са жертви на насочено насилие, т.е. прибрани, измъчвани и разстреляни).

(Пропих кафе, очаквах това да стане чак на третия ден)

Privacy and Consumer Markets беше лекция как/защо да търсим/правим механизми за обръщане на стандартния модел – вместо да ни набиват реклами, чрез които да избираме какво искаме, да правим “задания” какво ни трябва и да можем да намираме лесно това, което ни трябва, чрез reverse auction и подобни системи. Също така имаше идеята да се комбинират достатъчно хора, за да имат нужния buying power, за да им се обръща внимание (нещо което е доста близо до kickstarter-ската идея). Беше кратък обзор на нещата, но като цяло с добри идеи.

(тези две лекции бяха по 20-30 минути, и това изглежда като много лоша идея, понеже почти нямаха съдържание, толкова кратките май не трябва да ги има в програмата)

Някъде по това време изскочи тоя tweet, с който май съм бая съгласен:
(18,46,24) marlabot: (notice) wikileaks: Politics at this year’s CCC is conspicuously provincial and stupid. No-one from BRICS. No Ukraine. No Bitcoin. Endless security mercenaries.

Mining for Bugs with Graph Database Queries беше страхотна лекция – публикували са инструмент, който се казва Joern, който може да търси интересни pattern-и върху един граф, наречен от тях code property graph, който е комбинация от AST дървото и няколко други графа, които компилатора прави по време на компилация. Идеята е, че знаем как изглежда тип vulnerability (единия от примерите – malloc() и memcpy(), където изразът за дължината на първото е различен от тоя на второто и работят със същия буфер), можем лесно да намерим всичките срещания на pattern-а му и после да ги прегледаме. По принцип е инструмент за хора, които audit-ват код, но с внимателно писане на тестовете може да се използва и за regression testing, инструменти за автоматичен audit, разпознаване на бъгове чрез pattern recognition и т.н.

Но ако трябваше да отбележа само една лекция от деня, щеше да е тази на Jacob Appelbaum и Laura Poitras, “Reconstructing narratives”. Заглавието не звучеше особено интересно и гледах “Mining for bugs”, та после гледах записа на тази, и понеже още не съм я обмислил, ето по-важните неща:
Лекцията беше за неща, които в същия момент бяха публикувани в Der Spiegel, подробности за програмата за targeted killing на ЦРУ, и данни от NSA за счупена криптография.
От всичките неща само за две е ясно, че не са счупени (GPG и OTR);
(т.е. има накакви данни за чупене на SSH, SSL, IPSec, PPTP (последното никой не учудва))
NSA имат някакви неизвестни за останалите атаки в/у AES;
Като цяло сме още по-кофти преебани;
Трябват ни големи ключове и добри криптосистеми, защото май само това върши работа;
(трябва да си отделя някакво време да прегледам оригиналните документи и да си изградя някаква картина, но преди това искам да поспя и се надявам да нямам кошмари как ми декриптират ssh сесиите)

(in other news, тук вали сняг (и ако вали в сряда сутринта, има приличен шанс да си изтърва втория полет и да карам нова година във Франкфурт), а като се прибирам температурите в София ще са под -10. Искам си локалното затопляне и времето от миналата година.)

2014-12-27 31C3 ден 1

Sunday, December 28th, 2014

Имам около 60 реда бележки само от днес, да видим в колко голям post ще ги претворя.
(гривната за конференцията е бая гадна, сънувах, че комари ми ръфат китката)

(Видях се с Denisa Kera, която ни гостува преди време в initlab, и тя ми спомена за интересен проект, crowdfunding за някой разследващ човек, да дебне политици и да събира за тях какво правят, това е линка, който ми прати. Звучи като забавна идея, за другата подобна, която имах (crowdfunding за лобиране) ме разубедиха)

Сутринта към 9-10 беше учудващо празно, ама това доста бързо се промени. Мисля, че спокойно има едни 7-8 хиляди човека (може би и 10), за доста лекции залите се пълнят, а зала 1 събира 3000 човека…

(докато чаках да почне откриването забелязах доста wifi мрежи, които се казваха “Not fuzzing with your wifi” от 1 до 20)

Откриването беше твърде оптимистично и прилична част от него беше wishful thinking – “it’s not the shady intelligence agencies with big budges ruling the internet, but us” и подобни, но като цяло нямаше нещо глупаво, и започнаха с “welcome to the largest hacker conference in the free world”, което зарадва всички.
Споменаха си менторската програма, да се помага на хора/деца, дошли за пръв път на конгреса, има бегъл шанс да се навия за година, ако идвам (т.е. ако ще мога да издържа пак тия тълпи).

Keynote беше трагедия. В началото си бях отбелязал, че е нищо особено, но в общи линии се оказа директно зле – Alec Emprire ot Atari Teenage Riot чете нещо от някакви листи, пуска клипове с не-особено-кадърна-музика и като цяло говори за твърде известни и ясни неща. Може би единственото интересно беше разказа му как Spotify тръгнали да им ban-ват един албум (и с него всичкото от label-а, в който са), щото нещо се говорело вътре за нацисти, те им обяснили подробно, че са най-антинацистката група, която може да има (заедно със статии от вестници и т.н.) и им отговорили “nazi or anti-nazi – doesn’t matter”…

Ходих след това на лекцията за леенето на алуминий чрез ползване на микровълнова фурна – като цяло изглежда доста интересно, трябва да се преточи презентацията и да се разгледа по-подробно. Не знам дали ще намерим приложение (на тия хора им трябва, понеже се занимават да си правят части за коли) и изглежда бая опасно (твърдението е, че това се прави винаги навън, щото течния алуминий се отразявал доста зле на пода), но май е забавно.

Reproducible builds лекцията беше също доста интересна, имаше обяснения кои проекти докъде са (оказва се, че прилична част от debian вече е с такива build-ове), както и са работили по въпроса за android, мисля, че това все повече ще намира приложение, особено при всякакви crypto-свързани неща.
(трябва да дам на pcloud-ци да видят какво може да се приложи)

(Като човек гледа мястото, може да си помисли, че е на някой woodstock, пълно е със странни хора. Всъщност, странни даже не започва да ги описва…)

Лекцията за EMV беше донякъде rehash на стари атаки, с подобрения и в общи линии как се появяват по-добри и ефективни skimmer-и. Накратко, можеш да се добереш до pin-а на карта само със skimmer (тук имаше малко нов research), или можеш да правиш транзакции с карта, на която не знаеш pin-а. Лекторът беше от фирма, която се занимава да помага на хора да се разберат с банката, ако не признае някоя измама и не им върне парите, както с audit на различни такива системи.

Лекцията за SS7 беше… полезна. Накратко – все едно сме в internet-а от 70та година, всеки може да си пише с всеки без auth и да подава какви ли не съобщения. Целия research тръгнал от фирми, които могат да локализират по телефонен номер къде точно се намира, от това изскочили какви ли не весели работи:
Може да се пита в коя клетка е телефона (което е прилично локализиране);
Може да се пита за gsm координати на телефона (което уж е само за полицията, но поради глупост в протокола можеш да си spoof-неш from-а и да получиш данните);
Можеш да подадеш в нечий HLR-а къде се намира някой (без auth);
Можеш да изпълняваш USSD кодове (*xxxx#) за нечий телефон (от които може да правиш forwarding и какво ли не още), и т.н. прекрасни неща.
Имаше и демонстрации (например как могат да видят баланса на чужда prepaid карта).
Най-тъжното беше в последните няколко слайда, как реално потребителите могат или да си хвърлят телефона, или да мрънкат на оператора, щото за това няма нищо, което може да се направи в endpoint-а.
Talk-ът на Karsten Nohl след това продължи темата с няколко нови атаки, най-вече в/у 3G с малко помощ от SS7, както и с някои интересни наблюдения как в момента всички ползват 64бита ключове за A5/3, и никой не ползва пълните 128бита, понеже няма никъде подходящи sim карти.
Като цяло, тия две лекции трябва да се гледат. Във втората казаха, че са update-нали вече gsmmap с нова информация, както и че са пуснали android приложение за телефони с определен baseband, което може да дебне за част от атаките.
(приложението е под GPL)
(лекцията на Karsten я слушах/гледах на лаптопа, докато се редях на опашката за тениски, която се виеше през цялото фоайе на CCH като странна змия. Да живеят streaming-а, пускането на лекциите през локалния gsm и доста издръжливата wireless мрежа).

Code pointer security също беше полезно, като цяло идеята е, че пазят само указателите, които сочат към код, което прави възможно да утрепеш приложението, но не и да го exploit-неш по някакъв начин (директно счупват return-oriented programming-а). Overhead-а им е до около 10% и като цяло изглежда много използваемо.

Деня приключих с ECC Hacks, лекция на DJB и Tanja Lange, в която обясняваха как работят елиптичните криви. Беше много добре, мисля, че сега имам доста по-добра идея как работят и мисля, че трудно може да се направи по-добро обяснение от това.

2014-12-26 31c3 ден 0

Friday, December 26th, 2014

Нулев ден на 31C3.

Станах си нормално в 9-10, добрах се спокойно до летището, летях (и в двата полета) с пищящи деца и се чудех защо изобщо хората се размножават, след което на Мюнхен за 30 минути се изсипа едно весело количество сняг и полета ми го забавиха с час и половина (който иска, може да гледа снимки).

(В Хамбург още не вали)

Изсипах си нещата в хотела и се добрах до CCH, откъдето пиша това. Отворили са още повече място от миналата година, ние имаме една малка маса, дето се надяваме да ни събере (assembly-то ни се казва Eastern-European Hackerspaces и сме набутани в “international” частта, малко като зоопарк за странни видове (което тук нищо не значи, “странно” е най-простото определение за почти всичко)).

Намерихме се с всякакви хора (македонци, сърби, хора минавали през initlab и кой ли не още), като на всички им е лудница. Аз съм си направил приблизителна програма, според която трябва да съм на няколко места едновременно, да видим как ще успея.

Утре се почва в 11:00, да видим колко човека ще побере голямата зала и колко ще оцелее wireless-а…

(моята предварителна програма:

27.12
11:00 saal1 opening/keynote
12:45 saalG aluminum casting
14:00 saal1 scada | saalG reproducible bulids | saal6 textile
16:00 saal1 emv
17:10 saal1 SS7
18:30 saal1 mobile self-defense
20:30 saalG code pointer integrity
21:45 saal1 ecchacks | saalG cloud consp | saal6 banking
23:00 saal2 rocket kitten
24:00 saal1 citizenfour
00:00 Hall13 ripe atlas workshop

28.12
11:00 hall13 ripe morning tea
11:30 saalG gpg
12:45 saal1 PNR | saal2 telecoms/nsa
13:00 hallC tor operators meetup
14:00 saal1 estonia voing
16:00 sall6 automobiles
16:45 saalG crypto needle
17:15 DIYISP anycast vpn
17:30 saal1 information control
18:15 saal2 privacy and markets
19:00 saal6 blow stuff with your brain
20:30 saal1 reconstructing narratives | saalG bug hunting
21:45 saal1 fernvale | saal2 field station
23:00 saal2 sources

29.12
11:00 hall13 ripe morning tea
11:30 saal1 RMS | saalG scanner
12:45 saal2 quantum computer
14:00 saal6 file formats
16:00 Saal2 emet | saalG caesar and norx
17:15 saal2 nuclear weapons
18:30 saal2 maker movement
19:30-21:30 hallB whisky workshop
20:30 saal6 agri-tech
21:15 saal2 cs in DPRK
22:00 saal1 perl expoloit
22:45 saal2 megacode
22:30 saal1 infocalypse

30.12
11:00 hall13 ripe morning tea
11:30 saal6 internet voting in norway
12:45 saal1 why computers are bad and what to do
14:00 saal1 state of the onion | saal6 lets encrypt
16:00 saal2 crypto dust | saalG infrastructure review
17:15 saal2 tor hidden svc
18:30 saal1 closing event
)

2014-12-24 равносметка

Wednesday, December 24th, 2014

Гледайки плановете от началото на годината:

С четенето на сериозни книги като гледам съм се справил, въпреки че ми пак ми висят някакви неща, дето са бая интересни и важни и не намирам време за тях (статистиката в goodreads);
Ходих на Балканския компютърен конгрес (даже говорих);
Почнах да поспивам чак като напуснах работа в края на декември (горе-долу);
Свирих… пак твърде малко, въпреки че поне вече си организираме дрънчане в лаба;
Техническите лекции тая година ми бяха свързани с работата – криптография, сигурност, web услуги, може да се каже, че все пак съм наблегнал на техническите;
Изобщо не съм писал сериозно в блога.

Иначе, като цяло:

Годината мина в конференции и работа. Поне по списък съм направил 5 лекции по всякакви теми, и май си бяха много, а конференциите са около 10, плюс още едно-две събития:
Два пъти RailsGirls София (екип)
Ro[ug]e conf 2014 (екип, лектор)
RIPE-SEE-3 (лектор)
HackFMI 3 (жури)
PlovdivConf (екип)
BurgasConf (лектор)
VarnaConf (екип)
CryptoBG конферецията (посетител)
YAPC-Europe (екип)
EuroBSDCon (екип)
Balccon (лектор)
Openfest (екип)
(след няколко дни) 31C3 (посетител)
Това по никакъв начин не е нормално.

Като гледам, едвам съм писал в блога.

Напуснах работа в края на ноември и още си почивам, като още нямам конкретен план. В списъка ми е да реша и дали да оставам в България (не че има голям шанс да се махна, твърде закостенял съм, както казват някои хора) и да видя с какво точно ми се занимава (най-вече с мрежи и/или дебъгване).

От ходенето в офиса тотално изгубих желанието да се виждам с повече хора и се надявам 1) да успея да си върна поне някаква част от него, 2) да оцелея на 31c3.

Заех се сериозно да редактирам Reverse engineering for beginners, харесва ми, и има поне още два месеца работа там.

Пренесохме initlab на по-голямо и хубаво място, в малко странен квартал.

Не направих не-курса за системни администратори поради липса на време, но пък имам идея за BGP workshop.

Продължава да не ме боли главата.

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

2014-12-23 гласуване по Internet

Tuesday, December 23rd, 2014

На разни места още се среща идеята, че трябва да направим възможност за гласуване по internet (не говоря просто за електронно гласуване, с машини вместо бюлетини, което си има отделен набор проблеми).

От чисто теоретична страна има няколко нерешими проблема:

Купуването на гласове става още по-лесно. Ако хората могат да гласуват отдалечено, нищо не пречи на купуващите гласове да си setup-нат едно място за гласуване, където да се изреждат платените хора и да си подават гласовете. За такова нещо защити няма и няма как да има (това със следенето колко се гласува от един IP адрес е тривиално за прескачане, през tor или произволен ботнет). Не казвам, че в момента не е възможно (практиката показва обратното), но с internet-базираното гласуване нещата стават тривиални.

Става много трудно да се гарантира тайната на гласуването. Има две действия в системата – идентификация и подаване на глас, и е твърде лесно да се остави каквото и да е дребно нещо, през което да може да се свърже конкретен човек с конкретен глас. В съществуващата система нещата са достатъчно добре подредени и разделени, че по принцип да може крайния потребител (гласуващия) да види какво се случва и да е по-трудно да се реализира система за следене кой как гласува (и по-лесно за хващане). Аз лично не мога да измисля как в електронна система нещата могат да се разделят достатъчно добре и достатъчно добре доказано, че да е приемливо.
(изобщо няма да коментирам колко зле са ни крайните работни станции и дали няма да проима троянски коне, които да следят тия неща)

Другите проблеми – как се идентифицираш, кой ще пише софтуера, с какво приложение ще се гласува, колко/как ще се тества, дали/как ще се пусне кода – са в общи линии решими, но горните два при съществуващите технологии не виждам как ще се оправят. Аз поне досега колкото решения съм мислил или чувал, все съм намирал как ще се строшат, или в няколко странни случая решенията са твърде сложни за нормални хора (донякъде дори и за мен бяха).

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

2014-12-18 Internet свързаността на initlab

Thursday, December 18th, 2014

(алтернативното заглавие беше “мизерии, които правим като нямаме BGP”)

След доста мъки с onlinedirect в initlab си пуснахме втора връзка, през TBC.bg. За да можем да ползваме и двете, се наложи малко бърникане по setup-а и забавни неща, които съм описал по-долу, разделени на v4 и v6.

Преди всичко може да погледнете схемата на мрежата.

За IPv4 имаше два проблема: трафикът, влизащ от един доставчик трябва да излиза пак през него (нормален policy routing), и трябва по някакъв начин да се избира през кой интерфейс да се излиза (чрез gwping).

Policy routing-а е стандартен, описан е на хиляда места и за това без много подробности, идеята е че се прави routing таблица за всеки доставчик, в нея се вкарват пътя до самия доставчик, default през него и пътищата към локалните вътрешни мрежи, след което се слагат правила, че ip адреса от тоя доставчик изходящия трафик ползва определената таблица. Или, погледнато на cassie:

vasil@cassie:~$ cat /etc/iproute2/rt_tables|grep -v #
255     local
254     main
253     default
0       unspec

2       od
3       tbc

vasil@cassie:~$ ip r show table od
default via 93.152.128.1 dev eth0.5
93.152.128.0/17 dev eth0.5  scope link
172.31.190.0/24 dev eth0.2  scope link

vasil@cassie:~$ ip r show table tbc
default via 94.26.100.129 dev eth0.6
94.26.100.128/27 dev eth0.6  scope link
172.31.190.0/24 dev eth0.2  scope link

vasil@cassie:~$ ip rule
0:      from all lookup local
32764:  from 94.26.100.155 iif lo lookup tbc
32765:  from 93.152.143.66 iif lo lookup od
32766:  from all lookup main
32767:  from all lookup default

За изходящия трафик проблемът се решава чрез gwping (който намерих от тук и ми спести час-два писане на нещо такова). Това е прост скрипт, който ping-ва през двете връзки нещо определено (например google) и ако през едната го няма, я маха от routing-а, а иначе държи два default route-а с различна тежест, т.е.

vasil@cassie:~$ ip r
default
        nexthop via 93.152.128.1  dev eth0.5 weight 1
        nexthop via 94.26.100.129  dev eth0.6 weight 2
...

(докато чертаех схемата, едната връзка падна за малко и като гледам никой не го е усетил)

За IPv6 нещата се оказаха малко по-сложни (но по-изчистени), понеже свързаността ни идва от един тунел до моя машина в telepoint (бяхме на HE.net, ама ни омръзна да ни се отваря немския google). От там имаме една наша /64, която се появява във вътрешната мрежа на лаба. За да мога да прекарам тунела да работи и през двете връзки, просто пуснах два отделни тунела от cassie до tyler през двата доставчика, след което в/у тях пуснах с quagga OSPFv3. В него от страната на cassie announce-вам префикса на локалната мрежа, от другата страна – default route. В общи линии в конфигурацията имам следните неща:

cassie (тук вътрешния ми интерфейс е eth0.2):

interface vk-ipv6-od
 ipv6 ospf6 priority 0
!
interface vk-ipv6-tbc
 ipv6 ospf6 priority 0
!
router ospf6
 router-id 255.1.1.1
 redistribute connected route-map internal
 interface vk-ipv6-od area 0.0.0.0
 interface vk-ipv6-tbc area 0.0.0.0
!
route-map internal permit 10
 match interface eth0.2
!
route-map internal deny 20

tyler (тук външния ми интерфейс за IPv6 е eth1, а правя redistribute kernel, понеже default route се вижда като такъв):

interface lab-ipv6-od
 ipv6 ospf6 priority 0
!
interface lab-ipv6-tbc
 ipv6 ospf6 priority 0
!
router ospf6
 router-id 255.1.1.2
 redistribute kernel route-map external
 redistribute connected route-map external
 interface lab-ipv6-od area 0.0.0.0
 interface lab-ipv6-tbc area 0.0.0.0
!
route-map external permit 10
 match interface eth1
!
route-map external deny 20

Учудващо, но работи и даже не успях да си отрежа клона, докато го подкарвах. Има няколко дребни момента, например че OSPFv3 няма auth. на пакетите (или поне го няма реализиран в quagga) и ще му трябва ipsec в един момент, или че може да е по-интересно да вземем от двата доставчика IPv6 адреси, да ги раздаваме на потребителите и те да избират от кой да излизат (което ще е интересно да се тества колко добре работи, ако работи изобщо).

2014-12-14 Панаир на книгата

Sunday, December 14th, 2014

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

Нещата, които си взех за мен:
“Мир на страха ни” на Георги Мишев (автобиография, прочетох за нея в блога на Евгени Тодоров, и преди малко я приключих, заслужава си въпреки отнесения стил на писане);
“Психология на тълпите” на Густав Люобон (препоръча ми я преди някакво време longanlon);
“Патрули: училищен надзор” на Сергей Лукяненко и Аркадий Шушпанов (сега видях, че има и втори автор и май ще съжалявам);

Нещата за подаръци:
“Сигурно се шегувате, г-н Файнман” – Ричард Файнман (превели са го най-накрая, помня с какво удоволствие четох оригинала);
“Белене – сказание за концлагерна България” на Стефан Бочев (за която би трябвало да съм писал, едно от най-хубавите описания на човешката природа, освен всичко останало);
“Рекло телето дъба да мушка” на Александър Солженицин (неясно къде ми е другото копие);
“Секретността – американският опит” на Даниел Мойнихан (взех две копия и едното вече го подарих на някой);
“Невидимата горила” на Даниел Саймънс и Кристофър Шабри (превели са я скоро, една от най-хубавите книги за бъговете в човешкото мислене).

(и заедно с книгата на Файнман ми подариха “Да паднеш в черна дупка” на Нийл Тайсън, която не знам кога ще подхвана)