МУШУТИС
харъяа ХоМТС Мэдээлэлийн Технологийн Оюутан М.Эрхэмбаатар
2002
оны 11-р сарын 19.
"Archer"
- Автоматаар нєєцлєн дамжуулагч
Программыг
хийх болсон шалтгаан:
Єнєє vед интернет болон интранетийн толгой сервер машинууд маш
єндєр хариуцлагатай ажиллах болсон ба єєрийн сvлжээний хэрэглэгчдийн
мэдээллийн (файл, хавтас, баримт бичиг, єгєгдлийн бааз, веб
сайт, хэрэглэгчийн тохиргоо) аюулгvй байдал найдвартай ажиллагааг
хангах болдог. Гэвч ямар нэгэн байдлаар зарим vед хэрэглэгчидийн
эдгээр мэдээлэл устгагдах, єєрчлєгдєх гэх мэт явдал тохиолддог.
Энэ нь сvлжээ хакерийн довтолгоонд єртєх, вирустэх, программ
хангамжуудын эвдрэл, алдаа (bug), систем админстратор юмуу эсвэл
хэн нэгэн системийн хэрэглэгчийн буруутай vйл ажиллагаа, гадний
нєлєє (тог тасрах, диск тєхєєрємж буюу hdd эвдрэх) гэх
мэт шалтгаанаас болж систем эвдэрч, гэмтэх, дээрхи хэрэгцээт
мэдээлэл алдагдах, устах vйл ажиллагаа юм.
Ийм явдал тохиолдоно гэж урдаас бэлтгэн чухал хэрэгцээт мэдээлэлийн
нєєц хувийг авч хадгалах буюу єєр найдвартай гэж vзсэн сервер
рvv зєєж авч байх нь сvлжээний хэрэглэгчдийн мэдээлэлийг алдагдахыг
зогсооно гэж vзэж хэрэглэхэд хялбар, найдвартай ажиллагаатай
программ хангамж бvтээх эхлэл болсон.
Эхлэлд
нь очих
Программ
зорилго:
Интернет ба интранетийн Linux сервер машин дээрх заагдсан файл,
хавтас, єгєгдлийн бааз зэрэг мэдээлэлийг автоматаар нєєц хувь
vvсгэн хадгалж, єєр сервер рvv Ftp (file fransfer protocol)
ашиглаж заагдсан он сар єдєр дамжуулах явдал юм. Єєрєєр хэлбэл
цагийн хуваарьтай (task scheduler) ажиллана.
Эхлэлд
нь очих
Программыг
хийхэд ашигласан технологи ба программ хэрэгсэл:
Linux системийн GNU gcc, GNU g++ комплятор ашиглаж программчлалын
C хэл дээр бичигдсэн ба build хийхэд Make утилитийг хэрэглэсэн.
Программийн тохируулгийн файл буюу configuration file -ийн бичиглэлийг
уншиж єгєгдєлєє авах хэсгийг GNU lex, GNU yacc компляторуудийг
хэрэглэсэн.
Эхлэлд
нь очих
Программийг
суулгах:
Ихэнхи тєрлийн стандарт Linux систем дээр суулгаж болох ба системийн
цагийн хуваарь болох Vixie Cron программ, РНР интерпретатор
суусан байх шаардлагатай.
Коммандуудын
дараалал:
Системд archer гэсэн шинэ хэрэглэгч нэмэх
#adduser
archer
шинэ хэрэглэгчийн нууц vгийг єгєх
#passwd
archer
Программын инсталл байгаа директор руу очих
#cd
<archer программын инсталл байгаа директор>
Архивлагдсан хэлбэртэй инсталл файлыг задлах
#tar
xzf archer-1.0.tar.gz
Задлагдсан эх код байгаа директор руу орох
#cd
archer-1.0
Компляци, буилд хийж (compile, build) бинари (binary)
файлуудыг гарган авах
#make
Гаргаж авсан файлуудыг системийн директор руу хуулах
#make
install
Эхлэлд
нь очих
Программыг
ажиллуулах:
Заавал санаж байх ёстой зvйл бол уг программыг эхлvvлэхийн ємнє
системийн цагийн хуваарлигч программд єєрийн гэсэн зайг авах
хэрэгтэй. Yvний тулд дараах алхамуудыг хийнэ:
#crontab
-u archer -e
* * * * /usr/local/archer/archerd
гэж бичээд Ctrl+q+w товчлуудын хослолыг дарна.
Дараагийн
санаж байх зvйл бол нєєцлєж байх ажлуудыг єєрчилсєн л бол archerd,
crond программуудыг дахиж ажиллуулах шаардлагатай. Ингэснээр
таны саяны хийсэн єєрчилєлт хvчинтэй болох болно. Yvний тулд
дараах коммандуудыг єгнє:
Суулгасан директор руу очих
#cd
/usr/local/archer
Программын тохируулгийн файлыг (configuration file) засах
буюу ажлын єгєгдєлvvдээ зааж єгєх
#vi
archer.conf
Программыг эхлvvлэх
#./archerd
Системийн цагийн хуваарлагч даемон программыг (task scheduler
daemon application) дахин эхлvvлэх
#/etc/init.d/crond
restart
Эхлэлд
нь очих
Ажилуудаа
тодорхойлж єгєх буюу автоматаар нєєцлєн, єєр сервер рvv дамжуулж
байх файл, директоруудыг заан єгєх:
Linux системд онцгой ач холбогдол бvхий файл, директорууд байдаг
ба vvнд системийн бvх тохиргоог агуулсан /etc/*,
хэрэглэгчийн єєрийн суулгаж тохируулсан /usr/local/*,
хэрэглэгчидийн хувийн бичиг баримтыг агуулсан /home/*,
хэрэглэгчидийн бvх эмэйлийг агуулсан /var/spool/mail/*,
єгєгдлийн баазуудийн файлууд (жишээ нь MySQL баазын хувьд хэрэглэгч
єєрєє тохируулсан бол ихэвчлэн /usr/local/mysql/data,
системээс цаанаас нь суулгагдаж ирсэн бол /var/spool/mysql/*
директорт агуулагдаж байдаг.), веб сайтуудын файлуудыг агуулсан
/var/www/html/*
гэх мэт чухал мэдээлэл бvхий директор файлуудыг тэдгээрийн єєрчилєгдєж
байдаг хєдєлгєєнєєс хамаарч тvvнд нь тохирсон хугацааны давтамжинд
нєєц хувийг нь хадгалан авч байх юм.
Єєрєєр
хэлбэл хэрэглэгчидэд мэйл єдєр тутам, цаг тутам ирдэг учраас
/va/spool/mail
директорыг цаг тутамд нєєцлєх, харин системийн тохиргоог сардаа
л нэг удаа єєрчлєх тул /etc
директорыг сард нэг удаа нєєцлєх, хэрэглэгчидийн бичиг баримтыг
єдєр бvр эсвэл долоо хоног бvрт нєєцлєх гэх мэт тухайн директор,
файлын єєрчлєгдєх байдаг давтамжанд нь тохируулж нєєц vvсгэвэл
илvvдэл vйлдэл хийж системийг хэт ачаалалд оруулахаас зайлсийж
болно.
Archer
программд дээрхи єгєгдлийг заан єгєхдєє аrcher.conf файлд тодорхой
стандартын дагуу бичиж єгєх хэрэгтэй.
Жишээ нь:
/var/spool/mail директорыг
mailbackup нэртэй
ажил болгон єдєр бvр нєєцлєж /home/backups/mail/
директорт <он>-<сар>-<єдєр>.tar.gz
нэртэйгээр хадгалж байхыг зааж єгье. Энд <он>-<сар>-<єдєр>
нь 2002-November-12.tar.gz
гэх мэт тухайн нєєцлєлт хийсэн он сар єдрєєр файлаа нэрлэхийг
зааж байна.
workname
"mailbackup" {
format = "%Y-%M-%B";
srcpath = "/var/spool/mail";
destpath = "/home/backups/mail";
day = "*";
};
гэж
бичигдэнэ. Yvнд day="*";
гэдэг нь єдєр бvр нєєцлєгдєх ажил гэдгийг зааж байна. Yvний
оронд долоо хоног бvр бол week
= "*", сар бvр бол month
= "*" гэж зааж єгч болно. Єєр ftp.yourhost.edu
сервер рvv ftp ашиглаж дамжуулж байя гэвэл дараах маягаар бичиж
єгнє:
workname
"mailbackup" {
format = "%Y-%M-%B";
srcpath = "/var/spool/mail";
destpath = "/home/backups/mail";
day = "*";
ftphost = "ftp.yourhost.edu";
ftpdestpath = "/home/myname/mybackups/mail";
ftpusername = "myname";
ftpuserpass = "mypass";
};
----------
Энд
ftpdestpath = "/home/myname/mybackups/mail";
гэдэг тухайн дамжуулж байгаа серверийн (remote ftp server)
нєєцлєгдсєн файлыг хадгалах директор (destination directory
path) юм.
Дээрхь
маягаар archer.conf
тохиргооны файлыг дурын текcт эдитор хэрэглэн ажилуудаа тодорхойлж
єгнє.
Жишээ
нь: Linux системийн Vi программыг ашиглаж засахдаа дараахь коммандыг
єгнє.
$vi
archer.conf
Эхлэлд
нь очих
Ажилыг
гvйцэтгэх цагын хуваарийг зааж єгєх хэлбэрvvд:
Цагын хуваарийг сар, долоо хоног, єдрєєр зааж єгч болно.
Жишээ нь:
| Єгєгдлийн
бичигдэх хэлбэрvvд |
Тайлбар |
| month
= "*"; |
Сар
бvр |
| month
= "Jan, Mar, Apr, Oct"; |
1р,
3р, 4р, 10р сар бvрийг тоочих |
| month
= "Jan-Jun"; |
1р
сараас 6р сар хvртэл гэж интервал зааж єгєх |
| week
= "*"; |
Долоо
хоногийн гариг бvр |
| week
= "Mon, Wed, Fri"; |
Даваа,
Лхагва, Баасан гариг бvр гэж тоочих |
| week
= "Mon-Fri"; |
Даваагаас
Баасан гариг хvртэлхи гарагуудад |
| day
= "*"; |
Єдєр
бvр |
| day
= "1, 12, 31"; |
Сарийн
1нд, 12нд, 31нд гэж тоочих |
| day
= "1-12"; |
Сарын
1нээс 12н хvртэлх єдрvvдэд |
гэх
мэт хэлбэрээр зааж єгнє.
Эхлэлд
нь очих
Программын
ажиллагааны зарчим:
1.
Тохиргооны файл (archer.conf)
-ийг уншиж аль аль директор, файлуудыг хадгалж авах талаарх
єгєгдєлєє авна.
2. Єгєгдєлvvд зєв хэлбэрээр бичигдсэн эсэхийг шалгана.
3. Єгєгдєлvvд дээр vндэслэн ажлуудыг системийн цагын хуваарьт
зохих хэлбэрт нь оруулж бичнэ.
4. Єгєгдсєн ажил бvрт харгалзах script кодыг гаргаж ажлын нэрээр
нэрлэж єєрийн директорт хадгална.
5. Єгєгдсєн огноо болох бvрт тухайн ажлыг нєєцлєж, хэрвээ єєр
сервер рvv дамжуулна гэж заагдсан бол тэр сервер рvv холбогдож
мэдээлэлийг дамжуулна.
6. Мэдээлэлийг бvрэн гvйцэт гvйцэтгэж, дамжуулсан эсэх талаархи
мэдээлэлийг єєрийн тэмдэглэлийн файл (archer.log)
д бичнэ.
Эхлэлд
нь очих
Дvгнэлт
Энэхvv
программ нь зєвхєн Linux системтэй сvлжээний сервер машинд зориулагдсан
бєгєєд систем администратор гэгч хариуцлагатай ажил хийдэг залуус,
мэргэжилтэнvvдийн єдєр тутмын ажлыг бага ч болов автоматжуулах,
тэдний хэрэглэгчдийн мэдээлэлийг нєєцлєн хадгалах зорилготай
юм. Уг программын эх кодыг цаашид www.asuult.net,
www.erkhemee.com
веб сайтууд дээр ил тавьж Open source software хэлбэрээр
олон нийттэй хамтран хєгжvvлэх зорилт тавьж байгаа.
Монголын
программистууд
Маш олон болтугай!
Эхлэлд
нь очих