• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

SSH server hardening / Bruteforce / Logging / Mail notifications

X-Coder

Aktiver NGBler

Registriert
14 Juli 2013
Beiträge
149
@theSplit, mit Portknocking meinte ich dass was rexcolo zeigt.
Damit kannst du Ports verstecken, erst nachdem eine bestimmte Serie an Ports "abgeklopft" wird, wird der eigentliche Port geöffnet.
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.573
  • Thread Starter Thread Starter
  • #22
Guten Morgen,

wenn ich das Konzept "Portknocking" richtig auffasse, wird der "eigentliche" Dienstport erst freigeschaltet bzw. aktiv gesetzt, wenn auf anderen Traffic/eine Anfrage gekommen ist, quasi als Legitimation vor dem Freischalten des eigentlichen Dienstes? *kopfkratz*
 

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.748
Ort
in der Zukunft
Ja, wie eine art Pin-Code über Ports.
aber das macht die Config halt echt wieder kompliziert und fehleranfällig.

Du machst z.B. bei dir ein script das per telnet port 5, 99,12, 13 im Abstand von jeweils einer Sekunde verbindet und trennt.
Danach ist dann Port 22 plötzlich für 30s online....
 

BurnerR

Bot #0384479

Registriert
20 Juli 2013
Beiträge
5.505
Ist die Frage ob das ein guter Tradeoff ist, wenn man jetzt nicht routinemäßig Server konfiguriert und ob es nicht wenn schon dann reicht einfach SSH auf einem höheren Port lauschen zu lassen..
 

Metal_Warrior

Defender of Freedom
Teammitglied

Registriert
10 Aug. 2013
Beiträge
6.830
Ort
/dev/mapper/home
Mehr würde ich für einen einzigen Server nicht tun.

Genau das. Ich kann gern mal hoch zu unserem SSH-Admin gehen und mal fragen, welche Erfahrungen er gemacht hat beim Login im Rechenzentrum, aber ich denke, die sind ähnlich (und wir sind ein beliebtes Ziel für ein ganz anderes Kaliber an Akteuren).
 

braegler

Aktiver NGBler

Registriert
14 Juli 2013
Beiträge
904
Ich hatte vor einigen Jahren folgendes kleines Skriptpaket am Laufen:

firewall.conf
[src=perl]
#! /usr/bin/perl
$enableFirewall = 1;
[/src]
rcfirewall
[src=bash]
#! /bin/sh

FIREWALL="/usr/sbin/iptables"

LOGFILE="/etc/firewall/updateFirewall.log"
DATAFILE="/etc/firewall/updateFirewall.data"
CONFFILE="/etc/firewall/firewall.conf"

UPDATESCRIPT="/etc/firewall/updatefirewall"

##################################################################################
##################################################################################
# KONFIGURATION:
##################################################################################
# Je nach Bedarf, die entsprechenden Zeilen (aus) kommentieren bzw. eigene hinzufügen
#
# GGF Pfade zu FIREWALL, LOGFILE, DATAFILE, CONFFILE und UPDATESCRIPT anpassen
# Ich rate aber, die Files einfach unter /etc/firewall abzulegen
# Files ausführbar machen nicht vergessen
##################################################################################
##################################################################################

case "$1" in
start)
echo "Enable Firewall"

###########################################################
# global DROP rule
###########################################################
$FIREWALL -P INPUT DROP

###########################################################
# Allow all on Loopback Device
###########################################################
$FIREWALL -A INPUT -i lo -j ACCEPT

###########################################################
# Allow icmp
###########################################################
$FIREWALL -A INPUT -i eth0 -p icmp -j ACCEPT

###########################################################
# Download-Server
###########################################################
#$FIREWALL -A INPUT -i eth0 -s 127.0.0.1 -j ACCEPT

###########################################################
# SSH - Accept from I-net
###########################################################
$FIREWALL -A INPUT -i eth0 -p tcp -s 127.0.0.1 --dport ssh -j ACCEPT #BACKUP IP-> hat immer Zugriff


###########################################################
# Domain - Server
###########################################################
# $FIREWALL -A INPUT -i eth0 -p tcp --dport domain -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p udp --dport domain -j ACCEPT

###########################################################
#PING
###########################################################


###########################################################
# Mail - Server (POP - SMTP - IMAP)
###########################################################
# $FIREWALL -A INPUT -i eth0 -p tcp --dport smtp -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p tcp --dport pop3 -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p tcp --dport pop2 -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p tcp --dport imap -j ACCEPT

###########################################################
# Web - Server
###########################################################
$FIREWALL -A INPUT -i eth0 -p tcp --dport http -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p tcp --dport https -j ACCEPT

###########################################################
# IRC
###########################################################
# $FIREWALL -A INPUT -i eth0 -p tcp --dport 6667 -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p udp --dport 6667 -j ACCEPT

##########################################################
# FTP
###########################################################
$FIREWALL -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT
$FIREWALL -A INPUT -i eth0 -p udp --dport 21 -j ACCEPT

###########################################################
# Teamspeak
###########################################################
# $FIREWALL -A INPUT -i eth0 -p tcp --dport 8767 -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p udp --dport 8767 -j ACCEPT

# $FIREWALL -A INPUT -i eth0 -p tcp --dport 14534 -j ACCEPT

# $FIREWALL -A INPUT -i eth0 -p tcp --dport 51234 -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p udp --dport 51234 -j ACCEPT

###########################################################
# GAMESERVER
###########################################################
# $FIREWALL -A INPUT -i eth0 -p tcp --dport 27960 -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p udp --dport 27960 -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p tcp --dport 27733 -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p udp --dport 27733 -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p tcp --dport 27964 -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p udp --dport 27964 -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p tcp --dport 27970 -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p udp --dport 27970 -j ACCEPT

###########################################################
# WEBMIN
###########################################################

# $FIREWALL -A INPUT -i eth0 -p tcp --dport 10000 -j ACCEPT
# $FIREWALL -A INPUT -i eth0 -p udp --dport 10000 -j ACCEPT

###########################################################
# Antwortpakete generell erlauben
###########################################################
$FIREWALL -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

###########################################################
# Logging
###########################################################
# $FIREWALL -A INPUT -i eth0 -p tcp --dport 23:65535 -j LOG
# $FIREWALL -A INPUT -i eth0 -p udp --dport 23:65535 -j LOG


###########################################################
# Start updateFirewall all 5 minutes
###########################################################
echo "#! /usr/bin/perl" > $CONFFILE;
echo "\$enableFirewall = 1;" >> $CONFFILE;
# echo "1" >> $CONFFILE;

$UPDATESCRIPT;
;;
stop)
echo "Disable Firewall"

# If File exists
[ -f $DATAFILE ] && rm $DATAFILE
echo "#! /usr/bin/perl" > $CONFFILE;
echo "\$enableFirewall = 0;" >> $CONFFILE;
# echo "1" >> $CONFFILE;

$FIREWALL -F INPUT
$FIREWALL -F OUTPUT
$FIREWALL -F FORWARD
$FIREWALL -P INPUT ACCEPT

;;
status)
$FIREWALL -L -n
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage ( start | stop | status | restart )"
;;
esac

[/src]
updatefirewall
[src=perl]
#! /usr/bin/perl
require '/etc/firewall/firewall.conf';

$iptables_bin = "/usr/sbin/iptables";
$dataFile = "/etc/firewall/updateFirewall.data";
$logFile = "/etc/firewall/updateFirewall.log";


#
#Hier können DynDNS Adressen eingefügt werden, denen
#Zugang zum ssh gewährt wird
#Diese Datei per Cron ausführen (z.b. alle 5 Minuten)
#
#Beim Ausführen werden die in @URL gelisteten DynDNS Addis in iptable aufgenommen
#
#
##################################################################################
# KONFIGURATION:
##################################################################################
# DYNDNSADDI1 bis 4 mit validen DynDNS Adressen ersetzen
# AllowedUser1 bis 4 mit griffigen Usernamen ersetzen
# GGF Pfade zu FIREWALL, LOGFILE, DATAFILE, CONFFILE und UPDATESCRIPT anpassen
# Ich rate aber, die Files einfach unter /etc/firewall abzulegen
# Files ausführbar machen nicht vergessen
##################################################################################





@URL = ( "/bin/ping -c 1 -w 1 DYNDNSADDI1 |" ,
"/bin/ping -c 1 -w 1 DYNDNSADDI2 |",
"/bin/ping -c 1 -w 1 DYNDNSADDI3 |",
"/bin/ping -c 1 -w 1 DYNDNSADDI4 |" );

@ENV = ( "AllowedUser1", "AllowedUser2" ,"AllowedUser3", "AllowedUser4");



# -----------------------------------------------------------------
# Ab hier nichts mehr aendern
# -----------------------------------------------------------------


sub RemoveRule
{
# open(OUTFILE, ">>$logFile") or die print "error with logfile\n";

# printf OUTFILE "Remove Rule for User: $user[$i] with IP: $data[$i]\n";

open(INFILE, "$iptables_bin -D INPUT -i eth0 -s $data[$i]/32 -p tcp --dport ssh -j ACCEPT |") or die printf OUTFILE "error with iptables\n";
close(INFILE);

# close(OUTFILE);

}

sub AddRule
{
# open(OUTFILE, ">>$logFile") or die print "error with logfile\n";

# printf OUTFILE "Add Rule for User: $user[$i] with IP: $data[$i]\n";

open(INFILE, "$iptables_bin -A INPUT -i eth0 -s $data[$i]/32 -p tcp --dport ssh -j ACCEPT |") or die printf OUTFILE "error with iptables\n";
close(INFILE);

# close(OUTFILE);
}

sub updateDataFile
{
open(OUTFILE, ">$dataFile") or die "Cant createFile\n";

for ($a=0; $a<$counter; $a++)
{
printf OUTFILE "$user[$a] : $data[$a]\n";
}
close(OUTFILE);

}


sub CheckFirewall
{
$changes = 0;
for ($i=0; $i<$counter; $i++)
{
if ($data[$i] ne $ip[$i])
{
$changes = 1;
RemoveRule;
$data[$i] = $ip[$i];
AddRule;
}
}

if ($changes == 1)
{
updateDataFile;
}
}


sub ReadLog
{
open(INFILE, "<$dataFile") or die "File not Found!\n";
@FILE = <INFILE>;
close(INFILE);

$counter = 0;

foreach $line (@FILE)
{
chomp($line);
@DATA = split( / : /, $line);

$user[$counter] = $DATA[0];
$data[$counter] = $DATA[1];

$counter++;
}

CheckFirewall;
}


if (!(-e $dataFile))
{
open(OUTFILE, ">$dataFile") or die "Cant create File\n";
foreach $line (@ENV)
{
printf OUTFILE "$line : 0.0.0.0\n";
}
close(OUTFILE);
}

$index = -1;

foreach $url (@URL)
{
open(INFILE, $url) or die "File not Found!\n";
$line = <INFILE>;
close(INFILE);

if ($line =~ /.* \([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\) .*/)
{
$index++;

@fields = split( / \(/ , $line);
@IP = split( /\) / , $fields[1]);

$ip[$index] = $IP[0];
}
else
{
print "No IP found";
}
}

if ($enableFirewall > 0)
{
if ($index > 0)
{
ReadLog;
}
}
else
{
}




[/src]
updateFirewall.data --> leere Datei (vorerst)

updatefirewall wurde als Cronjob alle 5 Minuten abgefeuert
 
Oben