Firewall នៅលើ Linux ដើរតួនាទីយ៉ាងសំខាន់ក្នុងការធានាប្រព័ន្ធកុំព្យូទ័រ។ វាដើរតួជារបាំង គ្រប់គ្រង និងត្រងចរាចរបណ្តាញ ដើម្បីការពារប្រព័ន្ធពីការចូលប្រើដោយគ្មានការអនុញ្ញាត ការវាយប្រហារ និងការគំរាមកំហែងផ្សេងៗទៀត។ ប្រសិនបើគ្មាន Firewall ដែលបានកំណត់រចនាសម្ព័ន្ធត្រឹមត្រូវទេ នោះម៉ាស៊ីនមេអាចងាយរងគ្រោះចំពោះការវាយប្រហារតាមអ៊ីនធឺណិតជាច្រើនប្រភេទ ដែលនាំទៅរកផលវិបាកធ្ងន់ធ្ងរសម្រាប់សុវត្ថិភាពទិន្នន័យ និងការសម្ងាត់។
នៅក្នុងអត្ថបទនេះ យើងនឹងពិនិត្យមើលឧបករណ៍សំខាន់ពីរសម្រាប់កំណត់រចនាសម្ព័ន្ធ Linux Firewall: firewalld និង iptables ។ យើងនឹងធ្វើការវិភាគប្រៀបធៀបនៃលក្ខណៈពិសេស មុខងារ និងគុណសម្បត្តិរបស់វា។ លើសពីនេះ យើងនឹងផ្តល់ការណែនាំលម្អិតសម្រាប់ការដំឡើង និងប្រើប្រាស់ឧបករណ៍នីមួយៗ ក៏ដូចជាពិភាក្សាអំពីការអនុវត្តល្អបំផុតសម្រាប់ការធានាប្រព័ន្ធរបស់អ្នកជាមួយនឹង Firewall នៅលើវេទិកាលីនុច។ សកម្មភាពទាំងអស់នឹងត្រូវបានបង្ហាញនៅលើ ក ម៉ាស៊ីនមេនិម្មិត ជាមួយការចូលប្រើជា root ។
កំណត់រចនាសម្ព័ន្ធជញ្ជាំងភ្លើងនៅលើលីនុច
វ៉ូលវែល (Firewall Daemon) គឺជាកម្មវិធីសម្រាប់គ្រប់គ្រងជញ្ជាំងភ្លើងនៅក្នុងប្រព័ន្ធប្រតិបត្តិការលីនុច។ វាផ្តល់នូវចំណុចប្រទាក់អ្នកប្រើសម្រាប់កំណត់រចនាសម្ព័ន្ធច្បាប់ជញ្ជាំងភ្លើង អនុញ្ញាត ឬរារាំងការតភ្ជាប់នៃកម្មវិធីបណ្តាញ។ វាត្រូវបានដំឡើងជាមុនតាមលំនាំដើមនៅក្នុងការចែកចាយម៉ាស៊ីនមេភាគច្រើន។ ប្រសិនបើ Firewalld មិនត្រូវបានដំឡើងជាមុនទេ វាអាចត្រូវបានដំឡើងដោយឯករាជ្យពីឃ្លាំងផ្លូវការនៃការចែកចាយ។
សម្រាប់ប្រព័ន្ធ Red Hat (ដូចជា RHEL, CentOS, Fedora) ការដំឡើងត្រូវបានអនុវត្តដោយប្រើពាក្យបញ្ជា៖
yum install firewalld
សម្រាប់ Debian/Ubuntu៖
apt-get install firewalld
បន្ទាប់ពីដំឡើងរួច វាអាចត្រូវបានចាប់ផ្តើម និងធ្វើឱ្យសកម្មភ្លាមៗដោយប្រើពាក្យបញ្ជា៖
systemctl start firewalld
បន្ទាប់ អ្នកត្រូវបន្ថែមសេវាកម្មដើម្បីចាប់ផ្តើម៖
systemctl enable firewalld
នៅចំណុចនេះ យើងសូមណែនាំឱ្យបិទ ufw ព្រោះថាការប្រើប្រាស់ឧបករណ៍នេះក្នុងពេលដំណាលគ្នាជាមួយជញ្ជាំងភ្លើង ឬ iptables មិនត្រូវបានណែនាំទេ។ ពិនិត្យស្ថានភាព៖
systemctl status ufw
ដើម្បីបញ្ឈប់វា សូមបញ្ចូលពាក្យបញ្ជា៖
systemctl stop ufw
សម្រាប់ការបិទដំណើរការពេញលេញ៖
ufw disable
បន្ទាប់ពីសកម្មភាពទាំងនេះ អ្នកអាចបន្តកំណត់រចនាសម្ព័ន្ធជញ្ជាំងភ្លើង។
ជាដំបូង ចាំបាច់ត្រូវកំណត់តំបន់ជឿទុកចិត្ត។ Firewalld ប្រើគំនិតនៃតំបន់ដើម្បីកំណត់កម្រិតនៃការជឿទុកចិត្តសម្រាប់ចំណុចប្រទាក់បណ្តាញ។ ចំណុចប្រទាក់នីមួយៗត្រូវបានកំណត់តំបន់មួយ ហើយច្បាប់ជញ្ជាំងភ្លើងត្រូវបានអនុវត្តដោយផ្អែកលើតំបន់។ បញ្ជីនៃតំបន់ដែលមានទាំងអស់ត្រូវបានបើកដោយប្រើពាក្យបញ្ជា៖
firewall-cmd --get-zones
ជាធម្មតា 4 តំបន់សំខាន់ៗត្រូវបានប្រើប្រាស់៖
- សាធារណៈ៖ តំបន់នេះគឺសម្រាប់បណ្តាញដែលអ្នកចាត់ទុកថាមិនមានសុវត្ថិភាព។
- ឯកជន៖ អនុវត្តចំពោះបណ្តាញផ្ទះ ឬការតភ្ជាប់បណ្តាញដែលគួរឱ្យទុកចិត្តផ្សេងទៀត;
- ខាងក្នុង៖ ប្រើសម្រាប់បណ្តាញខាងក្នុង ដូចជាបណ្តាញនៅក្នុងស្ថាប័ន ឬបណ្តាញសាជីវកម្ម។
- DMZ៖ តំបន់នេះជាកន្លែងដែលម៉ាស៊ីនមេត្រូវបានដាក់ជាធម្មតា ដែលគួរតែអាចចូលប្រើបានពីអ៊ីនធឺណិត។
ទោះយ៉ាងណាក៏ដោយ នេះគ្រាន់តែជាឧទាហរណ៍មួយប៉ុណ្ណោះ។ អ្នកអាចបន្ថែមតំបន់ផ្ទាល់ខ្លួនរបស់អ្នកដោយប្រើពាក្យបញ្ជា៖
firewall-cmd --permanent --new-zone=nameyourzone
បន្ទាប់ពីបន្ថែម ការផ្ទុកឡើងវិញត្រូវបានទាមទារ៖
firewall-cmd --reload
ដើម្បីលុបតំបន់ វិធីសាស្ត្រស្រដៀងគ្នានេះត្រូវបានប្រើ
firewall-cmd --permanent --delete-zone=nameyourzone
បន្ទាប់ពីកំណត់តំបន់ វាចាំបាច់ក្នុងការអនុញ្ញាតឱ្យចរាចរសម្រាប់សេវាកម្ម និងកំពង់ផែដែលត្រូវការ។ ដើម្បីអនុញ្ញាតសេវាកម្មជាក់លាក់ សូមប្រើពាក្យបញ្ជា៖
firewall-cmd --zone=public --add-service=name
ដែលជាកន្លែងដែល Name គឺជាឈ្មោះសេវាកម្ម។ ឧទាហរណ៍ ដើម្បីអនុញ្ញាតចរាចរណ៍សម្រាប់ Apache៖
firewall-cmd --zone=public --add-service=http
ដើម្បីកំណត់ច្រកដែលអាចអនុញ្ញាតបាន សូមប្រើពាក្យបញ្ជា៖
firewall-cmd --zone=public --add-port=number/protocol
ឧទាហរណ៍ច្រក 22 ស្តង់ដារសម្រាប់ SSH នឹងមើលទៅដូចនេះ:
firewall-cmd --zone=public --add-port=22/tcp
នៅដំណាក់កាលនេះច្បាប់សំខាន់ៗត្រូវបានបង្កើតរួចហើយ។ បន្ទាប់មក កំណត់ពីរបៀបដែលចរាចរណ៍នឹងត្រូវបានដំណើរការ អាស្រ័យលើប្រភព ទិសដៅ ច្រក និងលក្ខណៈវិនិច្ឆ័យផ្សេងទៀត។ ដើម្បីបន្ថែមច្បាប់ (ដោយប្រើ សាធារណៈ តំបន់ជាឧទាហរណ៍)៖
firewall-cmd --zone=public rule
ឧទាហរណ៍ ដើម្បីអនុញ្ញាតឱ្យចរាចរចូលពីប្រភពណាមួយទៅកាន់ច្រក 80 (HTTP)៖
firewall-cmd --zone=public --add-port=80/tcp --permanent
ដើម្បីដកច្បាប់ចេញ៖
firewall-cmd --permanent --remove-rule=rule_specification
ដែលជាកន្លែងដែល ច្បាប់ គឺជាប្រភេទនៃច្បាប់ (ឧ. ច្រក, សេវាកម្ម, ក្បួនអ្នកមាន។ល។) និង rule_specification គឺជាការបញ្ជាក់នៃច្បាប់ខ្លួនឯង។
បន្ទាប់ពីធ្វើការផ្លាស់ប្តូរការកំណត់រចនាសម្ព័ន្ធ Firewalld វាចាំបាច់ត្រូវរក្សាទុក និងអនុវត្តពួកវា។ ដើម្បីរក្សាទុកការផ្លាស់ប្តូរ សូមប្រើពាក្យបញ្ជា៖
firewall-cmd --runtime-to-permanent
ដើម្បីអនុវត្តការផ្លាស់ប្តូរ៖
firewall-cmd --reload
នៅពេលបញ្ចប់ការដំឡើង អ្នកអាចផ្ទៀងផ្ទាត់ប៉ារ៉ាម៉ែត្រដែលបានជ្រើសរើសដោយបើកបញ្ជីនៃច្បាប់ទាំងអស់៖
firewall-cmd --list-all
ប្រសិនបើមានបញ្ហាណាមួយកើតឡើង សូមពិនិត្យមើលកំណត់ហេតុរបស់ Firewalld ដោយប្រើពាក្យបញ្ជា៖
journalctl -u firewalld
ចំណាំ៖ យើងបានគ្របដណ្តប់តែក្បួនដោះស្រាយទូទៅសម្រាប់ការដំឡើងការតភ្ជាប់ប៉ុណ្ណោះ។ ឧបករណ៍មានមុខងារទូលំទូលាយ។ សម្រាប់ព័ត៌មានពេញលេញអំពីជម្រើសដែលមានទាំងអស់ អ្នកអាចប្រើ ឯកសារផ្លូវការ ឬបើកជំនួយ៖
firewall-cmd --help
កំណត់រចនាសម្ព័ន្ធ iptables នៅលើលីនុច
មិនដូច Firewalld ទេ iptables គឺជាឧបករណ៍ចាស់ ប៉ុន្តែនៅតែត្រូវបានប្រើប្រាស់យ៉ាងទូលំទូលាយនៅក្នុង Linux សម្រាប់ការគ្រប់គ្រងជញ្ជាំងភ្លើង។ វាផ្តល់នូវវិធីសាស្រ្តដោយផ្ទាល់ និងអាចបត់បែនបានចំពោះច្បាប់តម្រងកញ្ចប់ព័ត៌មាននៅកម្រិតខឺណែលលីនុច។ ទោះជាយ៉ាងណាក៏ដោយ iptables ទាមទារចំណេះដឹង និងបទពិសោធន៍កម្រិតខ្ពស់ជាងបើប្រៀបធៀបទៅនឹង Firewalld ដែលធ្វើឱ្យវាកាន់តែងាយស្រួលសម្រាប់អ្នកចាប់ផ្តើមដំបូង។ ពិនិត្យមើលកំណែដែលបានដំឡើងជាមុនរបស់ឧបករណ៍ដោយប្រើពាក្យបញ្ជា៖
iptables -V
ប្រសិនបើឧបករណ៍មិនត្រូវបានដំឡើងទេនោះវានឹងចាំបាច់ត្រូវដំឡើង។ ពាក្យបញ្ជាសម្រាប់ដំឡើងនៅលើ Ubuntu, Debian:
apt install iptables
សម្រាប់ប្រព័ន្ធ Red Hat (ឧ. CentOS, Fedora)៖
yum install iptables
ពាក្យបញ្ជាសម្រាប់ការធ្វើឱ្យសកម្មបន្ទាប់ពីការដំឡើង:
systemctl start iptables
ដើម្បីបន្ថែមទៅការចាប់ផ្តើម សូមប្រតិបត្តិ៖
systemctl enable iptables
មុនពេលចាប់ផ្តើមការកំណត់រចនាសម្ព័ន្ធ iptables វាជាការសំខាន់ណាស់ដែលត្រូវយល់ពីរបៀបដែលវាដំណើរការ។ នេះត្រូវបានជួយដោយវាក្យសម្ព័ន្ធនៃកម្មវិធី។ វាមើលទៅដូចនេះ៖
iptables -t table action chain additional_parameters
ចូរយើងពិចារណាឲ្យបានស៊ីជម្រៅទៅលើធាតុនីមួយៗ។
Iptables មានតារាងសំខាន់ៗចំនួនបួន៖ តម្រង, ណាត, ម៉ាញេល, និងឆៅ. កញ្ចប់នីមួយៗត្រូវបានរចនាឡើងសម្រាប់ដំណើរការប្រភេទមួយចំនួននៃកញ្ចប់ព័ត៌មាន និងមានខ្សែសង្វាក់ផ្ទាល់ខ្លួនរបស់វា៖
- តម្រង៖ នេះជាតារាងដែលប្រើញឹកញាប់បំផុតដែលមានច្បាប់តម្រងកញ្ចប់ព័ត៌មាន។ វាត្រូវបានប្រើសម្រាប់ការសម្រេចចិត្តថាតើត្រូវអនុញ្ញាត ឬបដិសេធកញ្ចប់ព័ត៌មាន។
- nat៖ តារាងនេះត្រូវបានប្រើសម្រាប់ការកែប្រែអាសយដ្ឋានបណ្តាញ និងច្រកក្នុងកញ្ចប់ព័ត៌មាន។ វាត្រូវបានគេប្រើជាញឹកញាប់សម្រាប់ការរៀបចំការក្លែងបន្លំ (NAT)
- ធូប៖ នៅក្នុងតារាងនេះ អ្នកអាចកែប្រែបឋមកថា packet ។ វាត្រូវបានប្រើសម្រាប់ប្រតិបត្តិការកញ្ចប់ព័ត៌មានឯកទេស ដូចជាការសម្គាល់ជាដើម។
- ជួរដេក៖ តារាងនេះត្រូវបានប្រើសម្រាប់កំណត់រចនាសម្ព័ន្ធច្បាប់ដែលអនុវត្តមុនពេលពួកវាឆ្លងកាត់ប្រព័ន្ធតាមដានការតភ្ជាប់។ ជាធម្មតាវាត្រូវបានប្រើសម្រាប់ការបង្កើតច្បាប់ដែលមិនគួរត្រូវបានកែប្រែដោយប្រព័ន្ធតាមដាន ដូចជាការទម្លាក់កញ្ចប់ព័ត៌មានពីអាសយដ្ឋានជាក់លាក់។
តារាងនីមួយៗមានខ្សែសង្វាក់មួយ។ ខ្សែសង្វាក់គឺជាលំដាប់នៃច្បាប់ដែលត្រូវបានត្រួតពិនិត្យតាមលំដាប់លំដោយ។ មានខ្សែសង្វាក់ចំនួនបីដែលបានកំណត់ទុកជាមុន៖
- បញ្ចូល (ចូល). ច្បាប់នៅក្នុងខ្សែសង្វាក់នេះកំណត់អ្វីដែលត្រូវធ្វើជាមួយកញ្ចប់ព័ត៌មានចូល។
- ចេញ (ចេញ). ខ្សែសង្វាក់នេះអនុវត្តចំពោះកញ្ចប់ព័ត៌មានទាំងអស់ដែលកុំព្យូទ័ររបស់អ្នកផ្ញើទៅកាន់ឧបករណ៍ ឬកុំព្យូទ័រផ្សេងទៀតនៅលើបណ្តាញ។
- បញ្ជូនបន្ត (បញ្ជូនបន្ត). ច្បាប់នៅក្នុងខ្សែសង្វាក់នេះបញ្ជាក់ពីអ្វីដែលត្រូវធ្វើជាមួយកញ្ចប់ព័ត៌មានដែលបានបញ្ជូនបន្ត។
ទីបំផុតខ្សែសង្វាក់នីមួយៗមានសកម្មភាពមួយចំនួន (គោលដៅ)។ នៅក្នុងការអនុវត្ត សកម្មភាពសំខាន់ៗចំនួន 5 ត្រូវបានប្រើ៖
- ព្រមទទួល៖ អនុញ្ញាតឱ្យកញ្ចប់ព័ត៌មានឆ្លងកាត់ជញ្ជាំងភ្លើង។
- បញ្ឈប់៖ បដិសេធកញ្ចប់ព័ត៌មាន ហើយបោះវាចោលដោយគ្មានការឆ្លើយតប។
- បដិសេធ៖ បដិសេធកញ្ចប់ព័ត៌មាន ហើយផ្ញើសារកំហុស ICMP ទៅអ្នកផ្ញើ។
- ឡុក៖ កត់ត្រាកញ្ចប់ព័ត៌មាននៅក្នុងកំណត់ហេតុប្រព័ន្ធ ហើយអនុវត្តសកម្មភាពផ្សេងទៀត (ឧទាហរណ៍ យល់ព្រម ឬទម្លាក់)។
- ត្រឡប់មកវិញ៖ បញ្ឈប់ការពិនិត្យមើលច្បាប់នៅក្នុងខ្សែសង្វាក់បច្ចុប្បន្ន ហើយត្រឡប់ទៅខ្សែសង្វាក់ការហៅទូរសព្ទវិញ (ប្រសិនបើមាន)។
ដើម្បីចាប់ផ្តើមការដំឡើង សូមបើកបញ្ជីនៃច្បាប់ដែលមានស្រាប់ដោយប្រើពាក្យបញ្ជា៖
iptables -L
ជាមគ្គុទ្ទេសក៍សម្រាប់កំណត់រចនាសម្ព័ន្ធ Iptables សូមមើលឧទាហរណ៍ជាក់ស្តែងនៃពាក្យបញ្ជាដែលប្រើជាទូទៅបំផុត។ ដើម្បីភាពងាយស្រួល យើងនឹងបែងចែកឧទាហរណ៍ជា 3 ក្រុម អាស្រ័យលើខ្សែសង្វាក់ជាក់លាក់។
ខ្សែសង្វាក់ ការបញ្ចូល:
- អនុញ្ញាតឱ្យចរាចរចូលតាមរយៈពិធីការ TCP នៅលើច្រក 80៖
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. អនុញ្ញាតឱ្យចរាចរចូលតាមរយៈពិធីការ UDP នៅលើច្រក 22៖
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. រារាំងចរាចរណ៍ចូលពីអាសយដ្ឋាន IP ជាក់លាក់មួយ៖
iptables -A INPUT -s 192.168.1.100 -j DROP
ខ្សែសង្វាក់ OUTPUT:
- អនុញ្ញាតឱ្យចរាចរចេញតាមរយៈពិធីការ TCP នៅលើច្រក 443៖
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. អនុញ្ញាតឱ្យចរាចរចេញតាមរយៈពិធីការ UDP នៅលើច្រក 80៖
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. រារាំងចរាចរណ៍ចេញទៅកាន់ច្រកជាក់លាក់មួយ (ឧទាហរណ៍ 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP
ខ្សែសង្វាក់ ទៅមុខ:
- រារាំងចរាចរណ៍ដែលបានបញ្ជូនបន្តពីជួរជាក់លាក់នៃអាសយដ្ឋាន IP៖
iptables -A FORWARD -s 172.16.0.0/24 -j DROP
2. រារាំងការបញ្ជូនបន្តនៃកញ្ចប់ព័ត៌មានពីចំណុចប្រទាក់បណ្តាញជាក់លាក់មួយ៖
iptables -A FORWARD -i eth1 -j DROP
3. កំណត់ចំនួននៃការតភ្ជាប់ក្នុងពេលដំណាលគ្នាសម្រាប់ច្រកជាក់លាក់មួយ (ក្នុងឧទាហរណ៍នេះ 10 ការតភ្ជាប់ក្នុងមួយនាទីនៅលើច្រក 80):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT
ដូចដែលអ្នកអាចឃើញនៅក្នុងករណីដាច់ដោយឡែកនីមួយៗ អាគុយម៉ង់បន្ថែម (ពាក្យបញ្ជា) ត្រូវបានប្រើ។ ដើម្បីទទួលបានបញ្ជីពេញលេញនៃអាគុយម៉ង់ដែលអាចកើតមាន និងការគាំទ្ររួមសម្រាប់មុខងាររបស់ឧបករណ៍ សូមបញ្ចូល៖
iptables -h
ដើម្បីប្រាកដថាការកំណត់ត្រឹមត្រូវ សូមបញ្ចូលពាក្យបញ្ជាឡើងវិញដើម្បីមើលបញ្ជីច្បាប់៖
iptables -L
ដើម្បីលុបច្បាប់ជាក់លាក់ សូមប្រើពាក្យបញ្ជា៖
iptables -D chain rule_number
ឧទាហរណ៍ ប្រសិនបើអ្នកចង់លុបច្បាប់លេខ 1 ចេញពីខ្សែសង្វាក់ INPUT ពាក្យបញ្ជានឹងមើលទៅដូចនេះ៖
iptables -D INPUT 1
ដើម្បីលុបច្បាប់ទាំងអស់ដោយប្រើពាក្យបញ្ជាតែមួយ៖
iptables -F
ចំណាំសំខាន់៖ ច្បាប់ iptables មិនត្រូវបានរក្សាទុកដោយស្វ័យប្រវត្តិទេ បន្ទាប់ពីចាប់ផ្តើមប្រព័ន្ធ ឬសេវាកម្មឡើងវិញ។ ដើម្បីរក្សាទុកច្បាប់ ពួកវាត្រូវបន្ថែមទៅឯកសារកំណត់រចនាសម្ព័ន្ធ និងស្ដារឡើងវិញបន្ទាប់ពីចាប់ផ្ដើមឡើងវិញ។ នេះ។ iptables-រក្សាទុក និង iptables-ស្តារ ឧបករណ៍ប្រើប្រាស់អាចជួយក្នុងរឿងនេះ។ ដើម្បីរក្សាទុកច្បាប់ សូមបញ្ចូលពាក្យបញ្ជា៖
iptables-save > /etc/iptables/rules.v4
វារក្សាទុកច្បាប់ iptables បច្ចុប្បន្ននៅក្នុងឯកសារ rules.v4 ។ ដើម្បីស្តារបន្ទាប់ពីចាប់ផ្តើមឡើងវិញ សូមបញ្ចូល៖
iptables-restore < /etc/iptables/rules.v4
ពាក្យបញ្ជានេះស្ដារច្បាប់ពីឯកសារ rules.v4 ។
សន្និដ្ឋាន
ការកំណត់រចនាសម្ព័ន្ធ Firewall នៅលើ Linux ដោយប្រើ Firewalld ឬ iptables គឺជាទិដ្ឋភាពសំខាន់នៃការធានាសុវត្ថិភាពម៉ាស៊ីនមេ។ ឧបករណ៍ទាំងពីរនេះផ្តល់នូវមធ្យោបាយដែលអាចទុកចិត្តបានក្នុងការគ្រប់គ្រងចរាចរណ៍បណ្តាញ និងការពារប្រព័ន្ធពីការចូលប្រើដោយគ្មានការអនុញ្ញាត និងការវាយប្រហារតាមអ៊ីនធឺណិត។ ជម្រើសរវាង firewalld និង iptables អាស្រ័យទៅលើតម្រូវការជាក់លាក់ និងចំណូលចិត្តរបស់អ្នកប្រើប្រាស់ ដោយពិចារណាលើមុខងារ និងភាពខ្លាំងខុសៗគ្នារបស់ពួកគេ។