Iptables nie zapisuje reguł + Autostart mono + ABot

Flyspeak | 2019-01-11 12:35:54 UTC | #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.


Nieznajomy11 | 2019-01-11 13:24:40 UTC | #2

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


Flyspeak | 2019-01-11 13:14:02 UTC | #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 abot1 php core.php -i1
screen -AdmS abot
2 php core.php -i2
screen -AdmS abot3 php core.php -i3
screen -AdmS abot
4 php core.php -i4
screen -AdmS abot5 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 | 2019-01-11 13:49:04 UTC | #4

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


Flyspeak | 2019-01-11 13:54:49 UTC | #5

!/bin/sh

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

To samo :frowning:


Nieznajomy11 | 2019-01-11 14:00:09 UTC | #6

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

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

Flyspeak | 2019-01-11 14:14:30 UTC | #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


Flyspeak | 2019-01-11 14:17:43 UTC | #8

Próbuje tez tak ale dalej to samo.

!/bin/sh

screen -AdmS abot1 php /usr/local/home/root/ABot2/core.php -i1
screen -AdmS abot
2 php /usr/local/home/root/ABot2/core.php -i2
screen -AdmS abot3 php /usr/local/home/root/ABot2/core.php -i3
screen -AdmS abot
4 php /usr/local/home/root/ABot2/core.php -i4
screen -AdmS abot5 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 | 2019-01-11 14:21:57 UTC | #9

[quote=”Flyspeak, post:8, topic:9682”]

!/bin/sh

[/quote]

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

#!/bin/bash


Flyspeak | 2019-01-11 14:39:11 UTC | #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 abot1 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 | 2019-01-11 14:38:11 UTC | #11

flyspeak.sh

!/bin/bash

cd /usr/local/home/root/ABot2
screen -AdmS abot1 php core.php -i1
screen -AdmS abot
2 php core.php -i2
screen -AdmS abot3 php core.php -i3
screen -AdmS abot
4 php core.php -i4
screen -AdmS abot5 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 | 2019-01-11 15:54:45 UTC | #12

UDAŁO SIĘ!!!

flyspeak.sh

!/bin/bash

cd /usr/local/home/root/ABot2
screen -AdmS abot1 php core.php -i1
screen -AdmS abot
2 php core.php -i2
screen -AdmS abot3 php core.php -i3
screen -AdmS abot
4 php core.php -i4
screen -AdmS abot5 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 | 2019-01-12 10:10:43 UTC | #13

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


LinGruby | 2019-01-12 10:24:34 UTC | #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 ;-) )


takie pytanko sed co konkretnie robi tu ( zmienia )?


a jeszcze przy

[quote=”Flyspeak, post:12, topic:9682”]

!/bin/bash

cd /usr/local/home/root/ABot2
screen -AdmS abot1 php core.php -i1
screen -AdmS abot
2 php core.php -i2
screen -AdmS abot3 php core.php -i3
screen -AdmS abot
4 php core.php -i4
screen -AdmS abot5 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
[/quote]

zrobił bym tak

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/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 | 2019-01-12 10:24:04 UTC | #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:


Flyspeak | 2019-01-12 10:36:05 UTC | #16

bez tego sed wyskakuje mi

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


Flyspeak | 2019-01-12 11:01:42 UTC | #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.


LinGruby | 2019-01-12 14:04:53 UTC | #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

1
2
3
4
5
6
#!/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 | 2019-01-12 13:45:52 UTC | #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]


Flyspeak | 2019-01-12 14:04:41 UTC | #20

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


system | 2019-02-13 14:04:42 UTC | #21

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