Firewall nftables параметрлері (firewall.toml)

Әдепкі бойынша Firewall параметрлері осында:

/etc/kor-elf-shield/firewall.toml

Бұл параметрлердің жолын негізгі параметрлерде өзгертуге болады және мұнда танысуға болады (параметр firewall).

Толыққанды көшірмесі параметрлер файлы осында.

Бұл файлда бірнеше бөлімдер бар:


Порт параметрлері

Бұл параметрлер файлдың басында "Параметрлер IPv4", "Параметрлер IPv6", "Жалпы параметрлер", "әдепкі әрекет саясаты", "метадеректерді атау"бөлімдеріне дейін болуы керек.

Параметр [[ports]]
Мағынасы Порт параметрлері тобын көрсетіңіз
Әдепкі бойынша  
Сипаттама Бұл порт параметрлері тобы. [[ports]] топтардың шексіз санын көрсетуге болады.

[[ports]]
numbers - Порт нөмірлері (міндетті өріс)
directions - Кіріс (in), шығыс трафик (out) (міндетті өріс)
protocols - Хаттама: tcp, udp (міндетті өріс)
action - Әрекет:accept, drop немесе reject (міндетті өріс)
limit_rate - Қажет болса, шектеулерді көрсетіңіз (міндетті өріс емес)

numbers - бір немесе бірнеше портты көрсетуге болады, бірақ ережелер әр порт үшін бөлек жасалады.
directions - егер біз көрсетсек in out, онда әр ереже өз тізбегінде бөлек жасалады.
protocols - егер көрсетілсе tcp және udpәрбір ереже әрбір хаттама үшін бөлек жасалады.

action:
accept - рұқсат етіңіз
drop  - үнсіз блоктау
reject  - кері байланысты бұғаттау

limit_rate - оны құжаттамаға сәйкес орнатыңыз nftables(limit rate).
Мысалдар
[[ports]]
numbers = [22]
directions = ["in", "out"]
protocols = ["tcp"]
action = "accept"

[[ports]]
numbers = [80,443]
directions = ["in", "out"]
protocols = ["tcp"]
action = "accept"

[[ports]]
numbers = [53]
directions = ["in", "out"]
protocols = ["tcp", "udp"]
action = "accept"
Тағы бір мысал:
[[ports]]
numbers = [22]
directions = ["in", "out"]
protocols = ["tcp"]
action = "accept"
Тағы бір мысал:
[[ports]]
numbers = [22]
directions = ["in"]
protocols = ["tcp"]
action = "drop"

[[ports]]
numbers = [22]
directions = ["out"]
protocols = ["tcp"]
action = "accept"

[[ports]]
numbers = [80,443]
directions = ["in", "out"]
protocols = ["tcp"]
action = "accept"
limit_rate = "10/second"
***
Параметр [[ips]]
Мағынасы IP мекенжай параметрлері тобын көрсетіңіз
Әдепкі бойынша  
Сипаттама

IP Рұқсат етілетін немесе тыйым салынатын мекен-жайларды көрсетіңіз. [[ips]] топтардың шексіз санын көрсетуге болады.

[[ips]]
ips - IP мекенжайларының тізімі (міндетті өріс)
directions - Кіріс (in), шығыс трафик (out) (міндетті өріс)
action -
Әрекет: accept, drop немесе reject (міндетті өріс)
ports - Порт нөмірлері (міндетті өріс емес)
protocols - Хаттама: tcp, udp (міндетті өріс емес)
limit_rate - Қажет болса, шектеулерді көрсетіңіз (міндетті өріс емес)

ips - бір немесе бірнеше IP мекенжайларын көрсетуге болады, бірақ ережелер әр мекен-жай үшін бөлек жасалады.
ports - бір немесе бірнеше портты көрсетуге болады, бірақ ережелер әр порт үшін бөлек жасалады.
directions - егер біз көрсетсек in out, онда әр ереже өз тізбегінде бөлек жасалады.
protocols - егер көрсетілсе tcp және udpәрбір ереже әрбір хаттама үшін бөлек жасалады.

Назар аударыңыз:
protocols Егер көрсетілмесе, бірақ көрсетілсе ports, онда ережелер хаттамамен бірге қосылады TCP. protocols бірге жұмыс істейді ports protocols , егер ол көрсетілсе ports және көрсетілмесе, онда осы өрістерді есепке алмай ереже қосылады.

action:
accept - рұқсат етіңіз
drop - үнсіз блоктау
reject - кері байланысты бұғаттау

limit_rate - оны құжаттамаға сәйкес орнатыңыз nftables (limit rate).

Мысалдар
[[ips]]
ips = ["192.168.1.1", "fe80::260:8ff:fe52:f9d8"]
action = "accept"
directions = ["in", "out"]
protocols = ["tcp", "udp"]
ports = ["80"]
limit_rate = "10/second"

[[ips]]
ips = ["192.168.1.2"]
action = "drop"
directions = ["in"]
Тағы бір мысал:
[[ips]]
ips = ["192.168.1.2"]
action = "drop"
directions = ["in"]

Параметрлер IPv4

Алдымен осы бөлімнің параметрлерін көрсету [ip4]керек, содан кейін осы бөлімнің қалған параметрлерін көрсету керек. Мысал:

[ip4]
icmp_in = true
icmp_in_rate = "1/second"
icmp_out = true
Параметр icmp_in
Мағынасы true немесе false
Әдепкі бойынша true
Сипаттама Рұқсат беру кіріс PING. Өшіру PING сыртқы бақылауды бұзуы мүмкін.
true  - қамтиды
false - өшіреді
Мысалдар
icmp_in = true
icmp_in = false
***
Параметр icmp_in_rate
Мағынасы Секундына бір уақытта пакеттер санына шектеулер қойыңыз
Әдепкі бойынша 1/second
Сипаттама Секундына бір уақытта кіретін пакеттер санына шектеулер қойыңыз. Егер көрсетілген кезеңдегі пакеттер санынан асып кетсе, қалған пакеттер жойылады. Егер сіз қажетсіз шығындарды байқасаңыз, мәнді арттырыңыз немесе өшіріңіз.

Жылдамдық шегін өшіру үшін "0" мәнін орнатыңыз, әйтпесе оны құжаттамаға сәйкес nftables орнатыңыз(limit rate). Мысалы, «1/second»берілісті секундына бір пакетпен шектейді.
Мысалдар
icmp_in_rate = "1/second"
icmp_in_rate = "0"
icmp_in_rate = "3/second"
***
Параметр icmp_out
Мағынасы true немесе false
Әдепкі бойынша true
Сипаттама Рұқсат беру шығыс PING. Егер ерекше себептер болмаса, оны өшірмеу жақсы, әйтпесе ОЖ жұмысын бұзуы мүмкін.
true - қамтиды
false - өшіреді
Мысалдар
icmp_out = true
icmp_out = false
***
Параметр icmp_out_rate
Мағынасы Секундына бір мезгілде пакеттер санына шектеулер қойыңыз.
Әдепкі бойынша 0
Сипаттама Секундына бір уақытта шығатын пакеттер санына шектеулер қойыңыз. Егер көрсетілген кезеңдегі пакеттер санынан асып кетсе, қалған пакеттер жойылады. Егер ерекше себептер болмаса, онда шектеулерді қоспаған дұрыс, әйтпесе ОЖ жұмысын бұзуы мүмкін.

Жылдамдық шегін өшіру үшін "0" мәнін орнатыңыз, әйтпесе оны құжаттамаға сәйкес nftables орнатыңыз(limit rate). Мысалы, «1/second»берілісті секундына бір пакетпен шектейді.
Мысалдар
icmp_out_rate = "1/second"
icmp_out_rate = "0"
icmp_out_rate = "3/second"
***
Параметр icmp_timestamp_drop
Мағынасы true немесе false
Әдепкі бойынша false
Сипаттама Блоктау ICMP timestamp-сұраулар. Шындығында, нақты қауіп жоқ, бірақ кейде ат аудиторлары сұраныстарды бұғаттауды талап ICMP timestampетеді.
true  - қамтиды
false - өшіреді
Мысалдар
icmp_timestamp_drop = true
icmp_timestamp_drop = false

Параметрлер IP6

Алдымен осы бөлімнің параметрлерін көрсету [ip6]керек, содан кейін осы бөлімнің қалған параметрлерін көрсету керек. Мысал:

[ip6]
enable = true
icmp_strict = false
Параметр enable
Мағынасы true немесе false
Әдепкі бойынша false
Сипаттама Қолдауды қамтиды IPv6. Егер IPv6 өшірулі болса, онда байланысты барлық параметрлер IPv6 еленбейді.
true  - қамтиды
false - өшіреді
Мысалдар
enable = true
enable = false
***
Параметр icmp_strict
Мағынасы true немесе false
Әдепкі бойынша false
Сипаттама IPv6 пакеттерді белсенді қолданады ICMPV6, сондықтан қатаң режим әдепкі ICMPV6 бойынша өшіріледі. Алайда, бұл шабуылдардың қаупін арттыруы мүмкін ICMPV6. Қатаң режимді қосуға болады, бірақ бұл қосылымдардың кейбір түрлеріне қатысты мәселелер тудыруы мүмкін.
true  - қамтиды
false - өшіреді
Мысалдар
icmp_strict = true
icmp_strict = false

Жалпы параметрлер

Алдымен осы бөлімнің параметрлерін көрсету [options]керек, содан кейін осы бөлімнің қалған параметрлерін көрсету керек. Мысал:

[options]
cache = true
clear_mode = "global"
saves_rules = false
saves_rules_path = "/etc/nftables.conf"
dns_strict = false
dns_strict_ns = false
packet_filter = true
Параметрcache
Мағынасыtrue немесе false
Әдепкі бойыншаtrue
СипаттамаУақытша файлға пәрмендерді үнемі құрастырмау үшін кэштеуді қамтиды nftables . Кэш файлы параметрлерді өзгерткеннен немесе бағдарлама нұсқасын жаңартқаннан кейін өзгереді.
true  - қамтиды
false - өшіреді
Мысалдар
cache = true
cache = false
Параметрclear_mode
Мағынасыglobal немесе own
Әдепкі бойыншаglobal
Сипаттама

Брандмауэрді тазалау режимін ауыстыру nftables. Егер көрсетілсе "own", ережелерде жанжал туындауы мүмкін. Қауіпсіздік мәселесін тудыруы мүмкін. Көрсетіңіз "own" егер сіз өз әрекеттеріңізге сенімді болсаңыз.

global - барлық ережелерді толығымен тазартады
own - параметрде көрсетілген кестеден ережелерді ғана тазартады table_name

Мысалдар
clear_mode = global
clear_mode = own
Параметрsaves_rules
Мағынасыtrue немесе false
Әдепкі бойыншаfalse
СипаттамаДемон ережелерді жүйелік файлға сақтай ма nftables? Nftables жолы сіздің ОЖ-ге сәйкес келетінін тексеруді ұмытпаңыз. Егер сіз ережелерді жүйелік файлға nftablesсақтамасаңыз, онда бағдарлама қайта іске қосылғаннан кейін nftables (мысалы, жаңартудан кейін) барлық ережелер жойылады. Дегенмен, біз әдепкі бойынша жүйелік файлға ережелерді автоматты түрде сақтауды өшіруді шештік nftables, себебі алдымен saves_rules_path параметр дұрыс файлды көрсететініне көз жеткізуіміз керек.
true  - қамтиды
false - өшіреді
Мысалдар
saves_rules = true
saves_rules = false
Параметрsaves_rules_path
МағынасыФайл жолын көрсетіңіз
Әдепкі бойынша/etc/nftables.conf
СипаттамаЕрежелер сақталатын жол. nftables ОЖ-ге сәйкес келетін жолды көрсетіңіз. Жол абсолютті болуы керек. Салыстырмалы жол қатені тудырады! Соңында міндетті түрде көрсетілуі керек .conf.
Мысалдар
saves_rules_path = "/etc/nftables.conf"
Параметрdns_strict
Мағынасыtrue немесе false
Әдепкі бойыншаfalse
Сипаттама nftables Трафиктің қатаң ережелерін қамтиды DNS. Егер сіз осы режимді қоссаңыз, онда кейбір ережелер DNSnftables-ке қосылмайды. Бұл қауіпсіздікті жақсартады және жергілікті серверді теріс пайдаланудың алдын DNSалады. Бірақ байланысты проблемалар тудыруы мүмкін. DNS
true  - қамтиды
false - өшіреді
Мысалдар
dns_strict = true
dns_strict = false
Параметрdns_strict_ns
Мағынасыtrue немесе false
Әдепкі бойыншаfalse
СипаттамаҚатаң ережелерді қамтиды DNSnftables дейін-трафик. IP Егер сіз осы режимді қоссаңыз, онда /etc/resolv.conf53-порттың мекен-жайларына (кіріс және шығыс) рұқсат беретін ережелер қосылмайды. DNS
true  - қамтиды
false - өшіреді
Мысалдар
dns_strict_ns = true
dns_strict_ns = false
Параметрpacket_filter
Мағынасыtrue немесе false
Әдепкі бойыншаtrue
Сипаттама nftables Сүзуге тәртіпті бұзатын пакеттерді қосады. Өшіру ұсынылмайды!
true  - қамтиды
false - өшіреді
Мысалдар
packet_filter = true
packet_filter = false

Әдепкі әрекет саясаты

Алдымен осы бөлімнің параметрлерін көрсету [policy]керек, содан кейін осы бөлімнің қалған параметрлерін көрсету керек. Мысал:

[policy]
default_allow_input = false
default_allow_output = false
default_allow_forward = false
Параметрdefault_allow_input
Мағынасыtrue немесе false
Әдепкі бойыншаfalse
СипаттамаКіріс трафигіне әдепкі бойынша рұқсат етіңіз.
true  - қамтиды
false - өшіреді
Мысалдар
default_allow_input = true
default_allow_input = false
Параметрdefault_allow_output
Мағынасыtrue немесе false
Әдепкі бойыншаfalse
СипаттамаӘдепкі шығыс трафикке рұқсат етіңіз.
true  - қамтиды
false - өшіреді
Мысалдар
default_allow_output = true
default_allow_output = false
Параметрdefault_allow_forward
Мағынасыtrue немесе false
Әдепкі бойыншаfalse
Сипаттама forward трафик Әдепкі бойынша рұқсат етіңіз.
true  - қамтиды
false - өшіреді
Мысалдар
default_allow_forward = true
default_allow_forward = false
Параметрinput_drop
Мағынасыdrop немесе reject
Әдепкі бойыншаdrop
СипаттамаКіріс трафикті қалай блоктауға болады.
drop  - үнсіз блоктау
reject - кері байланысты бұғаттау
Мысалдар
input_drop = "drop"
input_drop = "reject"
Параметрinput_priority
Мағынасы-50-ден 50-ге дейін 
Әдепкі бойынша-10
Сипаттама chain Үшін басымдық input.
Мысалдар
input_priority = -10
input_priority = 0
Параметрoutput_drop
Мағынасыdrop немесе reject
Әдепкі бойыншаreject
СипаттамаШығыс трафикті қалай блоктауға болады.
drop  - үнсіз блоктау
reject - кері байланысты бұғаттау
Мысалдар
output_drop = "drop"
output_drop = "reject"
Параметрoutput_priority
Мағынасы-50-ден 50-ге дейін 
Әдепкі бойынша-10
Сипаттама chain Үшін басымдық output.
Мысалдар
output_priority = -10
output_priority = 0
Параметрforward_drop
Мағынасыdrop немесе reject
Әдепкі бойыншаdrop
СипаттамаТрафикті қалай блоктауға forwardболады.
drop  - үнсіз блоктау
reject - кері байланысты бұғаттау
Мысалдар
forward_drop = "drop"
forward_drop = "reject"
Параметрforward_priority
Мағынасы-50-ден 50-ге дейін 
Әдепкі бойынша-10
Сипаттама chain Үшін басымдық forward.
Мысалдар
forward_priority = -10
forward_priority = 0

Port knocking

Егер сізге портты ашу қажет болса, белгілі бір порттарды түрткеннен кейін ғана. Алдымен осы бөлімнің параметрлерін көрсету [[portKnocking]]керек, содан кейін осы бөлімнің қалған параметрлерін көрсету керек.

Параметр [[portKnocking]]
Мағынасы Параметрлер тобын көрсетіңізPort knocking
Әдепкі бойынша  
Сипаттама

Бұл параметрлер тобы Port knocking. [[portKnocking]] топтардың шексіз санын көрсетуге болады.

[[portKnocking]]
name -
Атау бірегей болуы керек және таңбаларға рұқсат етіледі: a-z, A-Z, -, _
port - Барлық соққылардан кейін ашылатын порт нөмірі
protocol - Хаттама: tcp, udp
ip_version - Нұсқа IP: ip4, ip6
[[portKnocking.knock]]
- қағу
port - Қағу порты
protocol - Қағу ХАТТАМАСЫ: tcp, udp
timeout
- Соғу жұмыс істейтін секундтардағы уақыт
action - Қағу кезінде қандай жауап беру керек: accept, return, drop немесе reject

Мысалдар
[[portKnocking]]
name = "ssh"
port = 22
protocol = "tcp"
ip_version = "ip4"
[[portKnocking.knock]]
port = 2222
protocol = "tcp"
timeout = 30
action = "drop"
[[portKnocking.knock]]
port = 2225
protocol = "tcp"
timeout = 30
action = "drop"

[[portKnocking]]
name = "ftp"
port = 21
protocol = "tcp"
ip_version = "ip4"
[[portKnocking.knock]]
port = 2121
protocol = "tcp"
timeout = 30
action = "drop"
Тағы бір мысал:
[[portKnocking]]
name = "ssh"
port = 22
protocol = "tcp"
ip_version = "ip4"
[[portKnocking.knock]]
port = 2222
protocol = "tcp"
timeout = 10
action = "drop"
Тағы бір мысал:
[[portKnocking]]
name = "ssh"
port = 22
protocol = "tcp"
ip_version = "ip4"
[[portKnocking.knock]]
port = 2222
protocol = "tcp"
timeout = 30
action = "drop"
[[portKnocking.knock]]
port = 2225
protocol = "tcp"
timeout = 30
action = "drop"

[[portKnocking]]
name = "ftp"
port = 21
protocol = "tcp"
ip_version = "ip4"
[[portKnocking.knock]]
port = 2121
protocol = "tcp"
timeout = 30
action = "drop"
[[portKnocking.knock]]
port = 2122
protocol = "tcp"
timeout = 30
action = "drop"
[[portKnocking.knock]]
port = 2221
protocol = "tcp"
timeout = 30
action = "drop"

Метадеректерді атау

Алдымен осы бөлімнің параметрлерін көрсету [metadataNaming]керек, содан кейін осы бөлімнің қалған параметрлерін көрсету керек. Мысал:

[metadataNaming]
table_name = "shield"
chain_input_name = "input"
chain_output_name = "output"
chain_forward_name = "forward"
Параметр table_name
Мағынасы 1 таңбадан 32 таңбаға дейін
Рұқсат етілген таңбалар: a-zA-Z0-9_-
Әдепкі бойынша shield
Сипаттама Кесте атауы в. nftables
Мысалдар
table_name = "shield"
***
Параметр chain_input_name
Мағынасы 1 таңбадан 32 таңбаға дейін
Рұқсат етілген таңбалар: a-zA-Z0-9_-
Әдепкі бойынша input
Сипаттама Кіріс трафиктің тізбек атауы.
Мысалдар
chain_input_name = "input"
***
Параметр chain_output_name
Мағынасы 1 таңбадан 32 таңбаға дейін
Рұқсат етілген таңбалар: a-zA-Z0-9_-
Әдепкі бойынша output
Сипаттама Шығыс трафиктің тізбек атауы.
Мысалдар
chain_output_name = "output"
***
Параметр chain_forward_name
Мағынасы 1 таңбадан 32 таңбаға дейін
Рұқсат етілген таңбалар: a-zA-Z0-9_-
Әдепкі бойынша forward
Сипаттама forward Трафик тізбегінің атауы.
Мысалдар
chain_forward_name = "forward"

Брандмауэр ережелерін тексеру және қалпына келтіру

Бұл опциялар 0.13.0 нұсқасында қосылды. Алдымен осы бөлімнің параметрлерін көрсету [rulesGuard]керек, содан кейін осы бөлімнің қалған параметрлерін көрсету керек. Мысал:

[rulesGuard]
enabled = true
notifications = true
recovery = true
interval = 3600
Параметр enabled
Мағынасы true немесе false
Әдепкі бойынша true
Сипаттама Ережелерді бақылауды қамтиды NFTables.
true  - қамтиды
false - өшіреді
Мысалдар
enabled = true
enabled = false
***
Параметр notifications
Мағынасы true немесе false
Әдепкі бойынша true
Сипаттама Ережелермен проблемалар туындаған жағдайда хабарламаларды қамтиды NFTables.
true  - қамтиды
false - өшіреді
Мысалдар
notifications = true
notifications = false
***
Параметр recovery
Мағынасы true немесе false
Әдепкі бойынша true
Сипаттама Егер nftables ережелерінде мәселе туындаса, ережелер параметрлерін қайта іске қосу керек пе NFTables.
true  - қамтиды
false - өшіреді
Мысалдар
recovery = true
recovery = false
***
Параметр interval
Мағынасы 60-тан бастап
Әдепкі бойынша 3600
Сипаттама Ережелердің бар-жоғына тексерілетін секундтардағы аралықты көрсетіңіз NFTables.
Мысалдар
interval = 3600
interval = 600