diff --git a/mn_MN.UTF-8/books/handbook/Makefile b/mn_MN.UTF-8/books/handbook/Makefile
index 575efe265f..ea6d5379a0 100644
--- a/mn_MN.UTF-8/books/handbook/Makefile
+++ b/mn_MN.UTF-8/books/handbook/Makefile
@@ -1,277 +1,290 @@
# $FreeBSD$
#
# The FreeBSD Mongolian Documentation Project
#
# Original revision 1.107
#
# Build the FreeBSD Handbook.
#
#
# ------------------------------------------------------------------------
#
# Handbook-specific variables
#
# WITH_PGPKEYS The print version of the handbook only prints PGP
# fingerprints by default. If you would like for the
# entire key to be displayed, then set this variable.
# This option has no affect on the HTML formats.
#
# Handbook-specific targets
#
# pgpkeyring This target will read the contents of
# pgpkeys/chapter.sgml and will extract all of
# the pgpkeys to standard out. This output can then
# be redirected into a file and distributed as a
# public keyring of FreeBSD developers that can
# easily be imported into PGP/GPG.
#
# ------------------------------------------------------------------------
.PATH: ${.CURDIR}/../../share/sgml/glossary
MAINTAINER= doc@FreeBSD.org
DOC?= book
FORMATS?= html-split
HAS_INDEX= true
USE_PS2PDF= yes
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
IMAGES_EN = advanced-networking/isdn-bus.eps
IMAGES_EN+= advanced-networking/isdn-twisted-pair.eps
IMAGES_EN+= advanced-networking/natd.eps
IMAGES_EN+= advanced-networking/net-routing.pic
IMAGES_EN+= advanced-networking/static-routes.pic
IMAGES_EN+= geom/striping.pic
IMAGES_EN+= install/adduser1.scr
IMAGES_EN+= install/adduser2.scr
IMAGES_EN+= install/adduser3.scr
IMAGES_EN+= install/boot-loader-menu.scr
IMAGES_EN+= install/boot-mgr.scr
IMAGES_EN+= install/config-country.scr
IMAGES_EN+= install/console-saver1.scr
IMAGES_EN+= install/console-saver2.scr
IMAGES_EN+= install/console-saver3.scr
IMAGES_EN+= install/console-saver4.scr
IMAGES_EN+= install/disklabel-auto.scr
IMAGES_EN+= install/disklabel-ed1.scr
IMAGES_EN+= install/disklabel-ed2.scr
IMAGES_EN+= install/disklabel-fs.scr
IMAGES_EN+= install/disklabel-root1.scr
IMAGES_EN+= install/disklabel-root2.scr
IMAGES_EN+= install/disklabel-root3.scr
IMAGES_EN+= install/disk-layout.eps
IMAGES_EN+= install/dist-set.scr
IMAGES_EN+= install/dist-set2.scr
IMAGES_EN+= install/docmenu1.scr
IMAGES_EN+= install/ed0-conf.scr
IMAGES_EN+= install/ed0-conf2.scr
IMAGES_EN+= install/edit-inetd-conf.scr
IMAGES_EN+= install/fdisk-drive1.scr
IMAGES_EN+= install/fdisk-drive2.scr
IMAGES_EN+= install/fdisk-edit1.scr
IMAGES_EN+= install/fdisk-edit2.scr
IMAGES_EN+= install/ftp-anon1.scr
IMAGES_EN+= install/ftp-anon2.scr
IMAGES_EN+= install/hdwrconf.scr
IMAGES_EN+= install/keymap.scr
IMAGES_EN+= install/main1.scr
IMAGES_EN+= install/mainexit.scr
IMAGES_EN+= install/main-std.scr
IMAGES_EN+= install/main-options.scr
IMAGES_EN+= install/main-doc.scr
IMAGES_EN+= install/main-keymap.scr
IMAGES_EN+= install/media.scr
IMAGES_EN+= install/mouse1.scr
IMAGES_EN+= install/mouse2.scr
IMAGES_EN+= install/mouse3.scr
IMAGES_EN+= install/mouse4.scr
IMAGES_EN+= install/mouse5.scr
IMAGES_EN+= install/mouse6.scr
IMAGES_EN+= install/mta-main.scr
IMAGES_EN+= install/net-config-menu1.scr
IMAGES_EN+= install/net-config-menu2.scr
IMAGES_EN+= install/nfs-server-edit.scr
IMAGES_EN+= install/ntp-config.scr
IMAGES_EN+= install/options.scr
IMAGES_EN+= install/pkg-cat.scr
IMAGES_EN+= install/pkg-confirm.scr
IMAGES_EN+= install/pkg-install.scr
IMAGES_EN+= install/pkg-sel.scr
IMAGES_EN+= install/probstart.scr
IMAGES_EN+= install/routed.scr
IMAGES_EN+= install/security.scr
IMAGES_EN+= install/sysinstall-exit.scr
IMAGES_EN+= install/timezone1.scr
IMAGES_EN+= install/timezone2.scr
IMAGES_EN+= install/timezone3.scr
IMAGES_EN+= install/userconfig.scr
IMAGES_EN+= install/userconfig2.scr
IMAGES_EN+= mail/mutt1.scr
IMAGES_EN+= mail/mutt2.scr
IMAGES_EN+= mail/mutt3.scr
IMAGES_EN+= mail/pine1.scr
IMAGES_EN+= mail/pine2.scr
IMAGES_EN+= mail/pine3.scr
IMAGES_EN+= mail/pine4.scr
IMAGES_EN+= mail/pine5.scr
IMAGES_EN+= install/example-dir1.eps
IMAGES_EN+= install/example-dir2.eps
IMAGES_EN+= install/example-dir3.eps
IMAGES_EN+= install/example-dir4.eps
IMAGES_EN+= install/example-dir5.eps
IMAGES_EN+= security/ipsec-network.pic
IMAGES_EN+= security/ipsec-crypt-pkt.pic
IMAGES_EN+= security/ipsec-encap-pkt.pic
IMAGES_EN+= security/ipsec-out-pkt.pic
IMAGES_EN+= vinum/vinum-concat.pic
IMAGES_EN+= vinum/vinum-mirrored-vol.pic
IMAGES_EN+= vinum/vinum-raid10-vol.pic
IMAGES_EN+= vinum/vinum-raid5-org.pic
IMAGES_EN+= vinum/vinum-simple-vol.pic
IMAGES_EN+= vinum/vinum-striped-vol.pic
IMAGES_EN+= vinum/vinum-striped.pic
IMAGES_EN+= virtualization/parallels-freebsd1.png
IMAGES_EN+= virtualization/parallels-freebsd2.png
IMAGES_EN+= virtualization/parallels-freebsd3.png
IMAGES_EN+= virtualization/parallels-freebsd4.png
IMAGES_EN+= virtualization/parallels-freebsd5.png
IMAGES_EN+= virtualization/parallels-freebsd6.png
IMAGES_EN+= virtualization/parallels-freebsd7.png
IMAGES_EN+= virtualization/parallels-freebsd8.png
IMAGES_EN+= virtualization/parallels-freebsd9.png
IMAGES_EN+= virtualization/parallels-freebsd10.png
IMAGES_EN+= virtualization/parallels-freebsd11.png
IMAGES_EN+= virtualization/parallels-freebsd12.png
IMAGES_EN+= virtualization/parallels-freebsd13.png
+IMAGES_EN+= virtualization/virtualpc-freebsd1.png
+IMAGES_EN+= virtualization/virtualpc-freebsd2.png
+IMAGES_EN+= virtualization/virtualpc-freebsd3.png
+IMAGES_EN+= virtualization/virtualpc-freebsd4.png
+IMAGES_EN+= virtualization/virtualpc-freebsd5.png
+IMAGES_EN+= virtualization/virtualpc-freebsd6.png
+IMAGES_EN+= virtualization/virtualpc-freebsd7.png
+IMAGES_EN+= virtualization/virtualpc-freebsd8.png
+IMAGES_EN+= virtualization/virtualpc-freebsd9.png
+IMAGES_EN+= virtualization/virtualpc-freebsd10.png
+IMAGES_EN+= virtualization/virtualpc-freebsd11.png
+IMAGES_EN+= virtualization/virtualpc-freebsd12.png
+IMAGES_EN+= virtualization/virtualpc-freebsd13.png
# Images from the cross-document image library
IMAGES_LIB= callouts/1.png
IMAGES_LIB+= callouts/2.png
IMAGES_LIB+= callouts/3.png
IMAGES_LIB+= callouts/4.png
IMAGES_LIB+= callouts/5.png
IMAGES_LIB+= callouts/6.png
IMAGES_LIB+= callouts/7.png
IMAGES_LIB+= callouts/8.png
IMAGES_LIB+= callouts/9.png
IMAGES_LIB+= callouts/10.png
IMAGES_LIB+= callouts/11.png
IMAGES_LIB+= callouts/12.png
IMAGES_LIB+= callouts/13.png
IMAGES_LIB+= callouts/14.png
IMAGES_LIB+= callouts/15.png
#
# SRCS lists the individual SGML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
SRCS+= audit/chapter.sgml
SRCS+= book.sgml
SRCS+= colophon.sgml
SRCS+= freebsd-glossary.sgml
SRCS+= advanced-networking/chapter.sgml
SRCS+= basics/chapter.sgml
SRCS+= bibliography/chapter.sgml
SRCS+= boot/chapter.sgml
SRCS+= config/chapter.sgml
SRCS+= cutting-edge/chapter.sgml
SRCS+= desktop/chapter.sgml
SRCS+= disks/chapter.sgml
SRCS+= eresources/chapter.sgml
SRCS+= firewalls/chapter.sgml
SRCS+= geom/chapter.sgml
SRCS+= install/chapter.sgml
SRCS+= introduction/chapter.sgml
SRCS+= jails/chapter.sgml
SRCS+= kernelconfig/chapter.sgml
SRCS+= l10n/chapter.sgml
SRCS+= linuxemu/chapter.sgml
SRCS+= mac/chapter.sgml
SRCS+= mail/chapter.sgml
SRCS+= mirrors/chapter.sgml
SRCS+= multimedia/chapter.sgml
SRCS+= network-servers/chapter.sgml
SRCS+= pgpkeys/chapter.sgml
SRCS+= ports/chapter.sgml
SRCS+= ppp-and-slip/chapter.sgml
SRCS+= preface/preface.sgml
SRCS+= printing/chapter.sgml
SRCS+= security/chapter.sgml
SRCS+= serialcomms/chapter.sgml
SRCS+= users/chapter.sgml
SRCS+= vinum/chapter.sgml
SRCS+= virtualization/chapter.sgml
SRCS+= x11/chapter.sgml
# Entities
SRCS+= chapters.ent
SYMLINKS= ${DESTDIR} index.html handbook.html
# Turn on all the chapters.
CHAPTERS?= ${SRCS:M*chapter.sgml}
SGMLFLAGS+= ${CHAPTERS:S/\/chapter.sgml//:S/^/-i chap./}
SGMLFLAGS+= -i chap.freebsd-glossary
pgpkeyring: pgpkeys/chapter.sgml
@${JADE} -V nochunks ${OTHERFLAGS} ${JADEOPTS} -d ${DSLPGP} -t sgml ${MASTERDOC}
#
# Handbook-specific variables
#
.if defined(WITH_PGPKEYS)
JADEFLAGS+= -V withpgpkeys
.endif
URL_RELPREFIX?= ../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
#
# rules generating lists of mirror site from XML database.
#
XMLDOCS= mirrors-ftp:::mirrors.sgml.ftp.inc.tmp \
mirrors-cvsup:::mirrors.sgml.cvsup.inc.tmp \
eresources:::eresources.sgml.www.inc.tmp
DEPENDSET.DEFAULT= transtable mirror
XSLT.DEFAULT= ${XSL_MIRRORS}
XML.DEFAULT= ${XML_MIRRORS}
NO_TIDY.DEFAULT= yes
PARAMS.mirrors-ftp+= --param 'type' "'ftp'" \
--param 'proto' "'ftp'" \
--param 'target' "'handbook/mirrors/chapter.sgml'"
PARAMS.mirrors-cvsup+= --param 'type' "'cvsup'" \
--param 'proto' "'cvsup'" \
--param 'target' "'handbook/mirrors/chapter.sgml'"
PARAMS.eresources+= --param 'type' "'www'" \
--param 'proto' "'http'" \
--param 'target' "'handbook/eresources/chapter.sgml'"
SRCS+= mirrors.sgml.ftp.inc \
mirrors.sgml.cvsup.inc \
eresources.sgml.www.inc
CLEANFILES+= mirrors.sgml.ftp.inc mirrors.sgml.ftp.inc.tmp \
mirrors.sgml.cvsup.inc mirrors.sgml.cvsup.inc.tmp \
eresources.sgml.www.inc eresources.sgml.www.inc.tmp
.include "${DOC_PREFIX}/share/mk/doc.project.mk"
.for p in ftp cvsup
mirrors.sgml.${p}.inc: mirrors.sgml.${p}.inc.tmp
${SED} -e 's,<\([^ >]*\)\([^>]*\)/>,<\1\2>\1>,;s,,,'\
< $@.tmp > $@ || (${RM} -f $@ && false)
.endfor
eresources.sgml.www.inc: eresources.sgml.www.inc.tmp
${SED} -e 's,<\([^ >]*\)\([^>]*\)/>,<\1\2>\1>,;s,,,'\
< $@.tmp > $@ || (${RM} -f $@ && false)
diff --git a/mn_MN.UTF-8/books/handbook/firewalls/chapter.sgml b/mn_MN.UTF-8/books/handbook/firewalls/chapter.sgml
index 5574cb61d4..942a3fa12d 100644
--- a/mn_MN.UTF-8/books/handbook/firewalls/chapter.sgml
+++ b/mn_MN.UTF-8/books/handbook/firewalls/chapter.sgml
@@ -1,3013 +1,3013 @@
Жозеф Ж.
Баарбиш
Хувь нэмэр болгон оруулсан
Брэд
Дэйвис
SGML уруу хөрвүүлж шинэчилсэн
Лодойсамбын
Баянзул
Орчуулсан
Галт хана
Галт хана
аюулгүй байдал
галт хана
Танилцуулга
Галт ханын тусламжтайгаар систем уруу орж байгаа болон түүнээс гарч байгаа өгөгдлийн урсгалыг шүүн нэвтрүүлэх боломжтой болдог.
Галт хана нь сүлжээгээр дамжин өнгөрч байгаа пакетуудыг, дүрмүүдэд
заасны дагуу эсвэл нэвтрүүлэх, эсвэл хаах үүргийг гүйцэтгэдэг.
Галт ханын дүрмүүд нь пакетийг протоколын төрөл, эхлэл хост хаяг, очих хост хаяг, эхлэл порт хаяг, очих порт хаяг зэрэг хэд хэдэн шинжээр нь шинжлэх боломжийг олгодог.
Галт ханыг ашигласнаар тухайн хостын болон сүлжээний аюулгүй байдлыг нилээд нэмэгдүүлж чадна. Галт ханын тусламжтайгаар дараах зүйлсийг хийх боломжтой :
Дотоод сүлжээнд байрлаж байгаа сервер машин, түүн дээр ажиллаж байгаа програм үйлчилгээг Интернэтээр дамжин орж ирж буй гадны урсгалаас хамгаалах, тусгаарлах.
Дотоод сүлжээнд байрлаж байгаа хостоос Интернэт уруу хандах хандалтыг хаах, хязгаарлах.
Network address translation буюу Сүлжээний Хаягийн Хөрвүүлэлтийг
(NAT) дэмжих. Өөрөөр хэлбэл дотоод сүлжээндээ хувийн IP хаяг хэрэглэж,
Интернэтэд гарахдаа дундаа нэг холболтыг (нэг IP хаяг эсвэл автоматаар оноосон бүлэг хаягаар) хуваан хэрэглэх.
Энэ бүлгийг уншсаны дараа, та дараах зүйлсийг мэдэх болно:
пакетийг шүүн нэвтрүүлэх дүрмүүдийг хэрхэн оновчтойгоор тодорхойлох.
&os;-тэй хамт суусан галт ханануудын ялгаа.
OpenBSD-н
PF галт ханыг хэрхэн тохируулах болон хэрэглэх.
IPFILTER-г хэрхэн тохируулах болон хэрэглэх.
IPFW-г хэрхэн тохируулах болон хэрэглэх.
Энэ бүлгийг уншихаасаа өмнө, та дараах зүйлсийг мэдсэн байх шаардлагатай:
&os; болон Интернэтийн тухай үндсэн ойлголт.
Галт ханын тухай ойлголтууд
галт хана
дүрмүүд
Галт ханын дүрмүүдийг дараах үндсэн хоёр янзаар үүсгэж болно:
inclusive буюу хамааруулсан
эсвэл exclusive буюу хамааруулаагүй
.
Хамааруулаагүй галт хана нь дүрмэнд тохирсон урсгалаас бусдыг нэвтрүүлнэ. Харин хамааруулсан галт хана бол эсрэгээр нь,
дүрмэнд тохирсон урсгалыг нэвтрүүлж бусдыг хаана.
Болохгүй урсгалыг галт ханаар нэвтрүүлэх эрсдэлийг
багасгадаг учраас хамааруулсан галт хана нь хамааруулаагүй
галт ханыг бодвол илүүтэйгээр аюулгүй байдлыг хангаж чаддаг.
Төлөвт галт ханыг
ашиглан аюулгүй байдлыг цааш илүү сайжруулах боломжтой.
Төлөвт галт хана нь галт ханаар дамжин тогтсон холболтуудыг бүртгэж,
зөвхөн таарч байгаа тогтсон холболтоор эсвэл шинэ холболт үүсгэн урсгалыг нэвтрүүлдэг.
Төлөвт галт ханын нэг дутагдалтай тал гэвэл олон шинэ холболтууд нэг дор тогтох үед
Denial of Service буюу Үйлчилгээг Зогсоох(DoS) халдлагад өртөмтгий болдог. Иймээс галт ханыг
зохион байгуулахдаа төлөвт ба төлөвт-бус байдлыг хослуулан хэрэглэх нь хамгийн оновчтой байдаг.
Галт ханын багцууд
&os; дээр гурван янзын галт ханын багцууд хамрагдсан байдаг.
Нэрлэвэл: IPFILTER
(IPF гэж нэрлэх нь элбэг),
IPFIREWALL (IPFW гэж нэрлэх нь элбэг),
ба OpenBSD-н PacketFilter (PF гэж нэрлэх нь элбэг).
&os; нь мөн урсгалыг хязгаарлах(үндсэндээ зурвасын өргөнийг хязгаарлах) хоёр багцын хамт ирдэг:
&man.altq.4; болон &man.dummynet.4;. Dummynet нь IPFW-тай, харин
ALTQ нь IPF/PF-тай нягт холбоотой ажилладаг. IPF,
IPFW, ба PF нь бүгд систем уруу орж байгаа болон гарч байгаа урсгалыг дүрмүүдийн тусламжтай удирдах боловч
синтаксын хувьд ч, арга замын хувьд ч өөр өөр байдаг.
&os; дээр олон галт ханын багцууд хамт ирдэг нь өөр өөр хэрэгцээ шаардлагатай хүмүүст
хүртээмжтэй байхыг гол зорилгоо болгосонд оршино. Түүнээс аль ч галт хана нь нөгөөгөөсөө илүү, эсвэл дутуу гэсэн үг биш юм.
Зохиогч IPFILTER-г сонгон авсан нь түүний төлөвт дүрмүүд нь
NAT орчинд хэрэглэхэд төвөг багатай, мөн
дотроо ftp proxy агуулсан байдгаас болсон хэрэг. Энэхүү ftp proxy-г ашиглан
гадагшаа гарах FTP урсгалыг зөвшөөрсөн дүрмүүдийг бичихэд хялбар байдаг.
Бүх галт ханууд пакет удирдах талбарын утгыг шинжлэх зарчмаар ажиллах тул
галт ханын дүрмүүдийг бичихийн өмнө TCP/IP протокол хэрхэн
ажилладаг талаар болон пакет удирдах талбарын утгууд, энэ утгууд session буюу сесс
үүсэхэд хэрхэн хэрэглэгддэг талаар үндсэн ойлголттой байх шаардлагатай болдог.
Дээрх ойлголтуудын талаар дараах хаягаар орж уншина уу:
.
OpenBSD Пакет шүүгч (PF) ба
ALTQ
галт хана
PF
2003 оны 7 сард OpenBSD-н галт ханын програм болох
PF &os; уруу шилжиж, &os; Портын Цуглуулгад
орсон бөгөөд 2004 оны 11 сард гарсан
&os; 5.3-с эхлэн PF-г
үндсэн системийн багцын нэг хэсэг болгон оруулсан байдаг.
PF нь бүрэн хэмжээнд ажиллах чадвартай
галт хана бөгөөд ALTQ-тай (Alternate
Queuing буюу Ээлжлэн солигдох дараалал) хамтран ажиллах боломжтой. ALTQ-н тусламжтай
шүүн нэвтрүүлэх дүрмүүдийг харгалзан үйлчилгээнүүдэд шаардлагатай
зурвасын өргөнийг баталгаатай олгох Quality of Service буюу Үйлчилгээний Чанарыг (QoS)
хангасан зурвасын өргөнийг хязгаарлах боломжоор хангадаг.
OpenBSD Төсөл нь PF-н Хэрэглэгчдийн Гарын авлагыг хөтлөн
явуулдаг тул давхардуулахгүй үүднээс энэ гарын авлагад
оруулаагүй болно.
Илүү дэлгэрэнгүй мэдээллийг &os;-н PF вэб хуудаснаас үзнэ үү: .
PF-г идэвхжүүлэх
&os; 5.3-с хойших хувилбаруудад PF нь үндсэн суулгацтай
хамт, ажиллах үеийн ачаалах боломжтой модуль байдлаар ирдэг.
rc.conf тохиргооны файл дотор pf_enable="YES" илэрхийлэл байгаа үед
систем PF цөмийн модулийг динамикаар ачаална.
Энэ ачаалах боломжтой модуль нь &man.pflog.4;-н тусламжтай,
бүртгэх боломжтойгоор бүтээгдсэн байдаг.
Энэ модуль нь options INET ба
device bpf-г байгаа гэж тооцдог.
&os;-н 6.0-RELEASE-с өмнөх хувилбарын NOINET6,
хойших хувилбарын NO_INET6-г (жишээ нь &man.make.conf.5;)
системийг үүсгэх үед тодорхойлоогүй бол, options INET6 шаардлагатай.
Цөмийн модуль ачаалагдсан эсвэл цөм нь PF-н хамт
статик байдлаар бүтээгдсэн бол, pf-г
pfctl тушаалын тусламжтай идэвхжүүлж, мөн
идэвхгүй болгож болно.
Энэ жишээн дээр pf-г хэрхэн
идэвхжүүлэхийг харуулав:
&prompt.root; pfctl -e
pfctl тушаалыг ашиглан
pf галт ханатай ажиллах боломжтой.
тушаалыг ашиглахын өмнө &man.pfctl.8; заавар хуудаснаас дэлгэрэнгүй
мэдээллийг авна уу.
Цөмийн боломжууд
цөмийн боломжууд
pf төхөөрөмж
цөмийн боломжууд
pflog төхөөрөмж
цөмийн боломжууд
pfsync төхөөрөмж
&os; цөм уруу дараах боломжуудыг эмхэтгэн PF-г
идэвхжүүлэх албагүй боловч, суурь мэдлэг болгон энд үзүүллээ.
PF-г цөм уруу хөрвүүлэн эмхэтгэснээр ачаалах боломжтой модулийг
хэрэглэх боломжгүй болдог.
Цөмийн тохиргоон дахь PF илэрхийллүүд
/usr/src/sys/conf/NOTES гэсэн цөмийн
эх файлд байх ба доор сийрүүлэв:
device pf
device pflog
device pfsync
device pf мөр Packet Filter
галт ханыг дэмждэг болгоно.
device pflog мөр
хуурамч &man.pflog.4; сүлжээний төхөөрөмжийг идэвхжүүлнэ. Энэ хуурамч
төхөөрөмжийн тусламжтайгаар &man.bpf.4; дескриптор уруу урсгалыг бүртгэх
боломжтой. &man.pflogd.8; дэмонг бүртгэлийг дискэн дээр хадгалахад хэрэглэнэ.
device pfsync мөр
хуурамч &man.pfsync.4; сүлжээний төхөөрөмжийг идэвхжүүлнэ. Энэ хуурамч
төхөөрөмжийн тусламжтайгаар төлвийн өөрчлөлтүүдийг
хянах боломжтой.
Энэ төхөөрөмж нь ачаалах боломжтой модульд байдаггүй тул, түүнийг
ашиглахын тулд цөмийг шинээр бүтээх хэрэгтэй байдаг.
Эдгээр тохируулгууд нь зөвхөн тэдгээрийг тохируулан,
тусгайлан цөм бүтээж суулгасны дараа идэвхждэг.
rc.conf боломжууд
PF-г систем ачаалах үед идэвхтэй болгохын тулд
/etc/rc.conf дотор дараах илэрхийллүүд байх
ёстой:
pf_enable="YES" # Enable PF (load module if required)
pf_rules="/etc/pf.conf" # rules definition file for pf
pf_flags="" # additional flags for pfctl startup
pflog_enable="YES" # start pflogd(8)
pflog_logfile="/var/log/pflog" # where pflogd should store the logfile
pflog_flags="" # additional flags for pflogd startup
Хэрвээ энэ галт ханын цаана LAN байгаа бөгөөд
LAN-д байгаа компьютерууд уруу пакет дамжуулах шаардлагатай бол эсвэл
NAT ашиглах бодолтой байгаа бол дараах илэрхийллийг идэвхжүүлэх хэрэгтэй:
gateway_enable="YES" # Enable as LAN gateway
ALTQ-г идэвхжүүлэх
ALTQ-г идэвхжүүлэх ганц арга зам бол түүний боломжуудыг
&os; цөмтэй хамт хөрвүүлэн эмхэтгэх юм. Мөн сүлжээний картын драйвер болгон ALTQ-г
дэмждэггүй тул өөрийн тань хэрэглэж буй &os; хувилбарын хувьд дэмжигддэг драйверуудын жагсаалтыг
&man.altq.4; гарын авлагын хуудаснаас үзнэ үү. Дараах тохируулгууд
ALTQ-г идэвхжүүлж нэмэлт үүргүүдийг оруулдаг.
options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP build
options ALTQ мөр ALTQ
-г бүхэлд нь идэвхжүүлнэ.
options ALTQ_CBQ мөр Class Based Queuing
буюу Ангиллаас Хамаарсан Дараалал Үүсгэх(CBQ) боломжийг идэвхжүүлнэ.
CBQ нь шүүгч дүрмүүд дээр үндэслэн урсгалуудад эрэмбэ тогтоох зорилгоор
зурвасын өргөнийг өөр өөр ангиллуудад болон дарааллуудад хуваах боломжийг олгоно.
options ALTQ_RED мөр Random Early
Detection буюу Санамсаргүй Эрт Илрүүлэлт(RED)-г идэвхжүүлнэ.
RED-г сүлжээний даац хэтрэхээс сэргийлэхэд хэрэглэдэг.
RED дарааллын уртыг хэмжиж, түүнийг байх ёстой дээд ба
доод хэмжээтэй жиших байдлаар ажилладаг. Хэрэв дараалал дээд хэмжээнээс урт болбол
шинэ пакетууд орхигдох болно. Нэртэйгээ адилаар, RED нь холболтуудаас пакетийг
санамсаргүйгээр орхигдуулдаг.
options ALTQ_RIO мөр нь Random Early
Detection In and Out буюу Орох ба Гарах Санамсаргүй Эрт Илрүүлэлтийг идэвхжүүлнэ.
options ALTQ_HFSC мөр нь
Hierarchical Fair Service Curve Packet Scheduler буюу Үе давхаргат Зохимжит Үйлчилгээний Муруйн Пакет Хуваарилагчийг
идэвхжүүлнэ. HFSC талаар илүү дэлгэрэнгүй мэдээллийг дараах хаягаас үзнэ үү:
.
options ALTQ_PRIQ мөр нь Priority Queuing буюу Эрэмбэт Дараалал Үүсгэх
(PRIQ)-г идэвхжүүлнэ. PRIQ нь эрэмбэ өндөртэй дараалалд байгаа
урсгалыг эхэнд нэвтрүүлэх зарчмаар ажилладаг.
options ALTQ_NOPCC мөр нь ALTQ-г
SMP-тай хамт ажиллах боломжтой болгоно.
SMP системийн хувьд энэ боломжийг заавал идэвхжүүлэх хэрэгтэй.
Шүүгч дүрмүүдийг үүсгэх
Пакет Шүүгч нь дүрмүүдээ &man.pf.conf.5; файлаас уншиж, энд заагдсан
дүрмүүд болон тодорхойлолтуудаас хамааран пакетийг нэвтрүүлэх, орхих, эсвэл өөрчлөхийн аль нэгийг
хийнэ. &os; суулгац нь жишээ болон тайлбарыг агуулсан анхдагч /etc/pf.conf
файлын хамт ирдэг.
Хэдийгээр &os; өөрийн /etc/pf.conf
файлтай боловч синтакс нь OpenBSD-ийнхтэй адилхан байна. pf
галт ханыг тохируулах дэлгэрэнгүй мэдээллийг OpenBSD багийнхан бичсэн бөгөөд
хаягаар орж үзэж болно.
pf хэрэглэгчийн гарын авлагаар аялахдаа, &os; хувилбарууд өөр өөрийн
pf хувилбарыг ашигладгийг санаарай. &os; 5.X дээрх pf галт хана
нь OpenBSD-н 3.5 хувилбарынхтай дүйх ба &os; 6.X дээрх pf галт хана
нь OpenBSD-н 3.7 хувилбарынхтай дүйдэг болохыг анхаарна уу.
pf галт ханыг тохируулах, ажиллуулахтай холбоотой
асуултуудаа &a.pf;-с асуугаарай. Мөн асуулт асуухынхаа өмнө, захидлын жагсаалтын архиваар орж үзэхээ
мартуузай.
IPFILTER (IPF) Галт хана
галт хана
IPFILTER
Энэ хэсэг дээр үргэлжлүүлэн ажиллаж байна. Агуулга зарим хэсэгт буруу байхыг үгүйcгэхгүй.
IPFILTER-г зохиосон хүн бол Даррин Рид билээ. IPFILTER нь
үйлдлийн системээс хамааралгүй: нээлттэй эхийн програм бөгөөд
&os;, NetBSD, OpenBSD, &sunos;, HP/UX, ба &solaris; зэрэг олон үйлдлийн систем уруу
шилжүүлэгдсэн юм. IPFILTER эрчимтэй дэмжигдэж,
сайжруулсан хувилбарууд нь тогтмол гарсаар байгаа.
IPFILTER нь цөмийн талд ажиллах галт хана болон
NAT механизм дээр суурилсан бөгөөд түүнийг удирдах, хянахын тулд
хэрэглэгчийн интерфэйс програмыг ашиглана. Галт ханын дүрмүүдийг нэмэх болон хасахдаа
&man.ipf.8; хэрэгслийг хэрэглэнэ. NAT дүрмүүдийг
нэмэх болон хасахдаа &man.ipnat.1; хэрэгслийг хэрэглэнэ. &man.ipfstat.8; хэрэгсэл
нь IPFILTER-н цөмийн талд ажиллаж байгаа хэсгийн статистикийг хэвлэхэд зориулагдсан.
&man.ipmon.8; програм харин IPFILTER-н үйлдлүүдийг системийн бүртгэлийн файлд
бүртгэнэ.
IPF-г анх зохиохдоо сүүлд тохирсон дүрэм дийлнэ
гэсэн
логикийн дагуу бүтээсэн ба зөвхөн төлөвт-бус дүрмүүдийг ашигладаг байлаа.
Цаг хугацаа өнгөрөхөд IPF илүү хөгжиж, quick
тохируулга
болон төлөвт keep state
тохируулгуудыг агуулах болсон нь орчин үеийн
хэрэгцээ шаардлагад илүү нийцэх болжээ. IPF-н албан ёсны баримтжуулалтанд
хуучин уламжлалт дүрмүүдийг бичих параметрүүд болон файлтай ажиллах логикууд багтсан байдаг.
Харин шинэ функцуудыг нь зөвхөн нэмэлт боломж байдлаар оруулсан нь аюулгүй байдлыг хавьгүй
илүү хангасан галт хана бий болгож байгаа тэднийг хэт доогуур тавьсан санагддаг.
Энэ бүлэгт байгаа зааврууд нь quick
болон төлөвт keep state
тохируулгуудыг агуулсан дүрмүүдээс үндсэндээ бүрдсэн байгаа. Энэ бол хамааруулсан галт ханын дүрмүүдийг
бичих үндсэн арга барил юм.
Хамааруулсан галт хана нь зөвхөн дүрмэнд тохирсон пакетуудыг нэвтрүүлнэ.
Ийм маягаар галт ханын цаанаас Интернэт уруу ямар ямар үйлчилгээнүүд
гарч болох болон эсрэгээр Интернэтээс дотоод сүлжээ уруу ямар ямар үйлчилгээнүүд нэвтэрч
болохыг удирдах боломжтой. Эдгээрээс бусад бүх урсгалыг хааж, бүртгэдэг байхаар зохиогдсон
байдаг. Хамааруулсан галт хана нь хамааруулаагүй галт ханаас аюулгүй байдлын хувьд
хэд дахин илүү, тиймээс энд бид зөвхөн хамааруулсан галт ханын дүрмүүдийн талаар
ярилцах болно.
Хуучин уламжлалт дүрмүүдтэй ажиллах аргуудын талаар дэлгэрэнгүй тайлбарыг:
ба хаягаар орж үзнэ үү.
IPF FAQ-г хаягаар орж үзнэ үү.
Нээлттэй эхийн IPFilter програмын захидлын жагсаалтын архивыг хаягаар орж үзнэ үү.
IPF-г идэвхжүүлэх
IPFILTER
идэвхжүүлэх
IPF нь &os; үндсэн суулгацтай хамт, ажиллах үеийн ачаалах боломжтой модуль байдлаар ирдэг.
rc.conf тохиргооны файл дотор ipfilter_enable="YES" илэрхийлэл байгаа үед систем IPF цөмийн
модулийг динамикаар ачаална. Энэ ачаалах боломжтой модуль нь бүртгэх боломжтойгоор,
анхдагч default pass all тохируулгын хамт бүтээгдсэн байдаг. Анхдагч дүрмийг
block all болгохын тулд IPF-г цөмд эмхэтгэх шаардлага байхгүй. Зөвхөн
дүрмүүдийнхээ төгсгөлд бүгдийг хаах дүрмийг бичиж өгөхөд хангалттай.
Цөмийн тохируулгууд
цөмийн тохируулгууд
IPFILTER
цөмийн тохируулгууд
IPFILTER_LOG
цөмийн тохируулгууд
IPFILTER_DEFAULT_BLOCK
IPFILTER
цөмийн тохируулгууд
&os; цөм уруу дараах боломжуудыг эмхэтгэн IPF-г идэвхжүүлэх
албагүй боловч, суурь мэдлэг болгон энд үзүүллээ. IPF-г цөм уруу хөрвүүлэн
эмхэтгэснээр ачаалах боломжтой модулийг хэрэглэх боломжгүй болдог.
Цөмийн тохиргоон дахь жишээ IPF илэрхийллүүд
/usr/src/sys/conf/NOTES гэсэн цөмийн эх файлд
байх ба доор сийрүүлбэл:
options IPFILTER
options IPFILTER_LOG
options IPFILTER_DEFAULT_BLOCK
options IPFILTER мөр нь IPFILTER
галт ханыг идэвхжүүлнэ.
options IPFILTER_LOG мөр нь log
гэсэн түлхүүр үг орсон дүрмүүдийн хувьд урсгалыг ipl
пакет бүртгэх хуурамч—төхөөрөмж уруу бүртгэх боломжтой болгоно.
options IPFILTER_DEFAULT_BLOCK мөр нь
галт ханын pass дүрмэнд тохироогүй пакетийг
хаах анхдагч чанарыг зааж өгнө.
Эдгээр тохируулгууд нь зөвхөн тэдгээрийг тохируулан,
тусгайлан цөм бүтээж суулгасны дараа идэвхждэг.
rc.conf тохируулгууд
IPF-г систем ачаалах үед идэвхтэй болгохын тулд /etc/rc.conf дотор
дараах илэрхийллүүд байх ёстой:
ipfilter_enable="YES" # Start ipf firewall
ipfilter_rules="/etc/ipf.rules" # loads rules definition text file
ipmon_enable="YES" # Start IP monitor log
ipmon_flags="-Ds" # D = start as daemon
# s = log to syslog
# v = log tcp window, ack, seq
# n = map IP & port to names
Хэрэв энэ галт ханын цаана хувийн IP хаяг хэрэглэдэг LAN байгаа бол
NAT функцыг идэвхжүүлэхийн тулд дараах мөрүүдийг нэмэх хэрэгтэй:
gateway_enable="YES" # Enable as LAN gateway
ipnat_enable="YES" # Start ipnat function
ipnat_rules="/etc/ipnat.rules" # rules definition file for ipnat
IPF
ipf
Таны бичсэн дүрмүүдийг ачаалахад ipf тушаалыг хэрэглэнэ. Ер нь бол
та өөрийн дүрмүүдээс бүтсэн файлыг үүсгээд, түүнийгээ дээрх тушаалын ашиглан
галт ханын одоо ажиллаж байгаа дотоод дүрмүүдтэй сольж тавьна гэсэн үг юм:
&prompt.root; ipf -Fa -f /etc/ipf.rules
нь бүх дотоод дүрмүүдийн хүснэгтийг цэвэрлэ гэсэн үг.
нь ачаалах дүрмүүдээ энэ файлаас унш гэсэн үг.
Ийм байдлаар та өөрийн хүссэн дүрмүүдийн файлыг үүсгээд,
дээрх IPF тушаалыг ажиллуулан системийг шинээр ачаалахгүйгээр
ажиллаж байгаа галт ханын дүрмүүдийг шинээр өөрчлөх боломжтой болж байна.
Дээрх аргаар галт ханын дүрмүүдийг хэдэн ч удаа сольж болох тул энэ арга нь
шинэ дүрмүүдийг туршихад тохиромжтой арга юм.
Энэ тушаалтай ажиллах боломжтой бусад тугуудын талаар
дэлгэрэнгүйг &man.ipf.8; заавар хуудаснаас үзнэ үү.
&man.ipf.8; тушаал дүрмүүдийн файлыг стандарт текст файл гэж
тооцдог. Симбол орлуулалттай скрипт байдлаар бичигдсэн файлыг ойлгохгүй.
Гэвч скрипт симбол орлуулалтын хүчийг ашиглан IPF дүрмүүдийг бүтээх
арга зам байгаа. Илүү дэлгэрэнгүй мэдээллийг
хэсгээс үзнэ үү.
IPFSTAT
ipfstat
IPFILTER
статистик
&man.ipfstat.8;-н анхдагч чанар бол галт ханыг хамгийн сүүлд асааснаас хойших,
эсвэл ipf -Z тушаалыг өгөн хуримтлуулагчийг хамгийн сүүлд тэглэснээс хойших
галт ханаар орж байгаа болон гарч байгаа пакетуудыг хэрэглэгчийн тодорхойлж өгсөн дүрмүүдээр
шүүсэн үр дүнд бий болсон статистик тоог гаргаж ирэн, дэлгэцэнд харуулах юм.
Дэлгэрэнгүйг &man.ipfstat.8; заавар хуудаснаас үзнэ үү.
&man.ipfstat.8; тушаалын анхдагч үр дүн дараах байдалтай байна:
input packets: blocked 99286 passed 1255609 nomatch 14686 counted 0
output packets: blocked 4200 passed 1284345 nomatch 14687 counted 0
input packets logged: blocked 99286 passed 0
output packets logged: blocked 0 passed 0
packets logged: input 0 output 0
log failures: input 3898 output 0
fragment state(in): kept 0 lost 0
fragment state(out): kept 0 lost 0
packet state(in): kept 169364 lost 0
packet state(out): kept 431395 lost 0
ICMP replies: 0 TCP RSTs sent: 0
Result cache hits(in): 1215208 (out): 1098963
IN Pullups succeeded: 2 failed: 0
OUT Pullups succeeded: 0 failed: 0
Fastroute successes: 0 failures: 0
TCP cksum fails(in): 0 (out): 0
Packet log flags set: (0)
Дотогшоо урсгалын хувьд ,
гадагшаа урсгалын хувьд тохируулгыг өгөхөд
кернелийн ашиглаж буй дүрмүүдийн жагсаалтыг гаргаж харуулна.
ipfstat -in нь дотогшоо урсгалын
дотоод дүрмүүдийн хүснэгтийг дүрмүүдийн дугаарын хамт харуулна.
ipfstat -on нь гадагшаа урсгалын
дотоод дүрмүүдийн хүснэгтийг дүрмүүдийн дугаарын хамт харуулна.
Үр дүн нь дараах байдалтай байна:
@1 pass out on xl0 from any to any
@2 block out on dc0 from any to any
@3 pass out quick on dc0 proto tcp/udp from any to any keep state
ipfstat -ih нь дотогшоо урсгалын
дотоод дүрмүүдийн хүснэгтийг дүрмүүдийн хэдэн удаа тохирсон тооны хамт харуулна.
ipfstat -oh нь гадагшаа урсгалын
дотоод дүрмүүдийн хүснэгтийг дүрмүүдийн хэдэн удаа тохирсон тооны хамт харуулна.
Үр дүн нь дараах байдалтай байна:
2451423 pass out on xl0 from any to any
354727 block out on dc0 from any to any
430918 pass out quick on dc0 proto tcp/udp from any to any keep state
ipfstat тушаалын хамгийн чухал функцуудын
нэг бол, &os;-н ажиллаж байгаа процессийн хүснэгтийг &man.top.1;
харуулдаг шиг төлвийн хүснэгтийг туг харуулдаг явдал юм.
Таны галт хана гадны халдлагад өртөх үед энэ функц түүнийг илрүүлэх, шинжлэх, халдлагад
оролцож буй пакетуудыг харах боломжийг олгоно. Нэмэлт дэд тугууд нь хяналт хийх
эхлэл болон очих IP хаяг, порт, эсвэл протоколыг сонгох боломжийг олгодог.
Дэлгэрэнгүйг &man.ipfstat.8; заавар хуудаснаас үзнэ үү.
IPMON
ipmon
IPFILTER
бүртгэл хөтлөлт
ipmon тушаал зохистой ажиллахын тулд цөмийн
IPFILTER_LOG тохируулга идэвхжсэн байх ёстой. Энэ тушаал хоёр өөр горимд
ажиллах чадвартай. Төрөлх горим нь энэ тушаалыг тушаал мөрөн дээр
туггүйгээр оруулахад ажиллах анхдагч горим юм.
Демон горим нь болж өнгөрсөн үйл явцын бүртгэлийг эргэж харахын тулд
системийн бүртгэлийг тасралтгүй хөтлөн явуулахад тохиромжтой горим юм.
&os; болон IPFILTER энэ горимд ажиллахаар тохируулагдсан байдаг. &os;
нь системийн бүртгэлийг автоматаар тойруулах чадвартай. Тиймээс бүртгэлийн мэдээллийг syslogd
процесс уруу гаргах нь энгийн файл уруу гаргах анхдагч аргаас дээр байдаг.
Анхдагч rc.conf файл дотор ipmon_flags илэрхийлэл
тугуудыг хэрэглэсэн байхыг олж харж болно:
ipmon_flags="-Ds" # D = start as daemon
# s = log to syslog
# v = log tcp window, ack, seq
# n = map IP & port to names
Бүртгэл хөтлөн явуулахын давуу талыг дурдахад илүүц биз.
Бүртгэлийн тусламжтай ямар пакетууд орхигдсон, тэдгээр пакетууд хаанаас ирсэн,
хаашаа явж байсан зэрэг мэдээллийг эргэн харах боломжтой болдог. Энэ бүх мэдээлэл
гадны халдлагыг мөрдөхөд чухал түлхэц болно.
Хэдийгээр бүртгэх боломжоор хангагдсан боловч, IPF дангаараа бүртгэлийг үүсгэж
чадахгүй. Галт ханын администратор аль дүрмийн бүртгэлийг бичихийг шийдэн, тэдгээр дүрмүүдэд
log түлхүүр үгийг нэмж өгнө. Ер нь, зөвхөн deny дүрмүүдийн бүртгэл бичигддэг.
Бүгдийг хориглосон анхдагч дүрмийг log түлхүүр үгийн хамт дүрмүүдийнхээ
хамгийн төгсгөлд бичиж өгөх нь нилээд өргөн хэрэглэгддэг арга юм. Ийм байдлаар
таны дүрмүүдийн алинтай ч тохироогүй пакетуудыг мэдэх боломжтой болно.
IPMON бүртгэл хөтлөлт
Syslogd нь бүртгэлийн мэдээллийг дотор нь ангилах
өөрийн тусгай аргатай. facility
ба түвшин
гэсэн тусгай ангилалаар ялгадаг.
горимон дахь IPMON нь facility
-аар security-г
хэрэглэдэг. IPMON-ы бүх бүртгэлийн мэдээлэл security нэрийн дор бичигддэг. Хэрэв хүсвэл
доорх түвшнүүдийг ашиглан бүртгэгдсэн мэдээллийг илүү ангилж болно:
LOG_INFO - нэвтрүүлэх, хаахаас үл хамааран "log" түлхүүрийг үйлдэл ашиглан пакетуудыг бүртгэх.
LOG_NOTICE - нэвтэрсэн пакетуудыг бүртгэх.
LOG_WARNING - хаагдсан пакетуудыг бүртгэх.
LOG_ERR - бүртгэсэн пакетууд болон богино гэгдсэн пакетууд
IPFILTER-н бүх бүртгэлийн мэдээллийг /var/log/ipfilter.log
файл дотор бичихийн тулд, та энэ файлыг эхлээд үүсгэх хэрэгтэй. Үүний тулд дараах
тушаалыг өгөх хэрэгтэй:
&prompt.root; touch /var/log/ipfilter.log
syslog-н функцуудыг /etc/syslog.conf файл доторх
тодорхойлох илэрхийллүүдээр удирдаж болно. syslog.conf файл нь
IPF мэт програмуудын үүсгэсэн системийн мэдэгдлүүдтэй ажиллахад уян хатан болгодог.
Дараах илэрхийллүүдийг /etc/syslog.conf файл дотор нэмж
бичнэ үү:
security.* /var/log/ipfilter.log
security.* нь бүх бүртгэгдсэн мэдэгдлүүдийг
дурдсан файлд бичихийг хэлж өгч байна.
/etc/syslog.conf файлд хийсэн өөрчлөлтүүдийг
идэвхжүүлэхийн тулд та системээ дахин ачаалах эсвэл /etc/rc.d/syslogd reload
тушаалыг ашиглан syslog процессод /etc/syslog.conf файлыг дахин уншуулах
хэрэгтэй.
Дээр шинээр үүсгэсэн бүртгэлийг тойруулахын тулд
/etc/newsyslog.conf файл дотор өөрчлөлт оруулахаа мартуузай.
Бүртгэгдсэн мэдэгдлийн формат
ipmon-ы үүсгэсэн мэдэгдэл зайгаар тусгаарлагдсан
өгөгдлийн талбаруудаас бүрдэнэ. Бүх мэдэгдэлд байдаг гол талбарууд гэвэл:
Пакетийг хүлээж авсан огноо.
Пакетийг хүлээж авсан цаг. Цаг, минут, секунд, бутархай секундэд (олон орны нарийвчлалтай)
харгалзан HH:MM:SS.F форматтай байна.
Пакеттай ажилласан интерфэйсийн нэр, жишээлбэл dc0.
Дүрмийн бүлэг болон дүрмийн дугаар, жишээлбэл @0:17.
Эдгээрийг ipfstat-in тушаалын тусламжтай үзэж болно.
Үйлдэл: нэвтрүүлсэн бол р, хаасан бол b, богино пакет бол S,
аль ч дүрмэнд тохироогүй бол n, бүртгэх дүрэм бол L. Эдгээр тугуудыг дараах эрэмбээр харуулна:
S, p, b, n, L. Том P эсвэл B үсэг нь тухайн пакет ямар нэг дүрмээс биш, глобал тохиргооноос
хамааран бүртгэгдсэн болохыг заана.
Хаягууд. Үндсэндээ гурван талбар байна: эхлэл
хаяг болон порт (таслалаар тусгаарлагдсан), -> тэмдэг, ба очих хаяг болон порт.
209.53.17.22,80 -> 198.73.220.17,1722.
PR-н дараа протоколын нэр болон дугаар, жишээлбэл PR tcp.
len-ы дараа толгойн урт болон
пакетийн нийт урт, жишээлбэл len 20 40.
Хэрэв TCP пакет бол зураасаар эхэлж тугуудаар удаалсан
нэмэлт талбар байна. Үсгүүд болон түүнд харгалзах тугуудын талаар &man.ipmon.8; заавар
хуудаснаас үзнэ үү.
Хэрэв ICMP пакет бол, төгсгөлд нь хоёр талбар байна.
Эхнийх нь үргэлж ICMP
утгатай байна, дараагийнх нь налуу зураасаар тусгаарлагдсан
ICMP мэдэгдэл болон дэд мэдэгдлийн төрөл, жишээлбэл портод хандаж чадсангүй гэсэн мэдэгдлийн хувьд ICMP 3/3 байна.
Симбол орлуулалттай скриптийг үүсгэх нь
Зарим туршлагатай IPF хэрэглэгчид дүрмүүдийг агуулсан файл үүсгээд
түүнийгээ симбол орлуулалттай скрипт байдлаар ажиллуулах боломжтой болгон бичдэг.
Үүний гол давуу тал нь та зөвхөн симбол нэрд харгалзах утгыг өөрчилбөл, скриптийг ажиллуулахад
уг симбол орлуулалт орсон дүрэм бүр шинэ утгыг авах болно. Скриптийн хувьд,
олон дахин хэрэглэгддэг утгуудыг бичихэд симбол орлуулалтыг ашиглаж, тэдгээрийг
олон дүрмэнд орлуулж өгнө гэсэн үг юм. Дараах жишээн дээрээс харна уу.
Энд хэрэглэгдсэн скриптийн синтакс нь sh, csh, ба tcsh бүрхүүл дээр ажиллах
боломжтой.
Симбол орлуулалтын талбарууд нь урдаа долларын тэмдэгтэй байна: $.
Симбол талбарууд нь $ тэмдэг урдаа байхгүй.
Симбол талбарыг орлох утга нь давхар хашилтан(") дотор байрлана.
Дүрмийн файлаа дараах байдалтай үүсгэж эхлэх хэрэгтэй:
############# Start of IPF rules script ########################
oif="dc0" # name of the outbound interface
odns="192.0.2.11" # ISP's DNS server IP address
myip="192.0.2.7" # my static IP address from ISP
ks="keep state"
fks="flags S keep state"
# You can choose between building /etc/ipf.rules file
# from this script or running this script "as is".
#
# Uncomment only one line and comment out another.
#
# 1) This can be used for building /etc/ipf.rules:
#cat > /etc/ipf.rules << EOF
#
# 2) This can be used to run script "as is":
/sbin/ipf -Fa -f - << EOF
# Allow out access to my ISP's Domain name server.
pass out quick on $oif proto tcp from any to $odns port = 53 $fks
pass out quick on $oif proto udp from any to $odns port = 53 $ks
# Allow out non-secure standard www function
pass out quick on $oif proto tcp from $myip to any port = 80 $fks
# Allow out secure www function https over TLS SSL
pass out quick on $oif proto tcp from $myip to any port = 443 $fks
EOF
################## End of IPF rules script ########################
Байх ёстой бүх зүйлс бүгд байна. Энэ жишээн дээр дүрмүүд чухал биш,
харин симбол орлуулалт хэрхэн ажилладгыг харуулсан байна. Хэрэв дээрх жишээ
/etc/ipf.rules.script нэртэй файл дотор байсан бол, эдгээр
дүрмүүдийг дараах тушаалыг өгч дахин ачаалах боломжтой:
&prompt.root; sh /etc/ipf.rules.script
Суулгагдсан симболтой дүрмийн файлыг хэрэглэхэд нэг асуудал тулгардаг:
IPF симбол орлуулалтыг ойлгохгүй, ийм скриптийг шууд уншиж чаддаггүй.
Дараах скриптийг хоёр аргын нэгээр хэрэглэж болно:
cat-р эхэлсэн мөрийг ил гарга, харин
/sbin/ipf-р эхэлсэн мөрүүдийг далдал. ipfilter_enable="YES"-г
/etc/rc.conf файл дотор байрлуул, дараа нь өөрчлөлт бүрийн дараа скриптийг
ажиллуулан /etc/ipf.rules файлыг үүсгэ эсвэл өөрчлөлт оруул.
/etc/rc.conf файл дотор ipfilter_enable="NO"
(энэ анхдагч утга) мөрийг нэмэн системийн эхлэл скриптэд IPFILTER-г идэвхгүй болго.
Дээрхтэй адил скриптийг өөрийн /usr/local/etc/rc.d/ эхлэл хавтаст
байрлуул. Энэ скрипт ipf.loadrules.sh ч юм уу ойлгомжтой нэртэй байх ёстой.
.sh гэсэн өргөтгөлтэй байх ёстой.
#!/bin/sh
sh /etc/ipf.rules.script
Энэ скриптийн эрхүүд эзэмшигч root-н хувьд
унших, бичих, ажиллах эрхтэй байх ёстой.
&prompt.root; chmod 700 /usr/local/etc/rc.d/ipf.loadrules.sh
Одоо систем ачаалсны дараа таны IPF дүрмүүд ачаалагдсан байх болно.
IPF Дүрмүүдийн олонлог
Пакет дотор агуулагдаж байгаа утгуудыг үндэслэн тухайн пакетийг
нэвтрүүлэх болон хаахыг хэлж байгаа дүрмүүдийг дүрмийн олонлог гэнэ. Хостуудын
хоорондох хоёр чиглэлтэй пакет солилцоо нь сесс харилцааг бүрдүүлнэ. галт ханын
дүрмийн олонлогоор пакет хоёр дахин шүүгдэнэ, эхний удаа Интернэтээс пакетийг
хүлээн авахад, дараагийн удаа буцаж Интернэт рүү гарч явахад. Бүх TCP/IP үйлчилгээнүүдийн
хувьд (жишээ нь: telnet, www, mail, г.м.) ямар протоколоор ажиллах болон эхлэл ба
очих IP хаяг, эхлэл ба очих порт хаяг зэргийг урьдаас тодорхойлж өгсөн байдаг.
Эдгээр үзүүлэлтүүд дээр үндэслэн нэвтрүүлэх болох хаах дүрмүүдийг зохиодог.
IPFILTER
Дүрмүүдтэй ажиллах дэс дараалал
IPF-г анх зохиохдоо сүүлд тохирсон дүрэм дийлнэ
логикийн дагуу бүтээсэн ба зөвхөн төлөвт-бус дүрмүүдийг ашигладаг байлаа.
Цаг хугацаа өнгөрөхөд IPF илүү хөгжиж, quick
тохируулга
болон төлөвт keep state
тохируулгуудыг агуулах болсон нь орчин үеийн
хэрэгцээ шаардлагад илүү нийцэх болжээ.
Энэ бүлэгт байгаа зааврууд нь quick
болон төлөвт keep state
тохируулгуудыг агуулсан дүрмүүдээс үндсэндээ бүрдсэн байгаа. Энэ бол хамааруулсан галт ханын дүрмүүдийг
бичих үндсэн арга барил юм.
Хамааруулсан галт хана нь зөвхөн дүрмэнд тохирсон пакетуудыг нэвтрүүлнэ.
Ийм маягаар галт ханын цаанаас Интернэт уруу ямар ямар үйлчилгээнүүд
гарч болох болон эсрэгээр Интернэтээс дотоод сүлжээ уруу ямар ямар үйлчилгээнүүд хандаж
болохыг удирдах боломжтой. Эдгээрээс бусад бүх урсгалыг хааж, бүртгэдэг байхаар зохиогдсон
байдаг. Хамааруулсан галт хана нь хамааруулаагүй галт ханаас аюулгүй байдлын хувьд
хэд дахин илүү, тиймээс энд бид зөвхөн хамааруулсан галт ханын дүрмүүдийн талаар
ярилцах болно.
Галт ханын дүрмүүдтэй ажиллахдаа маш
анхааралтай байх хэрэгтэй. Зарим тохиргоо серверээс
бүх холбоог тань тасалж мэднэ. Ийм аюулаас хол
байхын тулд, галт ханын тохиргоог анхлан хийхдээ ssh
зэрэг алсын хандалтаас илүүтэйгээр ойрын удирдлагыг сонгоорой.
Дүрмийн синтакс
IPFILTER
дүрмийн синтакс
Энд дурдах дүрмийн синтакс нь орчин үеийн төлөвт
дүрмүүдийн хүрээнд, сүүлд тохирсон дүрэм дийлнэ
логикоор
ажиллахаар хялбаршуулан бичигдсэн байгаа. Хуучин уламжлалт дүрмүүдийн
синтаксын бүрэн тайлбарыг &man.ipf.8; заавар хуудаснаас үзнэ үү.
# гэсэн тэмдэгт тайлбарын эхлэлийг заах ба
дүрэм бичсэн мөрийн төгсгөлд эсвэл өөрөө бүтэн мөр байдлаар байрлана.
Хоосон мөрийг тооцохгүй.
Дүрмүүд нь түлхүүр үгүүдийг агуулна. Эдгээр түлхүүр үгүүд нь
тухайн мөрөнд зүүнээс баруун тийш тодорхой дэс дараагаар бичигдэнэ.
Түлхүүр үгүүд тодоор бичигдэх тул түүгээр нь ялгаж танина. Зарим түлхүүр
үгүүд дэд-тохируулгатай байна. Тэр нь өөрөө түлхүүр үг байж болохоос гадна
цааш дэд-тохируулгуудыг агуулсан байж болно. Доорх синтаксын үг бүр нь
дор байрлах мөрүүдэд задаргааны хамт байгаа.
ACTION IN-OUT OPTIONS SELECTION STATEFUL PROTO
SRC_ADDR,DST_ADDR OBJECT PORT_NUM TCP_FLAG
STATEFUL
ACTION = block | pass
IN-OUT = in | out
OPTIONS = log | quick | on
interface-name
SELECTION = proto value |
source/destination IP | port = number | flags
flag-value
PROTO = tcp/udp | udp | tcp |
icmp
SRC_ADD,DST_ADDR = all | from
object to object
OBJECT = IP address | any
PORT_NUM = port number
TCP_FLAG = S
STATEFUL = keep state
ACTION
Тухайн дүрмэнд тохирч байгаа пакетийг хэрхэхийг action буюу
үйлдэл зааж өгнө. Бүх дүрэм үйлдэлтэй байх ёстой. Дараах
үйлдлүүдийг хэрэглэж болно:
block гэдэг нь пакеттай selection буюу сонголтын
параметрүүд тохирч байвал тухайн пакетийг орхигдуулахыг зааж өгнө.
pass гэдэг нь пакеттай selection буюу сонголтын
параметрүүд тохирч байвал тухайн пакетийг нэвтрүүлэхийг зааж өгнө.
IN-OUT
Дүрэм нь орох болон гарах урсгалын алинд үйлчлэхийг
заавал зааж өгөх ёстой. Энэ нь in эсвэл out түлхүүр үгийн аль нэг нь заавал
бичигдсэн байх ёстой гэсэн үг юм. Үгүй бол синтаксын алдаа өгч, танигдахгүй.
in гэдэг нь Интернэт уруу харж байгаа
интерфэйс дээр хүлээж авсан дотогшоо ирж байгаа пакетийн хувьд энэ дүрэм
үйлчлэхийг зааж өгнө.
out гэдэг нь Интернэт уруу харж байгаа
интерфэйс уруу чиглэсэн гадагшаа явж байгаа пакетийн хувьд энэ дүрэм үйлчлэхийг
зааж өгнө.
OPTIONS
Эдгээр options буюу тохируулгуудыг энд үзүүлсэн дэс
дарааллын дагуу хэрэглэх ёстой.
log гэдэг нь пакеттай selection буюу сонголтын
параметрүүд тохирч байвал пакетийн толгой
ipl бүртгэл уруу (дор Бүртгэл Хөтлөх хэсэгт
заасны дагуу) бичигдэхийг зааж өгнө.
quick гэдэг нь пакеттай selection буюу сонголтын
параметрүүд тохирч байвал энэ дүрэм нь хамгийн сүүлийн дүрэм болохыг зааж өгнө.
Ингэснээр short-circuit
замыг тухайн пакетийн хувьд дараагийн
дүрмүүдийг шалгахыг болиулна. Орчин үеийн дүрэмтэй ажиллах логикийн хувьд энэ
тохируулгыг заавал хэрэглэнэ.
on гэдэг нь selection буюу сонголтын
параметрүүдийн ажиллах интерфэйсийг зааж өгнө. Интерфэйсүүдийн нэрийг
&man.ifconfig.8;-н тусламжтай харж болно. Энэ тохируулгыг хэрэглэснээр,
тухайн дүрэм зөвхөн энэ интерфэйсээр зохих чиглэлд(in/out) явж байгаа
пакетийн хувьд үйлчилнэ. Орчин үеийн дүрэмтэй ажиллах логикийн хувьд энэ
тохируулгыг заавал хэрэглэнэ.
пакетийг бүртгэхэд, түүний толгойг IPL пакет бүртгэх
хуурамч-төхөөрөмж уруу бичнэ. log түлхүүр үгийн дараа шууд залгаад,
дараах тодотгогчдыг(дараах дэс дарааллаар) хэрэглэж болно:
body гэдэг нь пакетийн толгойн дараа
пакетийн агуулгын эхний 128 байтыг бүртгэхийг зааж өгнө.
first Хэрэв log
түлхүүр үг keep state
тохируулгын хамт хэрэглэгдсэн бол,
түүний араас ирэх keep state
-д тохирч байгаа бүх пакетийг
биш зөвхөн энэ тохируулгыг идэвхжүүлсэн эхний пакетийг бүртгэхийн тулд
энэ тохируулгыг хэрэглэнэ.
SELECTION
Энэ бүлэгт танилцуулж байгаа түлхүүр үгүүд тухайн пакетийг
дүрмэнд тохирсон эсэхийг тогтоохын тулд шалгадаг пакетийн онцлогийг
тодорхойлоход хэрэглэгддэг. Мөн subject түлхүүр үг байх ба дэд-тохируулга
түлхүүр үгийн аль нэгийг сонгон хэрэглэнэ. Дараах ерөнхий онцлогуудыг
хэрэглэх боломжтой, гэхдээ доорх дэс дарааллаар хэрэглэх хэрэгтэй:
PROTO
proto гэдэг нь subject түлхүүр үг бөгөөд
өөрийн харгалзах дэд-тохируулгын хамт хэрэглэгдэх ёстой. Утга нь
ямар протокол дээр ажиллахыг хэлж өгнө. Орчин үеийн дүрэмтэй
ажиллах логикийн хувьд энэ тохируулгыг заавал хэрэглэнэ.
tcp/udp | udp | tcp | icmp эсвэл
/etc/protocols файл дотор байгаа протоколуудыг
хэрэглэж болно. Тусгай tcp/udp гэсэн түлхүүр үг
TCP эсвэл UDP пакетийг сонгоход хэрэглэгддэг ба,
давхар эсвэл төстэй дүрмүүдийг арилгах үүднээс нэмэгдсэн байгаа.
SRC_ADDR/DST_ADDR
all гэсэн түлхүүр үг нь
өөр ямар ч параметргүй from any to any
гэдэгтэй адил юм.
from src to dst: from ба to гэсэн
түлхүүр үгүүд IP хаягийг шүүхэд хэрэглэгдэнэ. Дүрэмд хэрэглэхдээ эхлэл ба
очих параметрийг ХОЁУЛАНГ зааж өгөх ёстой. any
гэсэн тусгай түлхүүр үгийн тусламжтай бүх IP хаягийг зөвшөөрч өгч болно.
Хэрэглэх жишээ: from any to any
эсвэл from 0.0.0.0/0 to any
эсвэл from any to
0.0.0.0/0
эсвэл from 0.0.0.0 to any
эсвэл
from any to 0.0.0.0
.
IP хаягийг цэгтэй тоон хэлбэр болон багийн хамт эсвэл
зүгээр цэгтэй тоон хэлбэрээр бичиж болно.
Багаар хялбархан илэрхийлэх боломжгүй IP хаягуудыг
хэрэглэх боломжгүй. Баг бичих талаар тусламжийг дараах вэб хуудсаар
орж үзнэ үү: .
PORT
Хэрэв эхлэл эсвэл очих порт, эсвэл хоёулангаар нь тохируулах бол
энэ нь зөвхөн TCP ба UDP пакетуудад хамаарна. Порт жишсэн дүрэм
бичихдээ /etc/services файл доторх үйлчилгээний нэр эсвэл
бүхэл тоон портын дугаарыг хэрэглэнэ. Портыг from обьекттой хамт хэрэглэх үед
энэ нь эхлэл портын дугаарыг, to обьекттой хамт хэрэглэх үед
энэ нь очих портын дугаарыг заана. Орчин үеийн дүрэмтэй
ажиллах логикийн хувьд port тохиргоог to обьекттой
заавал хамт хэрэглэнэ. Хэрэглэх жишээ: from any to any port = 80
Портыг жиших оператороор эсвэл порт зурвасыг зааж өгөх
зэргээр хэд хэдэн янзаар жишиж болно.
port "=" | "!=" | "<" | ">" | "<=" | ">=" |
"eq" | "ne" | "lt" | "gt" | "le" | "ge".
Порт зурвасыг зааж өгөхдөө, port "<>" |
"><" гэж хэрэглэнэ.
Орчин үеийн дүрэмтэй
ажиллах логикийн хувьд эхлэл болон очих порт тохируулах параметрүүдийн дараа,
дараах хоёр параметрийг заавал хэрэглэнэ.
TCP_FLAG
Тугуудыг зөвхөн TCP шүүлтийн үед хэрэглэнэ.
Үсгүүдээр нь TCP пакетийн толгойтойг шалгах боломжит тугуудыг
үзүүлсэн байна.
Орчин үеийн дүрэмтэй ажиллах логик нь flags S параметрийг
tcp сесс эхлүүлэх хүсэлтийг тэмдэглэхдээ хэрэглэдэг.
STATEFUL
keep state гэдэг нь нэвтрүүлэх төрлийн дүрмийн хувьд
сонгох параметрүүдтэй тохирсан ямар ч пакет төлөвт шүүх нэмэлт боломжийг идэвхжүүлэх ёстойг
зааж өгнө.
Орчин үеийн дүрэмтэй ажиллах логикийн хувьд энэ тохируулгыг заавал
хэрэглэнэ.
Төлөвт шүүлт
IPFILTER
төлөвт шүүлт
Хостуудын хоорондох хоёр чиглэлтэй пакет солилцоо сесс харилцаанаас бүрддэг.
Төлөвт шүүлт нь урсгалыг сесс харилцаанаас бүрдэж буй хоёр чиглэлтэй пакет
солилцоо гэж үздэг. keep-state-г идэвхжүүлсэн үед, keep-state нь хоёр чиглэлтэй сесс харилцааны
үед солилцсон бүх пакетуудын хувьд дотоод дүрмүүдийг динамик байдлаар үүсгэдэг. Мөн
энэ нь сесс эхлүүлсэн болон хүлээн авсан хостуудын хоорондох сесс харилцаа нь
хоёр чиглэлтэй пакет солилцох процедуртай зохицож байгаа эсэхийг магадлах чадвартай байдаг.
Сесс харилцааны загварт зохицоогүй пакетийг хуурамч гэж үзэн хүлээж авахгүй.
TCP эсвэл UDP сесстэй холбоотой
ICMP пакетуудыг keep state нэвтрүүлнэ. Тэгэхээр, keep state дүрмээр
зөвшөөрөгдсөн вэбээр хийх аялалын хариуд ICMP type 3 code 4 хариуг хүлээн авбал
галт хана үүнийг автоматаар нэвтрүүлнэ гэсэн үг юм. Хэрэв IPF хүлээн авсан пакетийг
идэвхтэй байгаа сессийн нэг хэсэг гэж баттай итгэж байвал, өөр протокол дээр байсан ч
пакетийг нэвтрүүлнэ.
Үүний цаана юу болох вэ гэвэл:
Интернэт уруу холбогдсон интерфэйсээр гарч байгаа пакетуудыг
хамгийн түрүүнд динамик төлвийн хүснэгтэнд шалгана. Хэрэв тухайн пакет ямар нэг
идэвхтэй байгаа сесс харилцаанд оролцож байгаа зөвшөөрөгдсөн дараагийн пакет
байх юм бол, галт ханаар нэвтрүүлэх ба динамик төлвийн хүснэгтэн дэх
сесс харилцааны төлөв шинэчлэгдэнэ. Үлдсэн пакетуудыг гадагшаа урсгалын дүрмээр
шалгах болно.
Интернэт уруу холбогдсон интерфэйс дээр ирж байгаа пакетуудыг
хамгийн түрүүнд динамик төлвийн хүснэгтэнд шалгана. Хэрэв тухайн пакет ямар нэг
идэвхтэй байгаа сесс харилцаанд оролцож байгаа зөвшөөрөгдсөн дараагийн пакет
байх юм бол, галт ханаар нэвтрүүлэх ба динамик төлвийн хүснэгтэн дэх
сесс харилцааны төлөв шинэчлэгдэнэ. Үлдсэн пакетуудыг дотогшоо урсгалын дүрмээр
шалгах болно.
Харилцаа дуусахад динамик төлвийн хүснэгтээс зохих бичлэг
устгагдана.
Төлөвт шүүлтийн тусламжтайгаар та шинэ сесс зөвшөөрөх/хаах
үйл ажиллагаан дээр төвлөрч ажиллаж чадна. Хэрэв шинэ сесс зөвшөөрөгдсөн бол
түүний дараагийн бүх пакетуудыг автоматаар нэвтрүүлэх ба хуурамч пакетууд
автоматаар буцаагдана. Хэрэв шинэ сесс хаагдсан бол
түүний дараагийн ямар ч пакет нэвтэрч чадахгүй. Төлөвт шүүлт нь
сүүлийн үеийн халдлагуудад ашиглагдаж байгаа аргуудын эсрэг хамгаалах
чадвартай техникийн хувьд өндөр түвшний асуулга явуулах чадвартай юм.
Хамааруулсан дүрмийн олонлогийн жишээ
Дараах дүрмийн олонлог нь аюулгүй байдлыг маш сайн хангасан, хамааруулсан
галт ханын дүрмүүдийг хэрхэн бичих жишээ юм. Хамааруулсан галт хана нь зөвхөн pass дүрмүүдэд
тохирсон үйлчилгээг зөвшөөрч, бусдыг бүгдийг хаана. Бүх галт хананууд хамгийн багадаа хоёр
интерфэйстэй байх ба галт хана маягаар ажиллахын тулд дүрмүүдийг тусгайлан зааж өгсөн байна.
&os;-г оролцуулаад бүх &unix; төрлийн систем нь үйлдлийн систем дэх
дотоод харилцаандаа lo0 интерфэйс болон 127.0.0.1
гэсэн IP хаягийг хэрэглэхээр бүтээгдсэн байдаг. Галт ханын дүрмүүд нь дотооддоо хэрэглэж байгаа
эдгээр пакетуудыг чөлөөтэй нэвтрүүлэх дүрмүүдийг агуулсан байх ёстой.
Интернэттэй холбогдож байгаа интерфэйс дээр та өөрийн
Интернэт уруу гарч байгаа болон Интернэтээс ирж байгаа хандалтыг удирдах
болон хянах дүрмүүдийг байрлуулна. Энэ нь таны PPP tun0
интерфэйс эсвэл таны DSL эсвэл кабель модемд холбогдсон NIC байж болно.
Галт ханын цаана байгаа хувийн LAN-уудад нэг болон түүнээс дээш тооны NIC-ууд
холбогдсон тохиолдолд, тэдгээр интерфэйсүүдийн хувьд тэдгээр LAN интерфэйсүүдээс ирсэн
пакетуудыг чөлөөтэй нэвтрүүлэх дүрмийг агуулсан байх ёстой.
Дүрмүүд эхлээд гурван үндсэн хэсэгт хуваагдан зохион байгуулагдсан байх
ёстой: бүх чөлөөт халдашгүй интерфэйсүүд, нийтийн гадагшаа интерфэйс, ба
нийтийн дотогшоо интерфэйс.
Нийтийн интерфэйс хэсэгт байгаа дүрмүүд тухайн интерфэйс болон чиглэлийн
хувьд хамгийн олон тохиолддог дүрмүүд нь хамгийн түрүүнд, цөөн тохиолддог дүрмүүдээс өмнө байхаар,
хаах болох бүртгэх дүрмүүд нь хамгийн сүүлд байхаар бичигдсэн байна.
Дараах жишээн дээрх Гадагшаа хэсэг нь Интернэт хандалтыг зөвшөөрч өгөх
үйлчилгээг тодорхойлох сонголтын утгуудыг агуулсан зөвхөн 'pass' дүрмүүдээс бүрдэж байна.
Бүх дүрмүүд 'quick', 'on', 'proto', 'port', ба 'keep state' тохируулгуудыг агуулсан байгаа.
'proto tcp' дүрмүүд нь төлөвт байдлыг идэвхжүүлж байгаа пакетийг тодорхойлох байдлаар,
сесс эхлүүлэх хүсэлтийг тодорхойлох зорилгоор 'flag' тохируулгыг агуулсан байна.
Дотогшоо хэсэгт эхлээд хүсээгүй пакетуудыг хаах дүрмүүдийг бичсэн байна.
Энэ нь хоёр өөр шалтгаантай. Эхнийх нь, энэ дүрмүүдээр хаагдсан зүйлс нь
доор байгаа өөр нэг дүрмээр зөвшөөрөгдсөн пакетийн нэг хэсэг байж болох талтай. Хоёр дахь
шалтгаан нь, цөөхөн тоотой хүлээж авдаг ба бүртгэх хүсэлгүй байгаа пакетуудыг сонгон, тэдгээрийг
бүрнээр хаах дүрмийг эхлээд бичиж өгснөөр эдгээр пакетууд хамгийн сүүлд байгаа ямар ч дүрмүүдэд
тохироогүй пакетуудыг бүртгээд хаана гэсэн дүрмээр дайрахгүй болгож байгаа юм. Учир нь энэ хэсгийн хамгийн
сүүлд байгаа бүгдийг бүртгээд хаана гэсэн дүрэм бол өөрийн систем уруу халдаж байгаа халдлагын нотолгоог
цуглуулах таны нэг арга билээ.
Өөр нэг тэмдэглэн хэлэх зүйл бол, хүсээгүй пакетуудын хариуд ямар ч хариу явуулахгүй,
тэд зүгээр л орхигдож алга болно. Ингэснээр халдлага явуулагч түүний явуулсан пакетууд
таны системд хүрсэн эсэх талаар юу ч мэдэхгүй үлдэх болно. Таны системийн талаар хэдий хэр бага мэднэ,
тэд ямар нэг муу зүйл хийж чадах хүртэл төдий чинээ урт хугацаа зарцуулна гэсэн үг юм.
Дотогшоо 'nmap OS fingerprint' оролдлогын эхний тохиолдлыг би бүртгэж байгаа,
яагаад гэвэл энэ бол гадны халдлагын нэг хэлбэр юм.
'log first' орсон дүрмийн хувьд та анхны бүртгэлийг харах юм бол
ipfstat -hio тушаалаар энэ дүрэм хэдэн удаа тохирсон байгааг
шалгаарай. Магадгүй та халдлагад өртөж байж болох юм.
Хэрвээ мэдэхгүй дугаартай портын хувьд пакетууд бүртгэгдсэн байвал
/etc/services файлаас эсвэл
хаягаар тухайн
порт ямар зориулалтаар ашиглагддагийг орж шалгаарай.
Троянуудын хэрэглэдэг портын дугааруудыг
хаягаар орж шалгаарай.
Дараах дүрмийн олонлог нь миний өөрийн систем дээрээ хэрэглэдэг
аюулгүй байдлыг бүрэн хангасан хамааруулсан галт ханын дүрмийн олонлог байгаа юм.
Та энэ дүрмүүдийг өөрийн системдээ ашиглахад буруудах юмгүй.
Зөвшөөрөхийг хүсэхгүй байгаа үйлчилгээнүүдийн хувьд харгалзах
нэвтрүүлэх дүрмийг далдлаарай.
Хэрэв бүртгэлд байгаа зарим мэдэгдлийг дахин харахыг хүсэхгүй, бүртгэхийг
хүсэхгүй байгаа бол дотогшоо хэсэгт хаах дүрэм нэмж бичээрэй.
Дүрэм бүрт байгаа dc0 гэсэн интерфэйсийн нэрийн оронд
таны системийг Интернэт уруу холбож байгаа NIC картны интерфэйсийн нэрийг сольж тавиарай.
Хэрэглэгчийн PPP-н хувьд, энэ нь tun0 байна.
Дараах илэрхийллүүдийг /etc/ipf.rules дотор бичих хэрэгтэй:
#################################################################
# No restrictions on Inside LAN Interface for private network
# Not needed unless you have LAN
#################################################################
#pass out quick on xl0 all
#pass in quick on xl0 all
#################################################################
# No restrictions on Loopback Interface
#################################################################
pass in quick on lo0 all
pass out quick on lo0 all
#################################################################
# Interface facing Public Internet (Outbound Section)
# Interrogate session start requests originating from behind the
# firewall on the private network
# or from this gateway server destine for the public Internet.
#################################################################
# Allow out access to my ISP's Domain name server.
# xxx must be the IP address of your ISP's DNS.
# Dup these lines if your ISP has more than one DNS server
# Get the IP addresses from /etc/resolv.conf file
pass out quick on dc0 proto tcp from any to xxx port = 53 flags S keep state
pass out quick on dc0 proto udp from any to xxx port = 53 keep state
# Allow out access to my ISP's DHCP server for cable or DSL networks.
# This rule is not needed for 'user ppp' type connection to the
# public Internet, so you can delete this whole group.
# Use the following rule and check log for IP address.
# Then put IP address in commented out rule & delete first rule
pass out log quick on dc0 proto udp from any to any port = 67 keep state
#pass out quick on dc0 proto udp from any to z.z.z.z port = 67 keep state
# Allow out non-secure standard www function
pass out quick on dc0 proto tcp from any to any port = 80 flags S keep state
# Allow out secure www function https over TLS SSL
pass out quick on dc0 proto tcp from any to any port = 443 flags S keep state
# Allow out send & get email function
pass out quick on dc0 proto tcp from any to any port = 110 flags S keep state
pass out quick on dc0 proto tcp from any to any port = 25 flags S keep state
# Allow out Time
pass out quick on dc0 proto tcp from any to any port = 37 flags S keep state
# Allow out nntp news
pass out quick on dc0 proto tcp from any to any port = 119 flags S keep state
# Allow out gateway & LAN users non-secure FTP ( both passive & active modes)
# This function uses the IPNAT built in FTP proxy function coded in
# the nat rules file to make this single rule function correctly.
# If you want to use the pkg_add command to install application packages
# on your gateway system you need this rule.
pass out quick on dc0 proto tcp from any to any port = 21 flags S keep state
# Allow out secure FTP, Telnet, and SCP
# This function is using SSH (secure shell)
pass out quick on dc0 proto tcp from any to any port = 22 flags S keep state
# Allow out non-secure Telnet
pass out quick on dc0 proto tcp from any to any port = 23 flags S keep state
# Allow out FBSD CVSUP function
pass out quick on dc0 proto tcp from any to any port = 5999 flags S keep state
# Allow out ping to public Internet
pass out quick on dc0 proto icmp from any to any icmp-type 8 keep state
# Allow out whois for LAN PC to public Internet
pass out quick on dc0 proto tcp from any to any port = 43 flags S keep state
# Block and log only the first occurrence of everything
# else that's trying to get out.
# This rule enforces the block all by default logic.
block out log first quick on dc0 all
#################################################################
# Interface facing Public Internet (Inbound Section)
# Interrogate packets originating from the public Internet
# destine for this gateway server or the private network.
#################################################################
# Block all inbound traffic from non-routable or reserved address spaces
block in quick on dc0 from 192.168.0.0/16 to any #RFC 1918 private IP
block in quick on dc0 from 172.16.0.0/12 to any #RFC 1918 private IP
block in quick on dc0 from 10.0.0.0/8 to any #RFC 1918 private IP
block in quick on dc0 from 127.0.0.0/8 to any #loopback
block in quick on dc0 from 0.0.0.0/8 to any #loopback
block in quick on dc0 from 169.254.0.0/16 to any #DHCP auto-config
block in quick on dc0 from 192.0.2.0/24 to any #reserved for docs
block in quick on dc0 from 204.152.64.0/23 to any #Sun cluster interconnect
block in quick on dc0 from 224.0.0.0/3 to any #Class D & E multicast
##### Block a bunch of different nasty things. ############
# That I do not want to see in the log
# Block frags
block in quick on dc0 all with frags
# Block short tcp packets
block in quick on dc0 proto tcp all with short
# block source routed packets
block in quick on dc0 all with opt lsrr
block in quick on dc0 all with opt ssrr
# Block nmap OS fingerprint attempts
# Log first occurrence of these so I can get their IP address
block in log first quick on dc0 proto tcp from any to any flags FUP
# Block anything with special options
block in quick on dc0 all with ipopts
# Block public pings
block in quick on dc0 proto icmp all icmp-type 8
# Block ident
block in quick on dc0 proto tcp from any to any port = 113
# Block all Netbios service. 137=name, 138=datagram, 139=session
# Netbios is MS/Windows sharing services.
# Block MS/Windows hosts2 name server requests 81
block in log first quick on dc0 proto tcp/udp from any to any port = 137
block in log first quick on dc0 proto tcp/udp from any to any port = 138
block in log first quick on dc0 proto tcp/udp from any to any port = 139
block in log first quick on dc0 proto tcp/udp from any to any port = 81
# Allow traffic in from ISP's DHCP server. This rule must contain
# the IP address of your ISP's DHCP server as it's the only
# authorized source to send this packet type. Only necessary for
# cable or DSL configurations. This rule is not needed for
# 'user ppp' type connection to the public Internet.
# This is the same IP address you captured and
# used in the outbound section.
pass in quick on dc0 proto udp from z.z.z.z to any port = 68 keep state
# Allow in standard www function because I have apache server
pass in quick on dc0 proto tcp from any to any port = 80 flags S keep state
# Allow in non-secure Telnet session from public Internet
# labeled non-secure because ID/PW passed over public Internet as clear text.
# Delete this sample group if you do not have telnet server enabled.
#pass in quick on dc0 proto tcp from any to any port = 23 flags S keep state
# Allow in secure FTP, Telnet, and SCP from public Internet
# This function is using SSH (secure shell)
pass in quick on dc0 proto tcp from any to any port = 22 flags S keep state
# Block and log only first occurrence of all remaining traffic
# coming into the firewall. The logging of only the first
# occurrence stops a .denial of service. attack targeted
# at filling up your log file space.
# This rule enforces the block all by default logic.
block in log first quick on dc0 all
################### End of rules file #####################################
NAT
NAT
IP маскарад
NAT
сүлжээний хаягийн хөрвүүлэлт
NAT
NAT нь Network Address Translation буюу
Сүлжээний хаягийн Хөрвүүлэлтийн товчлол юм. &linux;-н талаар ойлголттой хүмүүсийн хувьд,
энэ ойлголтыг IP маскарад гэж нэрлэдэг; NAT ба IP маскарад
нь нэг зүйл юм. IPF NAT-н бидэнд олгож байгаа олон зүйлүүдийн нэг бол
галт ханын цаана байгаа Local Area Network буюу Ойрын Зайн Сүлжээ(LAN)-н хувьд
ISP-с оноож өгсөн ганц IP хаягийг Интернэтэд хуваан хэрэглэх юм.
Ингэх ямар шаардлага байнаа гэж та гайхан асуух байх.
ISP-ууд өөрийн ашгийн-бус хэрэглэгчиддээ ихэвчлэн динамик IP хаяг оноодог.
Динамик гэдэг нь таныг ISP руу залган нэвтрэн орох болгонд, кабель эсвэл
DSL модемтой хэрэглэгчдийн хувьд модемоо асааж унтраах болгонд танд
өөр өөр IP хаяг онооно гэсэн үг юм. Энэ IP хаягаар та Интернэтэд гарах болно.
Та гэртээ таван PC-тэй бөгөөд бүгд Интернэт уруу гардаг байх хэрэгтэй гэж бодъё.
Тэгвэл та PC тус бүрт тусад нь эрх худалдан авч, таван утасны үзүүртэй байх хэрэгтэй болно.
Тэгвэл NAT-н тусламжтай та ISP-гаасаа зөвхөн ганцхан эрх худалдан аваад,
бусад дөрвөн PC-гээ switch буюу шилжүүлэгч уруу холбож, харин switch-ээ таны LAN-нд гарц байдлаар ажиллах
&os; системийн NIC руу залгана. NAT нь LAN-д байгаа бүх PC-ны хувьд хувийн IP
хаягийг ганцхан гадаад IP хаяг уруу автоматаар хөрвүүлэх болно. NAT нь эргэж
ирж байгаа пакетуудын хувьд эсрэг хөрвүүлэлтийг мөн хийнэ.
Ихэнх тохиолдолд NAT-г ISP-н зөвшөөрөлгүйгээр,
мэдэгдэлгүйгээр хийдэг бөгөөд хэрэв ISP энэ тухайн мэдвэл таны эрхийг хаах
хүртэл арга хэмжээ авдаг. Зүй нь бол хэрэглэгчид Интернэт холболтондоо илүү мөнгө
төлж, хэзээ ч өөрчлөгдөхгүй бүлэг статик IP хаягийг авах явдал юм. ISP харин хэрэглэгчиддээ
итгэл хүлээлгэн хэрэглэгчид нь NAT-г дотоод хувийн LAN-даа хэрэглэнэ гэж боддог.
NAT хийгдсэн хувийн LAN IP хаягт зориулж бүлэг IP хаягийг тусгайлан
гаргасан байдаг. RFC 1918 стандартад зааснаар бол, дараах бүлэг IP-г хувийн сүлжээндээ ашиглах
боломжтой, эдгээр IP хэзээ ч гадаад Интернэт уруу гарахгүй болно:
Эхлэх IP 10.0.0.0
-
Төгсөх IP 10.255.255.255
Эхлэх IP 172.16.0.0
-
Төгсөх IP 172.31.255.255
Эхлэх IP 192.168.0.0
-
Төгсөх IP 192.168.255.255
IPNAT
NAT
ба IPFILTER
ipnat
NAT дүрмүүдийг ipnat тушаалын
тусламжтай ачаална. Ихэвчлэн NAT дүрмүүд /etc/ipnat.rules
файл дотор байрлана. Дэлгэрэнгүйг &man.ipnat.1; хэсгээс үзнэ үү.
NAT ажиллаж эхэлсний дараа NAT дүрмүүдэд
өөрчлөлт оруулах шаардлагатай бол NAT дүрмүүд байгаа файл дотор өөрчлөлтийг хийсний дараа,
одоо хэрэглэгдэж байгаа NAT дүрмүүдийг устгаж, хөрвүүлэгч хүснэгтийг цэвэрлэхийн
тулд ipnat тушаалыг тугийн хамт ажиллуулах хэрэгтэй.
Харин NAT дүрмүүдийг дахин ачаалахдаа тушаалыг
дараах байдалтай өгөх хэрэгтэй:
&prompt.root; ipnat -CF -f /etc/ipnat.rules
NAT-н талаар зарим статистикийг харъя гэвэл дараах
тушаалыг ашиглана:
&prompt.root; ipnat -s
NAT хүснэгтийн одоо ашиглаж байгаа оноолтын жагсаалтыг
харахын тулд дараах тушаалыг ашиглана:
&prompt.root; ipnat -l
Вербос буюу хэр зэрэг харуулах горимыг нээхийн тулд, дүрэмтэй ажиллах болон идэвхтэй
байгаа дүрмүүдийн хүснэгтийг харахын тулд:
&prompt.root; ipnat -v
IPNAT Дүрмүүд
NAT дүрмүүд нь маш уян хатан бөгөөд хэрэглэгчдийн
хэрэгцээг хангах олон зүйлүүдийг хийж чадна.
Энд үзүүлсэн дүрмийн синтаксыг ашгийн-бус орчинд ихэвчлэн хэрэглэгддэг
дүрмүүдэд зориулан хялбаршуулсан байгаа. Дүрмийн синтаксын бүрэн тайлбарыг &man.ipnat.5;
заавар хуудаснаас үзнэ үү.
NAT дүрмийн синтакс дараах байдалтай байна:
map IF LAN_IP_RANGE -> PUBLIC_ADDRESS
Дүрэм нь map гэсэн түлхүүр үгээр эхэлнэ.
IF-г гадаад интерфэйсээр сольж тавьна.
LAN_IP_RANGE нь танай дотоод хэрэглэгчийн
хэрэглэж буй IP хаяглалтыг заана, ихэвчлэн 192.168.1.0/24
гэсэн маягтай байна.
PUBLIC_ADDRESS нь гадаад IP
байж болно эсвэл IF-д оноосон IP хаягийг
хэрэглэхийг заасан 0/32 гэсэн тусгай түлхүүр үг байж болно.
NAT хэрхэн ажилладаг вэ
Гадаад очих хаягтай пакет галт хана дээр LAN-с хүрэлцэн ирнэ.
Эхлээд гадагшаа шүүлтийн дүрмүүдээр гарна, дараа нь NAT-н
ээлж ирэх ба өөрийн дүрмүүдийг дээрээс доош шалгаж эхэлнэ. Хамгийн эхэнд тохирсон нь
дийлнэ. NAT өөрийн дүрэм бүрийг пакетийн интерфэйсийн нэр болон
эхлэл хаягаар тулгаж шалгана. Пакетийн интерфэйсийн нэр NAT
дүрэмтэй тохирвол пакетийн [эхлэл IP хаяг, өөрөөр хэлбэл хувийн LAN IP хаяг]
NAT дүрмийн сумны зүүн талд зааж өгсөн
IP хаягийн зурвас дотор байгаа эсэхийг шалгана. Хэрэв энэ тохирвол
пакетийн эхлэл хаягийг 0/32 түлхүүр үгийн тусламжтай
олж авсан гадаад IP хаягаар сольж бичнэ. NAT
өөрийн дотоод NAT хүснэгтэнд бичлэг нэмэх ба энэ нь
пакет Интернэтээс буцаж ирэхэд түүнийг буцаан хувийн IP хаяг уруу нь хөрвүүлэн,
цааш шүүлтийн дүрмүүдээр оруулах боломжийг олгоно.
IPNAT-г идэвхжүүлэх
IPNAT-г идэвхжүүлэхийн тулд эдгээр илэрхийллүүдийг
/etc/rc.conf дотор нэмж бичнэ.
Өөрийн машиныг интерфэйсүүдийн хооронд пакетуудыг чиглүүлдэг
болгохын тулд:
gateway_enable="YES"
Систем ачаалахад IPNAT-г автоматаар ачаалдаг
болгохын тулд:
ipnat_enable="YES"
IPNAT-н дүрмүүдийг хаанаас ачаалахыг зааж өгөхдөө:
ipnat_rules="/etc/ipnat.rules"
Маш том LAN-д зориулсан NAT
LAN-даа олон тооны PC-тэй сүлжээний хувьд эсвэл нэгээс олон
LAN-тай сүлжээний хувьд, энэ олон хувийн IP хаягуудыг нэг гадаад IP хаяг уруу
нийлүүлэх үйл явцад NAT хийгдсэн олон LAN PC дээр ижил портын
дугаар олон дахин хэрэглэгдсэнээс мөргөлдөөн үүсэх гэх мэт нөөцтэй холбоотой асуудал гардаг.
Нөөцтэй холбоотой энэ асуудлаас гарахын тулд дараах хоёр арга зам байдаг.
Хэрэглэх портуудыг оноох
Энгийн NAT дүрэм дараах байдалтай байна:
map dc0 192.168.1.0/24 -> 0/32
Дээрх дүрмэнд пакет IPNAT-р дайрч өнгөрөхөд
пакетийн эхлэл порт өөрчлөгдөхгүй. portmap гэсэн түлхүүр үгийн тусламжтай
IPNAT эхлэл порт зурвасыг ашиглах боломжтой болно.
Жишээ нь, дараах дүрэм IPNAT-г эхлэл порт хаягийг
тухайн зурвас дотор байхаар өөрчлөхийг зааж өгч байна.
map dc0 192.168.1.0/24 -> 0/32 portmap tcp/udp 20000:60000
Дээр нь бид auto түлхүүр үгийн тусламжтай
аль портуудыг ашиглах боломжтой байгааг өөрөө тодорхойлохыг зааж өгч болно:
map dc0 192.168.1.0/24 -> 0/32 portmap tcp/udp auto
Гадаад хаягийн цөөрмийг хэрэглэх
Маш том LAN-уудын хувьд дэндүү олон LAN хаягуудыг нэг гадаад
хаягт оноох нь боломжгүй болох үе ирдэг. Хэрэв бүлэг гадаад IP сул байгаа бол,
та эдгээр IP хаягуудыг цөөрөм
байдлаар ашиглаж болох ба,
IPNAT эдгээрээс нэгийг сонгон авч гадагшаа явж байгаа
пакетийн хаягт оноох байдлаар хэрэглэх болно.
Жишээ нь, доор үзүүлсэн шиг бүх пакетуудыг ганц
гадаад IP-д оноохын оронд:
map dc0 192.168.1.0/24 -> 204.134.75.1
гадаад IP хаягийн зурвасыг сүлжээний хуваалтын хамт зааж өгч болно:
map dc0 192.168.1.0/24 -> 204.134.75.0/255.255.255.0
эсвэл CIDR тэмдэглэгээг хэрэглэж болно:
map dc0 192.168.1.0/24 -> 204.134.75.0/24
Портын дахин чиглүүлэлт
LAN дотор вэб сервер, цахим шуудангийн сервер, өгөгдлийн
сангийн сервер болон DNS серверийг өөр өөр PC дээр тараан ажиллуулах нь
түгээмэл байдаг. Энэ тохиолдолд эдгээр серверээс гарч байгаа урсгал
мөн NAT хийгдсэн байх ёстой. Гэхдээ гаднаас ирж буй
урсгалыг зөв LAN PC уруу дахин чиглүүлэх арга зам байх хэрэгтэй болно.
Энэ асуудлыг шийдэхийн тулд IPNAT нь дахин чиглүүлэлт хийх
NAT нэмэлт боломжийг олгодог. Таны вэб сервер
10.0.10.25 гэсэн LAN хаягтай байна,
мөн та 20.20.20.5 гэсэн ганц гадаад IP-тай
байлаа гэж бодъё. Тэгвэл та дүрмээ дараах байдалтай:
rdr dc0 20.20.20.5/32 port 80 -> 10.0.10.25 port 80
эсвэл:
rdr dc0 0.0.0.0/0 port 80 -> 10.0.10.25 port 80
эсвэл гаднаас DNS хүсэлтүүд хүлээн авдаг
10.0.10.33 гэсэн хаягтай LAN DNS Серверийн хувьд:
rdr dc0 20.20.20.5/32 port 53 -> 10.0.10.33 port 53 udp
гэж бичих байсан.
FTP ба NAT
FTP-г Интернэт одоогийнх шиг байхаас өмнөх үе, их сургуулиуд
түрээсийн шугамаар хоорондоо холбогдож, судлаач эрдэмтэд хоорондоо файл солилцохын тулд
FTP-г ашигладаг байх үес үлдсэн үлэг гүрвэл гэж хэлж болох юм. Тэр үед
өгөгдлийн аюулгүй байдлын талаар огт анхаардаггүй байлаа. Цаг хугацаа өнгөрөхөд
FTP протоколыг шинээр гарч ирж байгаа Интернэтийн гол нуруу сүлжээнд хэрэглэх болсон ба
түүний хэрэглэгчийн нэр, нууц үгийг цэвэр текст хэлбэрээр дамжуулдаг байдал нь
хэзээ ч өөрчлөгдөөгүй бөгөөд орчин үеийн аюулгүй байдлын шаардлагад
нийцэхгүй болсон билээ. FTP нь active буюу идэвхтэй, passive буюу идэвхгүй гэсэн хоёр
горимд ажилладаг. Өгөгдлийн сувгийг хэрхэн ашиглаж байгаа дээр гол ялгаа нь гардаг.
Өгөгдлийн сувгийг ftp сесс хүсэгч байдлаар ажиллуулдаг тул идэвхгүй горимд ажиллах
нь аюулгүй байдлыг илүүтэйгээр хангана. FTP-н талаар илүү сайн тайлбарыг болон түүний
горимуудын талаар хаягаар үзнэ үү.
IPNAT Дүрмүүд
IPNAT нь дотроо NAT
оноолт дүрэмд тодорхойлж өгөх боломжтой тусгай FTP прокси тохируулгыг
агуулсан байдаг. Энэ нь идэвхтэй болон идэвхгүй FTP сесс эхлүүлэх хүсэлтэд
оролцож байгаа бүх гадагшаа чиглэлтэй FTP пакетийг хянаж чадна. Мөн
өгөгдлийн сувагт үнэхээр хэрэглэгдэж байгаа порт дугаарыг агуулсан түр зуурын
шүүлтийн дүрмүүдийг динамикаар үүсгэж чадна. Ийм байдлаар FTP-с болж үүсдэг
дээд хэсгийн портуудыг өргөн зурвасаар нээх эрсдэлээс галт ханыг хамгаалж байгаа юм.
Доорх дүрэм нь дотоод LAN-н бүх урсгалыг зохицуулна:
map dc0 10.0.10.0/29 -> 0/32 proxy port 21 ftp/tcp
Доорх дүрэм гарцаас ирж буй FTP урсгалыг зохицуулна:
map dc0 0.0.0.0/0 -> 0/32 proxy port 21 ftp/tcp
Доорх дүрэм дотоод LAN-с ирж буй бүх FTP-н биш урсгалыг зохицуулна:
map dc0 10.0.10.0/29 -> 0/32
FTP оноолтын дүрэм нь бидний ердийн оноолтын дүрмүүдийн өмнө бичигдэнэ.
Бүх пакетийг хамгийн дээр бичигдсэн дүрмээс эхлэн шалгана.
Интерфэйсийн нэр тохирвол дотоод LAN эхлэл IP хаяг, дараа нь FTP пакет эсэхийг
шалгана. Хэрэв бүгд тохирвол, тусгай FTP прокси эдгээр FTP сесс пакетуудыг
NAT хийхээс гадна гадагш нь болон дотогш нь нэвтрүүлэх
түр зуурын шүүлтийн дүрмийг үүсгэнэ. FTP-н биш бусад бүх LAN пакетууд эхний
дүрмэнд тохирохгүй тул гуравдугаар дүрэм уруу шилжин дахин шалгагдана. Интерфэйс болон
эхлэл IP тохирох тул NAT хийгдэнэ.
IPNAT FTP Шүүлтийн Дүрмүүд
NAT FTP прокси ашиглаж байгаа тохиолдолд
FTP-н хувьд ганцхан шүүлтийн дүрэм хэрэгтэй.
FTP Прокси байхгүй бол та дараах гурван дүрмийг хэрэглэнэ:
# Allow out LAN PC client FTP to public Internet
# Active and passive modes
pass out quick on rl0 proto tcp from any to any port = 21 flags S keep state
# Allow out passive mode data channel high order port numbers
pass out quick on rl0 proto tcp from any to any port > 1024 flags S keep state
# Active mode let data channel in from FTP server
pass in quick on rl0 proto tcp from any to any port = 20 flags S keep state
IPFW
галт хана
IPFW
Энэ хэсэг дээр үргэлжлүүлэн ажиллаж байгаа болно. Агуулга зарим газар
буруу байхыг үгүйсгэхгүй.
IPFIREWALL (IPFW) нь &os;-ийн хандиваар &os;-ийн сайн дурын гишүүдийн бүтээсэн,
тэдний эрх мэдэлд байдаг галт ханын програм юм. Энэ нь хуучин уламжлалт төлөвт
дүрмүүдийг хэрэглэдэг бөгөөд Simple Stateful logiс буюу Хялбар Төлөвт логикийг
бий болгохын тулд уламжлалт дүрэм бичих техникийг хэрэглэдэг.
Стандарт &os; суулгац дахь IPFW-н хялбар дүрмийн олонлог(/etc/rc.firewall
файл дотор байрлана) нь нилээд хялбар бөгөөд өөрт тохируулан засварласны дараа хэрэглэхээр бодолцон
бичигдсэн байдаг. Жишээн дээр ихэнх суулгацад тохиромжтой төлөвт шүүлтийг хэрэглээгүй байгаа.
Тиймээс энэ хэсэгт энэ жишээг хэрэглэхгүй болно.
IPFW-н төлөвт дүрмийн синтакс нь галт хана суулгах анхан шатны мэдлэгээс
хол давсан техникийн хувьд ярвигтай сонголтын боломжуудаар хүч нэмсэн байдаг.
IPFW нь мэргэжлийн түвшний хэрэглэгчид эсвэл өндөр түвшний пакет сонголт
шаардлагатай байгаа техникийн өндөр түвшний компьютер сонирхогчид зориулагдсан юм.
IPFW-н дүрмүүдийн хүчийг мэдрэхийн өмнө протоколууд өөрийн тусгай пакетийн толгойн
мэдээллийг хэрхэн үүсгэдэг болон хэрэглэдэг талаар нилээд дэлгэрэнгүй мэдлэгийг
олж авсан байх хэрэгтэй. Тийм түвшний тайлбарыг энд өгөх нь номын энэ бүлгийн
мэдлээс халих тул энд оруулах боломжгүй юм.
IPFW нь долоон хэсгээс бүрдэнэ, гол хэсэг болох цөмийн галт ханын шүүлтийн
дүрмийг боловсруулагч болон түүний бусад хэсэг болох пакет данслах боломж, бүртгэх боломж, NAT
боломжийг идэвхжүүлэх 'divert буюу эргүүлэх' дүрэм, болон өндөр түвшний тусгай зориулалттай боломжууд,
dummynet трафик хязгаарлагч боломжууд, 'fwd дүрэм' дамжуулах боломж, гүүр боломжууд, болон
ipstealth боломжуудаас бүрдэнэ.
IPFW-г идэвхжүүлэх
IPFW
идэвхжүүлэх
IPFW нь &os; үндсэн суулгацтай хамт, ажиллах үеийн ачаалах боломжтой модуль байдлаар ирдэг.
rc.conf тохиргооны файл дотор firewall_enable="YES" илэрхийлэл байгаа үед систем IPFW цөмийн
модулийг динамикаар ачаална. NAT функцыг ашиглахгүй бол
IPFW-г цөмд эмхэтгэх шаардлага байхгүй.
rc.conf файл дотор firewall_enable="YES"
илэрхийллийг нэмээд системийг дахин асаасны дараа ачаалах үйл явцын нэг хэсэг болж
дараах мессеж дэлгэцэн дээр гарах болно:
ipfw2 initialized, divert disabled, rule-based forwarding disabled, default to deny, logging disabled
Ачаалах боломжтой модульд бүртгэх боломжийг эмхэтгээгүй байгаа.
Бүртгэлийг идэвхжүүлэхийн тулд, мөн вербос бүртгэлийн хязгаарыг тогтоохын тулд
/etc/sysctl.conf файл дотор дараах илэрхийллүүдийг нэмж өгөх
хэрэгтэй, бүртгэлийн систем дараагийн удаа ачаалахад идэвхжинэ:
net.inet.ip.fw.verbose=1
net.inet.ip.fw.verbose_limit=5
Цөмийн тохируулгууд
цөмийн тохируулгууд
IPFIREWALL
цөмийн тохируулгууд
IPFIREWALL_VERBOSE
цөмийн тохируулгууд
IPFIREWALL_VERBOSE_LIMIT
IPFW
цөмийн тохируулгууд
NAT функцыг хэрэглэхгүй бол &os; цөм уруу
дараах боломжуудыг эмхэтгэн IPFW-г идэвхжүүлэх албагүй болно.
Суурь мэдлэг болгон энд үзүүллээ.
options IPFIREWALL
Энэ тохируулга IPFW-г цөмийн нэг хэсэг болгон идэвхжүүлнэ
options IPFIREWALL_VERBOSE
Энэ тохируулга 'log' гэсэн түлхүүр үг орсон дүрмийн хувьд
IPFW-р дайран өнгөрөх пакетуудыг бүртгэх боломжтой болгоно.
options IPFIREWALL_VERBOSE_LIMIT=5
Энэ тохируулга &man.syslogd.8;-р нэгэн зэрэг бүртгэгдэж буй
пакетийн тоог хязгаарлана. галт ханын үйлдлүүдийг бүртгэхийг хүсэж байгаа
найрсаг орчнуудад та энэ тохируулгыг хэрэглээрэй. Энэ тохируулга нь
syslog-г живүүлэх замаар явагдах үйлчилгээг зогсоох халдлагыг хааж өгөх болно.
цөмийн тохируулгууд
IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_DEFAULT_TO_ACCEPT
Энэ тохируулга нь галт ханыг дамжин өнгөрч байгаа бүх зүйлийг нэвтрүүлэх анхдагч
төлөвт оруулна. галт ханыг анх удаа тохируулж байгаа үед энэ нь илүү тохиромжтой.
options IPV6FIREWALL
options IPV6FIREWALL_VERBOSE
options IPV6FIREWALL_VERBOSE_LIMIT
options IPV6FIREWALL_DEFAULT_TO_ACCEPT
Эдгээр тохируулгууд IPv6-н тохируулгууд боловч IPv4-д байдаг тохируулгуудтай яг адилхан юм.
Хэрэв та IPv6-г хэрэглэдэггүй бол IPV6FIREWALL-г харгалзах ямар ч дүрэмгүйгээр
хэрэглэн бүх IPv6 урсгалыг хааж болох юм.
цөмийн тохируулгууд
IPDIVERT
options IPDIVERT
Энэ тохируулга NAT функцыг идэвхжүүлнэ.
Хэрэв та IPFIREWALL_DEFAULT_TO_ACCEPT-г оруулаагүй эсвэл
ирж байгаа пакетуудыг нэвтрүүлэх дүрмүүд бичээгүй бол та энэ машинаас ирж
байгаа болон явж байгаа бүх пакетуудыг хаачихлаа гэсэн үг юм.
/etc/rc.conf Тохируулгууд
галт ханыг идэвхжүүлэхийн тулд:
firewall_enable="YES"
&os;-тэй хамт ирдэг анхдагч галт ханын төрлүүдээс нэгийг
сонгохын тулд, /etc/rc.firewall файлыг уншсаны дараа
нэгийг сонгоод, түүнийгээ дараах илэрхийлэлд бичиж өгнө:
firewall_type="open"
Боломжит утгууд нь:
open — бүх урсгалыг нэвтрүүлнэ.
client — зөвхөн энэ машиныг хамгаална.
simple — бүхэл бүтэн сүлжээг хамгаална.
closed — loopback интерфэйсээс бусад IP
урсгалыг боломжгүй болгоно.
UNKNOWN — галт ханын дүрмүүдийг ачаалах
боломжгүй болгоно.
filename — галт ханын дүрмүүдийг агуулсан
файлын бүрэн зам.
ipfw галт хана уруу тусгайлан бэлдсэн
дүрмүүдийг хоёр аргаар ачаалж болно. Нэг нь, firewall_type хувьсагчийн
утганд &man.ipfw.8;-д зориулсан ямар ч тушаал мөрийн тохируулгагүйгээр бичигдсэн
галт ханын дүрмүүд-г агуулсан файлын бүрэн замыг өгөх. Дүрмүүдийг агуулсан
хялбар жишээ файл дараах байдалтай байж болно:
add block in all
add block out all
Нөгөө нь, систем ачаалах үед ажиллах ipfw тушаалуудыг
агуулсан ажиллах боломжтой скриптийн бүрэн замыг firewall_script
хувьсагчид оноох юм. Дээр үзүүлсэн дүрмүүдийн файлтай дүйх дүрмүүдийн скрипт дараах байдалтай
байна:
#!/bin/sh
ipfw -q flush
ipfw add block in all
ipfw add block out all
Хэрэв firewall_type нь client
эсвэл simple утгыг авсан бол, /etc/rc.firewall
файл доторх анхдагч дүрмүүдийг тухайн машинд тохируулан өөрчлөх хэрэгтэй.
Мөн энэ бүлэгт хэрэглэж байгаа жишээнүүдийн хувьд firewall_script-н утга
/etc/ipfw.rules гэж үзэж байгаа болно.
Бүртгэлийг идэвхжүүлэхийн тулд:
firewall_logging="YES"
firewall_logging хувьсагчийн
хийх ганц зүйл гэвэл net.inet.ip.fw.verbose sysctl
хувьсагчийн утгыг 1 болгох юм ( хэсгийг үзнэ үү). rc.conf
дотор бүртгэлийг хязгаарлах хувьсагч байхгүй, харин үүний тулд
sysctl хувьсагчаар дамжуулан хийж болно. /etc/sysctl.conf
файл дотор эсвэл гараараа утгыг оноож өгч болно:
net.inet.ip.fw.verbose_limit=5
Хэрэв таны машин гарц байдлаар ажиллаж байгаа бол,
жишээ нь &man.natd.8;-н тусламжтай Сүлжээний хаягийн Хөрвүүлэлт (NAT) хийж байгаа бол,
/etc/rc.conf файл доторх шаардлагатай тохируулгуудын
мэдээллийг хэсэг уруу хандана уу.
IPFW Тушаал
ipfw
галт ханыг ажиллаж байх явцад түүний идэвхтэй байгаа дотоод
дүрмүүдэд шинэ дүрэм нэмэх, дүрэм хасах зэрэг өөрчлөлтүүдийг гараар хийх
гол механизм бол ipfw тушаал юм. Энэ аргыг хэрэглэхэд тулгардаг нэг асуудал
бол нэгэнт системийг унтраасан эсвэл зогсоосон бол таны нэмсэн эсвэл хассан
эсвэл өөрчилсөн бүх дүрмүүд алга болно. Бүх дүрмүүдээ нэг файлд бичээд систем
ачаалах үед энэ файлыг ашиглан дүрмүүдийг ачаалах, эсвэл одоо ажиллаж байгаа
галт ханын дүрмүүдийг файл дотор хийсэн өөрчлөлтүүдээр бүхлээр нь сольж тавих нь
энд хэрэглэж байгаа, та бүхэнд зөвлөх арга барил юм.
Удирдлагын дэлгэцэн дээр ажиллаж байгаа галт ханын
дүрмүүдийг харуулахад ipfw тушаалыг одоо хэр нь хэрэглэсээр байна.
IPFW-н данс хөтлөх боломж нь дүрэм бүрийн хувьд тухайн дүрэмд тохирсон
пакетийг тоолох тоолуурыг үүсгэдэг. Ямар нэг дүрмийг шалгах үйл явцад тухайн
дүрэм ажиллаж байгаа эсэхийг тогтоох аргуудын нэг бол дүрмийг тоолуурын хамт
жагсаан харах байдаг.
Бүх дүрмүүдийг дараагаар нь жагсаан харахын тулд:
&prompt.root; ipfw list
Бүх дүрмүүдийг тухайн дүрэм хамгийн сүүлд тохирсон цагны хамт
жагсаан харахын тулд:
&prompt.root; ipfw -t list
Данслалтын мэдээлэл болон дүрмүүдийг тохирсон пакетийн тооны
хамт харахын тулд. Эхний багана нь дүрмийн дугаар, дараа нь энэ дүрэмд
тохирсон гарч байгаа пакетийн тоо, дараа нь энэ дүрэмд тохирсон орж байгаа
пакетийн тоо, тэгээд дүрэм өөрөө байна.
&prompt.root; ipfw -a list
Статик дүрмүүдээс гадна динамик дүрмүүдийг жагсаан харахын тулд:
&prompt.root; ipfw -d list
Мөн хугацаа нь дууссан динамик дүрмүүдийг харахын тулд:
&prompt.root; ipfw -d -e list
Тоолууруудыг тэглэхийн тулд:
&prompt.root; ipfw zero
Зөвхөн NUM дугаартай тоолуурыг тэглэхийн тулд:
&prompt.root; ipfw zero NUM
IPFW Дүрмийн Олонлог
Пакет дотор агуулагдаж байгаа утгуудыг үндэслэн тухайн пакетийг
нэвтрүүлэх болон хаахыг хэлж байгаа дүрмүүдийг дүрмийн олонлог гэнэ. Хостуудын
хоорондох хоёр чиглэлтэй пакет солилцоо нь сесс харилцааг бүрдүүлнэ. галт ханын
дүрмийн олонлогоор пакет хоёр дахин шүүгдэнэ, эхний удаа Интернэтээс пакетийг
хүлээн авахад, дараагийн удаа буцаж Интернэт уруу гарч явахад. Бүх TCP/IP үйлчилгээнүүдийн
хувьд (жишээ нь: telnet, www, mail, г.м.) ямар протоколоор ажиллах болон эхлэл ба
очих IP хаяг, эхлэл ба очих порт хаяг зэргийг урьдаас тодорхойлж өгсөн байдаг.
Эдгээр үзүүлэлтүүд дээр үндэслэн нэвтрүүлэх болох хаах дүрмүүдийг зохиодог.
IPFW
Дүрмүүдтэй ажиллах дэс дараалал
пакетийг галт хана хүлээн аваад дүрмийн олонлогт байгаа хамгийн
эхний дүрэмтэй тулгах ба цааш дүрмүүдийн дугаарын өсөх дарааллын дагуу
дээрээс доош нэг нэгээр шалгаж эхэлнэ. Пакет аль нэг дүрмийн сонголтын
параметртай тохирвол, түүнд харгалзах үйлдлийг хийж, тухайн пакетийн хувьд
цааш хайлтыг дуусгана. Энэ аргыг эхэнд тохирсон нь дийлнэ
хайлтын
арга гэнэ. Хэрэв тухайн пакет ямар ч дүрэмд тохирохгүй бол, энэ пакетийг 65535 дугаартай
бүх пакетийг хааж, явуулсан хүнд нь ямар ч хариу өгөлгүй орхигдуулна гэсэн
ipfw-н анхдагч дүрэмд албаар тохируулна.
count, skipto ба tee
дүрмүүдийн дараа хайлт үргэлжилнэ.
Энд байгаа зааварчилгаанууд нь төлөвт 'keep state', 'limit', 'in'/'out',
ба via зэрэг тохируулгуудыг агуулсан дүрмүүд дээр үндэслэгдсэн байгаа. Энэ бол хамааруулсан
галт ханын дүрмийн олонлогийг бичих үндсэн арга барил юм.
Хамааруулсан галт хана нь зөвхөн дүрмүүдэд тохирсон пакетуудыг нэвтрүүлнэ.
Ийм маягаар галт ханын цаанаас Интернэт уруу ямар ямар үйлчилгээнүүд
гарч болох болон эсрэгээр Интернэтээс дотоод сүлжээ уруу ямар ямар үйлчилгээнүүд нэвтэрч
болохыг удирдах боломжтой. Эдгээрээс бусад бүх урсгалыг хааж, бүртгэдэг байхаар зохиогдсон
байдаг. Хамааруулсан галт хана нь хамааруулаагүй галт ханаас аюулгүй байдлын хувьд
хэд дахин илүү, тиймээс энд бид зөвхөн хамааруулсан галт ханын дүрмүүдийн талаар
ярилцах болно.
галт ханын дүрмүүдтэй ажиллахдаа маш анхааралтай байх хэрэгтэй.
Зарим тохиргоо серверээс бүх холбоог тань тасалж мэднэ.
Дүрмийн Синтакс
IPFW
дүрмийн синтакс
Энд үзүүлсэн дүрмийн синтакс нь стандарт хамааруулсан
галт хана үүсгэхэд шаардлагатай дүрмийн олонлогийг бичих хэмжээнд
тохируулан хялбаршуулсан байгаа. Дүрмийн синтаксын бүрэн тайлбарыг &man.ipfw.8;
заавар хуудаснаас үзнэ үү.
Дүрмүүд нь түлхүүр үгүүдийг агуулна. Эдгээр түлхүүр үгүүд нь
тухайн мөрөнд зүүнээс баруун тийш тодорхой дэс дараагаар бичигдэнэ.
Түлхүүр үгүүд тодоор бичигдэх тул түүгээр нь ялгаж танина. Зарим түлхүүр
үгүүд дэд-тохируулгатай байна. Тэр нь өөрөө түлхүүр үг байж болохоос гадна
цааш дэд-тохируулгуудыг агуулсан байж болно.
# гэсэн тэмдэгт тайлбарын эхлэлийг заах ба
дүрэм бичсэн мөрийн төгсгөлд эсвэл өөрөө бүтэн мөр байдлаар байрлана.
Хоосон мөрийг тооцохгүй.
CMD RULE_NUMBER ACTION LOGGING SELECTION
STATEFUL
CMD
Шинэ дүрэм бүр дотоод хүснэгтэнд бичигдэхийн тулд
add гэсэн түлхүүр үгийг өмнөө агуулж байх ёстой.
RULE_NUMBER
Дүрэм бүр өөрийн дүрмийн дугаартай байх ёстой.
ACTION
Тухайн дүрмийн сонголтын үзүүлэлтэд пакет тохироход
заасан action буюу үйлдлийг гүйцэтгэх ба дүрэм нь дараах үйлдлүүдийн
аль нэгтэй холбогдсон байна.
allow | accept | pass |
permit
Эдгээр нь бүгд нэг зүйлийг, тухайлбал: дүрэмд тохирсон пакетуудыг нэвтрүүлж, галт ханын
дүрэмтэй ажиллах явцаас гарахыг хэлж өгч байна. Эдгээр дүрмүүдийн дараа хайлт
дуусна.
check-state
нь динамик дүрмийн хүснэгттэй пакетуудыг
тулгана. Хэрэв тохирвол, энэ динамик дүрмийг үүсгэсэн дүрэмд харгалзах
үйлдлийг гүйцэтгэнэ, үгүй бол дараагийн дүрэмд шилжинэ. check-state дүрэмд
сонголтын шалгуур байхгүй. Хэрэв дүрмийн олонлогт check-state дүрэм байхгүй бол
эхний keep-state эсвэл limit дүрмийг динамик дүрмийн хүснэгттэй тулгана.
deny | drop
Энэ хоёр үг хоёул дүрэмд тохирсон пакетуудыг хаяхыг
заана. Хайлт энд дуусна.
Бүртгэл хөтлөлт
log эсвэл logamount
Пакет log гэсэн түлхүүр үг орсон дүрэмд тохироход, энэ тухай мессеж
syslogd уруу SECURITY гэсэн facility нэртэйгээр бүртгэгдэнэ. Зөвхөн
тухайн дүрмийн хувьд бүртгэгдсэн пакетийн тоо logamount параметрийн утгыг
даваагүй тохиолдолд бүртгэл явагдана. Хэрэв logamount-н утгыг зааж өгөөгүй бол,
sysctl-н net.inet.ip.fw.verbose_limit хувьсагчийн утгыг хязгаарын утга болгон авна.
Аль ч тохиолдолд тэг гэсэн утга бүртгэлийн хязгаарыг үгүй болгоно. Хязгаарт тулсан
тохиолдолд, бүртгэлийг дахин идэвхжүүлэхийн тулд бүртгэлийн тоолуурыг эсвэл
тухайн дүрмийн пакет тоолуурыг дахин эхлүүлнэ. ipfw reset log тушаалыг үзнэ үү.
Бүртгэл нь бусад бүх пакет тохирох нөхцлүүд амжилттай нотлогдсоны дараа,
мөн тухайн пакет дээр эцсийн үйлдлийг(зөвшөөрөх, татгалзах) хийхийн өмнө явагдана.
Ямар дүрмүүдийн хувьд бүртгэл явуулахыг та шийдэх болно.
Сонголт
Энд танилцуулах түлхүүр үгнүүд нь тухайн пакет дүрэмд тохирч байгаа
үгүй эсэхийг тодорхойлох үед, шалгагдаж байгаа пакетийн шинжүүдийг тодорхойлно.
Дараах байнгын хэрэглээний шинжүүд өгөгдсөн байдаг ба доорх дэс дарааллаар хэрэглэнэ:
udp | tcp | icmp
эсвэл /etc/protocols файлд байгаа ямар ч протоколын
нэрийг хэрэглэж болно. Харин утга нь шалгагдах протоколын нэрийг заана. Энэ бол заавал
тавигдах шаардлага юм.
from src to dst
from src to dst: from ба to гэсэн
түлхүүр үгүүд IP хаягийг шүүхэд хэрэглэгдэнэ. Хэрэглэх бол эхлэл ба
очих параметрийг ХОЁУЛАНГ зааж өгөх хэрэгтэй. any
гэсэн тусгай түлхүүр үгийн тусламжтай ямар ч IP хаягийг зөвшөөрч өгч болно.
Хэрэглэх жишээ: from any to any
эсвэл from 0.0.0.0/0 to any
эсвэл from any to
0.0.0.0/0
эсвэл from 0.0.0.0 to any
эсвэл
from any to 0.0.0.0
.
from ба to гэсэн түлхүүр үгүүд IP хаягийг шүүхэд хэрэглэгдэнэ.
Дүрмэнд хэрэглэхдээ эхлэл ба очих параметрүүдийг ХОЁУЛАНГ зааж өгөх ёстой.
any гэсэн тусгай түлхүүр үгийн тусламжтай бүх IP хаягийг
зөвшөөрч өгч болно. me гэсэн тусгай түлхүүр үг нь таны
&os; системийн аль нэг интерфэйс дээр тохируулсан IP хаягийг заах ба
галт хана ажиллаж байгаа PC-г (өөрөөр хэлбэл энэ машин) 'from me to any'
эсвэл 'from any to me' эсвэл 'from 0.0.0.0/0 to any' эсвэл 'from any to 0.0.0.0/0'
эсвэл 'from 0.0.0.0 to any' эсвэл 'from any to 0.0.0.0' эсвэл 'from me to 0.0.0.0'
гэсэн байдлаар төлөөлнө. IP хаягуудыг цэгтэй тоон хэлбэр/багийн-урт байдлаар эсвэл
зүгээр цэгтэй тоон хэлбэрээр бичиж болно. Энэ бол заавал тавигдах шаардлага юм.
Багийн уртыг бичихтэй холбоотой тусламжийг дараах хаягаар орж үзнэ үү.
port number
Портын дугаарыг дэмждэг протоколуудын хувьд
(TCP ба UDP гэх мэт), тааруулахыг хүсэж байгаа портын
дугаарыг заавал бичиж өгөх ёстой байдаг. Портын тоон утгын оронд үйлчилгээний нэрийг(/etc/services
файлаас) хэрэглэж болно.
in | out
Орж байгаа болон гарч байгаа пакетуудыг харгалзан тааруулна.
in ба out нь түлхүүр үгүүд бөгөөд дүрэмд тааруулах шалгуур болгож энэ хоёр
үгийн аль нэгийг заавал бичсэн байх ёстой.
via IF
Нэрээр нь зааж өгсөн интерфэйсээр дайран өнгөрч буй пакетуудыг
тааруулна. via гэсэн түлхүүр үг нь тухайн интерфэйсийг тааруулах үйл явцын
нэг хэсэг байдлаар байнга шалгаж байхыг зааж өгнө.
setup
Энэ түлхүүр үг нь TCP пакетуудын хувьд
сесс эхлүүлэх хүсэлтийг зааж өгч байгаа заавал хэрэглэх түлхүүр үг юм.
keep-state
Энэ бол заавал хэрэглэх түлхүүр үг юм. Дүрэм таарахад, галт хана
яг тэр протоколыг ашиглан эхлэл болон очих IP/портын хооронд үүсэх
хоёр чиглэлтэй урсгалыг тааруулах анхдагч чанартай динамик дүрэм үүсгэнэ.
limit {src-addr | src-port | dst-addr |
dst-port}
Дүрэмд заасантай адил параметрүүдтэй холболтын тоог N-р
хязгаарлана. Нэг ба түүнээс дээш тооны эхлэл болон очих хаягууд, портуудыг зааж өгч болно.
'limit' ба 'keep-state'-г нэг дүрэмд хамтад нь хэрэглэж болохгүй. Limit нь 'keep-state'-тэй адил төлөвт
функцуудыг гүйцэтгэхээс гадна өөрийн нэмэлт функцүүлтэй.
Төлөвт Дүрмийн Тохируулгууд
IPFW
төлөвт шүүлт
Төлөвт шүүлт нь урсгалыг сесс харилцаанаас бүрдэж буй хоёр чиглэлтэй пакет
солилцоо гэж үздэг. Мөн энэ нь сесс эхлүүлсэн болон хүлээн авсан хостуудын хоорондох сесс харилцаа нь
хоёр чиглэлтэй пакет солилцох процедуртай зохицож байгаа эсэхийг магадлах чадвартай байдаг.
Сесс харилцааны загварт зохицоогүй пакетийг хуурамч гэж үзэн хүлээж авахгүй.
'check-state' нь IPFW дүрмийн олонлогийн хаана нь пакетийг
динамик дүрмүүдийн боломжоор шалгахыг тогтооно. Таарсан тохиолдолд,
пакет галт ханыг нэвтэрч цааш явах ба энэ хоёр чиглэлт сесс харилцааны туршид
солилцох пакетуудын хувьд шинэ динамик дүрэм үүснэ. Таараагүй тохиолдолд,
пакет дүрмийн олонлогийн дараагийн дүрэмд шалгагдахаар шилжинэ.
Динамик дүрмүүдийн боломж нь маш олон тооны динамик дүрмүүдийг
нээдэг SYN-живүүлэх халдлагаас үүсэх нөөцийн хомсдолд эмзэг байдаг. Энэ халдлагаас зайлсхийхийн
тулд &os; limit гэсэн шинэ тохируулгыг нэмж өгсөн байдаг. Энэ тохируулгын
тусламжтай нэгэн зэрэг явагдах сесс харилцааны тоог хязгаарлана. Limit тохируулгад
зааж өгсөн эхлэл болон очих талбаруудаар пакетийн IP хаягийг асуулга явуулах замаар шалгасны дараа,
энэ дүрэмд энэ IP хаягийн хослол хэдэн удаа таарсан тоог харгалзан хэрэв энэ тоо хязгаараас
давсан бол тухайн пакетийг гээнэ.
галт ханын мессежийг бүртгэх
IPFW
бүртгэл хөтлөлт
Бүртгэл хөтлөлтийн ашиг тус тодорхой юм: Таны бүртгэхээр идэвхжүүлсэн
дүрмүүдийн хувьд, ямар пакетууд гээгдсэн, тэдгээр нь ямар хаягаас ирсэн, хаашаа явж байсан
зэрэг мэдээллийг эргэн харах боломжийг олгох ба гадны халдлагыг мөрдөхөд танд чухал хувь
нэмэр болно.
Бүртгэл хөтлөх боломжийг идэвхжүүлсэн хэдий ч,
IPFW нь өөрөө ямар ч дүрмийг үүсгэхгүй. Администратор аль дүрмүүдийн хувьд
бүртгэл явуулахыг шийдэн, тэдгээр дүрмүүддээ log гэсэн түлхүүр үгийг нэмж бичнэ.
Ихэвчлэн зөвхөн татгалзах дүрмүүдийг бүртгэдэг, жишээлбэл ирж буй ICMP ping-г
татгалзах гэх мэт. Хамгийн сүүлд байгаа ipfw-н анхдагч татгалзах дүрмийг хувилан log түлхүүр
үгтэйгээр үүсгэх нь элбэг байдаг. Ийм байдлаар дүрмийн олонлогийн аль ч дүрмэнд таараагүй
пакетуудыг харах боломжтой болно.
Бүртгэл хөтлөлт нь хоёр талдаа иртэй сэлэмтэй адил юм,
хэрэв та хайхрамжгүй хандвал, диск дүүрэн бүртгэлийн мэдээлэл
дотроо учраа олохгүй суух болно. Дискийг дүүргэх DoS халдлага нь
хамгийн эртний халдлагуудын нэг юм. Эдгээр бүртгэлийн мессеж нь syslogd-д
бичигдэхээс гадна, root консол дэлгэцэн дээр гарах учир удахгүй ядаргаатай санагдаж
эхэлдэг.
IPFIREWALL_VERBOSE_LIMIT=5 гэсэн
цөмийн тохируулга нь системийн бүртгэл хөтлөгч болох syslogd уруу
шидэгдэж байгаа тухайн дүрэмд тохирсон пакетад харгалзах
дараалсан мессежийн тоог хязгаарлана. Энэ тохируулгыг идэвхжүүлсэн үед,
тодорхой дүрмийн хувьд дараалсан мессежийн тоог зааж өгсөн тоогоор хязгаарлана.
Нэг ижил зүйлийг хэлсэн 200 бүртгэлийн бичлэгээс мэдэж авах зүйл хомс юм.
Жишээ нь, тодорхой дүрмийн хувьд дараалсан таван бичлэг syslogd-д бичигдэнэ,
үлдсэн дараалсан ижил бичлэгүүд тоологдоод syslogd-д дараах байдалтай бичигдэнэ:
last message repeated 45 times
Бүртгэл хөтлөгдөж байгаа бүх пакетуудын мессежүүд /etc/syslog.conf
файлд анхдагч байдлаар зааж өгсөн /var/log/security файлд бичигдэнэ.
Дүрмийн скриптийг бүтээх
Туршлагатай IPFW хэрэглэгчид дүрмүүдийг агуулсан файл үүсгээд
түүнийгээ скрипт байдлаар ажиллуулах боломжтой байхаар бичдэг.
Үүний гол давуу тал нь шинэ дүрмүүдийг идэвхжүүлэхийн тулд
системийг дахин ачаалах шаардлагагүй болно. Энэ аргыг ашиглан хэдэн ч
удаа дараалан галт ханын дүрмүүдийг ачаалж болох тул шинэ дүрмүүдийг
шалгах үед хэрэглэхэд тохиромжтой байдаг. Скрипт учраас олон дахин бичигдэж байгаа
утгын оронд симбол орлуулалтыг ашиглах боломжтой. Энэ талаар дараах жишээн дээрээс харна уу.
Энд хэрэглэгдсэн скриптийн синтакс нь sh, csh, ба tcsh бүрхүүл дээр ажиллах
боломжтой. Симбол орлуулалттай талбарууд нь урдаа $ буюу долларын тэмдэгтэй байна.
Симбол талбарууд нь $ тэмдэг урдаа байхгүй. Симбол талбарыг орлох утга нь
давхар хашилтан (") дотор байрлана.
Дүрмийн файлаа дараах байдалтай үүсгэж эхлэх хэрэгтэй:
############### start of example ipfw rules script #############
#
ipfw -q -f flush # Delete all rules
# Set defaults
oif="tun0" # out interface
odns="192.0.2.11" # ISP's DNS server IP address
cmd="ipfw -q add " # build rule prefix
ks="keep-state" # just too lazy to key this each time
$cmd 00500 check-state
$cmd 00502 deny all from any to any frag
$cmd 00501 deny tcp from any to any established
$cmd 00600 allow tcp from any to any 80 out via $oif setup $ks
$cmd 00610 allow tcp from any to $odns 53 out via $oif setup $ks
$cmd 00611 allow udp from any to $odns 53 out via $oif $ks
################### End of example ipfw rules script ############
Байх ёстой бүх зүйлс бүгд байна. Энэ жишээн дээр дүрмүүд чухал биш,
харин симбол орлуулалт хэрхэн ажилладагыг харуулсан байна.
Хэрэв дээрх жишээ /etc/ipfw.rules нэртэй файл дотор байсан бол,
эдгээр дүрмүүдийг дараах тушаалыг өгч дахин ачаалах боломжтой:
&prompt.root; sh /etc/ipfw.rules
/etc/ipfw.rules гэсэн файл ямар ч нэртэй байж
болох ба таны хүссэн ямар ч газар байж болно.
Дараах скриптийг хоёр аргын нэгээр хэрэглэж болно:
Дээрхтэй адил зүйлсийг дараах тушаалыг гараар оруулан
гүйцэтгэж болно:
&prompt.root; ipfw -q -f flush
&prompt.root; ipfw -q add check-state
&prompt.root; ipfw -q add deny all from any to any frag
&prompt.root; ipfw -q add deny tcp from any to any established
&prompt.root; ipfw -q add allow tcp from any to any 80 out via tun0 setup keep-state
&prompt.root; ipfw -q add allow tcp from any to 192.0.2.11 53 out via tun0 setup keep-state
&prompt.root; ipfw -q add 00611 allow udp from any to 192.0.2.11 53 out via tun0 keep-state
Төлөвт дүрмийн олонлог
Дараах NAT хийгдээгүй дүрмийн олонлог нь
аюулгүй байдлыг маш сайн хангасан, хамааруулсан галт ханын дүрмүүдийг
хэрхэн бичих жишээ юм. Хамааруулсан галт хана нь зөвхөн pass дүрмүүдэд тохирсон
үйлчилгээг зөвшөөрч, бусдыг бүгдийг хаана. Бүх галт хананууд хамгийн багадаа хоёр
интерфэйстэй байх ба галт хана маягаар ажиллахын тулд дүрмүүдийг тусгайлан зааж
өгсөн байна.
&os;-г оролцуулаад бүх &unix; төрлийн систем нь үйлдлийн систем
дэх дотоод харилцаандаа lo0 интерфэйс болон 127.0.0.1 гэсэн IP хаягийг хэрэглэхээр
бүтээгдсэн байдаг. Галт ханын дүрмүүд нь дотооддоо хэрэглэж байгаа эдгээр пакетуудыг
чөлөөтэй нэвтрүүлэх дүрмүүдийг агуулсан байх ёстой.
Интернэттэй холбогдож байгаа интерфэйс дээр та өөрийн Интернэт уруу гарч
байгаа болон Интернэтээс ирж байгаа хандалтыг удирдах болон хянах дүрмүүдийг байрлуулна.
Энэ нь таны PPP tun0 интерфэйс эсвэл таны DSL эсвэл кабель
модемд холбогдсон NIC байж болно.
Галт ханын цаана байгаа хувийн LAN-уудад нэг болон түүнээс дээш
тооны NIC-ууд холбогдсон тохиолдолд, тэдгээр интерфэйсүүдийн хувьд тэдгээр LAN
интерфэйсүүдээс ирсэн пакетуудыг чөлөөтэй нэвтрүүлэх дүрмийг агуулсан байх ёстой.
Дүрмүүд эхлээд гурван үндсэн хэсэгт хуваагдан зохион байгуулагдсан
байх ёстой: бүх чөлөөт халдашгүй интерфэйсүүд, нийтийн гадагшаа интерфэйс болон нийтийн дотогшоо интерфэйс.
Нийтийн интерфэйс бүр дээр байгаа дүрмүүдийн дараалал нь хамгийн олон тохиолддог
дүрмүүд нь хамгийн түрүүнд цөөн тохиолддог дүрмүүдээс өмнө байхаар, тухайн интерфэйс болон чиглэлийн
хувьд хаах болон бүртгэх дүрмүүд нь хамгийн сүүлд байхаар бичигдсэн байна.
Дараах жишээн дээрх гадагшаа хэсэг нь Интернэт хандалтыг зөвшөөрч өгөх
үйлчилгээг тодорхойлох сонголтын утгуудыг агуулсан зөвхөн 'allow' дүрмүүдээс бүрдэж байна.
Бүх дүрмүүд 'proto', 'port', 'in/out', 'via' ба 'keep state' тохируулгуудыг агуулсан байгаа.
'proto tcp' дүрмүүд нь төлөвт байдлыг идэвхжүүлж байгаа пакетийг keep state төлөвт хүснэгтэд нэмэх байдлаар,
сесс эхлүүлэх хүсэлтийг тодорхойлох зорилгоор 'setup' тохируулгыг агуулсан байна.
Дотогшоо хэсэгт эхлээд хүсээгүй пакетуудыг хаах дүрмүүдийг бичсэн байна.
Энэ нь хоёр өөр шалтгаантай. Эхнийх нь, энэ дүрмүүдээр хаагдсан зүйлс нь доор байгаа өөр нэг дүрмээр
зөвшөөрөгдсөн пакетийн нэг хэсэг байж болох талтай. Хоёр дахь шалтгаан нь, цөөхөн тоотой хүлээж авдаг
ба бүртгэх хүсэлгүй байгаа пакетуудыг сонгон, тэдгээрийг бүрнээр хаах дүрмийг эхлээд бичиж өгснөөр
эдгээр пакетууд хамгийн сүүлд байгаа ямар ч дүрмүүдэд тохироогүй пакетуудыг бүртгээд хаана гэсэн
дүрмээр дайрахгүй болгож байгаа юм. Учир нь энэ хэсгийн хамгийн сүүлд байгаа бүгдийг бүртгээд хаана
гэсэн дүрэм бол өөрийн систем уруу халдаж байгаа халдлагын нотолгоог цуглуулах таны нэг арга билээ.
Өөр нэг тэмдэглэн хэлэх зүйл бол, хүсээгүй пакетуудын хариуд ямар ч хариу явуулахгүй,
тэд зүгээр л орхигдож алга болно. Ингэснээр халдлага явуулагч түүний явуулсан пакетууд таны системд
хүрсэн эсэх талаар юу ч мэдэхгүй үлдэх болно. Таны системийн талаар хэдий хэр бага мэднэ, төдий чинээ
аюулгүй байна гэсэн үг юм. Хэрвээ мэдэхгүй дугаартай портын хувьд пакетууд бүртгэгдсэн байвал
/etc/services/ файлаас эсвэл
хаягаар тухайн порт ямар зориулалтаар ашиглагддагийг орж шалгаарай.
Троянуудын хэрэглэдэг портын дугааруудыг хаягаар орж шалгаарай.
Хамааруулсан дүрмийн олонлогийн жишээ
Дараах NAT хийгдээгүй дүрмийн олонлог нь
бүрэн хэмжээний хамааруулсан дүрмийн олонлог байгаа юм. Та энэ дүрмүүдийг өөрийн системдээ
ашиглахад буруудах юмгүй. Зөвшөөрөхийг хүсэхгүй байгаа үйлчилгээнүүдийн хувьд харгалзах
нэвтрүүлэх дүрмийг далдлаарай. Хэрэв бүртгэлд байгаа зарим мэдэгдлийг дахин харахыг хүсэхгүй,
бүртгэхийг хүсэхгүй байгаа бол дотогшоо хэсэгт хаах дүрэм нэмж бичээрэй. Дүрэм бүрт байгаа
'dc0' гэсэн интерфэйсийн нэрийн оронд таны системийг Интернэт уруу холбож байгаа NIC картны
интерфэйсийн нэрээр сольж тавиарай. Хэрэглэгчийн PPP-н хувьд, энэ нь 'tun0' байна.
Эдгээр дүрмүүдийг хэрэглэх явцад та хэв маяг олж харах болно.
Интернэт уруу чиглэсэн сесс эхлүүлэх хүсэлтийг төлөөлж байгаа
илэрхийллүүд бүгд keep-state хэрэглэж байгаа.
Интернэтээс ирж буй бүх зөвшөөрөгдсөн үйлчилгээнүүд живүүлэх халдлагыг
зогсоох үүднээс limit гэсэн тохируулгын хамт бичигдсэн байгаа.
Бүх дүрмүүд чиглэлийг тодотгохын тулд in эсвэл out-г хэрэглэсэн байгаа.
Бүх дүрмүүд пакетийн дайран өнгөрөх интерфэйсийг тодорхойлж өгөхдөө via-г хэрэглэсэн байгаа.
Дараах дүрмүүд /etc/ipfw.rules дотор байрлана.
################ Start of IPFW rules file ###############################
# Flush out the list before we begin.
ipfw -q -f flush
# Set rules command prefix
cmd="ipfw -q add"
pif="dc0" # public interface name of NIC
# facing the public Internet
#################################################################
# No restrictions on Inside LAN Interface for private network
# Not needed unless you have LAN.
# Change xl0 to your LAN NIC interface name
#################################################################
#$cmd 00005 allow all from any to any via xl0
#################################################################
# No restrictions on Loopback Interface
#################################################################
$cmd 00010 allow all from any to any via lo0
#################################################################
# Allow the packet through if it has previous been added to the
# the "dynamic" rules table by a allow keep-state statement.
#################################################################
$cmd 00015 check-state
#################################################################
# Interface facing Public Internet (Outbound Section)
# Interrogate session start requests originating from behind the
# firewall on the private network or from this gateway server
# destine for the public Internet.
#################################################################
# Allow out access to my ISP's Domain name server.
# x.x.x.x must be the IP address of your ISP.s DNS
# Dup these lines if your ISP has more than one DNS server
# Get the IP addresses from /etc/resolv.conf file
$cmd 00110 allow tcp from any to x.x.x.x 53 out via $pif setup keep-state
$cmd 00111 allow udp from any to x.x.x.x 53 out via $pif keep-state
# Allow out access to my ISP's DHCP server for cable/DSL configurations.
# This rule is not needed for .user ppp. connection to the public Internet.
# so you can delete this whole group.
# Use the following rule and check log for IP address.
# Then put IP address in commented out rule & delete first rule
$cmd 00120 allow log udp from any to any 67 out via $pif keep-state
#$cmd 00120 allow udp from any to x.x.x.x 67 out via $pif keep-state
# Allow out non-secure standard www function
$cmd 00200 allow tcp from any to any 80 out via $pif setup keep-state
# Allow out secure www function https over TLS SSL
$cmd 00220 allow tcp from any to any 443 out via $pif setup keep-state
# Allow out send & get email function
$cmd 00230 allow tcp from any to any 25 out via $pif setup keep-state
$cmd 00231 allow tcp from any to any 110 out via $pif setup keep-state
# Allow out FBSD (make install & CVSUP) functions
# Basically give user root "GOD" privileges.
$cmd 00240 allow tcp from me to any out via $pif setup keep-state uid root
# Allow out ping
$cmd 00250 allow icmp from any to any out via $pif keep-state
# Allow out Time
$cmd 00260 allow tcp from any to any 37 out via $pif setup keep-state
# Allow out nntp news (i.e. news groups)
$cmd 00270 allow tcp from any to any 119 out via $pif setup keep-state
# Allow out secure FTP, Telnet, and SCP
# This function is using SSH (secure shell)
$cmd 00280 allow tcp from any to any 22 out via $pif setup keep-state
# Allow out whois
$cmd 00290 allow tcp from any to any 43 out via $pif setup keep-state
# deny and log everything else that.s trying to get out.
# This rule enforces the block all by default logic.
$cmd 00299 deny log all from any to any out via $pif
#################################################################
# Interface facing Public Internet (Inbound Section)
# Interrogate packets originating from the public Internet
# destine for this gateway server or the private network.
#################################################################
# Deny all inbound traffic from non-routable reserved address spaces
$cmd 00300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918 private IP
$cmd 00301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918 private IP
$cmd 00302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918 private IP
$cmd 00303 deny all from 127.0.0.0/8 to any in via $pif #loopback
$cmd 00304 deny all from 0.0.0.0/8 to any in via $pif #loopback
$cmd 00305 deny all from 169.254.0.0/16 to any in via $pif #DHCP auto-config
$cmd 00306 deny all from 192.0.2.0/24 to any in via $pif #reserved for docs
$cmd 00307 deny all from 204.152.64.0/23 to any in via $pif #Sun cluster interconnect
$cmd 00308 deny all from 224.0.0.0/3 to any in via $pif #Class D & E multicast
# Deny public pings
$cmd 00310 deny icmp from any to any in via $pif
# Deny ident
$cmd 00315 deny tcp from any to any 113 in via $pif
# Deny all Netbios service. 137=name, 138=datagram, 139=session
# Netbios is MS/Windows sharing services.
# Block MS/Windows hosts2 name server requests 81
$cmd 00320 deny tcp from any to any 137 in via $pif
$cmd 00321 deny tcp from any to any 138 in via $pif
$cmd 00322 deny tcp from any to any 139 in via $pif
$cmd 00323 deny tcp from any to any 81 in via $pif
# Deny any late arriving packets
$cmd 00330 deny all from any to any frag in via $pif
# Deny ACK packets that did not match the dynamic rule table
$cmd 00332 deny tcp from any to any established in via $pif
# Allow traffic in from ISP's DHCP server. This rule must contain
# the IP address of your ISP.s DHCP server as it.s the only
# authorized source to send this packet type.
# Only necessary for cable or DSL configurations.
# This rule is not needed for .user ppp. type connection to
# the public Internet. This is the same IP address you captured
# and used in the outbound section.
#$cmd 00360 allow udp from any to x.x.x.x 67 in via $pif keep-state
# Allow in standard www function because I have apache server
$cmd 00400 allow tcp from any to me 80 in via $pif setup limit src-addr 2
# Allow in secure FTP, Telnet, and SCP from public Internet
$cmd 00410 allow tcp from any to me 22 in via $pif setup limit src-addr 2
# Allow in non-secure Telnet session from public Internet
# labeled non-secure because ID & PW are passed over public
# Internet as clear text.
# Delete this sample group if you do not have telnet server enabled.
$cmd 00420 allow tcp from any to me 23 in via $pif setup limit src-addr 2
# Reject & Log all incoming connections from the outside
$cmd 00499 deny log all from any to any in via $pif
# Everything else is denied by default
# deny and log all packets that fell through to see what they are
$cmd 00999 deny log all from any to any
################ End of IPFW rules file ###############################
NAT болон Төлөвт дүрмийн олонлогийн жишээ
NAT
ба IPFW
IPFW-н NAT функцыг идэвхжүүлэхийн тулд зарим
нэмэлт тохиргооны илэрхийллүүдийг идэвхжүүлэх хэрэгтэй болдог. Цөмийн эх кодын
бусад IPFIREWALL илэрхийллүүд дээр 'option divert' илэрхийллийг нэмж эмхэтгэн
тусгайлан бэлдсэн цөмийг гаргаж авах хэрэгтэй.
/etc/rc.conf доторх энгийн IPFW тохируулгууд дээр
нэмж дараах тохируулгууд хэрэгтэй болно.
natd_enable="YES" # Enable NATD function
natd_interface="rl0" # interface name of public Internet NIC
natd_flags="-dynamic -m" # -m = preserve port numbers if possible
Төлөвт дүрмүүдийг divert natd (Сүлжээний хаягийн Хөрвүүлэлт)
дүрмийн хамт хэрэглэх нь дүрмийн олонлог бичих логикийг төвөгтэй болгодог.
'check-state' ба 'divert natd' дүрмүүдийн дүрмийн олонлог дахь байрлал нь маш
их нөлөөтэй. Энэ нь хялбар дайраад-өнгөрөх логик урсгал биш болно.
'skipto' гэсэн шинэ үйлдлийн төрлийг хэрэглэх болно. skipto тушаалыг хэрэглэхийн тулд
хаашаа үсрэхээ тодорхойлохын тулд бүх дүрмүүдийг дугаарлах хэрэгтэй болно.
Дараах тайлбаргүй жишээн дээр пакет дүрмийн олонлогоор дайрч
өнгөрөх дарааллыг тайлбарлахаар сонгон авсан дүрэм бичих арга байгаа юм.
Дүрэмтэй ажиллах процесс дүрмийн файлд байгаа хамгийн эхний
дүрмээр эхлэн цааш дүрмүүдийг нэг нэгээр уншин, файлын төгсгөл хүртэл эсвэл
пакет аль нэг дүрмийн сонголтын шалгуурт тохирч галт ханыг орхих хүртэл үргэлжилнэ.
100, 101, 450, 500, ба 510 дугаартай дүрмүүдийн байрлалыг сайн анзаарах хэрэгтэй.
Эдгээр дүрмүүд нь гадагшаа болон дотогшоо чиглэлтэй пакетуудын хөрвүүлэлтийг
удирдах бөгөөд ингэснээр keep-state динамик хүснэгтэн дэх тэдгээрт харгалзах
мөрөнд хувийн LAN IP хаяг бүртгэгдсэн байх нөхцөлийг хангана. Дараа нь,
бүх зөвшөөрөх болон татгалзах дүрмүүдэд пакетийн явж буй чиглэл (өөрөөр хэлбэл гадагшаа эсвэл дотогшоо)
ба интерфэйсийг зааж өгсөн байгааг анзаараарай. Мөн гадагшаа сесс эхлүүлэх хүсэлтүүд,
сүлжээний хаягийн хөрвүүлэлтийн бүх skipto дүрмүүд 500-с эхэлж байгааг анзаарна уу.
Нэгэн LAN хэрэглэгч вэб хуудас үзэхийн тулд вэб хөтчийг хэрэглэж байна гэж бодъё.
Веб хуудсууд 80-р портыг ашиглан холбогдоно. Пакет галт хананд ирнэ,
гадагшаа чиглэж байгаа тул 100-р дүрмэнд тохирохгүй. 101-р дүрмийг мөн
өнгөрнө, яагаад гэвэл энэ нь хамгийн анхны пакет тул keep-state
динамик хүснэгтэнд хараахан бичигдэж амжаагүй байгаа. Пакет эцэст нь
125-р дүрэм дээр ирж, дүрэмд таарна. Энэ пакет Интернэт уруу харсан
NIC-р гадагшаа гарч байгаа. пакетийн эхлэл IP хаяг нь хувийн LAN IP хаяг хэвээр байгаа.
Энэ дүрмэнд таарах үед хоёр үйлдэл хийгдэнэ. keep-state тохируулга энэ дүрмийг
keep-state динамик дүрмийн хүснэгтэнд нэмнэ, мөн зааж өгсөн үйлдлийг гүйцэтгэнэ.
Үйлдэл нь динамик хүснэгтэд нэмэгдсэн мэдээллийн нэг хэсэг байна. Энэ тохиолдолд
"skipto rule 500" байна. 500-р дүрэм нь пакетийн IP хаягийг NAT хийж,
пакетийг гадагш явуулна. Үүнийг бүү мартаарай, энэ бол маш чухал шүү.
Энэ пакет өөрийн замаар хүрэх газраа хүрээд буцаж ирэхдээ мөн л энэ дүрмийн олонлогийг дайрна.
Энэ үед харин 100-р дүрэмд тохирч, очих IP хаяг нь буцаж харгалзах LAN IP хаяг уруу хөрвүүлэгдэнэ.
Дараа нь check-state дүрмээр гарах ба хүснэгтэнд явагдаж байгаа сесс харилцаанд оролцож байгаа
гэж тэмдэглэгдсэн тул цааш LAN уруу нэвтрэн орно. Тэгээд өөрийг нь анх явуулсан LAN PC уруу очих ба
алсын серверээс өөр хэсэг өгөгдлийг авахыг хүссэн шинэ пакетийг явуулна. Энэ удаа энэ пакет
check-state дүрмээр шалгагдах ба түүний гадагшаа урсгалд харгалзах мөр олдох тул харгалзах
үйлдэл 'skipto 500'-г гүйцэтгэнэ. Пакет 500-р мөр уруу үсэрч NAT хийгдэн цааш
өөрийн замаар явах болно.
Дотогшоо урсгал дээр, идэвхтэй сесс харилцаанд оролцож байгаа
гаднаас ирж байгаа бүх зүйлс автоматаар check-state дүрмээр болон зохих
divert natd дүрмүүдээр шийдэгдэнэ. Энд бидний хийх ёстой зүйл бол
хэрэггүй пакетуудыг татгалзаж, зөвшөөрөгдсөн үйлчилгээг нэвтрүүлэх юм.
Галт ханын байгаа машин дээр апачи сервер ажиллаж байна, тэгээд Интернэтээс
хүмүүс энэ дотоод вэб сайт уруу хандаж байна гэж бодъё. Шинэ дотогшоо сесс эхлүүлэх
хүсэлтийн пакет 100-р дүрэмд тохирох бөгөөд түүний IP хаяг галт ханын LAN IP
хаяг уруу оноолт хийгдэнэ. Дараа нь энэ пакет цааш бүх дүрмүүдээр шалгагдан
эцэст нь 425-р дүрэмд тохирно. Энэ дүрэмд таарах үед хоёр үйлдэл хийгдэнэ.
Энэ дүрэм keep-state динамик дүрмийн хүснэгтэнд нэмэгдэнэ, мөн зааж өгсөн үйлдлийг гүйцэтгэнэ.
Гэвч энэ тохиолдолд энэ эхлэл IP хаягнаас эхэлсэн шинэ сесс эхлүүлэх хүсэлтийн тоо 2-оор хязгаарлагдана.
Энэ нь тодорхой порт дээр ажиллаж байгаа үйлчилгээний хувьд DoS халдлагаас хамгаална.
Харгалзах үйлдэл нь зөвшөөрөгдсөн тул пакет LAN уруу нэвтэрнэ. Буцах замд check-state
дүрэм энэ пакетийг идэвхтэй сесс харилцаанд хамаарч байгааг таних тул 500-р дүрэм уруу шилжүүлэн,
пакет тэнд NAT хийгдээд цааш гадагшаа интерфэйсээр гарна.
Жишээ дүрмийн олонлог #1:
#!/bin/sh
cmd="ipfw -q add"
skip="skipto 500"
pif=rl0
ks="keep-state"
good_tcpo="22,25,37,43,53,80,443,110,119"
ipfw -q -f flush
$cmd 002 allow all from any to any via xl0 # exclude LAN traffic
$cmd 003 allow all from any to any via lo0 # exclude loopback traffic
$cmd 100 divert natd ip from any to any in via $pif
$cmd 101 check-state
# Authorized outbound packets
$cmd 120 $skip udp from any to xx.168.240.2 53 out via $pif $ks
$cmd 121 $skip udp from any to xx.168.240.5 53 out via $pif $ks
$cmd 125 $skip tcp from any to any $good_tcpo out via $pif setup $ks
$cmd 130 $skip icmp from any to any out via $pif $ks
$cmd 135 $skip udp from any to any 123 out via $pif $ks
# Deny all inbound traffic from non-routable reserved address spaces
$cmd 300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918 private IP
$cmd 301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918 private IP
$cmd 302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918 private IP
$cmd 303 deny all from 127.0.0.0/8 to any in via $pif #loopback
$cmd 304 deny all from 0.0.0.0/8 to any in via $pif #loopback
$cmd 305 deny all from 169.254.0.0/16 to any in via $pif #DHCP auto-config
$cmd 306 deny all from 192.0.2.0/24 to any in via $pif #reserved for docs
$cmd 307 deny all from 204.152.64.0/23 to any in via $pif #Sun cluster
$cmd 308 deny all from 224.0.0.0/3 to any in via $pif #Class D & E multicast
# Authorized inbound packets
$cmd 400 allow udp from xx.70.207.54 to any 68 in $ks
$cmd 420 allow tcp from any to me 80 in via $pif setup limit src-addr 1
$cmd 450 deny log ip from any to any
# This is skipto location for outbound stateful rules
$cmd 500 divert natd ip from any to any out via $pif
$cmd 510 allow ip from any to any
######################## end of rules ##################
Дараах жишээ дээрхтэй нилээд төстэй боловч туршлагагүй IPFW дүрэм бичигчид зориулан
дүрмүүд юунд зориулагдсаныг тайлбарласан тайлбартай байгаагаараа онцлог юм.
Жишээ дүрмийн олонлог #2:
#!/bin/sh
################ Start of IPFW rules file ###############################
# Flush out the list before we begin.
ipfw -q -f flush
# Set rules command prefix
cmd="ipfw -q add"
skip="skipto 800"
pif="rl0" # public interface name of NIC
# facing the public Internet
#################################################################
# No restrictions on Inside LAN Interface for private network
# Change xl0 to your LAN NIC interface name
#################################################################
$cmd 005 allow all from any to any via xl0
#################################################################
# No restrictions on Loopback Interface
#################################################################
$cmd 010 allow all from any to any via lo0
#################################################################
# check if packet is inbound and nat address if it is
#################################################################
$cmd 014 divert natd ip from any to any in via $pif
#################################################################
# Allow the packet through if it has previous been added to the
# the "dynamic" rules table by a allow keep-state statement.
#################################################################
$cmd 015 check-state
#################################################################
# Interface facing Public Internet (Outbound Section)
# Interrogate session start requests originating from behind the
# firewall on the private network or from this gateway server
# destine for the public Internet.
#################################################################
# Allow out access to my ISP's Domain name server.
# x.x.x.x must be the IP address of your ISP's DNS
# Dup these lines if your ISP has more than one DNS server
# Get the IP addresses from /etc/resolv.conf file
$cmd 020 $skip tcp from any to x.x.x.x 53 out via $pif setup keep-state
# Allow out access to my ISP's DHCP server for cable/DSL configurations.
$cmd 030 $skip udp from any to x.x.x.x 67 out via $pif keep-state
# Allow out non-secure standard www function
$cmd 040 $skip tcp from any to any 80 out via $pif setup keep-state
# Allow out secure www function https over TLS SSL
$cmd 050 $skip tcp from any to any 443 out via $pif setup keep-state
# Allow out send & get email function
$cmd 060 $skip tcp from any to any 25 out via $pif setup keep-state
$cmd 061 $skip tcp from any to any 110 out via $pif setup keep-state
# Allow out FreeBSD (make install & CVSUP) functions
# Basically give user root "GOD" privileges.
$cmd 070 $skip tcp from me to any out via $pif setup keep-state uid root
# Allow out ping
$cmd 080 $skip icmp from any to any out via $pif keep-state
# Allow out Time
$cmd 090 $skip tcp from any to any 37 out via $pif setup keep-state
# Allow out nntp news (i.e. news groups)
$cmd 100 $skip tcp from any to any 119 out via $pif setup keep-state
# Allow out secure FTP, Telnet, and SCP
# This function is using SSH (secure shell)
$cmd 110 $skip tcp from any to any 22 out via $pif setup keep-state
# Allow out whois
$cmd 120 $skip tcp from any to any 43 out via $pif setup keep-state
# Allow ntp time server
$cmd 130 $skip udp from any to any 123 out via $pif keep-state
#################################################################
# Interface facing Public Internet (Inbound Section)
# Interrogate packets originating from the public Internet
# destine for this gateway server or the private network.
#################################################################
# Deny all inbound traffic from non-routable reserved address spaces
$cmd 300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918 private IP
$cmd 301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918 private IP
$cmd 302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918 private IP
$cmd 303 deny all from 127.0.0.0/8 to any in via $pif #loopback
$cmd 304 deny all from 0.0.0.0/8 to any in via $pif #loopback
$cmd 305 deny all from 169.254.0.0/16 to any in via $pif #DHCP auto-config
$cmd 306 deny all from 192.0.2.0/24 to any in via $pif #reserved for docs
$cmd 307 deny all from 204.152.64.0/23 to any in via $pif #Sun cluster
$cmd 308 deny all from 224.0.0.0/3 to any in via $pif #Class D & E multicast
# Deny ident
$cmd 315 deny tcp from any to any 113 in via $pif
# Deny all Netbios service. 137=name, 138=datagram, 139=session
# Netbios is MS/Windows sharing services.
# Block MS/Windows hosts2 name server requests 81
$cmd 320 deny tcp from any to any 137 in via $pif
$cmd 321 deny tcp from any to any 138 in via $pif
$cmd 322 deny tcp from any to any 139 in via $pif
$cmd 323 deny tcp from any to any 81 in via $pif
# Deny any late arriving packets
$cmd 330 deny all from any to any frag in via $pif
# Deny ACK packets that did not match the dynamic rule table
$cmd 332 deny tcp from any to any established in via $pif
# Allow traffic in from ISP's DHCP server. This rule must contain
# the IP address of your ISP's DHCP server as it's the only
# authorized source to send this packet type.
# Only necessary for cable or DSL configurations.
# This rule is not needed for 'user ppp' type connection to
# the public Internet. This is the same IP address you captured
# and used in the outbound section.
$cmd 360 allow udp from x.x.x.x to any 68 in via $pif keep-state
# Allow in standard www function because I have Apache server
$cmd 370 allow tcp from any to me 80 in via $pif setup limit src-addr 2
# Allow in secure FTP, Telnet, and SCP from public Internet
$cmd 380 allow tcp from any to me 22 in via $pif setup limit src-addr 2
# Allow in non-secure Telnet session from public Internet
# labeled non-secure because ID & PW are passed over public
# Internet as clear text.
# Delete this sample group if you do not have telnet server enabled.
$cmd 390 allow tcp from any to me 23 in via $pif setup limit src-addr 2
# Reject & Log all unauthorized incoming connections from the public Internet
$cmd 400 deny log all from any to any in via $pif
# Reject & Log all unauthorized out going connections to the public Internet
$cmd 450 deny log all from any to any out via $pif
# This is skipto location for outbound stateful rules
$cmd 800 divert natd ip from any to any out via $pif
$cmd 801 allow ip from any to any
# Everything else is denied by default
# deny and log all packets that fell through to see what they are
$cmd 999 deny log all from any to any
################ End of IPFW rules file ###############################
diff --git a/mn_MN.UTF-8/books/handbook/jails/chapter.sgml b/mn_MN.UTF-8/books/handbook/jails/chapter.sgml
index c635c5b162..6eb03e318f 100644
--- a/mn_MN.UTF-8/books/handbook/jails/chapter.sgml
+++ b/mn_MN.UTF-8/books/handbook/jails/chapter.sgml
@@ -1,917 +1,932 @@
Матео
Риондато
Хувь нэмэр болгон оруулсан
Цагаанхүүгийн
Ганболд
Орчуулсан
Jails буюу Шоронгууд
шоронгууд
Ерөнхий агуулга
Энэ бүлэг нь &os;-ийн шоронгууд гэж юу болох, тэдгээрийг хэрхэн ашиглах
талаар тайлбарлах болно. Шоронгууд буюу заримдаа chroot орчнуудын
өргөжүүлсэн орлуулалт гэгддэг энэ боломж нь системийн администраторуудад
зориулагдсан маш хүчтэй хэрэгсэл боловч тэдгээрийн үндсэн хэрэглээ нь
илүү дэвшилтэт хэрэглэгчдэд бас үр ашигтай байдаг.
Энэ бүлгийг уншсаны дараа, та дараах зүйлсийг мэдэх болно:
Шорон гэж юу болох, &os;-ийн суулгалтуудад ямар зорилгоор
ашиглагдаж болох талаар.
Шоронг хэрхэн бүтээх, эхлүүлэх, болон зогсоох талаар.
Шоронгийн гадна болон дотор талаас хийгдэж болох
удирдлагын үндсүүд.
Шоронгийн тухай ашигтай мэдээллийн өөр бусад эхүүдийг дурдвал:
&man.jail.8; гарын авлагын хуудас. Энэ нь jail
хэрэгслийн бүрэн гүйцэд авлага юм — jail нь &os;
дээр &os; шоронгуудыг эхлүүлэх, зогсоох, болон хянахад ашиглагдаж болох
удирдлагын хэрэгсэл юм.
Захидлын жагсаалтууд болон тэдгээрийн архивууд. &a.questions;
болон бусад захидлын жагсаалтуудын архивууд нь &a.mailman.lists; дээр
байрладаг бөгөөд шоронгуудын талаар маш баялаг материалуудыг агуулсан байдаг.
Архивуудаас хайх юм уу эсвэл &a.questions.name; захидлын жагсаалт уруу
шинэ асуултаа илгээх нь үргэлж сонирхолтой байдаг.
Шоронгуудтай холбоотой ойлголтууд
Шоронгуудтай холбоотой &os; системийн хэсгүүд, тэдгээрийн дотоод хэсгүүд болон
&os;-ийн бусад хэсэгтэй хэрхэн харилцдаг арга замыг илүүтэй ойлгохыг хөнгөвчлөхийн тулд
энэ бүлэгт дараах ойлголтуудыг ашиглах болно:
&man.chroot.2; (тушаал)
Процесс болон түүний бүх үр удмуудын root санг өөрчилдөг
&os;-ийн системийн дуудлага.
&man.chroot.2; (орчин)
chroot
-д ажиллаж байгаа процессуудын орчин.
Үүнд харагдаж байгаа файлын системийн хэсэг, байгаа хэрэглэгч болон
бүлэг, сүлжээний интерфэйсүүд болон бусад IPC арга замууд гэх
мэт эх үүсвэрүүд ордог.
&man.jail.8; (тушаал)
Шоронгийн орчин дотор процессуудыг ажиллуулах боломжийг олгох
системийн удирдлагын хэрэгсэл.
хост (систем, процесс, хэрэглэгч, гэх мэт.)
Шоронгийн системийн хяналтын систем. Хост систем нь байгаа бүх тоног
төхөөрөмжийн эх үүсвэрүүдэд хандах боломжтой байдаг бөгөөд
шоронгийн орчны болон түүний гаднах процессуудыг хянаж чаддаг.
Хост системийн шоронгоос ялгарах нэг чухал ялгаа нь шорон доторх
супер хэрэглэгчийн процессуудад хамаарах хязгаарлалтууд
хост системийн процессуудын хувьд үйлчилдэггүй явдал юм.
хост хийгдсэн (систем, процесс, хэрэглэгч, гэх мэт.)
&os; шоронгоор эх үүсвэрүүдэд ханддаг хандалт нь хязгаарлагддаг
процесс, хэрэглэгч эсвэл бусад зүйлс.
Танилцуулга
Системийн удирдлага нь хэцүү, самууруулмаар ажил болохоор администраторын
амьдралыг хялбар болгох үүднээс олон хүчирхэг хэрэгслүүд хийгдэж хөгжүүлэгдсэн
байдаг. Эдгээр хэрэгслүүд нь системийг суулгах, тохируулах, болон арчлахад
нэгэн төрлийн өргөтгөлүүдийг ихэвчлэн хангаж өгдөг. Администраторуудын
хийх ёстой эдгээр ажлуудын нэг хэсэг нь системийн аюулгүй байдлыг зөв тохируулах
явдал юм. Ингэснээр аюулгүй байдлын зөрчлүүдгүйгээр систем өөрийн жинхэнэ
зорилгоороо үйлчлэх болно.
&os; системийн аюулгүй байдлыг сайжруулахад ашиглагдаж болох хэрэгслүүдийн
нэг нь jails буюу шоронгууд
юм. Шоронгуудыг &os; 4.X дээр &a.phk; анх танилцуулсан юм. Гэхдээ тэдгээрийг
хүчирхэг, уян хатан дэд систем болгохын тулд &os; 5.X дээр илүү ихээр сайжруулсан
билээ. Тэдгээрийн ашигтай тал, ажиллагаа болон найдвартай байдлыг өргөжүүлэн
тэдгээрийн хөгжүүлэлт үргэлжилсэн хэвээр болой.
Шорон гэж юу вэ
BSD-тэй төстэй үйлдлийн системүүд нь 4.2BSD-ийн үеэс эхлэн &man.chroot.2;
боломжтой болсон билээ. &man.chroot.8; хэрэгсэл нь процессуудын олонлогийн
root санг өөрчлөхөд ашиглагдаж
аюулгүй орчин үүсгэн системийн бусад хэсгээс тэдгээрийг тусгаарладаг.
chroot хийгдсэн орчинд үүсгэгдсэн процессууд нь өөрийн орчноос гаднах файлууд
болон эх үүсвэрүүдэд хандаж чаддаггүй. Энэ шалтгаанаар chroot хийгдсэн
орчинд ажиллаж байгаа үйлчилгээг эвдэх нь халдагчид бүхэл системийг
эвдэх боломжийг олгох ёсгүй юм. &man.chroot.8; хэрэгсэл нь маш их уян хатан
чанар эсвэл төвөгтэй, дэвшилтэт боломжуудыг шаарддаггүй хялбар ажлуудад
сайн байдаг. Мөн chroot ойлголтын эхлэлээс эхлээд л chroot хийгдсэн орчноос
зугтах олон арга замууд олдсон бөгөөд хэдийгээр тэдгээр нь &os; цөмийн
орчин үеийн хувилбаруудад засагдсан боловч &man.chroot.2; нь үйлчилгээнүүдийг
аюулгүй болгоход зориулагдсан туйлын шийдэл биш нь тодорхой байсан юм.
Үүнтэй холбоотой шинэ дэд систем хийгдэх шаардлагатай болсон байна.
Энэ нь шоронгууд яагаад хөгжүүлэгдсэн
гол шалтгаануудын нэг юм.
Шоронгууд нь уламжлалт &man.chroot.2; орчны ойлголтуудыг хэд хэдэн
аргаар сайжруулдаг. Уламжлалт &man.chroot.2; орчинд процессууд нь
өөрийн хандаж болох файлын системийн нэг хэсэгт хязгаарлагдаж байдаг.
Системийн бусад эх үүсвэрүүд (системийн хэрэглэгчид, ажиллаж байгаа процессууд,
эсвэл сүлжээний дэд систем зэрэг) нь chroot хийгдсэн процессууд болон
хост системийн процессуудын хооронд хуваалцан хэрэглэгддэг. Шоронгууд нь
зөвхөн файлын систем уруу хандах хандалт биш бас хэрэглэгчид, &os; цөмийн
сүлжээний дэд систем болон бусад хэд хэдэн зүйлсүүдийг виртуалчлан энэ загварыг
өргөтгөдөг байна. Шорон болгосон орчны хандалтыг тааруулахад зориулсан
илүү бүрэн гүйцэд нарийн тааруулсан хяналтуудын олонлог байдаг нь
хэсэгт тайлбарлагдсан байгаа.
Шорон дөрвөн элементээр тодорхойлогддог:
Сангийн дэд мод — шоронгийн орж ирдэг эхлэл цэг.
Шорон дотор орсны дараа процессийг энэ дэд модноос гадна
зугтахыг зөвшөөрдөггүй. Анхдагч &man.chroot.2; дизайныг
зовоосон аюулгүй байдлын уламжлалт асуудлууд нь &os; шоронгуудад
байдаггүй.
Хостын нэр — шорон дотор ашиглагдах хостын нэр. Шоронгууд нь
сүлжээний үйлчилгээнүүдийг хост хийхэд (байрлуулах) ихэвчлэн ашиглагддаг
болохоор шорон бүрийн хувьд тодорхойлсон нэртэй байх нь системийн администраторт
ихээхэн тус болж чадах юм.
IP хаяг — энэ нь шорон бүрт өгөгдөх
бөгөөд шоронгийн оршин тогтнох хугацаанд ямар ч талаараа өөрчлөгдөх
ёсгүй. Шоронгийн IP хаяг нь ихэвчлэн байгаа сүлжээний интерфэйсийн alias хаяг
байх боловч заавал тийм байх шаардлагагүй юм.
Тушаал — шорон дотор ажиллах програм/тушаалын зам.
Энэ нь шоронгийн орчны root сантай харьцангуй байх бөгөөд
шоронгийн тусгай очны төрлөөс хамаараад асар өөр өөр байж болох
юм.
Эдгээрээс гадна шоронгууд нь өөрийн гэсэн хэрэглэгчид болон өөрийн
root хэрэглэгчтэй байж болдог. Мэдээжийн хэрэг
root хэрэглэгчийн хүч чадал шоронгийн орчин дотор
хязгаарлагддаг бөгөөд хост системийн үүднээс авч үзвэл шоронгийн root
хэрэглэгч нь бүхнийг чадагч хэрэглэгч биш юм. Мөн шоронгийн root
хэрэглэгчид өөрийнх нь харгалзах &man.jail.8; орчноос гадна осолтой үйлдлүүдийг
систем дээр хийлгэхийг зөвшөөрдөггүй. root хэрэглэгчийн
боломжууд болон хязгаарлалтуудын тухай дэлгэрэнгүй мэдээллийг хэсэгт доор хэлэлцэх болно.
Шоронг үүсгэж хянах нь
Зарим администраторууд шоронг дараах хоёр төрөлд хуваадаг: эдгээр нь
жинхэнэ &os; системтэй адил төстэй бүрэн
шоронгууд болон
нэг програм юм уу эсвэл үйлчилгээнд зориулагдсан, магадгүй зөвшөөрлүүдтэй ажиллах
үйлчилгээ
шоронгууд юм. Энэ нь зөвхөн ухагдахууны хуваагдал
бөгөөд шоронг бүтээх процесс үүнд хамаагүй юм. &man.jail.8; гарын авлагын
хуудас шоронг бүтээх аргачлалын талаар маш тодорхой зааварласан буй:
&prompt.root; setenv D /here/is/the/jail
&prompt.root; mkdir -p $D
&prompt.root; cd /usr/src
&prompt.root; make world DESTDIR=$D
&prompt.root; cd etc/ Энэ алхам нь
&os; 6.0 болон түүнээс хойшх хувиилбаруудад шаардлагагүй.
&prompt.root; make distribution DESTDIR=$D
&prompt.root; mount_devfs devfs $D/dev
Шоронгийн байрлалыг сонгох нь хамгийн шилдэг эхлэх цэг юм.
Энэ нь шорон физикээр өөрийн хостын файлын систем дотор байрлах байрлал юм. Сайн сонголт нь
/usr/jail/jailname
байж болох бөгөөд энд байгаа jailname нь
шоронг таниулж байгаа хостын нэр юм. /usr/ файлын систем нь
шоронгийн файлын системийн хувьд ихэвчлэн хангалттай зайтай байдаг.
Үндсэндээ бүрэн
шоронгуудын хувьд энэ шоронгийн
файлын систем нь үндсэн &os; системийн андагч
суулгацад байдаг бүх файлуудын хуулбар байдаг.
Энэ тушаал нь шоронгийн физик байрлал болгон сонгосон сангийн дэд модыг
файлын систем дээр шаардлагатай хоёртын файлууд, сангууд, гарын авлагын
хуудаснууд гэх зэргүүдийг тараан байрлуулах болно. Бүгд хэвшмэл &os;
загвараар хийгдэнэ — эхлээд бүгд бүтээгдэнэ/эмхэтгэгдэнэ, дараа нь
хүрэх замд суулгагдана.
make тушаалд зориулагдсан
distribution тохируулга нь бүх шаардлагатай
тохиргооны файлыг суулгана, өөрөөр хэлбэл энэ нь
/usr/src/etc/ сангийн
бүх суулгаж болох файлуудыг шоронгийн орчны
/etc сан болох
$D/etc/ руу хуулдаг.
Шорон дотор &man.devfs.8; файлын системийг холбох шаардлагагүй.
Нөгөө талаас авч үзвэл дурын, бараг бүх програм өөрийн зорилгоосоо хамааран
хамгийн багаар бодоход ядаж ганц төхөөрөмжид хандах шаардлагатай байдаг.
Шорон дотроос төхөөрөмжид хандах хандалтыг хянах нь маш чухал байдаг.
Учир нь буруу тохируулгууд халдагчид шорон дотор муухай зүйлс хийх боломжийг
олгож болох юм. &man.devfs.8; дээрх хяналтыг &man.devfs.8; болон
&man.devfs.conf.5; гарын авлагын хуудаснуудад тайлбарласан дүрмийн
олонлогуудаар удирддаг.
Шорон суулгагдсаны дараа &man.jail.8; хэрэгсэл ашиглан түүнийг
эхлүүлж болно. &man.jail.8; хэрэгсэл дөрвөн зайлшгүй шаардлагатай
нэмэлт өгөгдлийг авдаг бөгөөд эдгээр нь хэсэгт тайлбарлагдсан байгаа болно.
Өөр бусад нэмэлт өгөгдлүүдийг бас зааж өгч болох бөгөөд өөрөөр хэлбэл
шорон хийгдсэн процессийг тухайн нэг хэрэглэгчийн итгэмжлэлүүдтэй ажиллуулж болох юм.
-н нэмэлт өгөгдөл нь
шоронгийн төрлөөс хамаарна; виртуал системийн
хувьд /etc/rc нь боломжийн сонголт байна.
Энэ нь жинхэнэ &os; системийн эхлүүлэх дарааллыг хуулбарлах учраас тэр
юм. Үйлчилгээ шоронгийн хувьд шорон дотор
ажиллах үйлчилгээ эсвэл програмаас энэ нь хамаарна.
Шоронгууд нь ихэвчлэн ачаалах үед эхлүүлэгддэг бөгөөд &os;
rc арга зам нь үүнийг хийх хялбар аргаар
хангадаг.
Ачаалах үед эхлэхээр идэвхжүүлэгдсэн шоронгуудын жагсаалтыг
&man.rc.conf.5; файлд нэмэх ёстой:
jail_enable="YES" # Set to NO to disable starting of any jails
jail_list="www" # Space separated list of names of jails
Шорон бүрийг тайлбарласан &man.rc.conf.5; тохируулгуудын бүлэг
jail_list-д жагсаагдсан шорон бүрийн
хувьд доор дурдсаныг нэмэх ёстой:
jail_www_rootdir="/usr/jail/www" # jail's root directory
jail_www_hostname="www.example.org" # jail's hostname
jail_www_ip="192.168.0.10" # jail's IP address
jail_www_devfs_enable="YES" # mount devfs in the jail
jail_www_devfs_ruleset="www_ruleset" # devfs ruleset to apply to jail
&man.rc.conf.5;-д тохируулагдсан шоронгуудын анхдагч
эхлүүлэлт нь шоронг бүрэн виртуал систем гэж тооцдог шоронгийн
/etc/rc скриптийг ажиллуулах болно. Үйлчилгээний
шоронгуудын хувьд
jail_jailname_exec_start
тохируулгыг зохистойгоор тохируулан шоронгийн анхдагч эхлүүлэх тушаалыг
өөрчлөх ёстой.
Тохируулгуудын бүрэн жагсаалтыг &man.rc.conf.5; гарын
авлагын хуудаснаас үзнэ үү.
Шоронд зориулагдсан оруулга rc.conf файлд байгаа
тохиолдолд /etc/rc.d/jail скрипт шоронг гараар эхлүүлэх
эсвэл зогсооход ашиглагдаж болох юм:
&prompt.root; /etc/rc.d/jail start www
&prompt.root; /etc/rc.d/jail stop www
Одоогоор &man.jail.8;-г зогсоох цэвэр зам байхгүй байгаа.
Цэвэр системийн зогсолтыг хийх тушаалуудыг шорон дотор ашиглах боломжгүй
байдаг болохоор тэр юм. Шоронг зогсоох хамгийн шилдэг арга бол
дараах тушаалыг шорон дотроос ажиллуулах эсвэл шоронгийн гадна
&man.jexec.8; хэрэгслийг ашиглах явдал юм:
&prompt.root; sh /etc/rc.shutdown
Үүний талаар дэлгэрэнгүй мэдээллийг &man.jail.8; гарын авлагын хуудаснаас
олж болно.
Нарийн тааруулалт болон удирдлага
Аль ч шоронд зориулж тохируулж болох хэд хэдэн тохируулгууд байдаг бөгөөд
өндөр түвшний програмуудыг хийхийн тулд хост &os; системийг шоронгуудтай цуг
хослуулах төрөл бүрийн аргууд бас байдаг. Энэ хэсэг нь дараах зүйлсийг үзүүлнэ:
Ажиллагаа болон шоронгийн суулгалтаар хийгдсэн аюулгүй байдлын
хязгаарлалтуудыг тааруулахад зориулагдсан зарим тохируулгууд.
&os;-ийн портын цуглуулгад байх, шорон дээр суурилсан шийдлүүдийг
хийхэд ашиглагдаж болох шорон удирдах зарим нэг өндөр түвшний
програмууд.
&os; дээр шорон тааруулах системийн хэрэгслүүд
Шоронгийн тохиргооны нарийн сайн тааруулалтыг &man.sysctl.8;
хувьсагчуудыг тохируулснаар ихэвчлэн хийдэг. Бүх хамаатай тохируулгуудыг
зохион байгуулах үндэс болон sysctl-ийн тусгай дэд мод байдаг: энэ нь
&os; цөмийн тохируулгуудын security.jail.* шатлал
юм. Энд шоронтой холбоотой гол sysctl-уудын жагсаалтыг тэдгээрийн
анхдагч утгуудтайгаар харуулав. Нэрс нь өөрийгөө тайлбарласан байгаа,
гэхдээ тэдгээрийн талаар илүү мэдээллийг &man.jail.8; болон &man.sysctl.8;
гарын авлагын хуудаснуудаас лавлана уу.
security.jail.set_hostname_allowed:
1
security.jail.socket_unixiproute_only:
1
security.jail.sysvipc_allowed:
0
security.jail.enforce_statfs:
2
security.jail.allow_raw_sockets:
0
security.jail.chflags_allowed:
0
security.jail.jailed: 0
root хэрэглэгчид анхдагчаар ноогдуулсан хязгаарлалтуудын
заримыг нэмэх эсвэл хасахын тулд эдгээр хувьсагчуудыг хост системийн
администратор ашиглаж болно. Зарим нэг хязгаарлалтуудыг хасаж болохгүйг
тэмдэглэе. root хэрэглэгчид &man.jail.8;
дотор файлын системүүдийг холбох эсвэл салгахыг зөвшөөрдөггүй. Шорон
доторх root хэрэглэгч &man.devfs.8; дүрмийн
олонлогуудыг дуудах эсвэл буцааж болиулах, галт ханын дүрмүүдийг тохируулах,
эсвэл цөмийн securelevel хувьсагчийг тохируулах зэрэг
цөм дэх өгөгдлийн өөрчлөлтүүдийг шаарддаг өөр олон бусад удирдлагын
ажлуудыг хийж чадахгүй байж болох юм.
&os;-ийн үндсэн систем нь идэвхтэй шоронгуудын тухай мэдээллийг үзүүлэх болон
удирдлагын тушаалуудыг ажиллуулахын тулд шоронд залгагдаж болох хялбар хэрэгслүүдийн
цуглуулгыг агуулдаг. &man.jls.8; болон &man.jexec.8; тушаалууд нь &os;-ийн үндсэн системийн
хэсэг бөгөөд дараах хялбар ажлуудыг хийж гүйцэтгэхэд ашиглагдаж болно:
Идэвхтэй байгаа шоронгуудын жагсаалт болон тэдгээрийн харгалзах
шорон танигч (JID), IP
хаяг, хостын нэр болон замыг үзүүлнэ.
Өөрийнх нь хост системээс ажиллаж байгаа шоронд залгагдаж
шорон дотор тушаал ажиллуулах юм уу эсвэл шоронгийн удирдлагын ажлуудыг
шорон дотор ажиллуулна.
root хэрэглэгч шоронг цэвэрхэн
зогсоож унтраахыг хүсэх үед энэ нь ялангуяа ашигтай байдаг.
Шорон дотор удирдлага хийхийн тулд түүн дотор бүрхүүл эхлүүлэхэд
&man.jexec.8; хэрэгсэл бас ашиглагдаж болдог; жишээ нь:
&prompt.root; jexec 1 tcsh
&os;-ийн портын цуглуулга дахь өндөр түвшний удирдлагын хэрэгслүүд
Шорон удирдлагад зориулагдсан гуравдагч талуудын олон хэрэгслүүдийн дундаас
хамгийн бүрэн гүйцэд, ашигтай нь sysutils/jailutils юм. Энэ нь
&man.jail.8;-ийн удирдлагад хувь нэмэр болсон жижиг програмуудын цуглуулга
юм. Дэлгэрэнгүй мэдээллийн талаар түүний вэб хуудсанд хандана уу.
Шоронгийн хэрэглээ
Даниэл
Гэрзо
Хувь нэмэр болгон оруулсан
Үйлчилгээ шоронгууд
Энэхүү хэсэг нь &a.simon; хөгжүүлэгчийн хуудас болон
Кен Том locals@gmail.com-ийн бичсэн шинэчилсэн нийтлэл
дээр гаргасан санаа дээр тулгуурласан юм. Энэ хэсэг нь
&man.jail.8; боломжийг ашиглан аюулгүй байдлын нэмэлт давхарга
бүхий &os; систем хэрхэн тохируулах талаар тайлбарлах болно.
Өгөгдсөн систем нь ядаж RELENG_6_0 бөгөөд энэ бүлгийн өмнө
дурдсан мэдээллийг уншигч авхай сайн ойлгосон гэж тооцдог.
Шийдэл
Шоронгуудын гол асуудлуудын нэг нь тэдгээрийн шинэчлэлтийн
процессийн удирдлага юм. Шорон бүр нь шинэчлэгдэх болгондоо
дахин бүр эхнээсээ бүтээгдэх хэрэгтэй болдог учраас тэр юм.
Нэг шоронгийн хувьд энэ нь ихэвчлэн асуудал болдоггүй,
шинэчлэлтийн процесс их хялбар байдаг боловч олон шоронгууд
үүсгэсэн бол их хугацаа шаардсан, төвөгтэй ажиллагаа байдаг.
Энэхүү тохиргоо нь &os;-ийн маш сайн туршлага болон түүний
боломжуудын хэрэглээг шаарддаг. Хэрэв доор үзүүлсэн алхмууд нь
хэтэрхий төвөгтэй санагдвал &os; шоронгуудыг удирдах илүү хялбар
боломжийг олгодог бөгөөд энэ тохиргооных шиг төвөгтэй биш
sysutils/ezjail зэрэг хялбар системийг
үзэхийг зөвлөж байна.
Гол санаа нь иймэрхүү асуудлуудыг шоронгууд хооронд аль болох
ихээр аюулгүй аргаар хуваалцах замаар шийдэх явдал юм — шинэчлэлт хялбар
байхаар зөвхөн уншигдах &man.mount.nullfs.8; холболтуудыг ашиглах болон
ганц үйлчилгээнүүдийг тусдаа шоронд хийх нь илүүтэй болох юм.
Мөн энэ нь шоронгуудыг нэмэх эсвэл устгах болон тэдгээрийг
шинэчлэх хялбар боломжийг олгодог юм.
Ийм зорилгоор ашиглаж болох үйлчилгээнүүдийг дурдвал:
HTTP сервер, DNS
сервер, SMTP сервер гэх мэт байж болох юм.
Энэ хэсэгт тайлбарласан тохиргооны зорилгуудыг дурдвал:
Шоронгийн хялбар, ойлгоход амархан бүтцийг үүсгэх.
Энэ нь шорон бүрийн хувьд болон тэдгээр дээр бүрэн хэмжээний
installworld үйлдлийг ажиллуулахгүй
байх гэсэн үг юм.
Шинэ шоронгууд нэмэх эсвэл байгааг нь устгах процессийг
хялбар болгох.
Байгаа шоронгуудыг шинэчлэх эсвэл сайжруулах процессийг
хялбар болгох.
Өөрчлөн тохируулсан &os; салбарыг ажиллуулах боломжтой
болгох.
Нэвтрэн орох, эвдлэн орох боломжийг аль болох ихээр
багасгаж аюулгүй байдлын хувьд паранойд байх.
Зай болон inode-уудыг аль болох ихээр хэмнэх.
Урьд нь дурдагдсаны адил энэ шийдэл нь
шорон бүрт зөвхөн уншигдахаар (nullfs гэгддэг)
холбогдох ганц мастер загвар болон шорон бүрийн хувьд нэг уншигдах,
бичигдэх төхөөрөмжтэй байх бүтэц дээр үндсэндээ тулгуурласан юм.
Төхөөрөмж нь тусдаа физик диск, хуваалт, эсвэл vnode дээр
тулгуурласан &man.md.4; төхөөрөмж байж болох юм. Энэ жишээн дээр
бид уншигдах, бичигдэх nullfs холболтуудыг
ашиглах болно.
Файлын системийн дүр зураг доор дурдсан хэсэгт тайлбарласан буй:
Шорон бүр /home/j сангийн доор холбогдох болно.
/home/j/mroot нь
шорон бүрийн хувьд загвар ба бүх шоронгуудын хувьд
зөвхөн уншигдах хуваалт юм.
/home/j сангийн доор
шорон бүрийн хувьд хоосон сан үүсгэгдэнэ.
Шорон бүр системийн уншигдах, бичигдэх хэсэг уруу холбогдох
/s сантай байна.
Шорон бүр /home/j/skel дээр тулгуурласан
өөрийн уншигдах, бичигдэх системтэй байх болно.
Шоронгийн талбар бүр (шорон бүрийн уншигдах, бичигдэх хэсэг)
/home/js-д үүсгэгдэх болно.
Энэ нь шоронгууд /home
хуваалтын доор үндэслэсэн гэж үзнэ. Үүнийг мэдээж өөрчилж болох боловч
ингэх тохиолдолд доор дурдсан жишээ бүрийн хувьд өөрчлөгдөх ёстой
болно.
Загвар үүсгэх нь
Энэ хэсэг нь шоронд зориулагдан ашиглагдах, зөвхөн уншигдах хэсэг болох
мастер загварыг үүсгэхэд хэрэгтэй алхмуудыг тайлбарлах болно.
&os; системийг сүүлийн -RELEASE салбар уруу шинэчлэх нь үргэлж
зөв санаа байдаг. Үүнийг хийхийн тулд гарын авлагын
бүлгээс
лавлах хэрэгтэй. Шинэчлэл хийх шаардлагагүй бол гүйцэтгэлийг
гүйцээхийн тулд buildworld хийх шаардлагатай. Мөн
sysutils/cpdup багц хэрэгтэй.
&os;-ийн портын цуглуулгыг татаж авахдаа бид &man.portsnap.8;
хэрэгслийг ашиглах болно. Эхлэн суралцагчид гарын авлагын
Portsnap бүлгийг
унших нь зүйтэй юм.
Эхлээд бидний шоронгуудад зориулсан &os;-ийн хоёртын файлуудыг
агуулах зөвхөн уншигдах файлын системийн сангийн бүтцийг
үүсгэх хэрэгтэй бөгөөд дараа нь &os;-ийн эх модны сан уруу
сангаа сольж ороод зөвхөн уншигдах файлын системийг шоронгийн загвар
уруу суулгах хэрэгтэй:
&prompt.root; mkdir /home/j /home/j/mroot
&prompt.root; cd /usr/src
&prompt.root; make installworld DESTDIR=/home/j/mroot
Дараа нь шоронгуудад зориулж &os;-ийн портын цуглуулга болон
mergemaster-т шаардлагатай, &os;-ийн
эх модыг бэлдэх хэрэгтэй:
&prompt.root; cd /home/j/mroot
&prompt.root; mkdir usr/ports
&prompt.root; portsnap -p /home/j/mroot/usr/ports fetch extract
&prompt.root; cpdup /usr/src /home/j/mroot/usr/src
Системийн уншигдах, бичигдэх хэсэгт зориулж араг ясыг үүсгэх хэрэгтэй:
&prompt.root; mkdir /home/j/skel /home/j/skel/home /home/j/skel/usr-X11R6 /home/j/skel/distfiles
&prompt.root; mv etc /home/j/skel
&prompt.root; mv usr/local /home/j/skel/usr-local
&prompt.root; mv tmp /home/j/skel
&prompt.root; mv var /home/j/skel
&prompt.root; mv root /home/j/skel
Байхгүй байгаа тохиргооны файлуудыг суулгахын тулд
mergemaster-г ашиглах хэрэгтэй.
Дараа нь mergemaster-ийн үүсгэсэн
илүү сангуудыг арилгах хэрэгтэй:
&prompt.root; mergemaster -t /home/j/skel/var/tmp/temproot -D /home/j/skel -i
&prompt.root; cd /home/j/skel
&prompt.root; rm -R bin boot lib libexec mnt proc rescue sbin sys usr dev
Одоо уншигдах, бичигдэх файлын системийг зөвхөн уншигдах
файлын систем уруу заасан симболын холбоос үүсгэх хэрэгтэй.
Симболын холбоосууд нь зөв s/ байрлалуудад үүсгэгдсэн
эсэхийг шалгаарай. Жинхэнэ сангууд юм уу эсвэл сангуудын
үүсгэлт буруу байрлалуудад хийгдсэн бол суулгалт амжилтгүй
болоход хүргэнэ.
&prompt.root; cd /home/j/mroot
&prompt.root; mkdir s
&prompt.root; ln -s s/etc etc
&prompt.root; ln -s s/home home
&prompt.root; ln -s s/root root
&prompt.root; ln -s ../s/usr-local usr/local
&prompt.root; ln -s ../s/usr-X11R6 usr/X11R6
&prompt.root; ln -s ../../s/distfiles usr/ports/distfiles
&prompt.root; ln -s s/tmp tmp
&prompt.root; ln -s s/var var
Сүүлийн шатанд доор дурдсан агуулга бүхий ерөнхий
/home/j/skel/etc/make.conf файлыг үүсгэх
хэрэгтэй:
WRKDIRPREFIX?= /s/portbuild
WRKDIRPREFIX-г ийм байдлаар тохируулах нь
шорон бүрт &os;-ийн портуудыг эмхэтгэх боломжтой болгох юм.
Портуудын сан нь зөвхөн уншигдах системийн хэсэг гэдгийг санаарай.
WRKDIRPREFIX-д зориулсан өөр зам нь
шорон бүрийн уншигдах, бичигдэх хэсэгт бүтээлтүүдийг хийх боломжийг
олгох юм.
Шорон үүсгэх нь
Одоо бид бүрэн гүйцэд &os;-ийн шоронгийн загвартай болсон болохоор
/etc/rc.conf файлд бид шоронгуудыг суулган тохируулах
боломжтой болно. Энэ жишээ нь NS
,
MAIL
болон WWW
гэсэн 3 шоронгийн үүсгэлтийг
харуулж байна.
Доор дурдсан мөрүүдийг /etc/fstab файлд
нэмэх хэрэгтэй. Ингэснээр шоронгуудад зориулсан зөвхөн уншигдах
загвар болон уншигдах, бичигдэх зай тохирох шоронгуудад ашиглах боломжтой
болох юм:
/home/j/mroot /home/j/ns nullfs ro 0 0
/home/j/mroot /home/j/mail nullfs ro 0 0
/home/j/mroot /home/j/www nullfs ro 0 0
/home/js/ns /home/j/ns/s nullfs rw 0 0
/home/js/mail /home/j/mail/s nullfs rw 0 0
/home/js/www /home/j/www/s nullfs rw 0 0
0 pass буюу өнгөрөх дугаараар тэмдэглэгдсэн хуваалтууд нь
ачаалах үед &man.fsck.8; хэрэгслээр шалгагддаггүй бөгөөд
0 dump дугаараар тэмдэглэгдсэн хуваалтууд нь &man.dump.8;
хэрэгслээр нөөцлөгддөггүй. Бид fsck
хэрэгслээр nullfs холболтуудыг шалгах эсвэл
dump хэрэгслээр шоронгуудын зөвхөн уншигдах
nullfs холболтуудыг нөөцлөхийг хүсэхгүй байгаа билээ. Дээр дурдсан
fstab оруулга бүрийн сүүлийн хоёр багана
0 0
гэж тэмдэглэгдсэн учир нь энэ юм.
Шоронгуудыг /etc/rc.conf-д тохируулах хэрэгтэй:
jail_enable="YES"
jail_set_hostname_allow="NO"
jail_list="ns mail www"
jail_ns_hostname="ns.example.org"
jail_ns_ip="192.168.3.17"
-jail_ns_rootdir="/home/j/ns"
+jail_ns_rootdir="/usr/home/j/ns"
jail_ns_devfs_enable="YES"
jail_mail_hostname="mail.example.org"
jail_mail_ip="192.168.3.18"
-jail_mail_rootdir="/home/j/mail"
+jail_mail_rootdir="/usr/home/j/mail"
jail_mail_devfs_enable="YES"
jail_www_hostname="www.example.org"
jail_www_ip="62.123.43.14"
-jail_www_rootdir="/home/j/www"
+jail_www_rootdir="/usr/home/j/www"
jail_www_devfs_enable="YES"
+
+
+ jail_name_rootdir
+ хувьсагчийн утга /home-ийн
+ оронд /usr/home гэсэн шалтгаан нь
+ &os;-ийн үндсэн суулгац дээр /home
+ сангийн физик зам нь /usr/home
+ гэж байдагт оршиж байгаа юм.
+ jail_name_rootdir
+ хувьсагчийн утга симбол холбоос бүхий зам байхаар тохируулагдсан
+ байх ёсгүй бөгөөд хэрэв ингэвэл шоронгууд ажиллаж
+ эхлэхгүй байх болно. Энэ хувьсагчийн утгад тавьж болох утгыг олохдоо
+ &man.realpath.1;-г ашиглах хэрэгтэй. Дэлгэрэнгүй мэдээллийг
+ &os;-SA-07:01.jail Аюулгүй байдлын Зөвлөгөөнөөс үзнэ үү.
+
Шорон бүрийн зөвхөн уншигдах файлын системд зориулсан, шаардлагатай
холбох цэгүүдийг үүсгэнэ:
&prompt.root; mkdir /home/j/ns /home/j/mail /home/j/www
Шорон бүрт уншигдах, бичигдэх загварыг суулгах хэрэгтэй.
sysutils/cpdup хэрэгслийн хэрэглээг
энд тэмдэглэх нь зүйтэй юм. Энэ нь сан бүрийн зөв хуулбарыг хийхэд
тусалдаг:
&prompt.root; mkdir /home/js
&prompt.root; cpdup /home/j/skel /home/js/ns
&prompt.root; cpdup /home/j/skel /home/js/mail
&prompt.root; cpdup /home/j/skel /home/js/www
Энэ үед шоронгууд нь бүтээгдэж ажиллахад бэлтгэгдсэн
байна. Эхлээд шорон бүрийн хувьд шаардлагатай файлын
системийг холбож дараа нь тэдгээрийг /etc/rc.d/jail
скрипт ашиглан эхлүүлэх хэрэгтэй:
&prompt.root; mount -a
&prompt.root; /etc/rc.d/jail start
Шоронгууд нь одоо ажиллаж байх ёстой. Тэдгээрийг зөв
эхэлсэн эсэхийг шалгахын тулд &man.jls.8; тушаалыг ашиглана.
Үүний гаралт доор дурдсантай төстэй байх ёстой:
&prompt.root; jls
JID IP Address Hostname Path
3 192.168.3.17 ns.example.org /home/j/ns
2 192.168.3.18 mail.example.org /home/j/mail
1 62.123.43.14 www.example.org /home/j/www
Энэ үед шорон бүр рүү нэвтэрч, шинэ хэрэглэгчид нэмэх эсвэл
дэмонуудыг тохируулах боломжтой болсон байх ёстой.
JID багана нь ажиллаж байгаа шорон бүрийн
шорон таниулах дугаарыг илэрхийлдэг. JID нь
3 бүхий шорон дотор удирдлагын ажлуудыг гүйцэтгэхийн тулд
дараах тушаалыг ашиглах хэрэгтэй:
&prompt.root; jexec 3 tcsh
Шинэчлэх нь
Аюулгүй байдлын асуудлаас болоод эсвэл одоо байгаа шоронгуудад
ашигтай шинэ боломжууд хийгдсэнээс болоод системээ &os;-ийн шинэ
хувилбар уруу шинэчлэх шаардлага заримдаа гардаг. Энэ тохиргооны
дизайн нь байгаа шоронгуудыг хялбар аргаар шинэчлэх боломжийг
олгодог. Мөн шоронгуудыг сүүлийн минутанд зогсоодог болохоор
энэ нь тэдгээрийн зогсох хугацааг багасгадаг. Бас ямар нэг асуудал
гарахад энэ нь хуучин хувилбар уруугаа шилжих боломжийг олгодог.
Эхний алхам нь хост системийг журмын дагуу шинэчлэх
явдал юм. Дараа шинэ, түр зуурын, зөвхөн уншигдах
загварыг /home/j/mroot2-д үүсгэх хэрэгтэй.
&prompt.root; mkdir /home/j/mroot2
&prompt.root; cd /usr/src
&prompt.root; make installworld DESTDIR=/home/j/mroot2
&prompt.root; cd /home/j/mroot2
&prompt.root; cpdup /usr/src usr/src
&prompt.root; mkdir s
installworld ажиллахдаа цөөн хэрэггүй
сангуудыг үүсгэдэг бөгөөд эдгээрийг устгах хэрэгтэй:
&prompt.root; chflags -R 0 var
&prompt.root; rm -R etc var root usr/local tmp
Мастер файлын системд зориулж уншигдах, бичигдэх симболын
холбоосуудыг дахин үүсгэх хэрэгтэй:
&prompt.root; ln -s s/etc etc
&prompt.root; ln -s s/root root
&prompt.root; ln -s s/home home
&prompt.root; ln -s ../s/usr-local usr/local
&prompt.root; ln -s ../s/usr-X11R6 usr/X11R6
&prompt.root; ln -s s/tmp tmp
&prompt.root; ln -s s/var var
Шоронгуудыг зогсоох зөв үе нь одоо байна:
&prompt.root; /etc/rc.d/jail stop
Эх файлын системүүдийг салгах хэрэгтэй:
&prompt.root; umount /home/j/ns/s
&prompt.root; umount /home/j/ns
&prompt.root; umount /home/j/mail/s
&prompt.root; umount /home/j/mail
&prompt.root; umount /home/j/www/s
&prompt.root; umount /home/j/www
Уншигдах, бичигдэх системүүд нь зөвхөн уншигдах системд
залгагдсан (/s) бөгөөд
эхлээд салгагдах ёстой.
Хуучин зөвхөн уншигдах файлын системийг шилжүүлж шинээр
сольно. Ямар нэг юм болохоо байхад энэ нь хуучин, зөвхөн уншигдах
файлын системийн нөөц болон архив маягаар ашиглагдах юм.
Энд ашиглагдсан нэрлэх аргачлал нь шинэ, зөвхөн уншигдах файлын
систем үүсгэгдэх үеийнхтэй тохирдог. Зай болон inode-уудыг хэмнэхийн тулд
&os;-ийн эх портын цуглуулгыг шинэ файлын систем уруу шилжүүлэх хэрэгтэй:
&prompt.root; cd /home/j
&prompt.root; mv mroot mroot.20060601
&prompt.root; mv mroot2 mroot
&prompt.root; mv mroot.20060601/usr/ports mroot/usr
Энэ үед шинэ, зөвхөн уншигдах загвар бэлэн болох бөгөөд
үлдсэн цорын ганц ажил нь файлын системүүдийг дахин холбож
шоронгуудыг эхлүүлэх явдал юм:
&prompt.root; mount -a
&prompt.root; /etc/rc.d/jail start
Шоронгууд зөв эхэлсэн эсэхийг шалгахын тулд &man.jls.8;-г ашиглана.
Шорон бүрт mergemaster-г ажиллуулахаа мартуузай. Тохиргооны файлууд болон
rc.d скриптүүдийг шинэчлэх хэрэгтэй болно.
diff --git a/mn_MN.UTF-8/books/handbook/virtualization/chapter.sgml b/mn_MN.UTF-8/books/handbook/virtualization/chapter.sgml
index f31bafe1b2..ce597ca0ff 100644
--- a/mn_MN.UTF-8/books/handbook/virtualization/chapter.sgml
+++ b/mn_MN.UTF-8/books/handbook/virtualization/chapter.sgml
@@ -1,593 +1,796 @@
Мюррей
Стөүкли
Хувь нэмэр болгон оруулсан
Цагаанхүүгийн
Ганболд
Орчуулсан
Виртуалчлал
Ерөнхий агуулга
Виртуалчлалын програм хангамж нь олон үйлдлийн системийг нэг компьютер дээр
ажиллуулах боломжийг олгодог. PC-үүдэд зориулсан тийм програм хангамжууд
нь виртуалчлалын програм хангамжийг ажиллуулж зочин үйлдлийн систем хэд л
бол хэдийг дэмжих эх үйлдлийн систем байдаг.
Энэ бүлгийг уншсаны дараа, та дараах зүйлсийг мэдэх болно:
Хост буюу эх үйлдлийн систем болон зочин үйлдлийн системийн
ялгаа.
+
+ FreeBSD-г &intel; дээр суурилсан &apple; &macintosh; компьютер дээр
+ хэрхэн суулгах талаар.
+
+
FreeBSD-г Линукс дээр &xen; ашиглан хэрхэн суулгах талаар.
- FreeBSD-г &intel; дээр суурилсан &apple; &macintosh; компьютер дээр
- хэрхэн суулгах талаар.
+ FreeBSD-г µsoft.windows; дээр
+ Virtual PC ашиглан хэрхэн суулгах талаар.
Виртуалчлалын доор FreeBSD системийг хамгийн сайн ажиллагаатайгаар
хэрхэн тааруулах талаар.
Энэ бүлгийг уншихаасаа өмнө та дараах зүйлсийг гүйцэтгэх хэрэгтэй:
&unix; болон FreeBSD-ийн үндсүүдийг ойлгох ().
FreeBSD-г хэрхэн суулгах талаар мэдэх ().
Өөрийн сүлжээний холболтоо хэрхэн тохируулах талаар мэдэх ().
Нэмэлт гуравдагч програм хангамжуудыг хэрхэн суулгах талаар
мэдэх ().
FreeBSD-г зочин OS маягаар ашиглах
MacOS дээрх Parallels
&mac;-д зориулсан Parallels Desktop нь &macos;
10.4.6 буюу түүнээс дээш хувилбарыг ашиглаж байгаа &intel; дээр суурилсан
&apple; &mac; компьютеруудад зориулагдсан арилжааны програм хангамжийн
бүтээгдэхүүн юм. FreeBSD нь бүрэн дэмжигдсэн зочин үйлдлийн систем
юм. &macos; X дээр Parallels суулгагдсаны дараа хэрэглэгч
виртуал машинаа тохируулж дараа нь хүсэж байгаа зочин үйлдлийн
системээ суулгах ёстой.
Parallels/&macos; X дээр FreeBSD-г суулгах
FreeBSD-г &macos; X/Parallels дээр суулгах эхний алхам нь
FreeBSD-г суулгахад зориулж шинэ виртуал машиныг үүсгэх
явдал юм. Guest OS Type буюу Зочин OS-ийн төрөл гэж асуухад нь
FreeBSD гэж сонгох хэрэгтэй:
Тэгээд энэ виртуал FreeBSD машины хувьд өөрийн төлөвлөгөөнөөс хамаараад
боломжийн хэмжээний диск болон санах ойг сонгох хэрэгтэй.
Parallels дээр FreeBSD-г ашиглах ихэнх хэрэглээний хувьд
- 4GB ба 512MB хэмжээний RAM сайн ажилладаг.
+ 4GB дискний зай ба 512MB хэмжээний RAM сайн ажилладаг.
Сүлжээний төрөл болон сүлжээний интерфэйсийг сонгоно:
Хадгалаад тохиргоог дуусгана:
Таны FreeBSD виртуал машин үүсгэгдсэний дараа та FreeBSD-г түүн
дээр суулгах хэрэгтэй болно. Албан ёсны FreeBSD CDROM эсвэл
албан ёсны FTP сайтаас татан авсан ISO дүрс ашиглан
суулгах нь зүйтэй юм. Та өөрийн локал &mac; файлын систем дээрээ
тохирох ISO дүрстэй болонгуутаа эсвэл өөрийн &mac;-ийн CD хөтөч дээр
CDROM-той болонгуутаа өөрийн FreeBSD Parallels цонхны баруун
доод талд байгаа дискний дүрсэн дээр дарах хэрэгтэй. Энэ нь
таны виртуал машин дахь CDROM хөтчийг диск дээрх ISO файл
эсвэл таны жинхэнэ CDROM хөтөчтэй холбох боломжийг олгох
цонхыг харуулах болно.
Өөрийн CDROM эхтэй энэ холболтыг хийснийхээ дараа дахин ачаалах
дүрсийг дарж өөрийн FreeBSD машиныг хэвийн үед дахин ачаалдаг шигээ
дахин ачаална. Parallels нь хэвийн BIOS-ийн хийдэг шиг
танд CDROM байгаа эсэхийг шалгах тусгай BIOS-оор эхлэх болно.
Энэ тохиолдолд энэ нь FreeBSD-ийн суулгах зөөвөрлөгчийг олж
-т тайлбарлагдсаны адилаар
ердийн sysinstall дээр суурилсан суулгалтыг эхлүүлэх болно.
Та X11 системийг суулгаж болох боловч энэ удаад
тохируулахыг битгий оролдоорой.
Суулгалтыг дууссаныхаа дараа
та өөрийн шинэ суулгасан FreeBSD виртуал машин руугаа дахин
ачаалж ороорой.
FreeBSD-г &macos; X/Parallels дээр тохируулах
FreeBSD-г Parallels-ийн тусламжтай &macos; X дээр амжилттайгаар
суулгасны дараа виртуалчлагдсан ажиллагаанд зориулж системийг
оновчтой болгохын тулд хэд хэдэн тохиргооны алхмуудыг хийх ёстой.
Ачаалагч дуудагчийн хувьсагчуудыг тохируулна
Хамгийн чухал алхам бол Parallels-ийн орчинд FreeBSD-ийн
CPU-н хэрэглээг багасгахын тулд -г
багасгах явдал юм. Дараах мөрийг
/boot/loader.conf файлд
нэмэн үүнийг хийж болно:
kern.hz=100
Энэ тохиргоогүйгээр, сул зогсож байгаа FreeBSD Parallels
зочин OS нэг процессор бүхий &imac;-ийн CPU-ийн 15%-г ойролцоогоор
ашиглах болно. Энэ өөрчлөлтийн дараа хэрэглээ нь 5% руу ойртох
болно.
Шинэ цөмийн тохиргооны файлыг үүсгэнэ
Та бүх SCSI, FireWire, болон USB төхөөрөмжийн драйверуудыг
арилгаж болно. Parallels нь драйверийн
ашигладаг виртуал сүлжээний адаптерийн боломжтой байдаг, тэгэхээр
&man.ed.4; болон &man.miibus.4;-д
зориулснаас бусад бүх сүлжээний төхөөрөмжүүдийг цөмөөс арилгаж
болно.
Сүлжээг тохируулна
Хамгийн хялбар сүлжээний тохиргоо бол таны хост &mac; шигээр
ижил локал сүлжээнд өөрийн виртуал машиныг холбохын тулд DHCP-г
ашиглах явдал юм. Үүнийг /etc/rc.conf
файлд ifconfig_ed0="DHCP" гэж
нэмэн хийж болно. Сүлжээний илүү нарийн тохиргоонууд -д тайлбарлагдсан
байгаа.
Фуканг
Чен (Loader)
Хувь нэмэр болгон оруулсан
Линукс дээр ажиллах &xen; FreeBSD
&xen; хэт бүрхүүл нь нээлттэй эх виртуалчлалын бүтээгдэхүүн бөгөөд
түүнийг одоогооор арилжааны XenSource компани дэмждэг. Зочин
үйлдлийн системүүд нь domU домэйн гэгддэг бөгөөд хост буюу эх үйлдлийн
систем нь dom0 гэгддэг. FreeBSD-ийн виртуал хувилбарыг Линукс дээр
ажиллуулах эхний алхам нь Линукс dom0-д зориулж &xen;-ийг суулгах явдал юм.
Хост буюу эх үйлдлийн систем нь Slackware Линукс тархац байна.
&xen; 3-г Линукс dom0 дээр суулгаж тохируулах
&xen; 3.0-г XenSource-с татаж авах
xen-3.0.4_1-src.tgz-г
-с татаж авах хэрэгтэй.
tar хийгдсэн бөмбөгийг задлах хэрэгтэй
&prompt.root; cd xen-3.0.4_1-src
&prompt.root; KERNELS="linux-2.6-xen0 linux-2.6-xenU" make world
&prompt.root; make install
dom0-д зориулж цөмийг дахин эмхэтгэхийн тулд:
&prompt.root; cd xen-3.0.4_1-src/linux-2.6.16.33-xen0
&prompt.root; make menuconfig
&prompt.root; make
&prompt.root; make install
&xen;-ий хуучин хувилбаруудад make ARCH=xen menuconfig
тушаалыг зааж өгөх хэрэгтэй байж болох юм
Grub menu.lst-д цэс оруулга нэмэх хэрэгтэй
/boot/grub/menu.lst-г засварлаж
дараах мөрүүдийг нэмэх хэрэгтэй:
title Xen-3.0.4
root (hd0,0)
kernel /boot/xen-3.0.4-1.gz dom0_mem=262144
module /boot/vmlinuz-2.6.16.33-xen0 root=/dev/hda1 ro
Өөрийн компьютераа &xen; руу дахин ачаална
Эхлээд
/etc/xen/xend-config.sxp-г засварлаад
дараах мөрийг нэмнэ:
(network-script 'network-bridge netdev=eth0')
Дараа нь бид
&xen;-г ажиллуулж болно:
&prompt.root; /etc/init.d/xend start
&prompt.root; /etc/init.d/xendomains start
Бидний dom0 ажиллаж байна:
&prompt.root; xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 256 1 r----- 54452.9
FreeBSD 7-CURRENT domU
&xen; 3.0-д зориулсан FreeBSD domU цөм болон дискний дүрсийг http://www.fsmware.com/
татаж авах хэрэгтэй.
kernel-current
mdroot-7.0.bz2
xmexample1.bsd
xmexample1.bsd тохиргооны файлыг
/etc/xen/ санд хийж цөм болон дискний дүрсний
хадгалагдсан хэсэгтэй холбоотой оруулгуудыг засварлана.
Энэ нь иймэрхүү харагдах ёстой:
kernel = "/opt/kernel-current"
memory = 256
name = "freebsd"
vif = [ '' ]
disk = [ 'file:/opt/mdroot-7.0,hda1,w' ]
#on_crash = 'preserve'
extra = "boot_verbose"
extra += ",boot_single"
extra += ",kern.hz=100"
extra += ",vfs.root.mountfrom=ufs:/dev/xbd769a"
mdroot-7.0.bz2 файл шахагдаагүй байх ёстой.
Дараа нь kernel-current дахь __xen_guest
хэсгийг &xen; 3.0.3-ийн шаарддаг VIRT_BASE-г нэмж өөрчлөх хэрэгтэй:
&prompt.root; objcopy kernel-current -R __xen_guest
&prompt.root; perl -e 'print "LOADER=generic,GUEST_OS=freebsd,GUEST_VER=7.0,XEN_VER=xen-3.0,BSD_SYMTAB,VIRT_BASE=0xC0000000\x00"' > tmp
&prompt.root; objcopy kernel-current --add-section __xen_guest=tmp
&prompt.root; objdump -j __xen_guest -s kernel-current
kernel-current: file format elf32-i386
Contents of section __xen_guest:
0000 4c4f4144 45523d67 656e6572 69632c47 LOADER=generic,G
0010 55455354 5f4f533d 66726565 6273642c UEST_OS=freebsd,
0020 47554553 545f5645 523d372e 302c5845 GUEST_VER=7.0,XE
0030 4e5f5645 523d7865 6e2d332e 302c4253 N_VER=xen-3.0,BS
0040 445f5359 4d544142 2c564952 545f4241 D_SYMTAB,VIRT_BA
0050 53453d30 78433030 30303030 3000 SE=0xC0000000.
Одоо бид өөрсдийн domU-г үүсгэж ажиллуулахад бэлэн боллоо:
&prompt.root; xm create /etc/xen/xmexample1.bsd -c
Using config file "/etc/xen/xmexample1.bsd".
Started domain freebsd
WARNING: loader(8) metadata is missing!
Copyright (c) 1992-2006 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD 7.0-CURRENT #113: Wed Jan 4 06:25:43 UTC 2006
kmacy@freebsd7.gateway.2wire.net:/usr/home/kmacy/p4/freebsd7_xen3/src/sys/i386-xen/compile/XENCONF
WARNING: DIAGNOSTIC option enabled, expect reduced performance.
Xen reported: 1796.927 MHz processor.
Timecounter "ixen" frequency 1796927000 Hz quality 0
CPU: Intel(R) Pentium(R) 4 CPU 1.80GHz (1796.93-MHz 686-class CPU)
Origin = "GenuineIntel" Id = 0xf29 Stepping = 9
Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,
DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
Features2=0x4400<CNTX-ID,<b14>>
real memory = 265244672 (252 MB)
avail memory = 255963136 (244 MB)
xc0: <Xen Console> on motherboard
cpu0 on motherboard
Timecounters tick every 10.000 msec
[XEN] Initialising virtual ethernet driver.
xn0: Ethernet address: 00:16:3e:6b:de:3a
[XEN]
Trying to mount root from ufs:/dev/xbd769a
WARNING: / was not properly dismounted
Loading configuration files.
No suitable dump device was found.
Entropy harvesting: interrupts ethernet point_to_point kickstart.
Starting file system checks:
/dev/xbd769a: 18859 files, 140370 used, 113473 free (10769 frags, 12838 blocks, 4.2% fragmentation)
Setting hostname: demo.freebsd.org.
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet 127.0.0.1 netmask 0xff000000
Additional routing options:.
Mounting NFS file systems:.
Starting syslogd.
/etc/rc: WARNING: Dump device does not exist. Savecore not run.
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/X11R6/lib /usr/local/lib
a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout /usr/X11R6/lib/aout
Starting usbd.
usb: Kernel module not available: No such file or directory
Starting local daemons:.
Updating motd.
Starting sshd.
Initial i386 initialization:.
Additional ABI support: linux.
Starting cron.
Local package initialization:.
Additional TCP options:.
Starting background file system checks in 60 seconds.
Sun Apr 1 02:11:43 UTC 2007
FreeBSD/i386 (demo.freebsd.org) (xc0)
login:
domU нь &os; 7.0-CURRENT
цөмийг ажиллуулах ёстой:
&prompt.root; uname -a
FreeBSD demo.freebsd.org 7.0-CURRENT FreeBSD 7.0-CURRENT #113: Wed Jan 4 06:25:43 UTC 2006
kmacy@freebsd7.gateway.2wire.net:/usr/home/kmacy/p4/freebsd7_xen3/src/sys/i386-xen/compile/XENCONF i386
Сүлжээг одоо domU дээр тохируулж болно. &os; domU нь xn0
гэж нэрлэгдэх тусгай интерфэйсийг ашиглах болно:
&prompt.root; ifconfig xn0 10.10.10.200 netmask 255.0.0.0
&prompt.root; ifconfig
xn0: flags=843<UP,BROADCAST,RUNNING,SIMPLEX> mtu 1500
inet 10.10.10.200 netmask 0xff000000 broadcast 10.255.255.255
ether 00:16:3e:6b:de:3a
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet 127.0.0.1 netmask 0xff000000
dom0 Slackware дээр &xen;-ээс
хамаарах зарим сүлжээний интерфэйсүүд харагдах ёстой:
&prompt.root; ifconfig
eth0 Link encap:Ethernet HWaddr 00:07:E9:A0:02:C2
inet addr:10.10.10.130 Bcast:0.0.0.0 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:815 errors:0 dropped:0 overruns:0 frame:0
TX packets:1400 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:204857 (200.0 KiB) TX bytes:129915 (126.8 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:99 errors:0 dropped:0 overruns:0 frame:0
TX packets:99 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:9744 (9.5 KiB) TX bytes:9744 (9.5 KiB)
peth0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:1853349 errors:0 dropped:0 overruns:0 frame:0
TX packets:952923 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2432115831 (2.2 GiB) TX bytes:86528526 (82.5 MiB)
Base address:0xc000 Memory:ef020000-ef040000
vif0.1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:1400 errors:0 dropped:0 overruns:0 frame:0
TX packets:815 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:129915 (126.8 KiB) TX bytes:204857 (200.0 KiB)
vif1.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:3 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:157 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:140 (140.0 b) TX bytes:158 (158.0 b)
xenbr1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:112 (112.0 b) TX bytes:0 (0.0 b)
&prompt.root; brctl show
bridge name bridge id STP enabled interfaces
xenbr1 8000.feffffffffff no vif0.1
peth0
vif1.0
+
+ &windows; дээрх Virtual PC
+
+ &windows;-д зориулсан Virtual PC
+ нь чөлөөтэй татаж авахаар байдаг, µsoft;-ийн програм хангамж
+ юм.
+ Системийн шаардлагууд хуудсыг үзнэ үү. µsoft.windows; дээр
+ Virtual PC суусны дараа хэрэглэгч виртуал
+ машинаа тохируулж хүссэн зочин үйлдлийн системээ суулгах
+ шаардлагатай.
+
+
+ Virtual PC/µsoft.windows; дээр FreeBSD суулгах нь
+
+ µsoft.windows;/Virtual PC дээр
+ FreeBSD суулгах эхний алхам нь FreeBSD-г суулгах шинэ виртуал машин
+ үүсгэх явдал юм. Асуухад нь Create a
+ virtual machine гэсэн цэсийг сонгоно:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Тэгээд дараа нь Operating system гэдэг
+ дээр Other гэдгийг сонгоно:
+
+
+
+
+
+
+
+ Дараа нь энэ виртуал FreeBSD-д зориулсан өөрийн төлөвлөгөөнөөсөө
+ хамаараад хангалттай диск болон санах ойн хэмжээг сонгох
+ хэрэгтэй. Virtual PC дээр FreeBSD-г
+ ашиглахад ихэнхдээ 4GB дискний зай болон 512MB RAM хангалттай байдаг:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Хадгалаад тохиргоог дуусгана:
+
+
+
+
+
+
+
+ Өөрийн FreeBSD виртуал машинаа сонгоод Settings
+ дээр дараад дараа нь сүлжээний төрөл болон сүлжээний интерфэйсийг
+ тохируулна:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Өөрийн чинь FreeBSD машин үүсгэгдсэний дараа түүн дээр
+ FreeBSD суулгах шаардлагатай болно. Үүнийг албан ёсны FreeBSD
+ CDROM эсвэл албан ёсны FTP хаягаас татаж авсан ISO дүрснээс
+ суулгах нь зүйтэй. Өөрийн &windows; файлын систем дээр тохирсон
+ ISO дүрс эсвэл CD хөтөчдөө CDROM хийснийхээ дараа өөрийн виртуал
+ FreeBSD машин дээр хоёр дарж эхлүүлэх хэрэгтэй. Дараа нь
+ Virtual PC цонхны
+ CD цэсэн дээр дарж Capture ISO Image...
+ цэсийг сонгоно. Ингэснээр таны виртуал машин дээр CDROM
+ хөтчийг диск дээр байгаа ISO файлтай эсвэл таны өөрийн жинхэнэ
+ CDROM хөтөчтэй холбох боломжийг олгох цонхыг гаргаж ирэх юм.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Өөрийн CDROM эхтэй энэ холболтыг хийсний дараа өөрийн
+ FreeBSD виртуал машиныг Action болон
+ Reset цэсүүдийг сонгон дахин ачаалах
+ хэрэгтэй. Virtual PC нь яг л
+ энгийн BIOS шалгадаг шиг л танд CDROM байгаа эсэхийг эхлэн
+ шалгах тусгай BIOS-оор дахин эхлэн ачаалах болно.
+
+
+
+
+
+
+
+ Энэ тохиолдолд FreeBSD-ийн суулгац зөөвөрлөгчийг олж
+ дээр тайлбарласан шиг энгийн
+ sysinstall дээр тулгуурласан
+ суулгалтыг эхлүүлнэ. Та X11-ийг энэ үед суулгаж болох боловч
+ тохируулахыг бүү оролдоорой.
+
+
+
+
+
+
+
+ Суулгаж дууссаныхаа дараа CDROM эсвэл хувилбарын ISO дүрсээ
+ гаргаж авахаа мартуузай. Төгсгөлд нь өөрийн шинэхэн суулгасан
+ FreeBSD виртуал машин уруугаа дахин ачаалж орох хэрэгтэй.
+
+
+
+
+
+
+
+
+
+ µsoft.windows;/Virtual PC дээр FreeBSD-г тохируулах нь
+
+ µsoft.windows; дээр Virtual PC ашиглан
+ FreeBSD-г амжилттай суулгасны дараа виртуалчлагдсан үйлдэлд зориулж
+ системийг оновчтой болгон хийж болох хэд хэдэн тохиргооны алхмууд
+ байдаг.
+
+
+
+ Ачаалагч дуудагчийн хувьсагчуудыг тохируулна
+
+ Хамгийн чухал алхам бол Virtual PC
+ орчинд FreeBSD-ийн CPU-ийн хэрэглээг багасгахын тулд
+ тохиргоог багасгах явдал юм. Үүнийг
+ хийхийн тулд доор дурдсан мөрийг /boot/loader.conf
+ файлд нэмнэ:
+
+ kern.hz=100
+
+ Энэ тохиргоогүй бол сул зогсож байгаа FreeBSD
+ Virtual PC зочин үйлдлийн систем
+ нэг процессортой компьютерийн CPU-ний 40%-ийг ойролцоогоор
+ ашиглах болно. Энэ тохиргооны дараа хэрэглээ дөнгөж
+ 3% уруу дөхөж очих болно.
+
+
+
+ Цөмийн шинэ тохиргооны файл үүсгэнэ
+
+ Та SCSI, FireWire болон USB төхөөрөмжийн
+ бүх драйверуудыг устгаж болно. Virtual PC
+ нь &man.de.4; драйверийн ашигладаг виртуал
+ сүлжээний адаптерийн боломжтой бөгөөд тэгэхээр
+ &man.de.4; болон &man.miibus.4;-с бусад бүх сүлжээний
+ төхөөрөмжүүдийг цөмөөс арилгаж болно.
+
+
+
+ Сүлжээг тохируулна
+
+ Хамгийн энгийн сүлжээний тохиргоо нь
+ өөрийн эх µsoft.windows; холбогдсон
+ тэр дотоод сүлжээндээ өөрийн виртуал машиныг холбохдоо
+ DHCP-ийг ашиглах явдал юм. ifconfig_de0="DHCP"
+ мөрийг /etc/rc.conf файлд нэмж
+ үүнийг хийнэ. Сүлжээний илүү нарийн тохиргоонуудын
+ талаар дээр
+ тайлбарласан байгаа болно.
+
+
+
+
+
+
+
&windows;/&mac;/&linux; дээрх VMware
Энэ хэсэг бичигдэж амжаагүй байна.
FreeBSD-г хост буюу эх OS маягаар ашиглах
FreeBSD нь хост буюу эх үйлдлийн систем маягаар ашиглагдахаар
аль ч виртуалчлалын багцад одоогоор албан ёсоор дэмжигдээгүй байгаа боловч
олон хүмүүс VMware-ийн хуучин хувилбаруудыг энэ зорилгоор ашигладаг.
FreeBSD дээр &xen;-ийг хост буюу эх орчин маягаар ажиллуулах тал дээр ажиллаж
байгаа болно.