KrEdEnS | 2018-12-17 20:08:23 UTC | #1
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 | 2018-12-17 19:09:42 UTC | #2
Są przynajmniej dwa rozwiązania jeśli chcesz whitelistować ruch w iptables
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/
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 | 2019-01-18 19:06:18 UTC | #3
Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.