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 - Хаттама: tcpudp
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"