You are not logged in.

Micha

Intermediate

  • "Micha" started this thread

Posts: 378

Occupation: Management

wcf.user.option.userOption53: Ja

  • Send private message

1

Saturday, August 10th 2013, 1:24pm

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

Source code

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

Source code

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?

This post has been edited 8 times, last edit by "fluxX" (Aug 10th 2013, 5:22pm) with the following reason: spoiler tags verwenden


Micha

Intermediate

  • "Micha" started this thread

Posts: 378

Occupation: Management

wcf.user.option.userOption53: Ja

  • Send private message

2

Saturday, August 10th 2013, 3:11pm

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:

Source code

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


Source code

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

This post has been edited 3 times, last edit by "fluxX" (Aug 10th 2013, 5:22pm) with the following reason: spoiler tags verwenden


Lacrimosa99

Intermediate

Posts: 275

Location: Leipzig

Occupation: IT-Systemintegrator

wcf.user.option.userOption53: Ja

  • Send private message

3

Sunday, August 11th 2013, 7:14pm

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 ;)




Bara

Professional

Posts: 834

wcf.user.option.userOption53: Ja

  • Send private message

4

Sunday, August 11th 2013, 7:30pm

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

Micha

Intermediate

  • "Micha" started this thread

Posts: 378

Occupation: Management

wcf.user.option.userOption53: Ja

  • Send private message

5

Monday, August 12th 2013, 9:11am

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

Intermediate

Posts: 275

Location: Leipzig

Occupation: IT-Systemintegrator

wcf.user.option.userOption53: Ja

  • Send private message

6

Monday, August 12th 2013, 12:42pm

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

Intermediate

  • "Micha" started this thread

Posts: 378

Occupation: Management

wcf.user.option.userOption53: Ja

  • Send private message

7

Monday, August 12th 2013, 10:11pm

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

Source code

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


Source code

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

This post has been edited 4 times, last edit by "Micha" (Aug 12th 2013, 10:21pm)


Lacrimosa99

Intermediate

Posts: 275

Location: Leipzig

Occupation: IT-Systemintegrator

wcf.user.option.userOption53: Ja

  • Send private message

8

Monday, August 12th 2013, 10:35pm

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

MfG




Micha

Intermediate

  • "Micha" started this thread

Posts: 378

Occupation: Management

wcf.user.option.userOption53: Ja

  • Send private message

9

Tuesday, August 13th 2013, 11:19am

Habe ich da Ursprungs und Zielport vertauscht, so eventuell?

Source code

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

Intermediate

Posts: 275

Location: Leipzig

Occupation: IT-Systemintegrator

wcf.user.option.userOption53: Ja

  • Send private message

10

Tuesday, August 13th 2013, 1:05pm

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

Intermediate

  • "Micha" started this thread

Posts: 378

Occupation: Management

wcf.user.option.userOption53: Ja

  • Send private message

11

Wednesday, August 14th 2013, 8:53pm

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:

Source code

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.

This post has been edited 4 times, last edit by "Micha" (Aug 14th 2013, 10:06pm)


Similar threads