Iptables nie zapisuje reguł + Autostart mono + ABot

vps
ts3
abot
iptables
Tagi: #<Tag:0x00007f14a7868220> #<Tag:0x00007f14a7868068> #<Tag:0x00007f14a786ff48> #<Tag:0x00007f14a786fde0>

#1

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.


#2

Domyślnie reguły są usuwane wraz z ponownym uruchomieniem się systemu.


#3

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?


#4

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


#5

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

To samo :frowning:


#6

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

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

#7

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


#8

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


#9

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

#!/bin/bash


#10

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?


#11

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


#12

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ę.


#13

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


#14

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 :wink: )


takie pytanko sed co konkretnie robi tu ( zmienia )?


a jeszcze przy

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

Crontab @reboot debian 9 nie działa
#15

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. :joy:


#16

bez tego sed wyskakuje mi

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


#17

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.


#18

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 :wink:


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 :wink:


#19

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]


#20

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