Ubuntu Iptables. Ինչպե՞ս վերահսկել ցանցի երթևեկությունը՝ օգտագործելով iptables-ը:
«…Ա օգտատիրոջ տարածության Unix կոմունալ, որը համակարգի ադմինիստրատորներին հնարավորություն է տալիս կարգավորել IP փաթեթների զտման կանոնները, որոնք իրականացվում են միջուկի զտման մոդուլի կողմից: ” Iptable-ները գործում են որպես firewall՝ օգտագործելով փաթեթների զտման կանոնները՝ հիմնված տարբեր չափանիշների վրա, ինչպիսիք են IP հասցեն, նավահանգիստը և արձանագրությունները:
Այս ուղեցույցը կքննարկի, թե ինչպես կարգավորել և օգտագործել iptables կանոնները Ubuntu համակարգում՝ ձեր ցանցն ապահովելու համար: Անկախ նրանից՝ դուք Linux-ի սկսնակ օգտատեր եք, թե փորձառու համակարգի ադմինիստրատոր, այս ուղեցույցից և այս կամ այն կերպ, դուք կիմանաք ինչ-որ օգտակար բան iptables-ի մասին:
Iptable-ները նախապես տեղադրված են Ubuntu-ի և Debian-ի վրա հիմնված բաշխումների մեծ մասում: Ubuntu-ն նաև փաթեթավորում է GUFW firewall՝ գրաֆիկական այլընտրանք, որը կարող եք օգտագործել iptable-ների հետ աշխատելու համար:
ՆՇՈՒՄ. iptable-ներն օգտագործելու և կարգավորելու համար ձեզ հարկավոր են sudo արտոնություններ ձեր համակարգում: Դուք կարող եք ավելին իմանալ սուդոյի մասին հետևյալ ձեռնարկից:
Այժմ, երբ դուք գիտեք, թե ինչ է Iptables-ը, եկեք անմիջապես սուզվենք:
Ինչպե՞ս օգտագործել iptables-ը IPv4 երթևեկությունը կառավարելու համար:
IPv4 ցանցի և երթևեկության կառավարման համար Iptables օգտագործելու համար դուք պետք է հասկանաք հետևյալը.
Iptables հրամանը
Iptables-ն առաջարկում է ընտրանքների ընտրություն, որոնք թույլ են տալիս հարմարեցնել և կարգավորել ձեր iptables կանոնները: Եկեք քննարկենք այս պարամետրերից մի քանիսը և տեսնենք, թե ինչ են նրանք անում:
ՆՇՈՒՄ. Դուք կարող եք կարգավորել մի շարք կանոններ, որոնք կառավարում են որոշակի ենթաբազմություն, որը հայտնի է որպես iptables շղթաներ:
Iptables պարամետրեր
Նախքան iptables կանոնների ստեղծումն ու կարգավորումը սկսելը, նախ եկեք հասկանանք iptables-ի հիմունքները, ինչպիսիք են ընդհանուր շարահյուսությունը և լռելյայն արգումենտները:
Դիտարկենք ստորև նշված հրամանը.
Վերևի հրամանը iptables-ին ասում է շղթայում կանոն ստեղծել: Կանոնը հանում է բոլոր փաթեթները 192.168.0.24 IP հասցեից:
Եկեք տող առ տող ուսումնասիրենք հրամանը՝ այն ավելի լավ հասկանալու համար։
Առաջին հրամանը iptables կոչ է անում iptables հրամանի տող կոմունալ:
Հաջորդը -I արգումենտն է, որն օգտագործվում է ներդրման համար: Տեղադրման արգումենտը կանոն է ավելացնում iptables շղթայի սկզբում և այդպիսով ստանում է ավելի բարձր առաջնահերթություն: Շղթայում որոշակի թվով կանոն ավելացնելու համար օգտագործեք -I արգումենտը, որին հաջորդում է այն թիվը, որտեղ պետք է նշանակվի կանոնը:
-s արգումենտն օգնում է նշել աղբյուրը: Այսպիսով, մենք օգտագործում ենք -s փաստարկը, որին հաջորդում է IP հասցեն:
-
-j պարամետրը iptables-ով նշում է թռիչքը դեպի կոնկրետ թիրախ: Այս տարբերակը սահմանում է գործողությունը, որը Iptables-ը պետք է կատարի, երբ կա համապատասխան փաթեթ: Iptables-ը լռելյայն առաջարկում է չորս հիմնական թիրախ, դրանք ներառում են՝ ԸՆԴՈՒՆԵԼ, ԿԱՌՆԵԼ, ՄԵՋ, և ՄԵՐԺԵԼ:
Iptables-ն առաջարկում է պարամետրերի ընտրություն, որոնք կարող եք օգտագործել տարբեր կանոններ կարգավորելու համար: Տարբեր պարամետրերը, որոնք կարող եք օգտագործել iptables կանոնները կարգավորելու համար, ներառում են.
- -p –protocol
Նշում է կապի արձանագրությունը. օրինակ՝ TCP, UDP և այլն։
- -d –destination
Նշում է նպատակակետը, որը կարող է լինել հասցե, ցանցի անուն կամ հոսթի անունը:
- -j –jump
Կոմպլեկտներ, որոնք iptables-ի գործողությունները պետք է իրականացնեն փաթեթը գտնելուց հետո:
- -o –out-interface
Սահմանում է միջերեսը, որի միջոցով iptable-ն ուղարկում է փաթեթը:
- -i –in-interface
Սահմանում է ինտերֆեյսը, որն օգտագործվում է ցանցային փաթեթներ ստեղծելու համար:
- -c –set-counters
Թույլ է տալիս ադմինիստրատորին սահմանել բայթերի և փաթեթների հաշվիչները սահմանված կանոնի համար:
- -g –goto chain
Պարամետրը սահմանում է, որ վերամշակումը պետք է շարունակվի օգտագործողի կողմից սահմանված շղթայում վերադառնալուց հետո:
- -f –fragment
Պատմում է iptables-ին կիրառել կանոնը միայն մասնատված փաթեթների երկրորդ և հաջորդ հատվածների նկատմամբ:
Iptables Ընտրանքներ
iptables հրամանը աջակցում է ընտրանքների լայն շրջանակ: Որոշ ընդհանուրները ներառում են.
- -D –delete
Հեռացնում է կանոնը նշված շղթայից
- -F –flush
Հեռացնում է բոլոր կանոնները, մեկ առ մեկ
- -L –list
Ցույց է տալիս բոլոր կանոնները նշված շղթայում
- -I –insert
Զետեղում է կանոն նշված շղթայում (փոխանցվում է որպես թիվ, երբ նշված թիվ չկա, կանոնը ավելացվում է վերևում)
- -C –check
Կանոնների համապատասխանության հարցումներ; պահանջը սահմանված կանոնով
- -v –verbose
Ցուցադրում է ավելի շատ մանրամասներ, երբ օգտագործվում է -L պարամետրով
- -N –new-chain <name>
Ավելացնում է օգտագործողի կողմից սահմանված նոր շղթա
- -X –delete-chain <name>
Հեռացնում է օգտագործողի կողմից սահմանված որոշակի շղթա
Iptables սեղաններ
Linux միջուկն ունի լռելյայն աղյուսակներ, որոնք պարունակում են մի շարք հարակից կանոններ: Այս լռելյայն աղյուսակներն ունեն լռելյայն շղթաների մի շարք, սակայն օգտվողները կարող են հարմարեցնել կանոնները՝ ավելացնելով օգտվողի կողմից սահմանված կանոնները:
ՆՇՈՒՄ. Նախնական աղյուսակները մեծապես կախված կլինեն ձեր միջուկի կազմաձևից և տեղադրված մոդուլներից:
Ահա կանխադրված iptables աղյուսակները.
1: Զտիչ աղյուսակներ
Ֆիլտրի աղյուսակը լռելյայն աղյուսակ է, որը պարունակում է ցանցային փաթեթների զտման համար օգտագործվող շղթաներ: Այս աղյուսակի լռելյայն շղթաներից մի քանիսը ներառում են.
Chain | Description |
---|---|
Input | Iptables use this chain for any incoming packets to the system, i.e., packets going to local network sockets. |
Output | Iptables use the output chain for locally generated packets, i.e., packets going out of the system. |
Forward | This chain is what the Iptables use for packets routed or forwarded via the system. |
2. NAT աղյուսակները
NAT-ը կամ Ցանցային հասցեների աղյուսակը երթուղիչ սարք է, որն օգտագործվում է ցանցային փաթեթում աղբյուրի և թիրախային IP հասցեները փոփոխելու համար: NAT աղյուսակի հիմնական օգտագործումը մասնավոր հասցեների տիրույթում երկու ցանցեր միացնելն է հանրային ցանցին:
NAT-ը մշակվել է՝ աջակցելու իրական IP հասցեների քողարկմանը, որը թույլ է տալիս մասնավոր IP հասցեների միջակայքերը հասնել արտաքին ցանցին: Սա օգնում է պաշտպանել ներքին ցանցերի մասին մանրամասները հանրային ցանցերում չբացահայտվելուց:
NAT աղյուսակը գործարկվում է, երբ փաթեթը սկսում է նոր կապ:
Iptable-ներն ունեն NAT հասցեավորման լռելյայն աղյուսակ: Այս աղյուսակը ունի երեք հիմնական շղթա.
Chain | Description |
---|---|
PREROUTING | Allows the modification of packet information before arriving in the INPUT chain—used for incoming packets |
OUTPUT | Reserved for packets created locally, i.e., before network routing occurs |
POSTROUTING | Allows the modification of outgoing packets— Packets leaving the OUTPUT chain |
Ստորև բերված դիագրամը ցույց է տալիս այս գործընթացի բարձր մակարդակի ակնարկը:
Օգտագործեք ստորև նշված հրամանը՝ ձեր NAT Routing աղյուսակները դիտելու համար:
3: The Mangle սեղաններ
Mangle աղյուսակը հիմնականում օգտագործվում է փաթեթների հատուկ փոփոխության համար: Պարզ ասած, այն օգտագործվում է ցանցային փաթեթի IP վերնագրերը փոփոխելու համար: Փաթեթների փոփոխությունը կարող է ներառել փաթեթի TTL արժեքի փոփոխություն, փաթեթի համար ցանցի վավերական հոփերի փոփոխություն և այլն:
Աղյուսակը պարունակում է հետևյալ լռելյայն շղթաները.
- POSTROUTING
Օգտագործվում է ելքային փաթեթների համար
- INPUT
Օգտագործվում է անմիջապես սերվեր մուտք գործող փաթեթների համար
- OUTPUT
Օգտագործվում է տեղական փաթեթների համար
- Forward
Վերապահված է համակարգի միջոցով ուղղորդված փաթեթների համար
4. Հում աղյուսակներ
Չմշակված աղյուսակի հիմնական նպատակն է կարգավորել բացառությունները փաթեթների համար, որոնք նախատեսված չեն հետևելու համակարգի կողմից: Չմշակված աղյուսակը փաթեթների վրա սահմանում է NOTRACK նշան, ինչը հուշում է, որ conntrack ֆունկցիան անտեսի փաթեթը:
Conntrack-ը Linux միջուկի ցանցային հատկություն է, որը թույլ է տալիս Linux միջուկին հետևել բոլոր ցանցային կապերին՝ հնարավորություն տալով միջուկին նույնականացնել ցանցային հոսքը կազմող փաթեթները:
Հում սեղանն ունի երկու հիմնական շղթա.
Chain | Description |
---|---|
PREROUTING | Reserved for packets received by network interfaces |
OUTPUT | Reserved for packets initiated by local processes |
5. Անվտանգության աղյուսակ
Այս աղյուսակի հիմնական օգտագործումը Linux-ի համար (SELinux) անվտանգության ներքին անվտանգության մեխանիզմի կարգավորումն է, որը նշում է փաթեթների վրա: Անվտանգության նշանը կարող է կիրառվել յուրաքանչյուր կապի կամ փաթեթի համար:
Այն օգտագործվում է պարտադիր մուտքի վերահսկման կանոնների համար և երկրորդ աղյուսակն է, որը հասանելի է զտիչ աղյուսակից հետո: Այն առաջարկում է հետևյալ լռելյայն շղթաները.
Chain | Description |
---|---|
INPUT | Reserved for incoming packets to the system |
OUTPUT | Used for locally created packets |
FORWARD | Used for packets routed through the system |
Նայելով լռելյայն Iptables-ին, եկեք մի քայլ առաջ գնանք և քննարկենք, թե ինչպես աշխատել iptables կանոնների հետ:
Ինչպե՞ս աշխատել iptables-ի կանոնների հետ:
Iptables-ի կանոնները կիրառվում են աճման կարգով: Սա նշանակում է, որ կոնկրետ հավաքածուի առաջին կանոնը կիրառվում է առաջինը, որին հաջորդում է երկրորդը, ապա երրորդը և այսպես շարունակ՝ մինչև վերջինը:
Այս ֆունկցիայի պատճառով iptables-ը թույլ չի տալիս ձեզ կանոններ ավելացնել մի շարքում՝ օգտագործելով -A պարամետրը; Դուք պետք է օգտագործեք -I-ը, որին հաջորդում է թիվը կամ դատարկելով այն՝ ցանկի վերևում ավելացնելու համար:
Ցուցադրվում են Iptable-ները
Ձեր iptable-ները դիտելու համար օգտագործեք հրամանը iptables -L -v IPv4-ի համար և ip6tables -L -v IPv6-ի համար:
Կանոնների տեղադրում
Կանոնները հավաքածուում տեղադրելու համար դուք պետք է դրանք տեղադրեք ճշգրիտ հերթականությամբ՝ հարգելով նույն շղթայի կողմից օգտագործվող կանոնները: Դուք կարող եք դիտել ձեր iptables կանոնների ցանկը հրամանով, ինչպես քննարկվել է վերևում.
Օրինակ, TCP-ի միջոցով 9001 պորտին մուտքային կապերը թույլատրող կանոն մտցնելու համար մենք պետք է նշենք կանոնի համարը INPUT շղթայում, որը հետևում է համացանցի երթևեկության կանոններին:
Երբ դուք դիտեք ընթացիկ iptable-ները, դուք պետք է տեսնեք նոր կանոնը հավաքածուում:
Կանոնների փոխարինում
Փոխարինող ֆունկցիոնալությունն աշխատում է ներդիրի նման, սակայն այն օգտագործում է iptables -R հրամանը: Օրինակ՝ վերը նշված կանոնը փոփոխելու և 9001 նավահանգիստը մերժելու համար մենք՝
Կանոնների ջնջում
Կանոնը ջնջելու համար մենք անցնում ենք կանոնի համարը։ Օրինակ, վերը նշված կանոնը ջնջելու համար մենք կարող ենք նշել հետևյալը.
Linux-ի մեծ մասում iptable-ները դատարկ են ինչպես IPv4-ի, այնպես էլ IPv6-ի համար: Հետևաբար, եթե որևէ նոր կանոն չեք ավելացրել, կստանաք ստորև ներկայացվածի նման արդյունք: Դա ռիսկային է, քանի որ դա նշանակում է, որ համակարգը թույլ է տալիս բոլոր մուտքային, ելքային և ուղղորդված երթևեկությունը:
Եկեք անդրադառնանք, թե ինչպես կարգավորել iptable-ները.
Ինչպե՞ս կարգավորել iptables-ը:
Կան բազմաթիվ եղանակներ կարգավորելու iptables կանոնները: Այս բաժինը օգտագործում է օրինակներ՝ ցույց տալու համար, թե ինչպես սահմանել կանոններ՝ օգտագործելով IP հասցեները և նավահանգիստները:
Արգելափակում և թույլատրում է երթևեկությունը նավահանգիստներով
Դուք կարող եք օգտագործել հատուկ նավահանգիստ՝ ցանցային ինտերֆեյսի ամբողջ տրաֆիկը արգելափակելու կամ թույլատրելու համար: Դիտարկենք հետևյալ օրինակները.
Վերոհիշյալ հրամանները թույլ են տալիս երթեւեկությունը 1001 TCP նավահանգստի վրա wlan0 ինտերֆեյսի վրա:
Այս հրամանը կատարում է վերը նշված հրամանի հակառակը, քանի որ այն արգելափակում է 1001 նավահանգստի ամբողջ տրաֆիկը wlan0-ում:
Ահա հրամանի սերտ ստուգումը.
Առաջին արգումենտը (-A) աղյուսակի շղթայի վերջում ավելացնում է նոր կանոն:
INPUT արգումենտն ավելացնում է նշված կանոնը աղյուսակում:
DROP արգումենտը սահմանում է գործողությունը, որը պետք է կատարվի համապատասխանաբար որպես ACCEPT և DROP: Սա նշանակում է, որ երբ փաթեթը համընկնում է, այն ընկնում է:
-p-ը նշում է TCP-ի նման արձանագրությունը և թույլ է տալիս անցնել այլ արձանագրությունների տրաֆիկին:
–destination-port-ը սահմանում է 1001 նավահանգստի համար նախատեսված ողջ երթևեկությունն ընդունելու կամ թողնելու կանոն:
-i
-ը iptables-ին հրահանգում է կիրառել կանոնը wlan0 ինտերֆեյսի վրա եկող տրաֆիկի վրա:
ՆՇՈՒՄ. Iptable-ները չեն հասկանում ցանցային ինտերֆեյսի փոխանունները: Այսպիսով, մեկից ավելի Վիրտուալ ինտերֆեյս ունեցող համակարգում ձեզ հարկավոր է ձեռքով և հստակորեն սահմանել նպատակակետի հասցեն:
Օրինակ:
Սպիտակ ցուցակում և IP հասցեների սև ցուցակում
Դուք կարող եք ստեղծել firewall-ի կանոններ՝ օգտագործելով iptables: Օրինակներից մեկն այն է, որ ամբողջ տրաֆիկը դադարեցվի և ցանցային երթևեկությունը թույլատրվի միայն բացահայտ IP հասցեներից:
Օրինակ :
iptables -A INPUT -i lo -m comment --comment "Allow loopback connections" -j ACCEPT
iptables -A INPUT -p icmp -m comment --comment “Allow Ping to work as expected” -j
ԸՆԴՈՒՆԵԼ
iptables -A INPUT -s 192.168.0.0 -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
Առաջին տողը սահմանում է կանոն, որը թույլ է տալիս բոլոր աղբյուրի IP հասցեները 192.168.0.1/24 ենթացանցում: Կարող եք նաև օգտագործել CIDR կամ անհատական IP հասցեներ: Հետևյալ հրամանում մենք սահմանել ենք կանոն, որը թույլ է տալիս բոլոր տրաֆիկները միացված լինել գոյություն ունեցող կապերին: Վերջնական հրամաններում մենք սահմանել ենք քաղաքականություն INPUT-ի և FORWARD-ի համար՝ բոլորը հեռացնելու համար:
IPv6-ում iptables-ի օգտագործումը
Iptables հրամանն աշխատում է միայն IPv4-ի վրա: IPv6-ում iptables օգտագործելու համար դուք պետք է օգտագործեք ip6tables հրամանը: Ip6tables-ն օգտագործում է հում, զտիչ, անվտանգություն և խճճված աղյուսակներ: ip6tables-ի ընդհանուր շարահյուսությունը նման է iptables-ին, և այն նաև աջակցում է iptables-ի համապատասխան ընտրանքներ, ինչպիսիք են հավելվածը, ջնջումը և այլն:
Լրացուցիչ տեղեկությունների համար օգտագործեք ip6tables ձեռնարկի էջերը:
Ցանցային անվտանգության համար iptables կանոնների օրինակ
Համապատասխան firewall կանոնների ստեղծումը հիմնականում կախված կլինի համակարգի վրա աշխատող ծառայությունից և օգտագործվող նավահանգիստներից: Այնուամենայնիվ, ահա մի քանի հիմնական ցանցի կազմաձևման կանոններ, որոնք կարող եք օգտագործել ձեր համակարգը պաշտպանելու համար.
1. Թույլատրել Loopback ինտերֆեյսի երթևեկությունը և մերժել այլ ինտերֆեյսներից ստացվող բոլոր հանգույցները
iptables -A INPUT ! -i lo -s 127.0.0.0 -j REJECT (ip6tables also applicable)
2. Մերժել բոլոր ping հարցումները
3. Թույլատրել SSH կապերը
Սրանք հրամանների օրինակներ են, որոնք կարող եք օգտագործել ձեր համակարգը պաշտպանելու համար: Այնուամենայնիվ, կազմաձևումը մեծապես կախված կլինի նրանից, թե ինչ կամ ում եք ցանկանում մուտք գործել տարբեր ծառայություններ:
ԶԳՈՒՇԱՑՈՒՄ. Եթե նախընտրում եք ամբողջությամբ անջատել IPv6-ը, համոզվեք, որ գիծը չմեկնաբանեք, քանի որ դա կդանդաղեցնի թարմացման գործընթացը.
Դա պայմանավորված է նրանով, որ APT փաթեթի կառավարիչը լուծում է հայելային տիրույթը IPv6-ում՝ apt-get թարմացման շնորհիվ:
Ինչպե՞ս տեղակայել iptables-ի կանոնները:
Ձեր iptable-ները Ubuntu-ում կամ Debian-ի վրա հիմնված այլ համակարգերում տեղակայելու համար սկսեք ստեղծել երկու ֆայլ՝ ip4 և ip6, իրենց համապատասխան IP հասցեների համար:
Ցանկացած ֆայլում ավելացրեք այն կանոնները, որոնք ցանկանում եք կիրառել իրենց համապատասխան ֆայլերում՝ IPv4 կանոնները ip4 ֆայլին և IPv6 կանոնները ip6 ֆայլին:
Հաջորդը, մենք պետք է ներմուծենք կանոնները՝ օգտագործելով հրամանը.
Այնուհետև կարող եք ստուգել, թե արդյոք կանոնները կիրառվել են՝ օգտագործելով հրամանը.
Արագ iptables-համառ ուղեցույց
Ubuntu-ն և Debian-ի վրա հիմնված ընդհանուր բաշխումները գալիս են iptables-ի կայուն փաթեթով, որը թույլ է տալիս հեշտությամբ կիրառել ձեր firewall-ի կանոնները վերագործարկման ժամանակ: Փաթեթը տրամադրում է ֆայլեր, որոնք կարող եք օգտագործել IPv4-ի կամ IPv6-ի համար կանոններ սահմանելու համար և կարող են կիրառվել ավտոմատ կերպով բեռնման ժամանակ:
Կարող եք նաև օգտագործել firewall-ի կանոնները՝ օգտագործելով UFW կամ GUFW: Մտածեք հետևյալ ձեռնարկը՝ սովորելու, թե ինչպես օգտագործել UFW:
Ինչպե՞ս տեղադրել iptables-persistent-ը:
Համոզվեք, որ ձեր համակարգում տեղադրված է iptables-persistent: Օգտագործեք dpkg՝ ստուգելու համար, թե արդյոք ունեք տեղադրված փաթեթը:
Եթե ոչ, օգտագործեք հետևյալ հրամանը.
Ձեզ երկու անգամ կառաջարկվի պահպանել ինչպես ձեր ընթացիկ IPv4, այնպես էլ IPv6 կանոնները: Սեղմեք Այո՝ երկու կանոնները պահպանելու համար:
Սեղմեք այո՝ IPv6-ը պահպանելու համար:
Տեղադրումն ավարտվելուց հետո ստուգեք, որ դուք ունեք iptables ենթագրատուն, ինչպես ցույց է տրված ստորև նկարում:
Եզրակացություն
Այս ձեռնարկում մենք անդրադարձել ենք iptables-ի հիմունքներին: Սկսած iptables-ի, հիմնական հրամանների, լռելյայն iptables աղյուսակների և պարամետրերի հետ աշխատելուց:
Այն, ինչ սովորել եք, դուք պետք է ի վիճակի լինեք օգտագործել iptables՝ ստեղծելու firewall-ի կանոններ, որոնք կօգնեն պաշտպանել ձեր համակարգը: