Iptables ձեռնարկ
Iptables-ը հրամանի տող firewall է, որը զտում է փաթեթները ըստ սահմանված կանոնների։ Iptables-ի միջոցով օգտվողները կարող են ընդունել, մերժել կամ շարունակել կապերը. այն աներևակայելի բազմակողմանի է և լայնորեն օգտագործվում է, չնայած այն փոխարինվել է nftable-ներով:
Այս ձեռնարկը կարդալուց հետո դուք կհասկանաք Iptables-ի քաղաքականությունը և կսահմանեք Iptables-ի կանոնները՝ ձեր տնային ցանցը պաշտպանելու համար:
Նշում. sudo հրամանն ավելացվել է ընթերցողների համար, ովքեր պետք է պատճենեն-տեղադրեն այս iptables ձեռնարկում նշված կանոնները:
Iptables բառարան.
ԹԻՐԱԽ. iptables-ն օգտագործելիս թիրախը գործողություն է, որը ցանկանում եք, որ Iptables-ը կիրառի, երբ փաթեթը համապատասխանում է կանոնին:
Շղթան. շղթան կանոնների ցանկ է. հասանելի ներկառուցված շղթաներն են՝ ՄՈՒՏՔ, ԵԼՔ, ԱՌԱՋ, ՆԱԽԱՊԱՏՈՒՄ և ՀԵՏԱՓՈԽՈՒՄ:
ԱՂՅՈՒՍԱԿ. Աղյուսակները iptables-ի գործառույթներն են յուրաքանչյուր նպատակի համար: Օրինակ, կա աղյուսակ՝ առաջադրանքների երթուղման համար և մեկ այլ աղյուսակ՝ առաջադրանքների զտման համար; յուրաքանչյուր աղյուսակ պարունակում է կանոնների շղթաներ:
Հասանելի աղյուսակներն են՝ զտիչ, nat, հում, անվտանգություն և մանգլ: Յուրաքանչյուր աղյուսակ պարունակում է ներկառուցված (կանոն) շղթաներ: Հետևյալ ցանկը ցույց է տալիս, թե ինչ շղթաներ են ներառում յուրաքանչյուր աղյուսակ.
FILTER | INPUT | OUTPUT | FORWARD | ||
---|---|---|---|---|---|
NAT | PREROUTING | POSTROUTING | OUTPUT | ||
RAW | PREROUTING | OUTPUT | |||
MANGLE | PREROUTING | POSTROUTING | OUTPUT | INPUT | FORWARD |
SECURITY | INPUT | OUTPUT | FORWARD |
Կախված այն գործողությունից, որը ցանկանում եք անել iptables-ը, դուք պետք է նշեք աղյուսակը՝ օգտագործելով -t տարբերակը, որին հաջորդում է աղյուսակի անունը: Այս ձեռնարկում -t տարբերակը չի օգտագործվում: Այս ձեռնարկը կենտրոնանում է զտման նպատակների վրա՝ օգտագործելով լռելյայն կիրառվող զտիչ աղյուսակը, երբ -t տարբերակը չի անցնում: Այս ձեռնարկը կարդալիս դուք կսովորեք վերը նշված հասկացություններից մի քանիսը:
Ինչպես տեղադրել:
Debian-ի և դրա վրա հիմնված Linux բաշխումների վրա Iptables-ը տեղադրելու համար գործարկեք.
Նախքան RedHat-ի վրա հիմնված Linux բաշխումների վրա տեղադրել Iptables, դուք պետք է անջատեք Firewalld-ը՝ գործարկելով.
sudo systemctl disable firewalld
sudo systemctl mask --now firewalld
Այնուհետև տեղադրեք Iptables-ը՝ կատարելով.
sudo systemctl start iptables
sudo systemctl start ip6tables
sudo systemctl enable iptables
sudo systemctl enable ip6tables
sudo systemctl start ip6tables
Ինչպես սկսել Iptables-ով.
Նախքան սկսելը, ստուգեք նախորդ կանոնները՝ հրահանգելով iptables-ին ցուցակագրել առկա քաղաքականությունները և կանոնները՝ օգտագործելով -L (–list) պարամետրը:
Վերևի ելքը ցույց է տալիս 3 տող՝Շղթայական INPUT, Chain FORWARD և Chain OUTPUT: Այնտեղ, որտեղ INPUT-ը վերաբերում է մուտքային տրաֆիկի քաղաքականությանը, OUTPUT-ը վերաբերում է ելքային տրաֆիկի նկատմամբ կիրառվող քաղաքականությանը, իսկ FORWARD-ը վերաբերում է երթուղային քաղաքականությանը:
Արդյունքը նաև ցույց է տալիս, որ չկան սահմանված կանոններ, և բոլոր սահմանված քաղաքականություններն ընդունված են:
Կան 3 տեսակի քաղաքականություն՝ ԸՆԴՈՒՆԵԼ, ՄԵՐԺԵԼ և ԲԱՑԵԼ:
ԸՆԴՈՒՆԵԼ քաղաքականությունը թույլ է տալիս կապեր. ՄԵՐԺԵԼ քաղաքականությունը մերժում է կապերը՝ վերադարձնելով սխալ. DROP քաղաքականությունը հրաժարվում է միացումներից՝ առանց սխալներ առաջացնելու: DROP օգտագործելիս, UDP փաթեթները հեռացվում են, և վարքագիծը կլինի նույնը, ինչ միանալուն նավահանգիստ առանց ծառայության: TCP փաթեթները կվերադարձնեն ACK/RST, որը նույն պատասխանն է, որով կպատասխանի բաց միացքը, որի վրա չկա ծառայություն: ՄԵՐԺՈՒՄ օգտագործելիս ICMP փաթեթը վերադարձնում է սկզբնաղբյուր հոսթին անհասանելի նպատակակետ:
Երբ գործ ունես Iptables-ի հետ, նախ պետք է յուրաքանչյուր շղթայի համար սահմանել երեք քաղաքականություն. դրանից հետո կարող եք ավելացնել բացառություններ և բնութագրեր: Քաղաքականությունների ավելացումն ունի հետևյալ տեսքը.
sudo iptables -P OUTPUT <ACCEPT/DROP/REJECT>
sudo iptables -P FORWARD <ACCEPT/DROP/REJECT>
Iptables-ի թույլատրելի և սահմանափակող քաղաքականություն՝
Դուք կարող եք կիրառել Iptables-ը թույլատրելի քաղաքականությամբ՝ ընդունելով բոլոր մուտքային կապերը, բացառությամբ դրանց, որոնք դուք հատուկ հրաժարվում կամ մերժում եք: Այս դեպքում յուրաքանչյուր կապ թույլատրվում է, քանի դեռ չեք սահմանել հատուկ կանոն՝ դրանից հրաժարվելու համար:
Ընդհակառակը, սահմանափակող քաղաքականությունը մերժում է բոլոր կապերը, բացառությամբ դրանց, որոնք դուք հատուկ ընդունում եք: Այս դեպքում ցանկացած կապ մերժվում է, քանի դեռ չեք սահմանել այն ընդունելու կանոն:
Iptables-ի հետ սահմանափակող քաղաքականության կիրառում.
Հետևյալ օրինակը ցույց է տալիս, թե ինչպես կիրառել սահմանափակող քաղաքականություն Iptables-ի հետ՝ բաց թողնելով բոլոր մուտքային տրաֆիկը, բացառությամբ թույլատրվածի:
Մուտքային երթևեկի արգելափակում:
ԿԱՐԵՎՈՐ. հետևյալ 3 կանոնների կիրառումը կարող է ձեզ թողնել առանց ինտերնետ կապի: Օգտագործելով «Iptables հավելվածի կանոններ և Iptables վիճակներ»-ում նշված կանոնները՝ դուք ավելացնում եք անհրաժեշտ բացառությունները՝ վերականգնելու ձեր մուտքը ինտերնետ: Դուք կարող եք հետևողականորեն կատարել sudo iptables -F կանոնները մաքրելու համար:
Դուք կարող եք արգելափակել բոլոր մուտքային տրաֆիկը, որը թույլ է տալիս միայն ելքային երթևեկին զննել համացանցը և ձեզ անհրաժեշտ հավելվածները:
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP
Որտեղ:
-P=Քաղաքականություն
sudo iptables -P INPUT DROP. հանձնարարեք iptables-ին հրաժարվել ամբողջ մուտքային տրաֆիկից՝ առանց աղբյուրին պատասխանելու:
sudo iptables -P OUTPUT ACCEPT. սահմանում է ACCEPT քաղաքականություն ելքային տրաֆիկի համար:
sudo iptables -P FORWARD DROP. հրահանգում է iptables-ին չկատարել երթուղային առաջադրանքները՝ թողնելով բոլոր փաթեթները, որոնք նախատեսված են այլ հոսթին (փորձելով անցնել firewalled սարքի միջով) առանց պատասխանի:
Վերոնշյալ օրինակը թույլ է տալիս զննել համացանցը և տեղական սարքի կողմից սկսված կապերը (-P OUTPUT ACCEPT), սակայն կկանխի այլ հոսթի նախաձեռնած կապերը (-P INPUT DROP), ինչպիսին է ssh-ը: ձեր սարքին մուտք գործելու փորձերը սխալ հաղորդագրություններ չեն վերադարձնում:
Երբ դուք ակտիվացնում եք Iptables-ը սահմանափակող քաղաքականությամբ, ինչպես նախորդ օրինակում, դուք պետք է ավելացնեք կանոններ՝ ձեր կազմաձևումը կարգավորելու համար: Օրինակ, եթե պահպանում եք վերը նշված կոնֆիգուրացիան՝ առանց loopback (lo) ինտերֆեյսի համար ողջամիտ բացառություն ավելացնելու, որոշ հավելվածներ կարող են ճիշտ չաշխատել: Դուք նաև պետք է թույլատրեք մուտքային տրաֆիկը, որը պատկանում է կամ կապված է ձեր սարքի կողմից սկսված կապի հետ:
Iptables Հավելված կանոններ և Iptables վիճակներ
Կարևոր է հասկանալ, որ Iptables-ը կանոնները կիրառում է պատվերով: Երբ դուք կանոն եք սահմանում նախորդ կանոնից հետո, երկրորդ կանոնը կվերագրի վերջինը, եթե փաթեթը համապատասխանում է նույն կանոնին:
Ինձ դուր է գալիս նախորդ օրինակը. դուք արգելափակել եք բոլոր մուտքային տրաֆիկը, դուք պետք է բացառություններ ավելացնեք loopback ինտերֆեյսի համար. դրան կարելի է հասնել՝ ավելացնելով -A (Append) պարամետրը:
sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
Մոդուլը (-m) conntrack –ctstate ՍՏԵՂԾՎԱԾ, RELATED հրահանգում է Iptables-ին հաստատել, արդյոք կապի վիճակը ՍՏԵՂԾՎԱԾ Է կամ ԿԱՊՎԱԾ Է գոյություն ունեցող կապի հետ՝ նախքան սահմանված կանոնների քաղաքականությունը կիրառելը:
Կան 4 հնարավոր վիճակներ, որոնք Iptable-ը կարող է ստուգել.
Iptables-ի վիճակը ՆՈՐ. փաթեթը կամ տրաֆիկը, որը դուք թույլ եք տալիս կամ արգելափակում եք, փորձում է նոր կապ սկսել:
Iptables-ի վիճակը ՍՏԵՂԾՎԱԾ Է. փաթեթը կամ տրաֆիկը, որը դուք թույլ եք տալիս կամ արգելափակում եք, հաստատված կապի մի մասն է:
Iptables վիճակը ԿԱՊՎԱԾ է. փաթեթը կամ տրաֆիկը սկսում է նոր կապ, բայց կապված է գոյություն ունեցող կապի հետ:
Iptables վիճակն ԱՆՎԱՎԵՐ է. փաթեթը կամ տրաֆիկը անհայտ է առանց վիճակի:
Վերոնշյալ օրինակի առաջին տողը հրահանգում է Iptables-ին ընդունել մուտքային փաթեթներ տրաֆիկից, որը գալիս է կամ կապված է ձեր սարքի կողմից սկսված միացումներից: Երկրորդ տողը հանձնարարում է Iptables-ին ընդունել միայն ելքային տրաֆիկ արդեն հաստատված կապերից:
Iptables Հավելված է loopback տրաֆիկ ընդունելու և միջերեսներ սահմանելու համար.
Loopback ինտերֆեյսը օգտագործվում է ծրագրերի կողմից, որոնք պետք է փոխազդեն տեղական հոսթի հետ: Եթե դուք չեք թույլատրում շրջադարձային երթևեկությունը, որոշ հավելվածներ կարող են չաշխատել:
Հետևյալ հրամանը թույլ է տալիս շրջադարձ կապեր.
sudo iptables -A OUTPUT -o lo -j ACCEPT
Որտեղ -i և -o-ն օգտագործվում են մուտքային տրաֆիկի (-i) և ելքային տրաֆիկի (-o) ցանցային սարքը նշելու համար:
Iptables-ի հետ թույլատրելի քաղաքականության կիրառում.
Կարող եք նաև սահմանել թույլատրելի քաղաքականություն, որը թույլ է տալիս բոլոր երթևեկությունը, բացառությամբ նշված հեռացվածի կամ մերժվածի: Դուք կարող եք միացնել ամեն ինչ, բացառությամբ որոշակի IP-ի կամ IP միջակայքի, կամ կարող եք հրաժարվել փաթեթներից՝ հիմնվելով դրանց վերնագրերի վրա, ի թիվս այլ հնարավորությունների:
Հետևյալ օրինակը ցույց է տալիս, թե ինչպես կիրառել թույլատրելի քաղաքականություն, որը թույլ է տալիս ամբողջ տրաֆիկը, բացառությամբ ssh ծառայության համար արգելափակված IP տիրույթի:
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP
sudo iptables -A INPUT -p tcp --dport 22 -m iprange --src-range 192.168.1.100-192.168.1.110 -j REJECT
Վերոնշյալ օրինակը կիրառում է թույլատրելի քաղաքականություն, սակայն արգելափակում է ssh մուտքը 192.168.1.100 և 192.168.1.110 տիրույթին պատկանող բոլոր IP-ներին:
Այնտեղ, որտեղ -p-ն նշում է արձանագրությունը, –dport (կամ –destination-port) նպատակակետ նավահանգիստը (22,ssh), իսկ մոդուլի iprange-ը արգումենտով –src-range (աղբյուրի տիրույթ) թույլ է տալիս սահմանել IP միջակայքը: -j (–jump) տարբերակը հրահանգում է iptables-ին, թե ինչ անել փաթեթի հետ; այս դեպքում մենք ներկայացնում ենք ՄԵՐԺՈՒՄԸ:
Նավահանգիստների արգելափակում Iptables-ով
Հետևյալ օրինակը ցույց է տալիս, թե ինչպես արգելափակել հատուկ նավահանգիստ բոլոր կապերի համար՝ ssh պորտը:
Պահպանելով Iptables փոփոխությունները
Iptables-ի կանոնները համառ չեն. վերագործարկումից հետո կանոնները չեն վերականգնվի: Ձեր կանոնները հաստատուն դարձնելու համար գործարկեք հետևյալ հրամանները, որտեղ առաջին տողը պահպանում է կանոնները ֆայլում /etc/iptables.up.rules, իսկ երկրորդ տողը՝ ֆայլը ստեղծելու համար, որպեսզի iptables-ը սկսվի վերաբեռնումից հետո:
nano /etc/network/if-pre-up.d/iptables
Ավելացրեք հետևյալը ֆայլին և փակեք պահպանման փոփոխությունները (CTRL+X):
/sbin/iptables-restore < /etc/iptables.up.rules
Ի վերջո, տվեք ֆայլի կատարման թույլտվությունները՝ գործարկելով.
Iptables-ի լվացման կամ հեռացման կանոններ.
Դուք կարող եք հեռացնել Iptables-ի ձեր բոլոր կանոնները՝ գործարկելով հետևյալ հրամանը.
Հատուկ շղթա հեռացնելու համար, ինչպիսին է INPUT-ը, կարող եք գործարկել՝
Եզրակացություն:
Iptable-ները շուկայում ամենաբարդ և ճկուն firewall-ներից են: Չնայած այն փոխարինվել է, այն մնում է որպես ամենատարածված պաշտպանական և երթուղային ծրագրերից մեկը:
Դրա իրականացումը կարող է արագ սովորել Linux-ի նոր օգտվողները՝ TCP/IP-ի հիմնական գիտելիքներով: Երբ օգտվողները հասկանում են շարահյուսությունը, կանոնների սահմանումը դառնում է հեշտ խնդիր:
Կան ավելի շատ լրացուցիչ մոդուլներ և տարբերակներ, որոնք չեն լուսաբանվել այս ներածական ձեռնարկում: Դուք կարող եք տեսնել ավելի շատ iptables օրինակներ Iptables-ում սկսնակների համար:
Հուսով եմ, որ այս Iptables ձեռնարկը օգտակար էր: Շարունակեք հետևել Linux ակնարկին՝ Linux-ի լրացուցիչ խորհուրդների և ձեռնարկների համար: