Модифициран и преведен от от мен файл за защитна стена.
Ползван източник:
https://wiki.archlinux.org/index.php/Simple_stateful_firewallINPUT по подразбиране DROP:
*filter
# Политиката по подразбиране за веригата INPUT e DROP, за да се предотврати
# нежелан трафик поради някакъв пропуск в правилата. Премахване на целия трафик
# и определяне на това което е разрешено.
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
# Допълнителни потребителски вериги.
:TCP - [0:0]
:UDP - [0:0]
# Ако е необходим лог се активира.
# :LOGNDROP - [0:0]
# :LOGNREJECTUDP - [0:0]
# :LOGNREJECTTCP - [0:0]
# :LOGNREJECT - [0:0]
# Гарантираме, че приемаме само тези пакети, които искаме.
# Първото правило добавено във веригата INPUT, ще позволи само трафик, който
# принадлежи на установени съединения, или нов действителен трафик, свързан
# с тези съединения, такива като ICMP грешки или ехо отговори (пакети, които
# хоста връща при PING). Някои ICMP съобщения са много важни и помагат да се
# управляват претоварванията и MTU, те се приемат с това правило.
# Състоянието на връзката ESTABLISHED предполага, че при настройването на
# правилото или друго правило преди това е разрешило първоначалния опит за
# свързване (--ctstate NEW) или връзката вече е била активна
# (например активна отдалечена SSH връзка)
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# Ако има проблем с работата по dhcp (renewal time) да се активира:
# -A INPUT -p udp -m udp --sport 68 --dport 67 -j ACCEPT
# ------------------------------------------------------------------------------
# Забележка: DHCP заявките се изпращат от порт 68 на сървъра към порт 67
# на локалната машина. Понеже за изходящия трафик всичко е разрешено, обратното
# правило не е необходимо.
# ------------------------------------------------------------------------------
# Второто правило ще приеме целия трафик от интерфейса "loopback" (lo),
# който е необходим за много приложения и услуги.
# ------------------------------------------------------------------------------
# Забележка: Можете да добавите повече доверени интерфейси тук като "eth1",
# ако не искате / ще има нужда от трафик филтриран от защитната стена, но знайте,
# че ако имате NAT настройка, която пренасочва всякакъв вид трафик към този
# интерфейс от която и да е друга мрежа (да речем рутер), трафикът ще премине
# независимо от каквито и да било други настройки, които имате.
# ------------------------------------------------------------------------------
-A INPUT -i lo -j ACCEPT
# Третото правило ще забрани целия трафик за състояние маркирано като "INVALID"
# Трафика може да бъде маркиран в четири "състояния" категории: NEW,
# ESTABLISHED, RELATED или INVALID. Състоянията се проследяват с помощта на
# "nf_conntrack_ *" модули на ядрото, които се зареждат автоматично от него.
# ------------------------------------------------------------------------------
# Забележка: Това правило ще DROP всички пакети с невалидни заглавки или
# контролни суми, невалидни TCP флагове, невалидни съобщения ICMP
# (като port unreachable, когато ние не изпрати нищо към хоста), а също така и
# пакетите с последователност, която може да бъде предизвикана от прогнозни
# последователности или други подобни атаки.
# В "DROP" целта ще drop пакет без никакъв отговор, въпреки
# REJECT, което учтиво отказва пакета. Ние използваме DROP, защото няма правило
# за правилен "REJECT" отговор на пакети, които се считат за невалидни, а ние
# не искаме да признаем, че сме получили тези пакети.
# ICMPv6 Neighbor Discovery пакети остават непроследени и винаги ще бъдат
# класифицирани "INVALID" и ако те не са повредени или други подобни. Имайте
# това предвид, и ги приемайте преди това правило!
# -А INPUT -р 41 -j ACCEPT
# ------------------------------------------------------------------------------
-A INPUT -m conntrack --ctstate INVALID -j DROP
# Следващото правило ще приеме всички нови входящи ехо искания ICMP, известни
# още като пинг. Само първият пакет ще се смята за NEW, а останалите ще бъдат
# обработени от RELATED,ESTABLISHED правилото. Тъй като компютърът не е рутер,
# няма друг ICMP трафик със състояние NEW, който трябва да се допуска.
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
# Прикачваме новосъздадените вериги TCP и UDP към веригата на INPUT, за да се
# обработят всички нови входящи връзки. След като връзката е приета TCP или UDP
# верига, тя се обработва от RELATED/ESTABLISHED правилото за трафик.
# TCP и UDP веригите или ще приемат нови входящи връзки, или учтиво ще ги
# отхвърлят. Нови TCP връзки трябва да бъдат започнати със SYN пакети.
# ------------------------------------------------------------------------------
# Забележка: NEW но не SYN е единственият невалиден TCP флаг който не е
# обхванат от INVALID състояниеto. Причината за това е, защото те са рядко
# злонамерени пакети, и те не трябва просто да бъдат премахвани. Вместо това,
# просто не ги приемаме, като ги отхвърляме с TCP RESET от следващото правило.
# ------------------------------------------------------------------------------
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
# Отхвърляме TCP връзки с TCP RESET пакети и UDP потоци с ICMP port unreachable
# съобщения, ако портовете не се отворени. Това имитира подразбиране Linux
# (RFC съвместимo) поведение и позволява на подателя бързо да прекъснете връзката
# и да почисти.
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
# За други протоколи, ние добавяме окончателно правило към веригата INPUT да
# отхвърли всичкия останал входящ трафик с icmp protocol unreachable съобщения.
# Това имитира поведението по подразбиране на Linux.
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
# ------------------------------------------------------------------------------
# Отваряне на необходимите портове за входящи съединения.
# ------------------------------------------------------------------------------
# To allow remote SSH connections (on port 22):
# -A TCP -p tcp --dport 22 -j ACCEPT
# Transmission
-A TCP -p tcp --dport 51413 -j ACCEPT
-A UDP -p udp --dport 51413 -j ACCEPT
# За приемане на входящи TCP съединения на порт 80 за web server:
# -A TCP -p tcp --dport 80 -j ACCEPT
# За приемане на входящи TCP съединения на порт 443 за web server (HTTPS):
# -A TCP -p tcp --dport 443 -j ACCEPT
# За приемане на входящи UDP потоци на порт 53 за DNS server:
# -A UDP -p udp --dport 53 -j ACCEPT
# ------------------------------------------------------------------------------
# Правила за лог
# ------------------------------------------------------------------------------
# 1. Лог за всички пакети, които не са маркирани в съществуващи правила.
# Намираме правило "-A INPUT -j REJECT --reject-with icmp-proto-unreachable" и
# заменяме ""с -A INPUT -j LOGNREJECT или -A INPUT -j LOGNDROP
# 2. Прехвърляне на конкретни правила към веригата за лог "-j LOGNREJECTUDP".
# Пример: Намираме правило "-j REJECT --reject-with icmp-port-unreachable" и
# заменяме с "-j LOGNREJECTUDP" или съответно директно за DROP с -j LOGNDROP
# Задаване на лимит за логнатите пакети и съобщение за тях,
# както и метод за обработка. Аналогично и за друга лог верига.
# -A LOGNDROP -p tcp -m limit --limit 5/min -j LOG --log-prefix "Denied TCP: " --log-level 7
# -A LOGNDROP -p udp -m limit --limit 5/min -j LOG --log-prefix "Denied UDP: " --log-level 7
# -A LOGNDROP -p icmp -m limit --limit 5/min -j LOG --log-prefix "Denied ICMP: " --log-level 7
# Правила за веригите за лога: LOGNDROP / LOGNREJECT
# -A LOGNDROP -j DROP
# -A LOGNREJECTUDP -j REJECT --reject-with icmp-port-unreachable
# -A LOGNREJECTTCP -j REJECT --reject-with tcp-reset
# -A LOGNREJECT -j REJECT --reject-with icmp-proto-unreachable
COMMIT
# ------------------------------------------------------------------------------
# ПРЕПОРЪКИ
# ------------------------------------------------------------------------------
# "Скриване" на компютъра ви
# За настолна машина, може би е добре да блокирате някои входящи заявки.
# Блокиране на ping request
# Да се активира в sysctl
# net.ipv4.icmp_echo_ignore_all = 1