Iptables nie zapisuje reguł + Autostart mono + ABot

Zombie
vps, ts3, iptables, abot
Flyspeak
Flyspeak

Witam. Mam parę problemów z moim VPS a że nie jestem alfa i omegą postanowiłem się Was poradzić. Pierwszym podstawowym problemem jest to że po restarcie VPS moje Iptables jest puste i mam wszystkie porty otwarte. Wczoraj miałem 20% packet loos na całym Ts3 [DDOS]. Normalnie w konsole wklejam cały skrypt:

#!/bin/bash
 
# czyścimy wszystko
iptables -F
iptables -X
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter
 
if [ \"$1\" = \"stop\" ]
then
	iptables -P INPUT ACCEPT
	iptables -P FORWARD ACCEPT
	iptables -P OUTPUT ACCEPT
	exit
fi
 
# ustalamy domyślną politykę dla filtrów
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
 
# pełny ruch na interfejsie lo (potrzebne do działania wielu lokalnych usług)
iptables -A INPUT -i lo -j ACCEPT
 
# odrzucamy ident
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with icmp-port-unreachable
 
# ochrona przed atakami
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j LOG --log-prefix \"Ping: \"
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # Ping of death
 
# iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT --reject-with icmp-host-unreachable
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH ACK -j LOG --log-prefix \"ACK scan: \"
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH ACK -j DROP # Metoda ACK (nmap -sA)
 
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN -j LOG --log-prefix \"FIN scan: \"
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN -j DROP # Skanowanie FIN (nmap -sF)
 
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH PSH -j LOG --log-prefix \"Xmas scan: \"
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN,URG,PSH -j DROP # Metoda Xmas Tree (nmap -sX)
 
iptables -A INPUT -m conntrack --ctstate INVALID -p tcp ! --tcp-flags SYN,RST,ACK,FIN,PSH,URG SYN,RST,ACK,FIN,PSH,URG -j LOG --log-prefix \"Null scan: \"
iptables -A INPUT -m conntrack --ctstate INVALID -p tcp ! --tcp-flags SYN,RST,ACK,FIN,PSH,URG SYN,RST,ACK,FIN,PSH,URG -j DROP # Skanowanie Null (nmap -sN)
 
# Łańcuch syn-flood (obrona przed 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-prefix \"SYN-flood: \"
iptables -A syn-flood -j DROP
 
# pozwalamy na wszystkie istniejące już połączenia oraz połączenia które są powiązane z >istniejącymi  już połączeniami
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# Teamspeak 3
iptables -A INPUT -m state --state NEW -p udp --dport 9987 -j ACCEPT
# Server Query
iptables -A INPUT -m state --state NEW -p tcp --dport 10011 -j ACCEPT
# FTP
iptables -A INPUT -m state --state NEW -p tcp --dport 30033 -j ACCEPT
# TSDNS
iptables -A INPUT -m state --state NEW -p tcp --dport 41144 -j ACCEPT
# Teamspeak 3 Licencja
iptables -A INPUT -m state --state NEW -p tcp --dport 2008 -j ACCEPT
 
# PORTY PONIŻEJ 1024: ssh, http, https
iptables -A INPUT -m state --state NEW -m multiport -p tcp --dports 22 -j ACCEPT

Jak zrobić aby ten skrypt uruchamiał się ze startem systemu? Lub aby te reguły się nie usuwały. Drugą sprawą jest TS3AudioBot. Normalnie muszę uruchomić screen i "mono TS3 AudioBot.exe". Czy jest możliwość zrobienia autostartu do tego bota? No i ABot. ABot startuje normalnie z root ./run start . Jest to sporym utrudnieniem dla mnie bo dostęp do maszyny mam tylko ja, jak wywali serwer lub zrobię restart to muszę boty włączać ręcznie. Dużym ułatwieniem było by zautomatyzowanie tego procesu.

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Domyślnie reguły są usuwane wraz z ponownym uruchomieniem się systemu. https://lvlup.rok.ovh/t/automatyczne-przywracanie-iptables-po-restarcie-serwera/9683

Flyspeak
Flyspeak

Dzięki użyje iptables-persistent. Co do Autostartu TS3AudioBot i ABota może zrobic to przez plik w /etc/init.d/

#!/bin/sh cd /usr/local/home/root/ABot2 screen -AdmS abot_1 php core.php -i1 screen -AdmS abot_2 php core.php -i2 screen -AdmS abot_3 php core.php -i3 screen -AdmS abot_4 php core.php -i4 screen -AdmS abot_5 php core.php -i5 screen -AdmS abot_6 php core.php -i6 sleep 10 cd /usr/local/home/root/bot screen -S root -d -m mono TS3AudioBot.exe

Potem

chmod 755 skypt.sh

Jak myślicie?

Flyspeak
Flyspeak

./skrypt.sh -bash: ./skrypt.sh: /bin/sh^M: bad interpreter: No such file or directory

Flyspeak
Flyspeak

#!/bin/sh cd /usr/local/home/root/bot su screen -S root -d -m mono TS3AudioBot.exe

To samo 😦

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Musisz zapisać plik w poprawnym formacie, z linuksowymi zakończeniami linii.

sed 's/^V^M/\^V^J/g' < plik_zrodlowy > plik_wyjsciowy
Flyspeak
Flyspeak

root@vps1495:/usr/local/home/root# sed 's/^V^M/^V^J/g' < flyspeak > flyspeak.sh root@vps1495:/usr/local/home/root# chmod 755 flyspeak.sh root@vps1495:/usr/local/home/root# ./flyspeak.sh
-bash: ./flyspeak.sh: /bin/sh^M: bad interpreter: No such file or directory

Flyspeak
Flyspeak

Próbuje tez tak ale dalej to samo.

#!/bin/sh screen -AdmS abot_1 php /usr/local/home/root/ABot2/core.php -i1 screen -AdmS abot_2 php /usr/local/home/root/ABot2/core.php -i2 screen -AdmS abot_3 php /usr/local/home/root/ABot2/core.php -i3 screen -AdmS abot_4 php /usr/local/home/root/ABot2/core.php -i4 screen -AdmS abot_5 php /usr/local/home/root/ABot2/core.php -i5 screen -AdmS abot_6 php /usr/local/home/root/ABot2/core.php -i6 sleep 10 screen -S root -d -m mono /usr/local/home/root/bot/TS3AudioBot.exe

Aylin
Aylin ex-admin forum.lvlup.pro

Flyspeak:

#!/bin/sh

A nie powinno to wyglądać tak? :thinking:

#!/bin/bash

Flyspeak
Flyspeak

Nic to nie dało. Może zacznijmy od początku.

Komenda

screen -AdmS abot_1 php core.php -i1

Odpala prawidłowo instancje gdy jestem w katalogu ABot2

root@vps1495:/usr/local/home/root/ABot2# screen -AdmS abot_1 php core.php -i1 root@vps1495:/usr/local/home/root/ABot2# screen -ls There is a screen on: 1814.abot_1 (01/11/2019 02:27:25 PM) (Detached) 1 Socket in /var/run/screen/S-root.

Następnie testuje TS3AudioBot

root@vps1495:/usr/local/home/root/ABot2# cd /usr/local/home/root/bot root@vps1495:/usr/local/home/root/bot# screen -S bot -d -m mono TS3AudioBot.exe root@vps1495:/usr/local/home/root/bot# screen -ls There are screens on: 1824.bot (01/11/2019 02:30:13 PM) (Detached) 1814.abot_1 (01/11/2019 02:27:24 PM) (Detached)

Komendy działają prawidłowo więc gdzie jest problem?

Flyspeak
Flyspeak

flyspeak.sh

#!/bin/bash cd /usr/local/home/root/ABot2 screen -AdmS abot_1 php core.php -i1 screen -AdmS abot_2 php core.php -i2 screen -AdmS abot_3 php core.php -i3 screen -AdmS abot_4 php core.php -i4 screen -AdmS abot_5 php core.php -i5 screen -AdmS abot_6 php core.php -i6 sleep 10 cd /usr/local/home/root/bot screen -S bot -d -m mono TS3AudioBot.exe

TEST

./flyspeak.sh -bash: ./flyspeak.sh: /bin/bash^M: bad interpreter: No such file or directory

Flyspeak
Flyspeak

UDAŁO SIĘ!!!

flyspeak.sh

#!/bin/bash cd /usr/local/home/root/ABot2 screen -AdmS abot_1 php core.php -i1 screen -AdmS abot_2 php core.php -i2 screen -AdmS abot_3 php core.php -i3 screen -AdmS abot_4 php core.php -i4 screen -AdmS abot_5 php core.php -i5 screen -AdmS abot_6 php core.php -i6 sleep 10 cd /usr/local/home/root/bot screen -S root -d -m mono TS3AudioBot.exe

Potem

sed -i -e 's/\r$//' flyspeak.sh

I gra muzyka. Skrypt przerzuciłem do

/etc/init.d chmod +x /flyspeak.sh sed -i -e 's/\r$//' flyspeak.sh

Jeszcze nie wiem czy zadziała po restarcie bo ludzi nie chce wkur... tymi restartami. Napisze jak sprawdzę.

Flyspeak
Flyspeak

Niestety nie startuje ten skrypt. Jest w init.d . Jakies pomysły?

LinGruby
LinGruby Pionier

dodaj do /etc/rc.local

sh -c '/home/miejsce/gdzie/skrypt/flyspeak.sh &'

przed exit 0

i zobacz ( ja tak mam start serwera TS i nie tylko ;-) )


takie pytanko sed co konkretnie robi tu ( zmienia )?


a jeszcze przy

Flyspeak:

#!/bin/bash cd /usr/local/home/root/ABot2 screen -AdmS abot_1 php core.php -i1 screen -AdmS abot_2 php core.php -i2 screen -AdmS abot_3 php core.php -i3 screen -AdmS abot_4 php core.php -i4 screen -AdmS abot_5 php core.php -i5 screen -AdmS abot_6 php core.php -i6 sleep 10 cd /usr/local/home/root/bot screen -S root -d -m mono TS3AudioBot.exe

zrobił bym tak

#!/bin/bash
cd /usr/local/home/root/ABot2 &
screen -AdmS abot_1 php core.php -i1  &
screen -AdmS abot_2 php core.php -i2  & 
screen -AdmS abot_3 php core.php -i3  &
screen -AdmS abot_4 php core.php -i4  &
screen -AdmS abot_5 php core.php -i5  &
screen -AdmS abot_6 php core.php -i6  &
sleep 10  &
cd /usr/local/home/root/bot  &
screen -S root -d -m mono TS3AudioBot.exe
Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Mnie się wydaje, że on to dał tutaj tak na zapas jaky jeszcze raz zepsuł sobie line-break w skrypcie. Też na początku mnie to zdziwiło, ale już sobie darowałem komentowanie. 😂

Flyspeak
Flyspeak

bez tego sed wyskakuje mi

./flyspeak.sh -bash: ./flyspeak.sh: /bin/bash^M: bad interpreter: No such file or directory

Flyspeak
Flyspeak

Zrobiłem jak @LinGruby próbuje odpalic

root@vps1495:~# /etc/init.d/rc.local start [ ok ] Starting rc.local (via systemctl): rc.local.service.

Nic się nie dzieje.

LinGruby
LinGruby Pionier

tego się tak nie odpala, to samo startuje przy starcie serwera itp.

a jak chciałeś sprawdzić czy zadziała to się robi:

sh -c '/home/miejsce/gdzie/skrypt/flyspeak.sh'

jak nie widać coś nie tak z tym skryptem?


ja mam coś takiego u siebie w skryptach startowych ( gdzie wszystkie skrypty mam w /usr/local/bin/ i mam coś takiego ( to przykład ) ifconfig.sh

#!/bin/sh
/sbin/ifconfig eth0 txqueuelen 20000 &
/sbin/ifconfig lo txqueuelen 20000 &
/sbin/ifconfig as0t1 txqueuelen 20000 &
/sbin/ifconfig as0t0 txqueuelen 20000 &
echo 128000 > /proc/sys/vm/min_free_kbytes

i ścieżkę w rc.local

sh -c '/usr/local/bin/ifconfig.sh &'

startuje bez problemów ;-)


za dużo tłumaczenia ale czemu taka ścieżka:

/usr/local/home/root/ABot2 nie prościej by było /usr/local/ABot2 tak się zastanawiam?

nie znam ABot2 ale dziwna ścieżka ;-)

Flyspeak
Flyspeak

Przeniosłem sobie to wszystko do root Testuje:

root@vps1495:~# sh -c '/root/flyspeak.sh'

Wszystko ładnie startuje. Zaraz sprawdzę przy restarcie.

rc.local

#!/bin/bash sh -c '/root/flyspeak.sh &' exit 0

ABot2 [Bot ABot na serwer Ts3 wersja 2.0]

Flyspeak
Flyspeak

No i gitara. Wszystko się odpaliło. Dziękuję wszystkim za pomoc i cierpliwość :)

system
system

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