it:server:firewall-routovani

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
it:server:firewall-routovani [2022/11/19 17:30] Petr Nosekit:server:firewall-routovani [2025/02/05 15:58] (aktuální) Petr Nosek
Řádek 191: Řádek 191:
 </code> </code>
  
-Obsah souboru **ip-blacklist**:+Obsah souboru **ip-blacklist**. Je vidět, že některé věci mám pro nefunkčnost zakomentované. Soubor má nastavena práva na spouštění. Skript stáhne z internetu z různých blocklistů problematické IP adresy a zkoncentruje je do jednoho souboru.
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
Řádek 199: Řádek 199:
  
 IP_TMP=/tmp/ip.tmp IP_TMP=/tmp/ip.tmp
-IP_BLACKLIST=/etc/scripts/ip-blacklist/ip-blacklist.conf+IP_BLACKLIST=/root/scripts/ip-blacklist/ip-blacklist.conf
 IP_BLACKLIST_TMP=/tmp/ip-blacklist.tmp IP_BLACKLIST_TMP=/tmp/ip-blacklist.tmp
-IP_BLACKLIST_CUSTOM=/etc/scripts/ip-blacklist/ip-blacklist-custom.conf # optional +IP_BLACKLIST_CUSTOM=/root/scripts/ip-blacklist/ip-blacklist-custom.conf # optional 
-LISTS_FOLDER=/etc/scripts/ip-blacklist/lists+LISTS_FOLDER=/root/scripts/ip-blacklist/lists
  
 #list="chinese nigerian russian lacnic exploited-servers"  #list="chinese nigerian russian lacnic exploited-servers" 
Řádek 242: Řádek 242:
 wc -l $IP_BLACKLIST wc -l $IP_BLACKLIST
 </code> </code>
 +
 +Zároveň jsem vytvořil soubor **ip-blacklist_custom.conf** do kterého uvádím IP adresy, které chci trvale blokovat. Ještě je potřeba vytvořit skript **ipset_blacklist**:
 +
 +<code bash>
 +#!/bin/bash
 +
 +IP_BLACKLIST=/root/scripts/ip-blacklist/ip-blacklist.conf
 +
 +IPSET=/usr/sbin/ipset
 +
 +$IPSET list blacklist
 +
 +if [ $? -ne 0 ]
 +        then $IPSET create blacklist hash:net
 +fi
 +
 +$IPSET flush blacklist
 +egrep -v "^#|^$" $IP_BLACKLIST | while IFS= read -r ip
 +do
 +  $IPSET add blacklist $ip
 +done
 +
 +</code>
 +
 +Poslední co zbývá je zajistit, aby se oba skripty spouštěli alespoň 1x týdně. K tomu vytvořím skript **/etc/cron.weekly/blacklistip-update**. Zároveň musí být skript spustitelný - spuštěním je dobré ho také otestovat. Zároveň stahování blacklistu z internetu chci spouštět jako neprivilegovaný uživatel. Zbytek musí spouštět root.
 +
 +<code bash>
 +#!/bin/bash
 +
 +SCRIPT_FOLDER=/etc/scripts/ip-blacklist
 +
 +cd $SCRIPT_FOLDER
 +
 +su - neprivilegovany_user -c "$SCRIPT_FOLDER/ip-blacklist" 2>&1 >/dev/null && ./ipset-blacklist  2>&1 >/dev/null
 +
 +</code>
 +
 +
 +===== Blokování vybrané komunikace =====
 +
 +Chtěl jsem zablokovat část komunikace, která přichází z vnitřní sítě do internetu. Trochu jsem si naběhnul, protože tam se musí pracovat s blokování forwardowané komunikace. 
 +
 +Editoval jsem soubor **/etc/ufw/before.rules** a přidal tato pravidla:
 +
 +<code>
 +# Blocking forwarded communication
 +-A ufw-before-forward -s 192.168.1.80 -p tcp --dport 8080 -j LOG --log-prefix "[BLOCKED] "
 +-A ufw-before-forward -s 192.168.1.80 -p tcp -j LOG --log-prefix "[BLOCKED] "
 +-A ufw-before-forward -s 192.168.1.80 -p udp -j LOG --log-prefix "[BLOCKED] "
 +-A ufw-before-forward -s 192.168.1.80 -p tcp --dport 8080 -j DROP
 +-A ufw-before-forward -s 192.168.1.80 -p tcp -j DROP
 +-A ufw-before-forward -s 192.168.1.80 -p udp -j DROP
 +</code>
 +
 +Nejprve jsem zkoušel blokovat konkrétní port a nakonec jsem zablokoval všechno. Samozřejmě je možné si vybrat - nemusí se to kombinovat.
 +
 +Pokud je nějaké spojení již navázané, tak reload firewallu nemusí hned pomoct. Proto jsem ukončil navázaná připojení na dané IP adrese:
 +
 +<code bash>
 +conntrack -D -s 192.168.1.80
 +</code>
 +
  • it/server/firewall-routovani.1668879053.txt.gz
  • Poslední úprava: 2022/11/19 17:30
  • autor: Petr Nosek