Iptables i zmienne IP

Zombie
vps, zabezpieczenia
KrEdEnS
KrEdEnS Moderator Freebies

Cześć, mam domenę na noip, która wskazuje na moje zmienne ip. Jest ona podana w regułach iptables (inaczej bym się nie zalogował na vps). Tylko jest jeden problem, gdy mój adres się zmienia iptables nie nie zmienia go automatycznie (domena zamienia automatycznie adres na który wskazuje). I tu pojawia się pytanie jak zrobić, żeby w iptables również moje ip się aktualizowało. Oto skrypt, którym włączam firewalla:

#!/bin/bash
PS3='Please enter your choice: '
options=("Wlaczenie skryptu" "Wylaczenie skryptu" "Informacje o autorze" "Wyjscie")
select opt in "${options[@]}"
do
    case $opt in
        "Wlaczenie skryptu")
            echo -e "\E[32m ============= \033[0m"
            echo -e "\E[32m Włączenie skryptu. \033[0m"
            echo -e "\E[32m ============= \033[0m"
           
            #Tutaj czyścimy stare reguły w iptables
           
            iptables -F
            iptables -X
            iptables -t nat -F
            iptables -t nat -X
            iptables -t mangle -F
            iptables -t mangle -X
           
            echo "Drop na wszytkich portach"
           
            #Tutaj blokujemy wszytkie porty
           
            iptables -P INPUT DROP
            iptables -P FORWARD DROP
            iptables -P OUTPUT ACCEPT
           
            iptables -A INPUT -i lo -j ACCEPT
            iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
			
			echo "Włączenie ochrony Fail2Ban"
			
			#Tutaj dodajemy reguły dla aplikacji fail2ban
			
		iptables -N f2b-sshd
		iptables -A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
		iptables -A f2b-sshd -j RETURN
           
            echo "Porty Teamspeak"
           
            #Tutaj odblokowywujemy porty niezbędne do poprawnego działania naszego serwera ts
           
            iptables -A INPUT -p udp -m udp --dport 9987 -j ACCEPT
            iptables -A INPUT -p tcp -m tcp --dport 30033 -j ACCEPT
            iptables -A INPUT -p tcp -m tcp --dport 41144 -j ACCEPT
            iptables -A INPUT -p udp -m udp --dport 2010:2110 -j ACCEPT
            iptables -A INPUT -p tcp -m tcp --dport 2008 -j ACCEPT
           
            echo "Porty WWW"
           
            #Tutaj odblokowywujemy porty niezbędne do poprawnego działania serwera www
           
            iptables -A INPUT -p udp -m udp --dport 80 -j ACCEPT
            iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
	       iptables -A INPUT -p udp -m udp --dport 443 -j ACCEPT
	       iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
           
            echo "Porty NaszeIP"
           
            #Tutaj odblokowywujemy porty dla nas samych abysmy mogli zarządzać serwerem :)
           
            iptables -I INPUT -p tcp --dport 1:65535 -s _ipvpn_ -j ACCEPT
	       iptables -I INPUT -p udp --dport 1:65535 -s _ipvpn_ -j ACCEPT
            iptables -I INPUT -p udp --dport 1:65535 -s _mojadomena.ddns.net_ -j ACCEPT
            iptables -I INPUT -p tcp --dport 1:65535 -s _mojadomena.ddns.net_ -j ACCEPT
            iptables -I INPUT -p tcp --dport 1:65535 -s 127.0.0.1 -j ACCEPT
            iptables -I INPUT -p udp --dport 1:65535 -s 127.0.0.1 -j ACCEPT
 
            echo "Limitowanie"
           
            #Tutaj blokujemy pakiety TCP z niepoprawnymi flagami
           
            iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
            iptables -A INPUT -p tcp -m tcp --tcp-flags PSH,ACK PSH -j DROP
            iptables -A INPUT -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP
            iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP
            iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
            iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
            iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
            iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
            iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
            iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,PSH,URG -j DROP
            iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j DROP
           
            echo "Blokada flood"
           
            #Tutaj blokujemy atak typu DoS
           
            iptables -N syn-flood
            iptables -A INPUT -p tcp --syn -j syn-flood
            iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
            iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j LOG --log-level debug --log-prefix "SYN-FLOOD: "
            iptables -A syn-flood -j DROP
            iptables -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
            iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
           
           
            iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
           
            echo -e "\E[32m ============= \033[0m"
            echo -e "\E[32m Blokowanie zakonczone. \033[0m"
            echo -e "\E[32m ============= \033[0m"
            ;;
        "Wylaczenie skryptu")
            iptables -F
            iptables -X
            iptables -I INPUT -p tcp --dport 1:65535 -j ACCEPT
            iptables -I INPUT -p udp --dport 1:65535 -j ACCEPT
            echo "Skrypt zostal wylaczony"
            ;;
        "Informacje o autorze")
            echo -e "\E[36m Proty skrypt do ip tables pod serwer teamspeak \033[0m"
            echo -e "\E[36m Specjalnie dla LVLUP.PRO \033[0m"
            ;;
        "Wyjscie")
            break
            ;;
        *) echo zla opcja;;
    esac
done
SystemZ
SystemZ Admin lvlup.pro

Są przynajmniej dwa rozwiązania jeśli chcesz whitelistować ruch w iptables

Niezmienne IP

Tu możesz zastosować stały adres od operatora lub VPN.

Osobiście mogę polecić darmowy p2p VPN bez takich problemów jak z scentralizowanym i topornym OpenVPN: https://www.zerotier.com/

Dynamiczna aktualizacja adresu IP w iptables

Sam potrzebowałem czegoś podobnego i stworzyłem całkiem prosty skrypt oparty o IPset

https://gitlab.com/snippets/1790809

Jest w stanie surowym więc sugeruję po prostu wziąć z niego co potrzebujesz lub sprawdzić każdą linię przed odpaleniem.

system
system

Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.