Sie sind nicht angemeldet.

Micha

Fortgeschrittener

  • »Micha« ist der Autor dieses Themas

Beiträge: 378

Beruf: Management

Rootserver vorhanden: Ja

  • Nachricht senden

1

Samstag, 10. August 2013, 13:24

Gutes Iptables Script für Gameserver, TS3 und SSH!

Hallo Leute,

ich möchte mein Iptables Script etwas überarbeiten, da ich bis vor kurzem eigentlich keine wirklichen Regeln definiert habe und der Server dennoch fast zwei Jahre ohne Probleme lief hat jetzt wohl ein Scrippt Kiddy meinen server für sich entdeckt und ist scheinbar neidisch das wir so gut besuchte Server haben. Deshalb alleine in den letzten beiden Tagen vermehrt Angriffe auf meinen Server gefahren werden.

Generiert habe ich das Script mit dem Generator von Tobias Bauer, soweit ja bereits ganz OK, allerdings fehlt dort die Möglichkeit auch Sourceserver freizugeben, deshalb habe ich diese Stellen mal nachträglich eingebaut. Mein Dedicated dient lediglich als Hostserver für 12x Sourceserver und 1xTS3 Server und der SSH Zugang muss natürlich freigegeben sein, mehr soll allerdings nicht möglich sein.


Deshalb schaut Euch bitte mal dieses Script an und sagt mir ob Ihr da etwas verbessern oder ändern würdet, besonders die Regelen für die Gameserver und den TS3 Server mal anschauen, denn die hab ich aus einem Script von 2010 übernommen. Ich hoffe das passt soweit alles:
(Gameserver Ports von 28000 - 29100)

Spoiler Spoiler

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
#!/bin/sh
 
#####################################################
# IPTables Firewall-Skript                          #
#                                                   #
# erzeugt mit dem IPTables-Skript-Generator auf     #
#      tobias-bauer.de - Version 0.4                #
# URL: http://www.tobias-bauer.de/iptables.html     #
#                                                   #
# Autor: Tobias Bauer                               #
# E-Mail: exarkun@ist-root.org                      #
#                                                   #
# Das erzeugte Skript steht unter der GNU GPL!      #
#                                                   #
# ACHTUNG! Die Benutzung des Skriptes erfolgt auf   #
# eigene Gefahr! Ich übernehme keinerlei Haftung    #
# für Schäden die durch dieses Skript entstehen!    #
#                                                   #
#####################################################
 
# iptables suchen
iptables=`which iptables`
 
# wenn iptables nicht installiert abbrechen
test -f $iptables || exit 0
 
case "$1" in
   start)
      echo "Starte Firewall..."
      # alle Regeln löschen
      $iptables -t nat -F
      $iptables -t filter -F
      $iptables -X
 
      # neue Regeln erzeugen
      $iptables -N garbage
      $iptables -I garbage -p TCP -j LOG --log-prefix="DROP TCP-Packet: " --log-level err
      $iptables -I garbage -p UDP -j LOG --log-prefix="DROP UDP-Packet: " --log-level err
      $iptables -I garbage -p ICMP -j LOG --log-prefix="DROP ICMP-Packet: " --log-level err
 
      # Default Policy
      $iptables -P INPUT DROP
      $iptables -P OUTPUT DROP
      $iptables -P FORWARD DROP
 
      # über Loopback alles erlauben
      $iptables -I INPUT -i lo -j ACCEPT
      $iptables -I OUTPUT -o lo -j ACCEPT
 
      #####################################################
      # ausgehende Verbindungen
      # Port 22
      $iptables -I OUTPUT -o eth0 -p TCP --sport 1024:65535 --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p TCP --sport 22 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
 
      #####################################################
      # eingehende Verbindungen
      # Port 22
      $iptables -I INPUT -i eth0 -p TCP --sport 1024:65535 --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p TCP --sport 22 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

      #####################################################
      # HALF-LIFE
      # HL Shortpackeges Filtern fuer Gold Source Server DDos etc
      $iptables -A INPUT -p udp -m udp --dport 28000 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28000 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28000 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28000 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28000 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28100 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28100 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28100 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28100 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28100 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28200 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28200 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28200 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28200 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28200 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28300 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28300 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28300 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28300 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28300 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28400 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28400 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28400 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28400 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28400 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28500 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28500 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28500 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28500 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28500 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28600 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28600 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28600 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28600 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28600 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28700 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28700 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28700 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28700 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28700 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28800 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28800 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28800 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28800 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28800 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28900 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28900 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28900 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28900 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28900 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 29000 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29000 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29000 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29000 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29000 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 29100 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29100 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29100 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29100 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29100 -m length --length 105 -j DROP

      # VAC Friends Autopudate etc
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 6000:6003 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 7001:7002 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 27005 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 27010 -j ACCEPT

      # HALF-LIFE einzelne Server
      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28000 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28000 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28100 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28100 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28200 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28200 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28300 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28300 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28400 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28400 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28500 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28500 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28600 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28600 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28700 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28700 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28800 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28800 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28900 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28900 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 29000 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 29000 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 29100 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 29100 -j ACCEPT

      # HALF-LIFE RCON
      $iptables -A INPUT -p tcp -m tcp --dport 27015 -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 1 --hashlimit-mode srcip,dstip,dstport --hashlimit-name TF_PACKET_LIMIT -j ACCEPT

      #####################################################
      # Teamspeak3
      $iptables -A INPUT -p udp --dport 9987 -j ACCEPT
      $iptables -A OUTPUT -p udp --dport 9987 -j ACCEPT
      $iptables -A INPUT -p tcp --dport 30033 -j ACCEPT
      $iptables -A OUTPUT -p tcp --dport 30033 -j ACCEPT
      $iptables -A INPUT -p tcp --dport 10011 -j ACCEPT
      $iptables -A OUTPUT -p tcp --dport 10011 -j ACCEPT
      $iptables -A INPUT -p tcp --dport 2008 -j ACCEPT
      $iptables -A OUTPUT -p tcp --dport 2008 -j ACCEPT 
 
      #####################################################
      # Erweiterte Sicherheitsfunktionen
      # SynFlood
      $iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
      # PortScan
      $iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
      # Ping-of-Death
      $iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
 
      #####################################################
      # bestehende Verbindungen akzeptieren
      $iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      $iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
      #####################################################
      # Garbage übergeben wenn nicht erlaubt
      $iptables -A INPUT -m state --state NEW,INVALID -j garbage
 
      #####################################################
      # alles verbieten was bisher erlaubt war
      $iptables -A INPUT -j garbage
      $iptables -A OUTPUT -j garbage
      $iptables -A FORWARD -j garbage
      ;;
   stop)
      echo "Stoppe Firewall..."
      $iptables -t nat -F
      $iptables -t filter -F
      $iptables -X
      $iptables -P INPUT ACCEPT
      $iptables -P OUTPUT ACCEPT
      $iptables -P FORWARD ACCEPT
      ;;
   restart|reload|force-reload)
   $0 stop
   $0 start
      ;;
   *)
      echo "Usage: /etc/init.d/firewall (start|stop)"
      exit 1
      ;;
esac
exit 0


Änderung 14:09Uhr:
Das mit den HL2 Regeln scheint nicht mehr zu stimmen, wenn ich das Script starte kann ich anschließend nicht mehr auf die Gameserver, siehe:

Scheinbar wurde das etwas mit der SteamPipe verändert, jetzt muss ich erstmal suchen.

Änderung 14:16Uhr:
Ich hab noch einiges angepasst, auch was SteamCMD angeht, ich komme allerdings noch immer nicht auf den Gameserver.

Spoiler Spoiler

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
#!/bin/sh
 
#####################################################
# IPTables Firewall-Skript                          #
#                                                   #
# erzeugt mit dem IPTables-Skript-Generator auf     #
#      tobias-bauer.de - Version 0.4                #
# URL: http://www.tobias-bauer.de/iptables.html     #
#                                                   #
# Autor: Tobias Bauer                               #
# E-Mail: exarkun@ist-root.org                      #
#                                                   #
# Das erzeugte Skript steht unter der GNU GPL!      #
#                                                   #
# ACHTUNG! Die Benutzung des Skriptes erfolgt auf   #
# eigene Gefahr! Ich übernehme keinerlei Haftung    #
# für Schäden die durch dieses Skript entstehen!    #
#                                                   #
#####################################################
 
# iptables suchen
iptables=`which iptables`
 
# wenn iptables nicht installiert abbrechen
test -f $iptables || exit 0
 
case "$1" in
   start)
      echo "Starte Firewall..."
      # alle Regeln löschen
      $iptables -t nat -F
      $iptables -t filter -F
      $iptables -X
 
      # neue Regeln erzeugen
      $iptables -N garbage
      $iptables -I garbage -p TCP -j LOG --log-prefix="DROP TCP-Packet: " --log-level err
      $iptables -I garbage -p UDP -j LOG --log-prefix="DROP UDP-Packet: " --log-level err
      $iptables -I garbage -p ICMP -j LOG --log-prefix="DROP ICMP-Packet: " --log-level err
 
      # Default Policy
      $iptables -P INPUT DROP
      $iptables -P OUTPUT DROP
      $iptables -P FORWARD DROP
 
      # über Loopback alles erlauben
      $iptables -I INPUT -i lo -j ACCEPT
      $iptables -I OUTPUT -o lo -j ACCEPT
 
      #####################################################
      # ausgehende Verbindungen
      # Port 22
      $iptables -I OUTPUT -o eth0 -p TCP --sport 1024:65535 --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p TCP --sport 22 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
 
      #####################################################
      # eingehende Verbindungen
      # Port 22
      $iptables -I INPUT -i eth0 -p TCP --sport 1024:65535 --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p TCP --sport 22 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

      #####################################################
      # HALF-LIFE
      # HL Shortpackeges Filtern fuer Gold Source Server DDos etc
      $iptables -A INPUT -p udp -m udp --dport 28000 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28000 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28000 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28000 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28000 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28100 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28100 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28100 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28100 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28100 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28200 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28200 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28200 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28200 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28200 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28300 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28300 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28300 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28300 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28300 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28400 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28400 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28400 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28400 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28400 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28500 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28500 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28500 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28500 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28500 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28600 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28600 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28600 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28600 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28600 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28700 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28700 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28700 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28700 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28700 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28800 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28800 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28800 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28800 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28800 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 28900 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28900 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28900 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28900 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 28900 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 29000 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29000 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29000 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29000 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29000 -m length --length 105 -j DROP

      $iptables -A INPUT -p udp -m udp --dport 29100 -m length --length 0 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29100 -m length --length 28 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29100 -m length --length 39 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29100 -m length --length 48 -j DROP
      $iptables -A INPUT -p udp -m udp --dport 29100 -m length --length 105 -j DROP

      # VAC Friends Autopudate etc
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 6000:6003 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 7001:7002 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 27005 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 27010 -j ACCEPT

      # SteamCMD
      $iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65355 -j ACCEPT
      $iptables -A INPUT -p udp -m udp --sport 4380 --dport 1025:65355 -j ACCEPT

      # HALF-LIFE einzelne Server
      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28000 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28000 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28100 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28100 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28200 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28200 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28300 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28300 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28400 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28400 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28500 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28500 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28600 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28600 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28700 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28700 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28800 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28800 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 28900 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 28900 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 29000 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 29000 -j ACCEPT

      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 29100 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 29100 -j ACCEPT

      # HALF-LIFE RCON
      $iptables -A INPUT -p tcp -m tcp --dport 28000 -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 1 --hashlimit-mode srcip,dstip,dstport --hashlimit-name TF_PACKET_LIMIT -j ACCEPT
      $iptables -A INPUT -p tcp -m tcp --dport 28100 -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 1 --hashlimit-mode srcip,dstip,dstport --hashlimit-name TF_PACKET_LIMIT -j ACCEPT
      $iptables -A INPUT -p tcp -m tcp --dport 28200 -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 1 --hashlimit-mode srcip,dstip,dstport --hashlimit-name TF_PACKET_LIMIT -j ACCEPT
      $iptables -A INPUT -p tcp -m tcp --dport 28300 -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 1 --hashlimit-mode srcip,dstip,dstport --hashlimit-name TF_PACKET_LIMIT -j ACCEPT
      $iptables -A INPUT -p tcp -m tcp --dport 28400 -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 1 --hashlimit-mode srcip,dstip,dstport --hashlimit-name TF_PACKET_LIMIT -j ACCEPT
      $iptables -A INPUT -p tcp -m tcp --dport 28500 -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 1 --hashlimit-mode srcip,dstip,dstport --hashlimit-name TF_PACKET_LIMIT -j ACCEPT
      $iptables -A INPUT -p tcp -m tcp --dport 28600 -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 1 --hashlimit-mode srcip,dstip,dstport --hashlimit-name TF_PACKET_LIMIT -j ACCEPT
      $iptables -A INPUT -p tcp -m tcp --dport 28700 -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 1 --hashlimit-mode srcip,dstip,dstport --hashlimit-name TF_PACKET_LIMIT -j ACCEPT
      $iptables -A INPUT -p tcp -m tcp --dport 28800 -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 1 --hashlimit-mode srcip,dstip,dstport --hashlimit-name TF_PACKET_LIMIT -j ACCEPT
      $iptables -A INPUT -p tcp -m tcp --dport 28900 -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 1 --hashlimit-mode srcip,dstip,dstport --hashlimit-name TF_PACKET_LIMIT -j ACCEPT
      $iptables -A INPUT -p tcp -m tcp --dport 29000 -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 1 --hashlimit-mode srcip,dstip,dstport --hashlimit-name TF_PACKET_LIMIT -j ACCEPT
      $iptables -A INPUT -p tcp -m tcp --dport 29100 -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 1 --hashlimit-mode srcip,dstip,dstport --hashlimit-name TF_PACKET_LIMIT -j ACCEPT

      #####################################################
      # Teamspeak3
      $iptables -A INPUT -p udp --dport 9987 -j ACCEPT
      $iptables -A OUTPUT -p udp --dport 9987 -j ACCEPT
      $iptables -A INPUT -p tcp --dport 30033 -j ACCEPT
      $iptables -A OUTPUT -p tcp --dport 30033 -j ACCEPT
      $iptables -A INPUT -p tcp --dport 10011 -j ACCEPT
      $iptables -A OUTPUT -p tcp --dport 10011 -j ACCEPT
      $iptables -A INPUT -p tcp --dport 2008 -j ACCEPT
      $iptables -A OUTPUT -p tcp --dport 2008 -j ACCEPT 
 
      #####################################################
      # Erweiterte Sicherheitsfunktionen
      # SynFlood
      $iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
      # PortScan
      $iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
      # Ping-of-Death
      $iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
 
      #####################################################
      # bestehende Verbindungen akzeptieren
      $iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      $iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
      #####################################################
      # Garbage übergeben wenn nicht erlaubt
      $iptables -A INPUT -m state --state NEW,INVALID -j garbage
 
      #####################################################
      # alles verbieten was bisher erlaubt war
      $iptables -A INPUT -j garbage
      $iptables -A OUTPUT -j garbage
      $iptables -A FORWARD -j garbage
      ;;
   stop)
      echo "Stoppe Firewall..."
      $iptables -t nat -F
      $iptables -t filter -F
      $iptables -X
      $iptables -P INPUT ACCEPT
      $iptables -P OUTPUT ACCEPT
      $iptables -P FORWARD ACCEPT
      ;;
   restart|reload|force-reload)
   $0 stop
   $0 start
      ;;
   *)
      echo "Usage: /etc/init.d/firewall (start|stop)"
      exit 1
      ;;
esac
exit 0


Änderung 14:28Uhr:

Also es müsste doch so eigentlich funktionieren, habe alle Ports freigegeben die Steam benötigt, auch die Ports die hier aufgeführt sind. Ich komme dennoch nicht mehr auf den Gameserver, jemand eine Idee was falsch ist?

Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von »fluxX« (10. August 2013, 17:22) aus folgendem Grund: spoiler tags verwenden


Micha

Fortgeschrittener

  • »Micha« ist der Autor dieses Themas

Beiträge: 378

Beruf: Management

Rootserver vorhanden: Ja

  • Nachricht senden

2

Samstag, 10. August 2013, 15:11

Ich hab das Script noch etwas vereinfacht und herausgefunden das es hieran liegt das ich nicht auf die Server komme, diese Regeln waren von Ulrich Block, scheinen aber nicht mehr zu funktionieren:

Quellcode

1
2
3
4
5
      $iptables -A INPUT -i eth0 -p udp -m multiport -m udp --dports 28000,28100,28200,28300,28400,28500,28600,28700,28800,28900,29000,29100 -m length --length 0 -j DROP
      $iptables -A INPUT -i eth0 -p udp -m multiport -m udp --dports 28000,28100,28200,28300,28400,28500,28600,28700,28800,28900,29000,29100 -m length --length 28 -j DROP
      $iptables -A INPUT -i eth0 -p udp -m multiport -m udp --dports 28000,28100,28200,28300,28400,28500,28600,28700,28800,28900,29000,29100 -m length --length 39 -j DROP
      $iptables -A INPUT -i eth0 -p udp -m multiport -m udp --dports 28000,28100,28200,28300,28400,28500,28600,28700,28800,28900,29000,29100 -m length --length 48 -j DROP
      $iptables -A INPUT -i eth0 -p udp -m multiport -m udp --dports 28000,28100,28200,28300,28400,28500,28600,28700,28800,28900,29000,29100 -m length --length 105 -j DROP


Ich lasse die nun erstmal weg, vielleicht hat von Euch noch jemand eine Idee.

Hier nun das komplette Script, angepasst an meinen Server (12xGameserver, 1xTS3, SSH Zugang) mit Schutz vor SynFlood, PortScan und Ping-of-Death:

Spoiler Spoiler


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/bin/sh
 
#####################################################
# IPTables Firewall-Skript                          #
#                                                   #
# erzeugt mit dem IPTables-Skript-Generator auf     #
#      tobias-bauer.de - Version 0.4                #
# URL: http://www.tobias-bauer.de/iptables.html     #
#                                                   #
# Autor: Tobias Bauer                               #
# E-Mail: exarkun@ist-root.org                      #
#                                                   #
# Das erzeugte Skript steht unter der GNU GPL!      #
#                                                   #
# ACHTUNG! Die Benutzung des Skriptes erfolgt auf   #
# eigene Gefahr! Ich übernehme keinerlei Haftung    #
# für Schäden die durch dieses Skript entstehen!    #
#                                                   #
#####################################################
 
# iptables suchen
iptables=`which iptables`
 
# wenn iptables nicht installiert abbrechen
test -f $iptables || exit 0
 
case "$1" in
   start)
      echo "Starte Firewall..."
      # alle Regeln löschen
      $iptables -t nat -F
      $iptables -t filter -F
      $iptables -X
 
      # neue Regeln erzeugen
      $iptables -N garbage
      $iptables -I garbage -p TCP -j LOG --log-prefix="DROP TCP-Packet: " --log-level err
      $iptables -I garbage -p UDP -j LOG --log-prefix="DROP UDP-Packet: " --log-level err
      $iptables -I garbage -p ICMP -j LOG --log-prefix="DROP ICMP-Packet: " --log-level err
 
      # Default Policy
      $iptables -P INPUT DROP
      $iptables -P OUTPUT DROP
      $iptables -P FORWARD DROP
 
      # über Loopback alles erlauben
      $iptables -I INPUT -i lo -j ACCEPT
      $iptables -I OUTPUT -o lo -j ACCEPT
 
      #####################################################
      # ausgehende Verbindungen
      # Port 22
      $iptables -I OUTPUT -o eth0 -p TCP --sport 1024:65535 --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p TCP --sport 22 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
 
      #####################################################
      # eingehende Verbindungen
      # Port 22
      $iptables -I INPUT -i eth0 -p TCP --sport 1024:65535 --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p TCP --sport 22 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

      #####################################################
      # HALF-LIFE
      # HL Shortpackeges Filtern fuer Gold Source Server DDos etc
      #$iptables -A INPUT -i eth0 -p udp -m multiport -m udp --dports 28000,28100,28200,28300,28400,28500,28600,28700,28800,28900,29000,29100 -m length --length 0 -j DROP
      #$iptables -A INPUT -i eth0 -p udp -m multiport -m udp --dports 28000,28100,28200,28300,28400,28500,28600,28700,28800,28900,29000,29100 -m length --length 28 -j DROP
      #$iptables -A INPUT -i eth0 -p udp -m multiport -m udp --dports 28000,28100,28200,28300,28400,28500,28600,28700,28800,28900,29000,29100 -m length --length 39 -j DROP
      #$iptables -A INPUT -i eth0 -p udp -m multiport -m udp --dports 28000,28100,28200,28300,28400,28500,28600,28700,28800,28900,29000,29100 -m length --length 48 -j DROP
      #$iptables -A INPUT -i eth0 -p udp -m multiport -m udp --dports 28000,28100,28200,28300,28400,28500,28600,28700,28800,28900,29000,29100 -m length --length 105 -j DROP

      # VAC Friends Autopudate etc
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 6000:6003 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 7001:7002 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 27005 -j ACCEPT
      $iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 27010 -j ACCEPT

      # SteamCMD
      $iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65355 -j ACCEPT
      $iptables -A INPUT -p udp -m udp --sport 4380 --dport 1025:65355 -j ACCEPT

      # HALF-LIFE einzelne Server
      $iptables -A INPUT -i eth0 -m state --state NEW -p udp -m multiport --dports 28000,28100,28200,28300,28400,28500,28600,28700,28800,28900,29000,29100 -j ACCEPT
     
      # HALF-LIFE RCON
      $iptables -A INPUT -i eth0 -p tcp -m multiport -m tcp --dports 28000,28100,28200,28300,28400,28500,28600,28700,28800,28900,29000,29100 -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 1 --hashlimit-mode srcip,dstip,dstport --hashlimit-name TF_PACKET_LIMIT -j ACCEPT
     
      #####################################################
      # Teamspeak3
      $iptables -A INPUT -p udp --dport 9987 -j ACCEPT
      $iptables -A OUTPUT -p udp --dport 9987 -j ACCEPT
      $iptables -A INPUT -p tcp --dport 30033 -j ACCEPT
      $iptables -A OUTPUT -p tcp --dport 30033 -j ACCEPT
      $iptables -A INPUT -p tcp --dport 10011 -j ACCEPT
      $iptables -A OUTPUT -p tcp --dport 10011 -j ACCEPT
      $iptables -A INPUT -p tcp --dport 2008 -j ACCEPT
      $iptables -A OUTPUT -p tcp --dport 2008 -j ACCEPT 
 
      #####################################################
      # Erweiterte Sicherheitsfunktionen
      # SynFlood
      $iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
      # PortScan
      $iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
      # Ping-of-Death
      $iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
 
      #####################################################
      # bestehende Verbindungen akzeptieren
      $iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      $iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
      #####################################################
      # Garbage übergeben wenn nicht erlaubt
      $iptables -A INPUT -m state --state NEW,INVALID -j garbage
 
      #####################################################
      # alles verbieten was bisher erlaubt war
      $iptables -A INPUT -j garbage
      $iptables -A OUTPUT -j garbage
      $iptables -A FORWARD -j garbage
      ;;
   stop)
      echo "Stoppe Firewall..."
      $iptables -t nat -F
      $iptables -t filter -F
      $iptables -X
      $iptables -P INPUT ACCEPT
      $iptables -P OUTPUT ACCEPT
      $iptables -P FORWARD ACCEPT
      ;;
   restart|reload|force-reload)
   $0 stop
   $0 start
      ;;
   *)
      echo "Usage: /etc/init.d/firewall (start|stop)"
      exit 1
      ;;
esac
exit 0

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »fluxX« (10. August 2013, 17:22) aus folgendem Grund: spoiler tags verwenden


Lacrimosa99

Fortgeschrittener

Beiträge: 275

Wohnort: Leipzig

Beruf: IT-Systemintegrator

Rootserver vorhanden: Ja

  • Nachricht senden

3

Sonntag, 11. August 2013, 19:14

Wenn das Script vom Ulrich stammt... warum wird dann sein Text oben verändert?

Zum anderen... warum "-m multiport"?

Nimms raus und dann lass jedes Port als einzel Regel laufen ;)




4

Sonntag, 11. August 2013, 19:30

Es stammte von ein Generator:
https://www.tobias-bauer.de/iptables.html

Micha

Fortgeschrittener

  • »Micha« ist der Autor dieses Themas

Beiträge: 378

Beruf: Management

Rootserver vorhanden: Ja

  • Nachricht senden

5

Montag, 12. August 2013, 09:11

Wenn das Script vom Ulrich stammt... warum wird dann sein Text oben verändert?

Zum anderen... warum "-m multiport"?

Nimms raus und dann lass jedes Port als einzel Regel laufen ;)


Das Script ist aus einem Generator, siehe meinen ersten Post.

Die Stellen die Gameserver betreffen sind teilweise von Ulrich Block, scheinbar aber auch aus einem alten Generator der aber nicht mehr online ist.

Es bringt auch nichts wenn ich jeden Port einzeln eintrage, man kommt dann genausowenig auf den Server, scheinbar wurde da von Valve etwas verändert. Ich finde eben das es so übersichtlicher ist und natürlich weniger Text.

Was mir nun noch aufgefallen ist, ist das der Server keine Updates mehr über das Didrole Tool lädt sobald die Iptables Regeln aktiv sind, weiß jemand ob es andere Ports verwendet als SteamCMD, denn die benötigten Ports dafür habe ich laut Steam Wiki bereits freigegeben?

# SteamCMD
$iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65355 -j ACCEPT
$iptables -A INPUT -p udp -m udp --sport 4380 --dport 1025:65355 -j ACCEPT

Lacrimosa99

Fortgeschrittener

Beiträge: 275

Wohnort: Leipzig

Beruf: IT-Systemintegrator

Rootserver vorhanden: Ja

  • Nachricht senden

6

Montag, 12. August 2013, 12:42

Hi,

standart Ports von Valve:

Spoiler Spoiler

UDP 1200 (used for friends service)
UDP 27000 to 27015 inclusive
TCP 27020 to 27039 inclusive
TCP 27040 and 27041 only for CyberCafe Owners
UDP: 27015 and 27020 (default HLDS, SRCDS and HLTV port)
TCP: 27015 (SRCDS Rcon port)


Firewall Regel:

Spoiler Spoiler


$iptables -N REJECT_FLOOD28
$iptables -A REJECT_FLOOD28 -j LOG --log-prefix "IPTABLES-FLOOD 28: " --log-level info
$iptables -A REJECT_FLOOD28 -j DROP

$iptables -N REJECT_FLOOD46
$iptables -A REJECT_FLOOD46 -j LOG --log-prefix "IPTABLES-FLOOD 46: " --log-level info
$iptables -A REJECT_FLOOD46 -j DROP

---

$iptables -A INPUT -m state --state NEW -p udp -m udp --dport dein_Port -j ACCEPT
$iptables -A INPUT -p udp --dport dein_Port -m length --length 28 -j REJECT_FLOOD28
$iptables -A INPUT -p udp --dport dein_Port -m length --length 46 -j REJECT_FLOOD46

Bitte bei denn unteren Regeln das "dein_Port" anpassen!


MfG




Micha

Fortgeschrittener

  • »Micha« ist der Autor dieses Themas

Beiträge: 378

Beruf: Management

Rootserver vorhanden: Ja

  • Nachricht senden

7

Montag, 12. August 2013, 22:11

Besten dank, auf die Gameserver komme ich so, das Update funktioniert aber leider nach wie vor nicht:

Quellcode

1
2
3
[gameserver@puck166 ~]$ ./UpdateTool/UpdateTool.sh -command update -game 740 -dir g_csgo_1 -verify_all
Logging on Steam anonymously ...
Logon failed: No Connection


Sobald die Firewall wieder aus ist klappt es, also gehe ich doch mal davon aus das Didroles Update Tool andere Ports als SteamCMD verwendet...

Hier das momentane Script, wie du siehst hab ich alle deine genannten Ports freigegeben + die die mir von Steam genannt wurden.

Spoiler Spoiler


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#!/bin/sh
 
#####################################################
# IPTables Firewall-Skript                          #
#                                                   #
# erzeugt mit dem IPTables-Skript-Generator auf     #
#      tobias-bauer.de - Version 0.4                #
# URL: http://www.tobias-bauer.de/iptables.html     #
#                                                   #
# Autor: Tobias Bauer                               #
# E-Mail: exarkun@ist-root.org                      #
#                                                   #
# Das erzeugte Skript steht unter der GNU GPL!      #
#                                                   #
# ACHTUNG! Die Benutzung des Skriptes erfolgt auf   #
# eigene Gefahr! Ich übernehme keinerlei Haftung    #
# für Schäden die durch dieses Skript entstehen!    #
#                                                   #
#####################################################
 
# iptables suchen
iptables=`which iptables`
 
# wenn iptables nicht installiert abbrechen
test -f $iptables || exit 0
 
case "$1" in
   start)
      echo "Starte Firewall..."
      # alle Regeln löschen
      $iptables -t nat -F
      $iptables -t filter -F
      $iptables -X
 
      # neue Regeln erzeugen
      $iptables -N garbage
      $iptables -I garbage -p TCP -j LOG --log-prefix="DROP TCP-Packet: " --log-level info
      $iptables -I garbage -p UDP -j LOG --log-prefix="DROP UDP-Packet: " --log-level info
      $iptables -I garbage -p ICMP -j LOG --log-prefix="DROP ICMP-Packet: " --log-level info
 
      # Default Policy
      $iptables -P INPUT DROP
      $iptables -P OUTPUT DROP
      $iptables -P FORWARD DROP
 
      # über Loopback alles erlauben
      $iptables -I INPUT -i lo -j ACCEPT
      $iptables -I OUTPUT -o lo -j ACCEPT
 
      #####################################################
      # ausgehende Verbindungen
      # Port 22
      $iptables -I OUTPUT -o eth0 -p TCP --sport 1024:65535 --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I INPUT -i eth0 -p TCP --sport 22 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
 
      #####################################################
      # eingehende Verbindungen
      # Port 22
      $iptables -I INPUT -i eth0 -p TCP --sport 1024:65535 --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
      $iptables -I OUTPUT -o eth0 -p TCP --sport 22 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

      #####################################################
      # HALF-LIFE
      # HL Shortpackeges Filtern gegen DDos etc.
      $iptables -N REJECT_FLOOD28
      $iptables -A REJECT_FLOOD28 -j LOG --log-prefix="IPTABLES-FLOOD 28: " --log-level info
      $iptables -A REJECT_FLOOD28 -j DROP

      $iptables -N REJECT_FLOOD46
      $iptables -A REJECT_FLOOD46 -j LOG --log-prefix="IPTABLES-FLOOD 46: " --log-level info
      $iptables -A REJECT_FLOOD46 -j DROP

      $iptables -A INPUT -m state --state NEW -p udp -m udp --dport 28000 -j ACCEPT
      $iptables -A INPUT -p udp --dport 28000 -m length --length 28 -j REJECT_FLOOD28
      $iptables -A INPUT -p udp --dport 28000 -m length --length 46 -j REJECT_FLOOD46

      $iptables -A INPUT -m state --state NEW -p udp -m udp --dport 28100 -j ACCEPT
      $iptables -A INPUT -p udp --dport 28100 -m length --length 28 -j REJECT_FLOOD28
      $iptables -A INPUT -p udp --dport 28100 -m length --length 46 -j REJECT_FLOOD46

      $iptables -A INPUT -m state --state NEW -p udp -m udp --dport 28200 -j ACCEPT
      $iptables -A INPUT -p udp --dport 28200 -m length --length 28 -j REJECT_FLOOD28
      $iptables -A INPUT -p udp --dport 28200 -m length --length 46 -j REJECT_FLOOD46

      $iptables -A INPUT -m state --state NEW -p udp -m udp --dport 28300 -j ACCEPT
      $iptables -A INPUT -p udp --dport 28300 -m length --length 28 -j REJECT_FLOOD28
      $iptables -A INPUT -p udp --dport 28300 -m length --length 46 -j REJECT_FLOOD46

      $iptables -A INPUT -m state --state NEW -p udp -m udp --dport 28400 -j ACCEPT
      $iptables -A INPUT -p udp --dport 28400 -m length --length 28 -j REJECT_FLOOD28
      $iptables -A INPUT -p udp --dport 28400 -m length --length 46 -j REJECT_FLOOD46

      $iptables -A INPUT -m state --state NEW -p udp -m udp --dport 28500 -j ACCEPT
      $iptables -A INPUT -p udp --dport 28500 -m length --length 28 -j REJECT_FLOOD28
      $iptables -A INPUT -p udp --dport 28500 -m length --length 46 -j REJECT_FLOOD46

      $iptables -A INPUT -m state --state NEW -p udp -m udp --dport 28600 -j ACCEPT
      $iptables -A INPUT -p udp --dport 28600 -m length --length 28 -j REJECT_FLOOD28
      $iptables -A INPUT -p udp --dport 28600 -m length --length 46 -j REJECT_FLOOD46

      $iptables -A INPUT -m state --state NEW -p udp -m udp --dport 28700 -j ACCEPT
      $iptables -A INPUT -p udp --dport 28700 -m length --length 28 -j REJECT_FLOOD28
      $iptables -A INPUT -p udp --dport 28700 -m length --length 46 -j REJECT_FLOOD46

      $iptables -A INPUT -m state --state NEW -p udp -m udp --dport 28800 -j ACCEPT
      $iptables -A INPUT -p udp --dport 28800 -m length --length 28 -j REJECT_FLOOD28
      $iptables -A INPUT -p udp --dport 28800 -m length --length 46 -j REJECT_FLOOD46

      $iptables -A INPUT -m state --state NEW -p udp -m udp --dport 28900 -j ACCEPT
      $iptables -A INPUT -p udp --dport 28900 -m length --length 28 -j REJECT_FLOOD28
      $iptables -A INPUT -p udp --dport 28900 -m length --length 46 -j REJECT_FLOOD46

      $iptables -A INPUT -m state --state NEW -p udp -m udp --dport 29100 -j ACCEPT
      $iptables -A INPUT -p udp --dport 29100 -m length --length 28 -j REJECT_FLOOD28
      $iptables -A INPUT -p udp --dport 29100 -m length --length 46 -j REJECT_FLOOD46

      $iptables -A INPUT -m state --state NEW -p udp -m udp --dport 29200 -j ACCEPT
      $iptables -A INPUT -p udp --dport 29200 -m length --length 28 -j REJECT_FLOOD28
      $iptables -A INPUT -p udp --dport 29200 -m length --length 46 -j REJECT_FLOOD46

      # Steam Ports
      $iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1024:65535 -j ACCEPT
      $iptables -A INPUT -p udp -m udp --sport 4380 --dport 1024:65535 -j ACCEPT
      $iptables -A INPUT -p udp -m udp --sport 1200 --dport 1024:65535 -j ACCEPT
      $iptables -A INPUT -p tcp -m tcp --sport 27015 --dport 1024:65535 -j ACCEPT
      $iptables -A INPUT -p tcp -m tcp --sport 27014:27050 --dport 1024:65535 -j ACCEPT
      
      #####################################################
      # Teamspeak3
      $iptables -A INPUT -p udp --dport 9987 -j ACCEPT
      $iptables -A OUTPUT -p udp --dport 9987 -j ACCEPT
      $iptables -A INPUT -p tcp --dport 30033 -j ACCEPT
      $iptables -A OUTPUT -p tcp --dport 30033 -j ACCEPT
      $iptables -A INPUT -p tcp --dport 10011 -j ACCEPT
      $iptables -A OUTPUT -p tcp --dport 10011 -j ACCEPT
      $iptables -A INPUT -p tcp --dport 2008 -j ACCEPT
      $iptables -A OUTPUT -p tcp --dport 2008 -j ACCEPT 

      #####################################################
      # Erweiterte Sicherheitsfunktionen
      # SynFlood
      $iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
      # PortScan
      $iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
      # Ping-of-Death
      $iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
 
      #####################################################
      # bestehende Verbindungen akzeptieren
      $iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      $iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
      #####################################################
      # Garbage übergeben wenn nicht erlaubt
      $iptables -A INPUT -m state --state NEW,INVALID -j garbage
 
      #####################################################
      # alles verbieten was bisher erlaubt war
       #$iptables -A INPUT -j garbage
       #$iptables -A OUTPUT -j garbage
       #$iptables -A FORWARD -j garbage
      ;;
   stop)
      echo "Stoppe Firewall..."
      $iptables -t nat -F
      $iptables -t filter -F
      $iptables -X
      $iptables -P INPUT ACCEPT
      $iptables -P OUTPUT ACCEPT
      $iptables -P FORWARD ACCEPT
      ;;
   restart|reload|force-reload)
   $0 stop
   $0 start
      ;;
   *)
      echo "Usage: /etc/init.d/firewall (start|stop)"
      exit 1
      ;;
esac
exit 0

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Micha« (12. August 2013, 22:21)


Lacrimosa99

Fortgeschrittener

Beiträge: 275

Wohnort: Leipzig

Beruf: IT-Systemintegrator

Rootserver vorhanden: Ja

  • Nachricht senden

8

Montag, 12. August 2013, 22:35

Bitte schau Zeile 122 bis 126 genau an.. da liegt dein fehler ;)

MfG




Micha

Fortgeschrittener

  • »Micha« ist der Autor dieses Themas

Beiträge: 378

Beruf: Management

Rootserver vorhanden: Ja

  • Nachricht senden

9

Dienstag, 13. August 2013, 11:19

Habe ich da Ursprungs und Zielport vertauscht, so eventuell?

Quellcode

1
2
3
4
5
6
      # Steam Ports
      $iptables -A INPUT -p udp -m udp --dport 27000:27030 --sport 1024:65535 -j ACCEPT
      $iptables -A INPUT -p udp -m udp --dport 4380 --sport 1024:65535 -j ACCEPT
      $iptables -A INPUT -p udp -m udp --dport 1200 --sport 1024:65535 -j ACCEPT
      $iptables -A INPUT -p tcp -m tcp --dport 27015 --sport 1024:65535 -j ACCEPT
      $iptables -A INPUT -p tcp -m tcp --dport 27014:27050 --sport 1024:65535 -j ACCEPT


Mich wundert eben nur das die Zeilen so wie ich Sie angegeben hatte aber auch im Steam Wiki stehen, fast ganz unten, damit läuft es aber nicht:
https://developer.valvesoftware.com/wiki/SteamCMD

Lacrimosa99

Fortgeschrittener

Beiträge: 275

Wohnort: Leipzig

Beruf: IT-Systemintegrator

Rootserver vorhanden: Ja

  • Nachricht senden

10

Dienstag, 13. August 2013, 13:05

vertauscht nicht.... schau dir bitte IPTables genau an ;)

insbesondere --dport (destination Port) und --sport (source Port).

In deinem Fall brauchst du nur das --dport angeben.

* Edit *

Was dein Updatebefehl angeht.. so bitte wie in der Wiki angegeben, denn Update Befehl: steamcmd +login anonymous +force_install_dir /home/g_csgo_1 +app_update 740 validate +quit <- verwenden!




Micha

Fortgeschrittener

  • »Micha« ist der Autor dieses Themas

Beiträge: 378

Beruf: Management

Rootserver vorhanden: Ja

  • Nachricht senden

11

Mittwoch, 14. August 2013, 20:53

Danke, wie ich aber bereits geschrieben habe verwende ich kein SteamCMD sondern das UpdateTool, funktioniert so also nicht ;)

Habe nun herausgefunden das das UpdateTool einen anderen Port verwendet als SteamCMD, muss man eben mal kurz starten und dann alle offenen Ports mittels "netstat -tulpen" abfragen, zum vorschein kommt dann:

Quellcode

1
2
3
4
5
6
7
8
9
udp        0      0 0.0.0.0:48756               0.0.0.0:*                               505        100276130  17670/./UpdateTool/
oder
udp        0      0 0.0.0.0:53837               0.0.0.0:*                               505        100344339  17683/./UpdateTool/
oder
udp        0      0 0.0.0.0:39442               0.0.0.0:*                               505        100387061  17696/./UpdateTool/
oder
udp        0      0 0.0.0.0:53471               0.0.0.0:*                               505        100429183  17735/./UpdateTool/
oder
udp        0      0 0.0.0.0:48669               0.0.0.0:*                               505        100473344  17749/./UpdateTool/


Ich hab das ganze 5 mal gestaret und leider wechselt jedes mal der Port, also kann man hier leider auch nichts per Iptables sperren, bleibt nur SteamCMD zu verwenden oder aber die Updates manuell zu machen (Bei jedem Update Firewall aus), was für mich aber beides erstmal nicht in Frage kommt.

Ich werd nun erstmal alle eingehenden Ports sperren, dann noch die Gameserver Ports gegen diesen Flood Filtern sowie eben den Server selbst gegen SynFlood, PortScan und Ping-of-Death schützen, dann sollte das meiste ja bereits geblockt werden, die Ports für das Update sind ohnehin nur für ein kurzes Zeitfenster offen und man muss Sie auch eben erstmal finden.

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Micha« (14. August 2013, 22:06)


Ähnliche Themen