Linux сигурност – файлови системи
Posted on | August 19, 2009 | 5 Comments
До голяма степен за сигурност в Linux се разчита на файловата система. Linux е операционната система, която поддържа най-много файлови системи. Това става възможно чрез виртуална файлова система (VFS).
Защо е толкова важна файловата система в Linux? – Най-вероятно сте чували, че в Linux всичко е файлове. Това е така, даже устройствата са файлове. Поради тази причина от файловата система зависи до голяма степен сигурността на операционната система. От правата върху файловете зависи дали имаме право да записваме, четем или изпълняваме даден файл. Например, ако е инсталирана дадена програма, но аз нямам права за да стартирам файла, няма да мога да пусна програмата. Друг пример: трябва да копирам музика от външна флаш памет, при което слагам флашката и тя се монтира и стартира автоматично чрез незнаен скрип троянски кон. Естествено аз съм ламер със самучувствие и съм чувал и чел по форуми в интернет, че за Linux няма вируси и по тази причина не съм си инсталирал антивирусна програма. Разбира се, не че сам нямаше да се справя, но един батко ми показа как да си инсталирам това прочуто животно “линух”, за което напоследък всички говорят и колко е cool, ако имаш бърза видео карта. Та той ограничи разни директории, които за първи път видях тогава. Когато го правеше му се присмях и му казах, че се е побъркал. Сега когато ми изписа някакво съобщение, че се копира някакъв файл в една от директориите, които пича бараше, а аз нямам право да записвам в тази директория се сещам защо го е направил. Оказа се, че от толкава хвалене съседа ми е вдигнал мерника и е решил да ми покаже, че разбира повече от мен. Намерил един от малкото троянски коне за Linux в интернет и си е написал малък скрип, който го копира от флашката, на която ми даде най-хитовите чалга и рап и хаус и метъл и т.н. Така без да подозирам баткото ме е защититил от разни scrip kidies.
За правата върху файлове и директории няма да обяснявам, тъй като предполагам, че всеки, който се е сблъсквал с Linux ги разбира или знае къде да чете по темата. Все пак ще спомена някои команди: chmod, chown, chgrp, umask, chattr, chacl.
След като сме запознати със структурата на файловата система и основните команди в конзолата можем да почнем да търсим за файлове със suid и sgid битове. Най-просто казано това значи, че те могат да бъдат изпълнявани с по-високи привилигии, което е опасно за системата. Добре е да няма такива програми защото при “хакване” на такава програма атакуващият получава root права и всичко последващо. Ето как се търсят такива файлове:
за suid:
find / -perm /4000
или
find / -perm +4000 #този синтаксис отпада от употреба и е добре да се използва в по-стари системи, заменя се от този горе
или
find / -perm /u+s
За sgid e аналогично (/g+s или цифровото изражение 2000). По същият начин можем да търсим за директории със sticky bit и такива, в които могат записват всички. Няма да показвам как става.
Какво да правим когато се налага в директория, в която потребители имат всички права, а не искаме да изтриват файлове ? -Ползваме chattr с нужните опции. Например за логовете е подходящато да сложим бит append.
Минава време от първият ни сблъсък с Linux и започваме да параноясваме. Прочели сме по-голямата част от man pages и howto. Така стигаме до идеята да разделим твърдия диск не на един дял, а на нужния брой, така че всяка поддиректория на / да е отделна файлова система, монтирана с нужните параметри. Разбира се, ако не сме напълно параноясали или сме достатъчно умни и имаме знанията да го направим можем и да изберем примерно само /boot, /home, /usr и /tmp. Също така трябва да добавя, че това не е добър вариант за начинаещи потребители, а по-скоро за такива, които искат да си направят малък сървър. Какво бихме спечелили по този начин? – Ще започна със сигурността, все пак това е основната тема.
- Ограничаваме атаки целящи запълване на твърдият диск с ненужна информация.
- Улесняване при архивиране и възстановяване (някой, ако знае по-подходящите термини на български за backup & recovery да каже).
- Стабилност, ефикастност и производителност. Малките файлови системи работят по-ефикасно. Освен това можем да ги тунинговаме според отделните нужди.
- По-улеснено експериментиране.
Ето някои насоки:
- / – добра идея е да е отделна файлова система, която се монтира напълно ограничена: nodev, noexec, nosuid, read-only. Това естествено води до доста големи ограничения и всички поддиректории ще трябва да се монтират като отделни файлови системи с включени нужните опции за всяка от тях.
- /boot – много важна директория. В нея се намира ядрото на операцонната система. Препоръчителни опции: nodev, noexec, nodev и read-only.
- /bin – тук се намират голяма част от основните програми. По тази причина в никакъв случай не трябва да я монтираме с noxec. Ще пропуснем и nosuid. Read-only зависи от това колко сме мързеливи. Препоръчителни опции: nodev и евентуално read-only.
- /dev – В никакъв случай не трябва да монтраме тази директория с nodev и read-only. За сметка на това е важна директория и добре да е на отделна файлова система. Препоръчителни опции: noexec, nosuid.
- /etc – Излишно е да се монтира с read-only и да е в отделна файлова системи (но аз бих го направил). Тъй като обикнонно в Linux за разлика от някои Unix-подобни операционни системи няма програми не е проблем да я монтираме с препоръчителни опции: nodev, noexec, nosuid.
- /home – Това ще е директорията, в която потребители могат да съхраняват своите файлове. Строго препоръчително е да е на отделна файлова система. Логично в никакъв случай няма да е read-only. Препоръчителни опции: nodev, noexec, nosuid.
- /lib, /lib32, /lib64 – Не е лоша идея да е на отделна файлова система. В никакъв случай не трябва да е noexec. Препоръчителни опции: nodev, nosuid и read-only.
- /mnt – Не е важно да е на отделна файлова система. Тъй като тук ще се монтират устройствата за външна памет е естествено да я монтираме с максимални ограничения, освен ако нямате нещо друго предвид. Препоръчителни опции: nodev, noexec, nosuid и read-only.
- /opt – Не е налична във всички дистрибуции. Ако е налична, тук се намират допълнителни неосновни програми. Препоръчителни опции: nodev.
- /root – Мисля, че е излишно да коментирам. Препоръчителни опции: nodev.
- /sbin – Препоръчителни опции: nodev и read-only.
- /tmp – Често се използва от script kidies. Препоръчително е да е на отделна файлова система. Логично няма да е read-only. Препоръчителни опции: nodev, noexec и nosuid.
- /usr – Препоръчителни опции: nodev и read-only.
- /var – Строго препоръчително да е отделна файлова система. Препоръчителни опции: nodev, noexec и nosuid.
Тези ограничения ще затруднят начинаещите потребители най-вече при обновяване на системата. Също така за тях ще е по-лесно, ако предприемат разделянето на различни файлови системи преди инсталацията.
Винаги трябва да следим файловата система за интегритет. Софтуер няма да препоръчвам, но ще спомена, че нашумелия tripwire не е лесен за конфигуриране и вероятно е много по-лесно да се използват по-малки инструменти за хеширане, които има във всяка дистрибуция.
Важна част от сигурността е криптирането на всичката важна информация. Съвременния хардуер е достатъчно бърз за да не забавя работата ни, а същевременно да осигурява голяма сигурност. Тук единственото правилно решение според мен е LUKS.
Chrome и Windows 7
Posted on | August 15, 2009 | 1 Comment
На 32 битова версия на Windows 7 браузерът Chrome работи безпроблемно. Проблеми се появяват в 64 битовата разновидност на операционната система на Microsoft. Решение естествено има. Кликва се с десния бутон на мишката върху иконата, с която се стартира Chrome и се избира Properties. Трябва да се появи прозорец с отворен таб Shortcut, ако не – изберете него. В полето Target се добавя –in-process-plugins. Следва избиране на OK и Chrome вече трябва да работи безпроблемно при следващото стартиране. Тук обаче има едно НО! Малко хора са наясно, че по този начин отварят дупка в сигурността. Разбира се малко от тях се интерисуват от това. Моята препоръка е да се изчака кръпка, върху която вече се работи или ползвайте последната стабилна версия на разработчиците – Chromium (така се нарича проекта с отворен код).
Cheatsheets за мрежови протоколи и технологии
Posted on | August 13, 2009 | 3 Comments
Сравнително често ми се случва да не мога да си спомня на момента нещо, което ми е нужно. Днес случайно попаднах на тези cheatsheets. Разпределени са по следният начин:
- Protocols (11)
BGP
EIGRP
First Hop Redundancy
IEEE 802.11 WLAN
IEEE 802.1X
IPsec
IPv4 Multicast
IPv6
IS-IS
OSPF
Spanning Tree
- Applications (2)
tcpdump
Wireshark Display Filters
- Reference (3)
Common Ports
IOS IPv4 Access Lists
Subnetting
- Syntax (2)
Markdown
MediaWiki
- Technologies (3)
Frame Mode MPLS
Quality of Service
VLANs
- Miscellaneous (2)
Cisco IOS Versions
Physical Terminations
Налични са в pdf формат.
Инсталиране на Windows 7, Server 2008 или Vista на компютър или виртуална машина с по-малко от 512 MB RAM
Posted on | July 27, 2009 | No Comments
Сред официалните минимални изискавания на Windows 7, Windows Vista и Windows Server 2008 е наличието на поне 512MB RAM памет. Това изскване може да се преодолее по няколко начина. Естествено логично е, че след преодоляването му не можем да очакваме добра производителност, но все пак е добре да се знае, че не е невъзможна инсталацията на споменатите операционни системи.
По време на инсталация Windows прави проверка за наличие на <128 | 192 | 256 | 320> MB RAM и ако попаднете в тези ограничения инсталацията ще бъде преустановена.
Едно важно предупреждение. Ако не сте запознати, при инсталиране на операционна система си прави така нареченият RAM диск. При Windows големината на RAM диска е 128 MB. Затова трябва да имате поне малко повече за да не възникнат грешки.
Вариант 1
Това е най-логичния. Чрез добавяне на oще RAM памет. Тук едната възможност е добавяне на памет за да стигне обема ? 384 MB. Това е минимумът, при който може да се надхитри инсталатора за да довърши инсталацията. Другата е отново чрез добавяне на памет, но този път обема ? да стигне над 512 МБ (минималното изискване) и след това се махне чуждата памет.
Вариант 2
Тук е нужно да се превърнем в хакери:). Или иначе казано е нужно да се редактира winsetup.dll. За целта е нужен hex editor (шестнайсетичен редактор). След като отваририм файла (намира се в директорията /source/) в hex редактора търсим стинга “77073D7801″ и го заменяме с “E90400000″. Това е всичко! Записваме диска или си ползваме ISO изображението със здраве.
На разходка из българското блог пространство
Posted on | July 21, 2009 | No Comments
Може ли да ми помогнете?… е пример как от една банална тема може да се напише нещо качествено и да се чете с кеф. Става дума за нагъл просяк, който при отказ да му дадат пари налита на бой. Този път се е отървал, дано следващия път си намери майстора.
Вчера се навършиха 40 години от първото стъпване на човек на Луната. Много снимки и филми съм изгледал на тази тема и лично аз не вярвам това да се е случвало. Не и с мисията на Аполо 11. Тук могат да се прочетат достатъчно добри факти за да се замислите колко е лесно да се манипулира човек.
Денят на операционните системи
Posted on | July 14, 2009 | No Comments
Цял ден инсталирах операционни системи. Като се почне от Windows Vista и се мине през Ubuntu 9.0.4 и се стигне до Mac OS X Leopard. Тази иначе елементарна задача на моменти ми опъваше нервите. Мислех да напиша всички проблеми, с които се сблъсках за да ми е по-лесно следващия път. За съжаление си спомням само един, ако се сетя за други ще дописвам. Оказа се, че модула за безжична мрежова карта Realtec 8187B работи нестабилно и е по-добре да се използва ndiswrapper с драйвер за Windows.
Ubuntu не бях докосвал с малки изключения от 5.0. Напредък определено има, автоматизирани са огромна част от действията, но естесвено има още какво да се желае. Неприятно впечатление ми направи неинтуитивния начин за посочване на дяловете, на които да се инсталира (бях си форматирал предварително нужните дялове с fdisk). Не посмях да използвам автоматичното разпознаване на дяловете, тъй като на единия имаше важна информация. Потвърди ми се мнението, че Ubuntu е конфигуриран Debian за прохождащи потребители в Linux, но може и да се използва без проблеми и от по-напреднали мързеливци.
Google Chrome OS
Posted on | July 11, 2009 | 1 Comment
Отдавна се носеха слухове, че браузърът Chrome е бъдеща операционна система на Google. До преди 3 дни от Google нямаха официално становище. С публикацията си в официалния им блог те потвърдиха спекулациите по темата.
Google Chrome OS ще бъде безплатна операционна система с отворен код. Ядрото на операционната система ще е Линукс, а от Google обещават да напишат нова система за управление на прозорците за да бъде “пъргава”. Целта е пазара на десктоп системи и нетбуци, а поддържани архитектури ще бъдат arm и x86. Както знаем те вече имат опит с такава за мобилни устройства (Android), която се развива доста бързо и успешно. От личен опит мога да кажа, че Android е най-добрата мобилна ОС, която съм използвал. С добра производителност, стабилна и все повече стойностни приложения се намират за нея. Ако Chrome OS бъде поне толкова добра вероятно ще измести Windows от тази пазарна ниша.
Всъщност Google Chrome OS ще бъде нещо като “онлайн операционна система”. Целта е да бъде бърза, лесна за ползване и сигурна. И тези обещания трябва да се спазят, защото потребителите на нетбуци очакват точно това плюс ниска цена на самото устройство. От една страна Линукс е доста сигурна операционна система и това ни дава основания да се надяваме ОС да бъде наистина на високо ниво със сигурността, от друга страна знаем, че колкото повече се разпространява един софтуер толкова повече дупки в него се търсят и откриват – съответно се създават повече вируси и друг зловреден код.
Вече са ясни и партньорите на Google в проекта - Acer, Adobe, ASUS, Freescale, Hewlett-Packard, Lenovo, Qualcomm, Texas Instruments и Toshiba.
Краен срок за реализация е посечена втората половина на 2010 година. Това би трябвало да е малко след пускането на Windows 7 на Microsoft. Целта е ясна – директна борба с платена, може би по-бавна и несигурна операционна система. Изходът вероятно е ясен още от сега – доминация на Google и в този пазарен сегмент, но въпреки това нека изчакаме и видим какво ще се случи. Определено ни очакват интересни моменти. Като цяло с каквото се захване Google почти винаги става лидер в областта си, но нека не подценяваме Microsoft и най-вече маркетинг специалистите им – те не напразно са лидер в момента.
Много хора се питат за какво им е на Google да правят безплатна операционна система след като на практика те притежават почти целия интернет пазар. Възможен отговор е жаждата за власт и пълна доминация. Не е тайна, че постонно се борят с Microsoft за надмощие. От друга страна тази ОС ще е отново интернетбазирана и ще използва всички готови продукти. При нея за всичко ще се ползва “мрежата” – от обработка на документи до гледане на филми и точно това може би е разковничето. По този начин освен, че ще събират повече информация за потребителите си, те ще развиват още по силно рекламната си дейност, където са лидер и в момента.
Интервю с Марк Русинович за новостите в Windows 7
Posted on | July 9, 2009 | No Comments
Марк Русинович
Марк Русинович е един от малкото хора, които са наясно с Windows на ниско ниво. Той е съавтор на единствената поредица от книги Windows internals, която разяснява как работи операционната система. Също така е написал едни от най-добрите инструменти за дебъгване и мониторинг под Windows. Ако сте чували за руткитите на Sony и Semantec е отново благодарение на него.
Windows 7
Windows 7 е най-новата версия на най-разпространената операционна система в целия свят. Към този момент тя все още е в бета стадий и е свободна за сваляне от сайта на Microsoft (ако искате да я пробвате е добра идея да си я свалите от там, а не от някой торент тракер – вероятно ще си спестите проблеми).
От интервюто се разбира, че на архитектурно ниво няма големи промени, което значи че всичко, което е работило на Vista ще си работи отново без проблеми, а това от своя страна ще спести доста проблеми на потребителите. Подобренията, които трябва да очакваме отново са свързани с производителността и потребителският интерфейс.
Единственото нещо, което ми привлече вниманието е User Mode Scheduling (накратко UMS). Това е разпределение на процесорното време за нишки на потребителско ниво. До сега това беше възможно само на ниво ядро. Подобрението в производителността идва от там, че когато нишка чака за даден ресурс ще предоставя прецесора на друга нишка, с което се пести ценно процесорно време.
Днес си взех последния изпит
Posted on | July 8, 2009 | No Comments
Днес, преди около 6 часа си взех последния изпит.
Мразя математиката, независимо дали е висша или дискретна, или вероятности и статистика, или теория на числата, или управление на операции, или каквото и да е друго свързано с цифри и изчисления. Преди години нямаше да повярвам, че мога да кажа и напиша такова нещо, тогава ходех по олимпиади и състезания. Просто изведнъж изгубих интерес и я намразих.
От следващата седмица започвам да работя отново по дипломната работа и се надявам за най- много до две седмици да я завърша и да се освободя и от нея.
Накъде отива света
Posted on | June 16, 2009 | 2 Comments
… щом и аз направих блог (дневник). Когато ми остава свободно време ще пиша разни неща.
П.С. Не съм певец!