Linux හි ෆයර්වෝල් පරිගණක පද්ධතියක් සුරක්ෂිත කිරීම සඳහා වැදගත් කාර්යභාරයක් ඉටු කරයි. එය අනවසර ප්රවේශය, ප්රහාර සහ වෙනත් තර්ජන වලින් පද්ධතිය ආරක්ෂා කිරීම සඳහා ජාල ගමනාගමනය පාලනය කිරීම සහ පෙරීම සඳහා බාධකයක් ලෙස ක්රියා කරයි. නිසි ලෙස වින්යාස කර ඇති ෆයර්වෝල් එකක් නොමැතිව, සේවාදායකය විවිධ ආකාරයේ සයිබර් ප්රහාරවලට ගොදුරු විය හැකි අතර, දත්ත ආරක්ෂාව සහ රහස්යභාවය සඳහා බරපතල ප්රතිවිපාක ඇති කරයි.
මෙම ලිපියෙන් අපි Linux Firewall වින්යාස කිරීම සඳහා ප්රධාන මෙවලම් දෙකක් දෙස බලමු: firewalld සහ iptables. අපි ඒවායේ විශේෂාංග, ක්රියාකාරීත්වය සහ වාසි පිළිබඳ සංසන්දනාත්මක විශ්ලේෂණයක් සිදු කරන්නෙමු. ඊට අමතරව, මෙම එක් එක් මෙවලම් සැකසීම සහ භාවිතා කිරීම සඳහා සවිස්තරාත්මක උපදෙස් අපි ලබා දෙන්නෙමු, එසේම Linux වේදිකාවේ Firewall එකක් සමඟ ඔබේ පද්ධතිය සුරක්ෂිත කිරීම සඳහා හොඳම භාවිතයන් සාකච්ඡා කරන්නෙමු. සියලුම ක්රියා root ප්රවේශය සහිත අථත්ය සේවාදායකයක නිරූපණය කෙරේ.
Linux මත firewalld වින්යාස කිරීම
ෆයර්වෝල් (ෆයර්වෝල් ඩීමන්) යනු ලිනක්ස් මෙහෙයුම් පද්ධතිවල ෆයර්වෝල් කළමනාකරණය කිරීම සඳහා වූ වැඩසටහනකි. එය ෆයර්වෝල් නීති වින්යාස කිරීම, ජාල යෙදුම්වල සම්බන්ධතා වලට ඉඩ දීම හෝ අවහිර කිරීම සඳහා පරිශීලක අතුරු මුහුණතක් සපයයි. බොහෝ සේවාදායක බෙදාහැරීම්වල එය පෙරනිමියෙන් පෙර ස්ථාපනය කර ඇත. ෆයර්වෝල්ඩ් පෙර ස්ථාපනය කර නොමැති නම්, එය බෙදාහැරීමේ නිල ගබඩාවලින් ස්වාධීනව ස්ථාපනය කළ හැකිය.
Red Hat පද්ධති සඳහා (RHEL, CentOS, Fedora වැනි) ස්ථාපනය පහත විධානය සමඟ සිදු කෙරේ:
yum install firewalld
Debian/Ubuntu සඳහා:
apt-get install firewalld
ස්ථාපනය කිරීමෙන් පසු, එය ආරම්භ කර වහාම විධානය සමඟ සක්රිය කළ හැක:
systemctl start firewalld
ඊළඟට, ඔබ ආරම්භයට සේවාව එක් කළ යුතුය:
systemctl enable firewalld
මෙම අවස්ථාවේදී, firewalld හෝ iptables සමඟ මෙම මෙවලම එකවර භාවිතා කිරීම නිර්දේශ නොකරන බැවින්, ufw අක්රීය කිරීමට අපි නිර්දේශ කරමු. තත්ත්වය පරීක්ෂා කරන්න:
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
නම යනු සේවාවේ නමයි. උදාහරණයක් ලෙස, Apache සඳහා ගමනාගමනයට ඉඩ දීමට :
firewall-cmd --zone=public --add-service=http
අවසර ලත් වරායන් අර්ථ දැක්වීමට, විධානය භාවිතා කරන්න:
firewall-cmd --zone=public --add-port=number/protocol
උදාහරණයක් ලෙස, SSH සඳහා සම්මත 22 port එක මේ ආකාරයෙන් පෙනෙනු ඇත:
firewall-cmd --zone=public --add-port=22/tcp
මෙම අදියරේදී, ප්රධාන නීති දැනටමත් නිර්මාණය කර ඇත. ඊළඟට, මූලාශ්රය, ගමනාන්තය, වරාය සහ අනෙකුත් නිර්ණායක මත පදනම්ව ගමනාගමනය සකසන ආකාරය තීරණය කරන්න. රීතියක් එක් කිරීමට ( උදාහරණයක් ලෙස පොදු කලාපය භාවිතා කරමින්):
firewall-cmd --zone=public rule
උදාහරණයක් ලෙස, ඕනෑම මූලාශ්රයකින් port 80 (HTTP) වෙත පැමිණෙන ගමනාගමනයට ඉඩ දීමට:
firewall-cmd --zone=public --add-port=80/tcp --permanent
රීතියක් ඉවත් කිරීමට:
firewall-cmd --permanent --remove-rule=rule_specification
මෙහි rule යනු රීති වර්ගයයි (උදා: port, service, rich-rule, ආදිය), සහ rule_specification යනු රීතියේම පිරිවිතරයයි.
Firewalld වින්යාසයට වෙනස්කම් සිදු කිරීමෙන් පසු, ඒවා සුරැකීමට සහ යෙදීමට අවශ්ය වේ. වෙනස්කම් සුරැකීමට, විධානය භාවිතා කරන්න:
firewall-cmd --runtime-to-permanent
වෙනස්කම් යෙදීමට:
firewall-cmd --reload
සැකසුම සම්පූර්ණ කිරීමෙන් පසු, ඔබට සියලු නීති ලැයිස්තුව විවෘත කිරීමෙන් තෝරාගත් පරාමිතීන් සත්යාපනය කළ හැකිය:
firewall-cmd --list-all
කිසියම් ගැටළුවක් ඇති වුවහොත්, විධානය සමඟ Firewall ලොග් පරීක්ෂා කරන්න:
journalctl -u firewalld
සටහන: සම්බන්ධතාවය සැකසීම සඳහා වන සාමාන්ය ඇල්ගොරිතම පමණක් අපි ආවරණය කර ඇත්තෙමු. මෙවලම පුළුල් ක්රියාකාරීත්වයක් ඇත. පවතින සියලුම විකල්ප පිළිබඳ සම්පූර්ණ තොරතුරු සඳහා, ඔබට නිල ලියකියවිලි හෝ විවෘත උදව් භාවිතා කළ හැකිය:
firewall-cmd --help
ලිනක්ස් හි iptables වින්යාස කිරීම
ෆයර්වෝල්ඩ් මෙන් නොව, අයිප්ටේබල්ස් යනු ෆයර්වෝල් කළමනාකරණය කිරීම සඳහා ලිනක්ස් හි පැරණි නමුත් තවමත් බහුලව භාවිතා වන මෙවලමකි. එය ලිනක්ස් කර්නල් මට්ටමින් පැකට් පෙරීමේ නීති සඳහා වඩාත් සෘජු හා නම්යශීලී ප්රවේශයක් සපයයි. කෙසේ වෙතත්, අයිප්ටේබල්ස් සඳහා ෆයර්වෝල්ඩ් හා සසඳන විට වඩා දියුණු දැනුමක් සහ පළපුරුද්දක් අවශ්ය වන අතර එමඟින් ආරම්භකයින් සඳහා ප්රවේශ වීම අඩු වේ. විධානය සමඟ මෙවලමෙහි පෙර-ස්ථාපිත අනුවාදය පරීක්ෂා කරන්න:
iptables -V
මෙවලම ස්ථාපනය කර නොමැති නම්, එය ස්ථාපනය කිරීමට සිදුවනු ඇත. උබුන්ටු, ඩේබියන් හි ස්ථාපනය සඳහා විධානය:
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) සඳහා භාවිතා කරයි.
- මිනිහෙක්: මෙම වගුවේ, ඔබට පැකට් ශීර්ෂ වෙනස් කළ හැක. එය සලකුණු කිරීම වැනි විශේෂිත පැකට් මෙහෙයුම් සඳහා භාවිතා වේ.
- අමු: සම්බන්ධතා ලුහුබැඳීමේ පද්ධතිය හරහා යාමට පෙර අදාළ වන නීති වින්යාස කිරීම සඳහා මෙම වගුව භාවිතා කරයි. එය සාමාන්යයෙන් භාවිතා කරනුයේ ඇතැම් ලිපින වලින් පැකට් හෙළීම වැනි ලුහුබැඳීමේ පද්ධතිය විසින් වෙනස් නොකළ යුතු නීති සැකසීම සඳහා ය.
සෑම වගුවකම දාම කට්ටලයක් අඩංගු වේ. දාම යනු අනුපිළිවෙලින් පරීක්ෂා කරනු ලබන නීති අනුපිළිවෙලකි. පූර්ව නිශ්චිත දාම තුනක් ඇත:
- ආදානය (එන)මෙම දාමයේ නීති මඟින් ලැබෙන පැකට් සමඟ කළ යුතු දේ තීරණය වේ.
- OUTPUT (පිටතට යන)මෙම දාමය ඔබේ පරිගණකය ජාලයේ අනෙකුත් උපාංග හෝ පරිගණක වෙත යවන සියලුම පැකට් සඳහා අදාළ වේ.
- ඉදිරියට (ඉදිරියට යැවීම)මෙම දාමයේ නීති මඟින් යොමු කරන ලද පැකට් සමඟ කළ යුතු දේ නියම කරයි.
අවසාන වශයෙන්, සෑම දාමයකම යම් ක්රියාවක් (ඉලක්කයක්) ඇත. ප්රායෝගිකව, ප්රධාන ක්රියා 5 ක් භාවිතා වේ:
- පිළිගන්න: පැකට්ටුව ෆයර්වෝලය හරහා යාමට ඉඩ දෙන්න.
- බින්දුව: පැකට්ටුව ප්රතික්ෂේප කර කිසිදු ප්රතිචාරයක් නොමැතිව ඉවතලන්න.
- ප්රතික්ෂේප කරන්න: පැකට්ටුව ප්රතික්ෂේප කර යවන්නාට ICMP දෝෂ පණිවිඩයක් යවන්න.
- ලඝු-සටහන: පැකට්ටුව පද්ධති ලොගයට ලොග් කර තවත් ක්රියාවක් කරන්න (උදා: ACCEPT හෝ DROP).
- ආපසු: වත්මන් දාමයේ නීති පරීක්ෂා කිරීම නවතා ඇමතුම් දාමයට ආපසු යන්න (අදාළ නම්).
සැකසුම ආරම්භ කිරීමට, පවතින නීති ලැයිස්තුව විධානය සමඟ විවෘත කරන්න:
iptables -L
Iptables වින්යාස කිරීම සඳහා මාර්ගෝපදේශයක් ලෙස, බහුලව භාවිතා වන විධානවල ප්රායෝගික උදාහරණ දෙස බලමු. පහසුව සඳහා, අපි නිශ්චිත දාමය මත පදනම්ව උදාහරණ කණ්ඩායම් 3 කට බෙදන්නෙමු.
දාම ආදානය :
- port 80 හි TCP ප්රොටෝකෝලය හරහා පැමිණෙන ගමනාගමනයට ඉඩ දෙන්න:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. port 22 හි UDP ප්රොටෝකෝලය හරහා පැමිණෙන ගමනාගමනයට ඉඩ දෙන්න:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. නිශ්චිත IP ලිපිනයකින් පැමිණෙන ගමනාගමනය අවහිර කරන්න:
iptables -A INPUT -s 192.168.1.100 -j DROP
දාම ප්රතිදානය :
- 443 port එකේ TCP ප්රොටෝකෝලය හරහා පිටතට යන ගමනාගමනයට ඉඩ දෙන්න:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. port 80 හි UDP ප්රොටෝකෝලය හරහා පිටතට යන ගමනාගමනයට ඉඩ දෙන්න:
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
උදාහරණයක් ලෙස, ඔබට INPUT දාමයෙන් රීති අංක 1 මකා දැමීමට අවශ්ය නම්, විධානය මේ ආකාරයෙන් පෙනෙනු ඇත:
iptables -D INPUT 1
එක් විධානයකින් සියලුම නීති මකා දැමීමට:
iptables -F
වැදගත් සටහන : පද්ධතිය හෝ සේවාව නැවත ආරම්භ කිරීමෙන් පසු iptables නීති ස්වයංක්රීයව සුරැකෙන්නේ නැත. නීති සුරැකීමට, ඒවා වින්යාස ගොනුවකට එකතු කර නැවත ආරම්භ කිරීමෙන් පසු ප්රතිස්ථාපනය කළ යුතුය. iptables-save සහ iptables-restore උපයෝගිතා මේ සඳහා උපකාරී වේ. නීති සුරැකීමට, විධානය ඇතුළත් කරන්න:
iptables-save > /etc/iptables/rules.v4
මෙය වත්මන් iptables නීති rules.v4 ගොනුවේ සුරකියි. නැවත ආරම්භ කිරීමෙන් පසු ප්රතිස්ථාපනය කිරීමට, ඇතුළත් කරන්න:
iptables-restore < /etc/iptables/rules.v4
මෙම විධානය rules.v4 ගොනුවෙන් නීති ප්රතිස්ථාපනය කරයි.
නිගමනය
firewalld හෝ iptables භාවිතයෙන් Linux මත Firewall වින්යාස කිරීම සේවාදායක ආරක්ෂාව සහතික කිරීමේ වැදගත් අංගයකි. මෙවලම් දෙකම ජාල ගමනාගමනය කළමනාකරණය කිරීමට සහ අනවසර ප්රවේශයන් සහ සයිබර් ප්රහාර වලින් පද්ධතිය ආරක්ෂා කිරීමට විශ්වාසදායක ක්රම සපයයි. firewalld සහ iptables අතර තේරීම රඳා පවතින්නේ පරිශීලකයාගේ විවිධ ක්රියාකාරීත්වය සහ ශක්තීන් සැලකිල්ලට ගනිමින් ඔවුන්ගේ නිශ්චිත අවශ්යතා සහ මනාපයන් මත ය.