Нови статии
bash scripts
CPU-frequency scalin...
Oбновявания на ОС W...
install zoneminder 1...
Installing mysql Mar...
Теми във форума
Нови теми
инсталация на ZNC
Малък лек и удобен д...
Клавишни комбинации ...
Инсталация на Arch L...
Защитна стена за мик...
Най-активни теми
Color console linux [4]
Клавишни комбинац... [1]
Защитна стена за ... [1]
Linux [1]
инсталация на ZNC [0]
Приятели
Сега
Времето
Йерархия на статиите
Статии » Линукс и UNIX » Конфигуриране на Юникс система
Конфигуриране на Юникс система
Въведение
Първо нека да отбележа, че FreeBDS е доста добре обезпечена операциона система. Поради безплатното разспространение на изходните текстове, тази система подлежи на постоянна проверка. Има начин тя да бъде така настроена, че нивото на защитата да се повиши. Този документ е написан, за да бъдат показани няколко стъпки, които ще ви помогнат да увеличите общата безопастност на вашата машина.
Кой трябва да прочете този документ? - Онзи, който иска да научи повече за мерките, които ще направят системата му доста по-сигурна.
Организация на мрежа
inetd (Inet Демон)
Организацията на мрежата играе много важна роля в общата системна безопастност. FreeBDS се базира на 4.4BSD, в който е заложена поддръжката на мрежа и действително има един от най-мощните и бързи TCP/IP стекове. Стека осигурява поддръжката на много портоколи като например telnet, ftp, talk, rsh и други. Основния файл на конфигурация се намира в /etc и се нарича inetd.conf.
Сега и няколко примери, в които ще използвам редактора vi.
Когато отворите файл в редактора, ще видите прост текст ASCII, който съобщава на inetd, как да пусне едина или друга услуга, от името на кой ползвател се включва тя и т.н. (погледнете man 5 inetd.conf).
Тъй като това е основния файл, който кара да заработят всички мрежеви служби, много е важно той да е конфигуриран правилно. За да забраните дадена услуга, вие сте длъжни да сложите "#" в началото на реда. Изобщо, поставянето на "#" в началото на ред във всеки от конфигурационните файлове на UNIX-системите, изключва съответния ред. Основния практически метод е да изключите услуги, с които не сте запознати. Идеалният случай ще е, ако в inetd.conf не е записан нито един такъв.
Малък пример:
Правите например web-сървър, т.е. достатъчно е да включите само: shh и httpd и НИЩО ДРУГО.
Информацията относно shh е дадена по-долу.
Ако пък решите да не използвате демоните във файла inetd.conf, то можете просто да включите inetd. За да направите това редактирайте файла /etc/rc.conf и изменете:
CODE
1. inetd_enable="YES"
на
CODE
1. inetd_enable="NO"
В този случай никой няма да може да използва telnet, rlogin или ftp за достъп до вашия компютър.
Ако искате да използвате inetd, разгледайте възможноста да работите с tcp wrappers.
Ако решите да оставите inetd, регистрирайте и при нужда увеличета количеството свързванията в минута (.. .. .. ).
Малко допълнение:ако имате "бавно" свързване (например модем), това не е от значение, ако обаче свързването е бързо (64к), то този параметър може да бъде използван за създаването на DoS атака (Denied of Service). Зломишленика би могъл да създаде прост shell-сценарий, за да предизвика над 256 свързвания от вашия компютър, което ще застави inetd да отключи тази служба . От друга страна, ако искате да поддъпжате едновремено 1024 връзки - сте длъжни да конфигурирате правилно inetd, защото в случай някой може отново да предизвика DoS и по този начин да повреди вашия компютър. Следователно конфигурационният файл /etc/rc.conf трябва да съдържа следното:
inetd_enable="YES"
inetd_flags="-l -R 1024"
това ще включва регистрацията (ключ-l) и максималното количество ще бъде увеличено до 1024.
Би било добре, ако се сетите да измените и файла /etc/syslog.conf в директорията /etc, но за това ще си поговорим по-късно, когато разгледаме syslogd.
SSH (Secure Shell)
По-рано споменах, че в някои случаи е възможно да не използвате inetdНапример, ако поддържате 1000 те Web, News или NFS не е необходими да включвате други служби на компютъра си. "Е, тогава как да управлявам машинарията си?" - предполагам това е вашият въпрос. Отговора ми е: чрез SSH. Можете да влезете в системата, използвайки SSH (Secure Shell).
Secure Shell е разработен като алтернативен вариант на rsh, rlogin и други Berkeley r* команди, но SSH може да бъде използван и вместо такива приложения като telnet и ftp. SSH има много характеристики, но основно се използва за шифроване на съединения, за да бъдат предпазени видните текстови паролии и останалата част от данните, пътешествеши в "чистия си вид". Ако използвате telnet, вашето свързване може да бъде проследено.(Ако си мислите, че S/Key е решение, длъжна съм да ви огорча: при неговата реализация все още съществуват проблеми с вмъкването на данните и заграбването на връзката.)
Надявам се, че вече сте стигнали до нужното ниво, за да включите inetd изцяло и да установите SSH. Ако сте сигурни, че няма да преживеете без всички включени в inetd услуги, то тогава включете регистрацията и увеличете до максимум количеството на свързвания в минута.
"Натоварването" на SSH става чрез ftp://ftp.funet.fi/pub/unix/security/login/ssh или още по-просто:
1. cd /usr/порты/security/ssh
2. make install
Ако пък не сте UNIX-клиенти, то SSH за Windows можете да намерите на:
http://fox.doc.ic.ac.uk/~ci2/ssh/
http://www.zip.com.au/~roca/ttssh.html
SecureCRT от http://www.vandyke.com
Inetd (част ІІ)
telnetd
И така, вие упорито отказвате да престанете да използвате inetd.
Тогава ви предлагам, да разгледаме опцийте, които ще помогнат да направи тази услуга по-безопастна. Нападателят за начало ще събере информация за мрежата или системата, която е решил да разбие. Първото, което можете да направите е да добъвите ключ "-h" за демона telnet:
telnet stream tcp nowait root /usr/libexec/telnetd telnetd -h
Какво е написано в .. .. ..?
#man telnetd
.. .. .. ..
-h не дава специфична информация за машината преди влизането в системата да не е напълно завършено.
.. .. .. ..
Лошото е , че има много други начини да бъде събрана информация относно системата. Ако не искате да пускате telnet демона, просто добавете # в началото на реда:
#telnet stream tcp nowait root /usr/libexec/telnetd telnetd
Допълнително можете да добавите ключ "-U" за telnet демона, който установява връзка само, ако за това има запис в DNS:
telnet stream tcp nowait root /usr/libexec/telnetd telnetd -h -U
Това малко ще спомогне за общата безопастност на вашата система.
Ftpd
Нека сега да погледнем ftpd. В FreeBDS има демон ftp, който е така сконфигуриран, че да прави регистрация (логиране). Можете да видите, че ftpd се включва чрез ключа
"-l" в inetd.conf. следва така да конфигурирате вашия syslogd (syslog демон), че да обезпечите поддръжката на портокола на генерираният демон ftp.
Какво е написано в .. .. .. ?
#man ftpd
.. .. .. ..
-l всеки сеанс ftp(l) се регистрира посредством syslog чрез LOG_FTP.
Ако тази опция присъства два пъти, то: retrieve (get), send (put),append, delete, make directory, remove directory,а също и операцийте за преименуване и техните аргументи ще бъдат регистрирани!!!.
Ще разрешим на ftpd да портоколира своите действия. Във файла /etc/syslog.conf (също `man 5 syslog.conf`) добавете следният ред:
ftp.* /var/log/ftpd
Включете командата:
1. touch /var/log/ftpd
по този начин syslogd няма да може да създава файлове.
Не забравяйте да добавяте името на новия log-файл в другия конфигурационен файл /etc/newsyslog.conf, за да заставите демона периодически да сменя файловете.
Ако искате по-подробна информация за вашия ftp демон, просто добавете още един символ "-l" в реда ftp в /etc/inetd.conf:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -l
Вместо стандартния UNIX-портокол ftp би трябвало да бъде използвана командата scp (Secure Copy, която се явява част от пакета SSH), но ако вие все още искате достъпа до ftp да си остане анонимен, то пуснете ваши ftp демон с ключ "-А":
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -A
Можете да редактирате и /etc/ftpwelcome, така ще предопредите, че ftpd допеска само ананимни свързвания и регистрираните ползватели са длъжни да използват scp вместо ftp. Ако позволите анонимния достъп до ftp, то задължително трябва да използвате ключа -S, за да могат да бъдат регистрирани анонимните свързванитя по ftp:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -A -S
fingerd
Службата finger не позволява да бъдат извършени запитвания без името на ползвателя. И това е съвсем правилно. Ако желаете да се откажете от изпълнението на услугите на finger просто сложете познатото "#" в началото на реда. Ако искате те да бъдат изпълнявани, то разрешете регистрацията добавяйки ключа "-l":
finger stream tcp nowait nobody /usr/libexec/fingerd fingerd -s -l
Портоколите от fingerd се пращат в /var/log/messages. Ако искате да имате портоколите на демона, но те да се намират в друг файл, то добавете следния ред към вашия /etc/syslog.conf файл:
daemon.notice /var/log/fingerd
В .. .. .. :
$ man 5 syslog.conf
Обичайно забранявам изпълнението на talk и comsat, а също и други услуги, които лично на мен не са ми необходими. Както ви казах по-рано, ако не знаете какво прави дадена служба или тя не ви е нужна - прекъснете нейното изпълнение.
Някои .. .. .., в които можете да откриете полезна информация за мрежовото конфигуриране: inetd, ftpd, telnetd, fingerd, syslogd, comsat, talkd, rshd, rlogind, и inetd.conf. Погледнете също и препратките (SEE ALSO) съдържащи се на тези страници.
Ipfw (IP FireWall)
IP FireWall просто филтрира пакети - ни повече, ни по малко.
Препоръчвам ви да разгледате поддръжката на ipfw в ядрото. Обичайно поддръжката на ipfw се компилира и в болшинството от ядрата config изглежда приблизително така:
options IPFIREWALL #finger
options IPFIREWALL_VERBOSE #log
options IPFIREWALL_DEFAULT_TO_ACCEPT
Първия ред включва в ядрото основната IP FireWall поддръжка.
Втория ред конфигурира ipfw, така че да бъдат регистрирани всички приети или отхвърлени пакети.
Третия ред приема всякакви свързвания и пакети. Ако този ред не присъства, ipfw ще връща всички пакети без изключение.
Забележка!
ИЗКЛЮЧЕТЕ ВСЯКА ОПЦИЯ, АКО НЕ ЗНАЕТЕ ИЛИ НЕ ПОМНИТЕ КАКВО ПРАВИ ТЯ!!! Обратното е неправилен метод в конфигурирането на firewall`а. Всички пакети трябва да бъдат отхвърлени. НЕ добавяйте опцията IPFIREWALL_DEFAULT_TO_ACCEPT, ако искате да създадете безопастна система или firewall. Убедете се , че в началото всички пакети са върнати и чак след това използвайте опцията, която ще разреши свързването/ пакетите. Погледнете за по-подробна информация /etc/rc.firewall
Бърз поглед върху /etc/rc.firewall и примерни файлове на конфигурацията, а също и върху схемата за инсталиране на firewall`а можете на хвърлите, ако отидете на URL`а в края на статията.
Log_in_vain
Възможно е и да измените някои полезни променящи се ядра чрез командата sysctl:
1. sysctl -w net.inet.tcp.log_in_vain=1
2. sysctl -w net.inet.udp.log_in_vain=1
Това ще обезпечи регистрацията на предприетите свързвания, които сървъра не умее да изпълнява. Например, ако нямате сървър DNS на компютъра си и някой се опита да го използва като DNS, вие ще видите следното съобщение:
Connection attempt UDP yourIP:53 from otherIP:X (където X - даден порт >1023)
Това съобщение може да бъде видяно с помоща на командата
#dmesg
dmesg показва системния буфер на съобщенията на ядрото. Но в буфера се съдържа малко количество съобщения. Те се регистрират в /var/log/messages
1. tail -1 /var/log/messages
Jun 12 19:36:03 machi /kernel: Connection attempt UDP yourIP:53 from otherIP:X

Заключение
И така, надявам се научихте нещо повече онтосно теорията за безопастност и можете да направите машината си по-безопастна от преди. Сега можете да извършите някои манипулаций, които ще ви покажат дали сте си хвърлили труда на вятъра.
$ netstat -na | grep LISTEN
тази команда ще ви съобщи, какви портове имат услугите чакащи свързване. Колкото по-малко, толкова по-добреJ Този, който ще сканира портовете ви, за да намери, кои от тях са отворени ще види същото. Така че, убедете се дали syslog действително регистрира съобщения:
1. cd /var/протокол
2. tail -10 fingerd ftpd messages
Ако не видите нищо във вашите портоколи, то проверете дали сте пуснали на ново inetd и syslogd процесите:
1. kill -HUP `cat /var/run/syslog.pig` `cat /var/run/inetd.pid`
Файлови системи
Тъй като в UNIX всичко се счита за файл, много е важно да защитите вашите файлови системи. Този процес започва преди поставянето на самата OS: нужно е да изчислите и да разбиете хард диска си на части.
Какво трябва да обмислите и какво сте длъжни да знаете?
Първо: можете да монтирате различни файлови системи с различни параметри.
Второ: възможно е да поискате да ескпортирате файлови системи, тогава ще имате по-прозрачно управление.
Ако сте пристигнали от света на Linux, обърнете внимание, че докато Linux инсталира цялата OS на един .. .. .. раздел "/", то FreeBDS прави инсталирането в три файлови системи "/", "/usr" и "/var". това облекчава използването на някои програми (например командата dump).
Безопастноста има и някой преимущества.
Едно от тях, което аз обикновенно използвам е разделението на разделите на области, където ползвателите имат право да пишат и други области, където нямат това право. Областите, в които ползвателите имат право да пишат следва да бъдат указани чрез опцията "nosuid". И така трябва да имате един раздел за директория на ползвателите:
home или /usr/home. Можете да създадете отделен раздел за /var/tmp, а после да укажете вашия /tmp за този раздел:
1. rm -rf /tmp
2. ln -s /var/tmp /tmp
Например можете да направите следното:
1. cat /etc/fstab
2. Device Mountpoint FStype Options Dump Pass
#
/dev/sd0s1b none swap sw 0 0
/dev/sd0s1a / ufs rw 1 1
/dev/sd0s1g /usr ufs rw 2 2
/dev/sd0s1h /usr/home ufs rw,nosuid 2 2
/dev/sd0s1f /var ufs rw 2 2
/dev/sd0s1e /var/tmp ufs rw,nosuid 2 2
proc /proc procfs rw 0 0
Вижте, дали всички директорий, където ползвателите могат да пишат са в "nosuid" или с помоща на chmod са в такова положение, че ползвателите да не могат да напишат нищо. В FreeBDS таво може да бъде направено чрез /var/spool/uucppublic или вие да поставите вашата файлове система "/var" в положение "-nosuid".
1. chmod o-w /var/spool/uucppublic
Ако пък искате да намерите всички ваши директорий от изпълнителния лист, пуснете:
1. find / -perm -0777 -type d -ls
Как да откриете файловете, коити са се "разположили" във вашата система като suid или guid? Да потърсим с помоща на find (1):
1. find / -perm -2000 -ls
2. find / -perm -4000 -ls
За по-компактен извод можете да не използвате ключа "-ls". Един от най-простите способи е да направите "chmod 000" на тези бинарни файлове, които никога няма да бъдат използвани. Обичайно това се отнася за uustat, uucico (ако няма да използвате uucp). Отнася се и до ррр и ррpd в случай, че нямате намерението да ползвате РРР на тази машина. Ако намя да печатате 1000 .. .. .. с тази или на тази машина, можете да поставите "chmod 000" на lpr, lprq и lprm. Тук ще ме попитате, какво може да спре хакера просто да демонтира и после на ново да монтира без "-nosuid".
Ами нищо до момента, в който не измените securelevel.
Securelevel
В ядрото BDS има такова понятие, като securelevel. Докато някои спорят, дали това е правилно или не, трябвали да се приема или не, аз ще се опитам да разбера за какво изобщо става дума. Securelevel това е нивото на защита на ядрото. Под различни нива приемаме различните методи на проверка на защитата на системата. Доста неясно…

#man 8 init

Ядрото работи с четри нива на безопстност. Всеки процес на суперползвателя може да покачи нивото на безопастност, но само init може да го намали.
Нива на безопастност:
-1 Винаги необезопасен режим. Включете системата на ниво 0.

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

1 Безопасен режим. Системата е неизменяема и системното допълнение не може да бъде пуснато само чрез ползването на флагове; дисовете за монтиране на файловите системи, устройствата /dev/mem и /dev/kmem не могат да бъдат отворени за запис.

2 Много безопасен режим. Същия като безопастния режим. Допълнение: дисковете не могат отворени за запис ( с изключение на командата mount(2)), независимо дали са инстолирани или не. Това ниво предотвратява подправянето на файлови системи чрез демонтирането им, но също така забавя .. .. .. на newfs (8), когато системата е многоползвателска.
Ако нивото на безопастност в началото е -1, то init ще го остави непроменено. В случай ще го намали, за да работи системата на ниво 0 при едноползвателсики режим и на ниво 1 при многоползвателски режим. Ако ви е нужно ниво 2 - можете на го използвате при едноползвателски режим, например в сценария на включването на /etc/rc,използвайки sysctl(8).
Например, ако системата ви е Web-сървър, можете благополучно да вдигнете нивото си на защита на 2. Но ако включвате Х-сървър, използването на securelevel 1 или по-високо може да ви създаде неприятности. Причината е, че Х-сървърите трябва да отварят /dev/mem и /dev/kmem за записи, а ниво 1 забранява изпълнението на тези операции. Наистена можете да направите и следното: можете да зададете нивото си на защита след като вече сте включили Х-сървъра, но ако сте пуснали такъв, то имате доста други сериозни проблеми относно безопастноста, ии да се безпокойте за securelevel ви е последната грижа
За да разберете повече за securelevel:
1. sysctl kern.securelevel,
за да вдигнете нивото на защита:
1. sysctl -w kern.securelevel=X
където X - 0, 1 или 2.
Могат да възникнат проблeми, ако модернизирате системата си с помоща на "make world" или ако прeправяте ядрото при работа на securelevel 1 или по-високо. .. .. .. .. ..
1. ls -lo /kernel
-r-xr-xr-x 1 root wheel schg 1061679 юни 30 01:27 /kernel
този "schg" предпазва вашето ядро:
1. id
uid=0(root) gid=0(wheel) groups=0(wheel), 2(kmem)
1. sysctl kern.securelevel
kern.securelevel: 2
1. rm -rf /kernel rm: /kernel: Operation not permitted
2. mv kernel /tmp
mv: rename /kernel в /tmp/kernel: Operation not permitted
Ако работите с securelevel 1 или 2 този флаг няма да може да се включи:
1. chflags noschg /kernel
chflags: /kernel: Operation not permitted
Трябва да отбележа, че файла /boot.config може да бъде използван, за да бъде изменено ядрото използвано при зареждането. За да стане тази операция невъзможна е необходимо да направите следното:
1. touch /boot.config
2. chflags schg /boot.config
По този начин ще имате няколко двоични включвания с schg флага, установени във вашата система.
1. ls -l
6cd
/sbin | grep schg
-r-x------ 1 bin bin schg 204800 юли 19 20:38 init
1. ls -lo /bin | grep schg
-r-sr-xr-x 1 root bin schg 192512 юли 19 20:36 rcp
Дотук говорихме за неизменимите системни флагове, можем да разгледаме случай на изпълнение на chflags schg .. .. .. /sbin и /bin. Това ще направи по-труден достъпа до "задния вход" на вашата система.
1. chflags schg /bin/*
2. chflags schg /sbin/*
Тъй като /sbin може лесно да бъде премахнат и след това да бъде създан нов /sbin, е хубаво да проведете същата операция и над каталозите:
1. chflags schg /bin; chflags schg /sbin
Запомнете! Ако сте направили доста изменения във файловите флагове, то това ще доведе до проблеми при "make world". В този случай съвета ми е да направите "make world" в едноползвателския режим.
.. .. .. свързани с по-горе изредените теми: init(8), chflags(1), sysctl(8.


Публикувана от Unix на August 20 2008
Коментари
Няма написани коментари
Напишете коментар
Трябва да сте регистриран за да напишете коментар
Оценки
Оценяването е достъпно единствено за потребителите.

Влезте в акаунта си или се регистрирайте за да можете да давате оценки.

Отличен! Отличен! 100% [1 Гласувал]
Много добър Много добър 0% [Няма гласували]
Добър Добър 0% [Няма гласували]
Среден Среден 0% [Няма гласували]
Слаб Слаб 0% [Няма гласували]
Вход
Потребител

Парола



Не сте потребител?
Натиснете тук за да се регистрирате.

Забравихте паролата си?
Поискате си нова тук.
Downloads

New Downloads

NAVIGON-Europe ...
NAVIGON Europe ...
NAVIGON Europe ...
NAVIGON Europe ...
µTorrent 3.4.1 ...
BitTorrent 7.9....
ProgDVB 7.04.2 ...
ProgDVB 7.04.2 ...
Wine 1.7.17
sakis3g
Wise Disk Clean...
DAEMON Tools Li...
opam
TurboFTP 6.30 B...
Skype 6.3.73.10...
FileZilla 3.7.0...
ChrisTV 5.75
BSPlayer Pro 2....
Rotativki
SquirrelMail + ...

Top 10 Downloads

n-Track Studio ... [11115]
Super MP3 Downl... [10910]
Registry Mechan... [10838]
Microsoft Secur... [10680]
Rotativki [9787]
Hiren`s v10.0.9 [8623]
K-Lite Mega Cod... [8104]
BitComet 1.21 F... [8093]
Black Market fo... [6370]
Slax + Hiren's ... [6104]
Ново от Калдата