Пропуснете до основното съдържание »

Вашата кошница е празна

Сървърни хакове за LINUX, 100 изпитани съвета и инструменти

Редовна цена: 20,00 лв.

Специална цена: 15,00 лв.

Наличност: На склад

Бъдете първи - добавете мнение

Сървърни хакове за LINUX, 100 изпитани съвета и инструменти

Кликнете два пъти върху изображението, за да го видите в по-голям размер

Намаляване
Увеличаване

Подробности

Представяме Ви част от предговора на книгата. Смятаме, че така най-пълно и достоверно ще се запознаете с хакерите, техното верую и ще разбулим погрешната представа за хакера, насаждана ни досега! В специализираната терминология се срещат няколко определения на понятието "хакер", в повечето от които се говори за особени технически умения и удоволствието да се разрешават проблеми и да се преодоляват ограничения. Ако обаче искате да научите как да станете хакери, само две от тях биха ви свършили работа. Съществува една общност от хора, които споделят определени ценности и идеи, група от експерти програмисти и мрежови магьосници, чиято история започва преди десетилетия с първите миникомпютри и най-ранните експерименти с ARPAnet. Членовете на тази общност създават термина "хакер". Хакерите изградиха Интернет. Хакерите направиха операционната система Unix такава, каквато я познаваме днес. Хакерите поддържат Usenet. Хакерите правят така, че Интернет да работи. Ако сте част от това общество, ако имате принос към неговата работа, ако другите хора в него знаят кой сте и ви наричат хакер, то тогава вие сте хакер. Вътрешната нагласа на хакера не се ограничава само до това да се чувства член на софтуерно хакерско общество. Има хора, които прилагат хакерски подход към други неща, като например електроника и музика; на практика, можем да открием този подход на най- високи нива в науката и изкуството. Софтуерните хакери разпознават тези сродни души в другите области и може също да ги наричат "хакери", а някои твърдят, че хакерската природа всъщност не зависи от конкретната среда и материя, с която работи хакера. Въпреки това, в останалата част на този документ ще насочим вниманието си върху уменията и подхода на софтуерните хакери, а също и традициите на общността, създала термина "хакер". Съществува една друга група от хора, които шумно наричат себе си хакери, но те не са такива в действителност. Това са хора (предимно момчета в юношеска възраст), които изпитват тръпка от това да разбиват компютърни или телефонни системи. Истинските хакери ги наричат "кракери" и не искат да имат нищо общо с тях. Истинските хакери смятат кракерите за мързеливи, безотговорни и не много умни – това, че можеш да разбиваш компютърни защити не те прави хакер, също както, ако можеш да запалиш кола, свързвайки няколко жички, не те прави автомобилен инженер. За съжаление, много журналисти и писатели са били подведени да използват думата "хакер" по отношение на кракерите, нещо, което безкрайно дразни истинските хакери. Основната разлика е в това: хакерите ИЗГРАЖДАТ неща, кракерите ги РАЗРУШАВАТ. Ако искаш да станеш хакер, чети и учи постоянно. Ако искаш да станеш кракер, прочети новинарската група alt.2600 и се приготви да прекараш между пет и десет години в пандиза, след като откриеш, че не си толкова умен, колкото си мислиш. И това е всичко, което смятам да кажа за кракерите. Хакерите решават проблеми и изграждат неща; те вярват в свободата и доброволната взаимопомощ. За да ви признаят за хакери, вие трябва да проявявате точно такова отношение. А за да проявявате такова отношение, вие трябва наистина да вярвате в него. Ако обаче се стремите да демонстрирате това, само за да ви приемат в общността, вие не сте на прав път. Да повярвате в тези принципи е важно преди всичко за вас самите – това ще ви помогне да учите и ще ви мотивира. Както при всеки творчески процес, най-верния път да станеш майстор е като имитираш творческата нагласа на майсторите – не само интелектуално, но също и емоционално. Или, както е казал един съвременен зен поет: За да следваш пътя: наблюдавай учителя, следвай учителя, върви редом с учителя, гледай с очите му, и ти ставаш учителя. Така че, ако искате да станете хакери, повтаряйте си тези думи, докато повярвате в тях. 1. Светът е пълен с очарователни проблеми, които чакат да бъдат решени Да си хакер е голямо удоволствие, но това е удоволствие, което изисква много усилия. За да положиш това усилие, се изисква мотивация. Добрите атлети са мотивирани от физическата радост да накарат тялото си да изпълнява неща, надхвърлящи границите на техните възможности. Подобно на това, за да се чувстваш хакер, ти трябва да изпитваш тръпка от това да решаваш проблеми, да усъвършенстваш уменията си и да поставяш на изпитание интелигентността си. Ако по природа не сте такъв човек, ще ви се наложи да станете, в случай че искате да успеете като хакер. В противен случай, ще стане така, че вашата хакерска енергия ще бъде блокирана от неща като секс, пари или социален престиж. (Също така ще трябва да развиете увереност в своите възможности да учите - вяра, че макар и да не знаете всичко, от което имате нужда, за да решите един проблем, достатъчно е да поработите върху част от него и когато тази част ви стане ясна, това ще ви помогне да решите следващата част - и така нататък, докато успеете.) 2. Нито един проблем не трябва да бъде решаван два пъти Творческите умове са ценен, ограничен ресурс. Те не трябва да се пилеят в преоткриване на колелото, когато има толкова много очарователни нови проблеми, които чакат да бъдат решени. Да имате поведение на хакери означава да осъзнавате, че времето за мислене на останалите хакери е ценно, и то толкова ценно, че споделянето на информация е морално задължение. Решавайки проблемите, вие сте длъжни да разпространявате решенията, така че другите хакери да могат да се занимават с решаването на нови проблеми, вместо непрекъснато да се връщат към старите. (Не е необходимо да смятате, че сте длъжни да раздавате всичкия си творчески продукт, макар че хакерите, които го правят, се радват на най-голямо уважение от страна на останалите хакери. Не е в противоречие с моралните ценности на хакерите да продавате достатъчно от този продукт, за да задоволявате нуждите си от храна, жилище и компютри. Няма нищо лошо в това да използвате хакерските си умения, за да издържате семейство, или дори да забогатеете, стига да не забравяте лоялността си към своето изкуство и колегите си хакери, докато правите това.) 3. Скуката и еднообразната работа са зло Хакерите (и изобщо хората на изкуството), не трябва никога да допускат да скучаят или да вършат глупава, еднообразна работа, защото ако това се случи, те престават да вършат това, което само те могат да правят – да решават нови проблеми. Това разхищение е вредно за всички. Ето защо, скуката и монотонната работа не само са неприятни, те са особено вредни. Да се държите като хакери означава да искате да автоматизирате и отхвърляте скучните операции, доколкото е възможно, не само заради себе си, а също и заради всички други (особено останалите хакери). (Има само едно очевидно изключение от това правило. Хакерите понякога извършват неща, които за страничния наблюдател изглеждат монотонни и скучни, но за тях те са избистрящи мозъка упражнения или средство да придобият нови умения, или да изпробват нещо, което не биха могли да направят по друг начин. Но това е въпрос на избор. Нито един мислещ човек не трябва да бъде заставян да се примирява със ситуация, която го отегчава.) 4. Свободата е хубаво нещо В природата на хакерите е да не се подчиняват на ничия власт. Всеки, който ви дава нареждания, ви пречи да разрешавате проблем, който вие смятате за интересен – и, като имаме предвид начина по който работи един властен ум, непременно ще намери някаква ужасяващо глупава причина да ви спре. Така че, нужно е да се борите срещу властовия подход, където и когато се появи, иначе той ще задуши вас и останалите хакери. Това не означава, че трябва да се противопоставяме на всяка власт. Децата трябва да бъдат наставлявани, а престъпниците задържани. Хакерът може да реши да приеме някои форми на власт, за да получи нещо, което иска и цени повече от времето, което ще загуби следвайки нареждания Но това е съзнателна сделка, която се сключва по изключение; онова подчинение, което властващите искат, никога няма да им се предложи. Властта вирее върху цензурата и секретността. Тя гледа с недоверие на доброволното сътрудничество и обмена на информация – тя приема единствено "сътрудничество", което тя може да контролира. И така, за да се държите като хакери, развивайте в себе си инстинктивна враждебност към цензурата, секретността и употребата на сила или заблуда с цел да се държат в подчинение хората с чувство за отговорност. Както и да сте готови да действате, за да защитите това си убеждение. 5. Хакерското поведение не е заместител на компетентността За да станете истински хакери, вие трябва да възприемете тези принципи на поведение. Но само копирането на поведение, не е достатъчно да ви направи хакери, също както не може да ви направи спортен шампион или рок звезда. За да станете хакер, се изисква интелигентност, практика, отдаденост и упорит труд. Ето защо, трябва да се научите да не се доверявате само на поведението и да уважавате компетентността във всичките й проявления. Хакерите няма да позволят на позьорите да им губят времето, но те се прекланят пред компетентността – особено компетентността в хакерската работа, но и всяка друга компетентност. Компетентността в трудни умения, които малцина притежават е нещо много добро, но компетентността в трудни умения, които изискват бързина на ума, прозорливост, сръчност и концентрация е най-доброто. Ако изпитвате преклонение пред компетентността, вие ще имате желание да я развиете у себе си – усърдната работа и посвещаването на времето ще се превърне във вълнуваща игра, а не в досадна работа. Ето това е най-същественото условие да станете хакери. Това есе в пълния му вид можете да намерите в Интернет на адрес http://www.tuxedo.org/~esr/faqs/hacker-howto.html, а също и в приложение към книгата "Катедралата и базара" ( "The Cathedral and the Bazaar", O’Reilly) ........................................... Хакерър прави от любов това, което други не биха правили и за пари. Думата хак има множество различни значения. "Добрият хак" използва наличните в текущия момент ресурси, за да разреши належащ проблем по възможно най-добрия начин. "Грозният хак" подхожда към ситуацията по неясен и най-малко разбираемият начин, макар че много "добри хакове" също могат да изглеждат непонятни за непосветените. Ефективността на един хак обикновено се измерва по способността му да разрешава определен технически проблем, разделена на количеството човешки усилия, необходими за неговото прилагане. Някои хакове могат да бъдат разширявани, а някои могат дори да бъдат поддържани. Най-дълго използваните и най-добре приеманите хакове се превръщат в стандарти и предизвикват изобретяването на много други хакове. Един добър хак се използва, докато не бъде измислен още по-добър. Хаковете разкриват взаимодействието между абстрактния и удивително сложен ум на разработчика и неопровержимите и безмилостни човешки нужди. Понякога хаковете могат да бъдат грозни и съществуването им да е оправдано, само защото нечия нужда се е нуждаела от моментално почесване. За разработчика хакът представлява върховното олицетворение на подхода "направи си сам": никой не може да разбере защо е бил измислен даден хак от човека, който първи се е почувствал задължен да разреши проблема. Ако човек, склонен да разрешава проблеми, сметне даден хак за грозен, той почти винаги изпитва непреодолима нужда да измисли нещо по-добро – и да подобри хака, нещо, което подканяме да правят читателите на тази книга. В края на краищата дори най-мощния сървър, разполагащ с максимално количество RAM и работещ на най-бързата (и възможно най-свободната за използване) операционна система на тази планета, е просто още едно красиво средство, решаващо моментните проблеми, което ще продължи да бъде използвано, единствено докато не възникне нужда от по-добро, по-бързо и по-евтино средство. Каква беше ползата от цялото това псевдо-философско дърдорене? Надявам се, че тази предварителна информация ще ви даде представа за умствената нагласа, с която подходихме към съставянето на този набор от решения, наречени Сървърни хакове за Linux. Някои от тях са кратки и прости, а други са доста сложни. Всеки от тези хакове е бил измислен, за да разреши определен технически проблем, който авторът на хака просто не е могъл да пропусне, без да го "почеше". Надявам се, че някои от тях ще могат да бъдат приложени директно към ваши "сърбежи", които сте изпитали, независимо дали сте нов или опитен администратор на сървъри под Linux. Как е организирана тази книга Един компетентен системен администратор трябва да разбира от всичко по много. За да бъдете наистина ефективни, трябва да можете да разрешите всеки проблем, който възникне в системата – от включването до спирането на машината. За да ви помогна да се справите с времето между тези две събития, ви предоставям този набор от изобретателни, пестящи време подходи към ежедневните административни задачи. · Основи на сървърите започва с разглеждане на някои от проблемите, с които се сблъсква най-често един системен администратор: управление на процеса на зареждане на системата, ефективна работа с командния ред, автоматизиране на често извършвани задачи, наблюдаване (и управляване) на начина, по който се използват системните ресурси, и настройване на различни области от ядрото на Linux, за да може всичко останало да работи по-ефикасно. Това не е въведение в системното администриране, а по-скоро поглед върху някои ефективни и неочевидни техники, които може да не са известни дори на някои опитни системни администратори. · Контролиране на версии предлага бърз курс по използване на две фундаментални системи за контролиране на версии – RCS и CVS. Способността за възвръщане на предишни версии на конфигурационни файлове, изходен код и документация е изключително важна и може в определен момент да спаси работата ви. Твърде много професионални системни администратори не познават основите на системите за контролиране на версии (предпочитайки вместо това да се осланят на неизбежните, но неподлежащи на поддръжка резервни копия .old или .orig). Тази глава ще ви даде необходимите знания в сбит и ясен вид. · Работа с мрежи е любимата ми глава в цялата книга. Тя не е съсредоточена върху основната функционалност на мрежите и маршрутизирането, а вместо това разглежда някои трудно забележими, но безумно полезни техники, с които можете да накарате мрежите да се държат по неочаквани начини. Ще ви покажа как да създадете различни видове тунели по IP (както криптирани, така и не) и как да работите с NAT. Освен това ще ви посоча някои по-сложни механизми, чрез които можете да постигнете много интересни неща с вашата мрежа. Някога случвало ли ви се е да искате да можете да решите какво да правите с пакет в зависимост от данните в него? Разгледайте тази глава. · Наблюдение представлява разностилна смесица от съвети и инструменти, чрез които можете да определите с какво точно се занимава вашия сървър. В тази глава се разглеждат някои стандартни (и някои абсолютно изисквани "незадължителни") пакети, които ще ви дадат купища информация относно кой какво, кога и как използва. Освен това тук ще откриете няколко начина, по които можете да смекчите последствията от неизбежните сривове на услуги и дори да определите кога лоши хора се опитват да направят някои не особено хубави работи с вашата мрежа. · Проявление на хакерския подход сам по себе си, главата за SSH описва всякакви хитри приложения на ssh – криптографски сигурният (и невероятно гъвкавият) мрежов инструмент. За Linux съществуват няколко версии на ssh и макар че повечето от показаните примери ще работят за всяка от тях, те са тествани и доказано работещи с OpenSSH v3.4p1. · Скриптове представлява кратко отклонение, като разглежда някои трикове, които просто не могат да се съберат на един команден ред. Предложените хакове ще ви спестят време и, надявам се, ще ви послужат като пример за хитрите и полезни неща, които можете да направите с командната обвивка и Perl. · Информационни услуги представя трите основи приложения за Linux: BIND 9, MySQL и Apache. Тази глава приема, че сте стигнали далеч по-напред от простото инсталиране на тези пакети и търсите начини, по които да ги накарате да предоставят своите услуги по-бързо и по-ефективно, без за целта да трябва да вършите много работа. Ще видите методи, с които да накарате своите сървъри да работят по-бързо, да ги разширите към по-големи инсталации и да ги настроите по всякакви хитри начини, така че да намалите значително времето за конфигуриране и поддръжка. Как да използвате тази книга Вероятно ще установите, че ще ви бъде полезно да изчетете настоящата книга от корица до корица, защото хаковете се основават един на друг от самото начало до края. Но в същото време всеки от хаковете представлява самостоятелен пример за това как можете да се справите с определена задача. Ето защо съм разделил на групи хаковете според техническата област, към която спадат, но съм поставил и доста препратки от една глава към друга (освен това често посочвам някои по-изчерпателни източници по дадената тема). Не считайте всяка глава за напълно самостоятелен раздел, чиято тема има строго определени граници, а по-скоро като удобен начин за събиране на подобни (и същевременно независими) хакове. Може би ще искате да прочетете тази книга, както се разглеждат уеб страници в Интернет: тръгвате от тема, която ви интересува, и, ако установите, че не разбирате нищо, следвате предоставените връзки, за да се сдобиете с нужната ви информация.
Как се става хакер IX
Предговор XIII
Основи на сървърите 1
1. Премахване на ненужните услуги..................................................................................... 3
2. Регистриране чрез конзола................................................................................................ 6
3. Често използвани параметри при стартиране на системата........................................... 7
4. Създаване на постоянен демон чрез init......................................................................... 9
5. n>&m: разменяне на стандартния изход и стандартния изход за грешки................ 10
6. Изграждане на сложни командни редове...................................................................... 12
7. Работа със сложни файлови имена с xargs................................................................... 15
8. Непроменяеми файлове в ext2/ext3.............................................................................. 17
9. Ускоряване на компилирането........................................................................................ 19
10. Комфорт в средата на командната обвивка................................................................. 20
11. Намиране и елиминиране на изпълними файлове с вдигнати
битове setuid/setgid......................................................................................................... 23
12. Накарайте sudo да работи по-усърдно.......................................................................... 25
13. Използване на Мakefile за автоматизиране на администраторски задачи............... 27
14. Грубо търсене на ново име на домейн.......................................................................... 29
15. Игра на “открий кой препълва диска”............................................................................ 30
16. Забавления с /proc............................................................................................................ 31
17. Символно манипулиране на процеси чрез procps........................................................ 34
18. Управление на системните ресурси на отделен процес.............................................. 36
19. Почистване след бившите потребители....................................................................... 38
20. Премахване на ненужните драйвери на ядрото............................................................ 40
21. Използване на големи количества RAM ..................................................................... 42
22. hdparm: фино настройване на параметрите на устройствата IDE.............................. 43
Контролиране на версии 47
23. Запознаване с RCS........................................................................................................... 48
24. Извеждане на предишна версия с RCS......................................................................... 49
25. Проследяване на промени с rcs2log............................................................................. 50
26. Запознаване със CVS....................................................................................................... 52
27. CVS: извеждане на модул............................................................................................... 55
28. CVS: обновяване на работното копие.......................................................................... 56
29. CVS: използване на етикети........................................................................................... 56
30. CVS: извършване на промени в модул......................................................................... 57
31. CVS: сливане на файлове................................................................................................ 58
32. CVS: добавяне и изтриване на файлове и директории................................................ 59
33. CVS: разклоняване на разработваните модули............................................................ 59
34. CVS: наблюдаване и заключване на файлове.............................................................. 60
35. CVS: подсигуряване на CVS........................................................................................... 61
36. CVS: анонимни хранилища.............................................................................................. 62
Резервни копия 65
37. Архивиране с tar през ssh................................................................................................ 66
38. Използване на rsync през ssh.......................................................................................... 67
39. Архивиране с Pax.............................................................................................................. 68
40. Архивиране на boot-сектор............................................................................................. 73
41. Синхронизиране на отделни части от файловата система чрез rsync....................... 75
42. Автоматично създаване на моментни резервни копия с rsync.................................. 80
43. Работа с изображения ISO и CDR/CDRW.................................................................... 86
44. Записване на компактдиск без предварително създаване на изображение ISO...... 87
Работа с мрежи 89
45. Създаване на защитна стена от командния ред на всеки сървър.............................. 89
46. Просто маскиране на IP.................................................................................................. 92
47. Съвети и трикове за iptables........................................................................................... 93
48. Препращане на портове към произволно избрани машини...................................... 95
49. Използване на потребителски вериги в iptables.......................................................... 97
50. Тунели: капсулиране с IPIP............................................................................................. 98
51. Тунели: капсулиране с GRE.......................................................................................... 100
52. Използване на vtun през ssh за заобикаляне на NAT................................................ 102
53. Автоматичен генератор на файлове vtund.conf......................................................... 107
Наблюдение 113
54. Направляване на syslog................................................................................................. 113
55. Наблюдаване на задания с watch................................................................................. 116
56. Какво задържа този порт отворен?............................................................................. 117
57. Проверяване на отворени файлове и сокети с lsof.................................................. 119
58. Наблюдаване на системните ресурси с top............................................................... 121
59. Непрекъснато визуализиране на средното натоварване в заглавната лента.......... 122
60. Наблюдаване на мрежи с ngrep................................................................................... 124
61. Сканиране на собствени машини с nmap.................................................................... 126
62. Анализиране на възрастта на диска............................................................................. 127
63. Просто превземане на IP-адрес.................................................................................. 129
64. Използване на ntop за получаване на мрежова статистика в реално време.......... 132
65. Наблюдаване на уеб трафик в реално време с httptop............................................. 134
SSH 142
66. Бързо регистриране с клиентски ключове за ssh..................................................... 142
67. Регистриране чрез ssh в турбо режим........................................................................ 144
68. Ефективно използване на ssh-agent............................................................................ 145
69. Работа със ssh-agent в графичен потребителски интерфейс.................................. 147
70. X през ssh........................................................................................................................ 148
71. Препращане на портове чрез ssh................................................................................. 149
Скриптове 152
72. Бързо настройване на нови сървъри с movein.sh...................................................... 152
73. Глобално търсене и заменяне с Perl.......................................................................... 154
74. Разделяне на данни на произволно големи парчета (в bash)................................... 157
75. Разноцветен анализ на дневници на вашия терминал................................................ 158
Информационни сървъри 161
76. Стартиране на BIND в затвор....................................................................................... 162
77. Изгледи в BIND 9.......................................................................................................... 164
78. Настройване на кеширащ DNS-сървър, отговарящ за локалните домейни.......... 169
79. Разпределяне на натоварването с няколко DNS-сървъра....................................... 171
80. Настройване на собствен домейн от високо ниво................................................... 172
81. Наблюдаване на MySQL с mtop.................................................................................. 174
82. Резервни копия в MySQL............................................................................................. 176
83. Възстановяване на една таблица от голямо резервно копие на MySQL............... 179
84. Настройване на сървър на MySQL.............................................................................. 180
85. Използване на proftpd с източник на данни mysql за
удостоверяване на самоличност................................................................................. 182
86. Оптимизиране на glibc, linuxthreads и ядрото за суперсървъри на MySQL.......... 184
87. Apache Toolbox.............................................................................................................. 186
88. Показване на пълни файлови имена в индексите...................................................... 189
89. Бързи промени в конфигурацията с IfDefine............................................................. 190
90. Просто следене на трафика от реклами..................................................................... 193
91. Имитиране на FTP-сървъри с Apache......................................................................... 195
92. Редуване и компресиране на дневниците на Apache................................................. 197
93. Генериране на сертификат на SSL и на заявка за подписване на сертификат........ 199
94. Създаване на Издател на сертификати....................................................................... 201
95. Разпространяване на публичния ключ на вашия ИС................................................ 203
96. Обслужване на няколко сайта от един DocumentRoot............................................ 205
97. Предоставяне на съдържание в зависимост от низа
на заявката чрез mod_rewrite...................................................................................... 207
98. Използване на mod_proxy за подобряване на скоростта на Apache...................... 209
99. Разпределяне на натоварването на Apache чрез RewriteMap................................. 211
100. Ултрахостинг: хостинг на множество сайтове чрез
заместващи символи, Proxy и Rewrite...................................................................... 213
Индекс 217
Роб Фликенджър работи с Linux от Slackware 3.5 насам. Той е бил системен администратор на Мрежата на O"Reilly (магазин, работещ изцяло под Linux, разбира се) и е автор на книгата Building Wireless Community Network, също на издателство O"Reilly.