Quantcast
Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Rootserver mit Debian Jessie/Stretch *FULL ENCRYPTED* inkl. Iptables-Firewall und Simplebuild

Status
Für weitere Antworten geschlossen.

axel

Best Member
Boardveteran
Registriert
9. September 2011
Beiträge
11.349
Lösungen
3
Reaktionspunkte
42.944
Punkte
473
Ort
Niederrhein
Teil 1 von 3

Hallo liebes DEB,

angelehnt an diese Anleitung: HowTo - Full-Encrypted Root Server
möchte ich Euch in diesem (aktualisiertem) Howto gerne folgende Installation präsentieren/zeigen.

Das Howto dreht sich um folgende Aspekte:


  • Angemieteten "Dedicated Rootserver" vollverschlüsseln via "Rescue-System"
  • Iptables- (Firewall-)Skript zur Absicherung des Servers
  • Installation Simplebuild zum "selbstbacken" von Oscam

Ein Danke! vorab an @meister85 und @T1x.

########################################


Howtos:

HowTo - Full-Encrypted Root Server

HowTo - Simplebuild (2.34/1.41)

HowTo - Ubuntu Server 15.x --> Systemd Firewall Script / OpenVPN Routing


########################################

Dieses Howto erstelle ich auf Wunsch und Nachfragen diverser User und aufkommender Probleme bei der Installation -> Threads diesbezüglich.

Das ganze wurde auf einem Kimsufi-KS2 ( ; OVH-Tochter und relativ beliebt in der CS-Szene) beispielhaft durchgeführt.

Ich füge Screenshots und Installationslogs verspoilert (von dem KS2^^) an.

So! :ja Nun aber genug des Geschwafels, ab dafür! :ja

########################################

Vorteile:



  • Kein Realtime-Monitoring durch Provider
  • Kein Provider-Kernel
  • Download von Paketen nicht über Provider sondern direkt über Debian
  • Direkter SSH-Zugang als Superuser root
  • Möglichst unabhängig von Provider-Infrastruktur
  • Minimalsystem
  • Komplett verschlüsselter Root-Server mit Entschlüsselung über SSH


Zu Beginn gehen wir ins Webinterface unseres "Rootserver-Providers" und installieren ein Provider-Image (Debian), das sieht bei Kimsufi so aus:

Du musst Regestriert sein, um das angehängte Bild zusehen.

Das dauert eine Weile, diese "Provider-Installation" benötigen wir vorab, um grundlegende Informationen über unseren Server zu bekommen, hier deaktivieren wir erstmal das Monitoring:

Du musst Regestriert sein, um das angehängte Bild zusehen.

OK, ist der Server dann fertig installiert, loggen wir uns via Putty ( ) ein.

Folgende Informationen / Ausgaben speichern wir uns (Textdatei etc.) ab:

Code:
cat /etc/resolv.conf
hostname
cat /etc/network/interfaces

Wenn wir alles "zusammenhaben", gehen wir wieder zu unserem Provider-Webinterface und stellen den Bootvorgang/Netboot auf "Rescue-Modus" um:

Du musst Regestriert sein, um das angehängte Bild zusehen.

Bei Kimsufi nennt sich die Geschichte "rescue-pro":

Du musst Regestriert sein, um das angehängte Bild zusehen.

Das bestätigen wir und drücken danach auf "Neu starten".

Nach einem Augenblick ist der Server dann im "Rescue-Modus" gestartet, dieser erlaubt uns die Partitionierung und Vollverschlüsselung.

Wir fangen mit der Partitionierung an:

Code:
cfdisk -z

und wählen "gpt":

Du musst Regestriert sein, um das angehängte Bild zusehen.


sda1
Code:
Größe 1GB
Typ 83 (Wird unverschlüsselte /boot Partition)
Bootfähig

sda2
Code:
Größe 512MB
Typ 83 (wird später verschlüsselter Linux Swap)

sda3

Code:
Größe Rest (wird von cfdisk automatisch vorgeschlagen)
Typ 83 (wird später verschlüsselter Linux Datenbereich)


So schaut das am Ende korrekt aus:

Du musst Regestriert sein, um das angehängte Bild zusehen.

Wenn wir die Partitionstabelle erfolgreich "geschrieben" haben, müssen wir selbige natürlich auch formatieren.

Zunächst die Boot-Partition:

Code:
mkfs.ext4 /dev/sda1

Das wird unsere unverschlüsselte Partition für den Dropbear / Minimalsystem.

So schaut das aus:

root@rescue:~# mkfs.ext4 /dev/sda1
mke2fs 1.42.12 (29-Aug-2014)
Discarding device blocks: done
Creating filesystem with 244224 4k blocks and 61056 inodes
Filesystem UUID: 9e018f27-e33e-4717-af6e-1fd625a25ece
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

Als nächstes die Systempartition. Zugleich wird diese auch verschlüsselt. Bitte erstellt hierfür ein Passwort mit mindestens einer Länge von 100 Zeichen. Ich nutze z.B. die Webseite

Nachdem das Passwort generiert ist geben wir folgenden Befehl ein:



Code:
cryptsetup luksFormat /dev/sda3

Hier müssen wir mit YES (Achtung in Großbuchstaben!) bestätigen.

Dann das zuvor generierte Passwort eingeben.

Dann mit folgenden Befehl die Partition öffnen:

Code:
cryptsetup luksOpen /dev/sda3 sda3_crypt

Und anschließend formatieren:

Code:
mkfs.ext4 /dev/mapper/sda3_crypt

So schaut das aus:

root@rescue:~# cryptsetup luksFormat /dev/sda3

WARNING!
========
This will overwrite data on /dev/sda3 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
root@rescue:~# cryptsetup luksOpen /dev/sda3 sda3_crypt
Enter passphrase for /dev/sda3:
root@rescue:~# mkfs.ext4 /dev/mapper/sda3_crypt
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 9400745 4k blocks and 2351104 inodes
Filesystem UUID: 34378e71-7704-46f1-9a0a-c716967ad032
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Nun müssen die Verzeichnisse eingebunden werden:

Code:
mount /dev/mapper/sda3_crypt /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot

Die Installation von Debian (in diesem Falle Jessie) erfolgt über Debootstrap.

Code:
mount -t tmpfs none /tmp
cd /tmp
wget http://ftp.de.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.67_all.deb

Anschließend die Dateien entpacken:



Code:
ar -xf debootstrap_1.0.67_all.deb
tar xzf data.tar.gz
tar xzf control.tar.gz

Nun prüfen wir, ob der Inhalt des Pakets unverändert im Rettungssystem (Rescue) angekommen ist.

Code:
cat md5sums | cut -d " " -f 3 | xargs md5sum $1 > md5sums.local; diff md5sums md5sums.local

Um mit der Installation fortzufahren müssen wir den Quelltext ein wenig modifizieren:

Code:
nano usr/sbin/debootstrap

Bitte folgende Zeilen abändern:

Code:
DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap
DISABLE_KEYRING ="1"

So schaut das aus:

Du musst Regestriert sein, um das angehängte Bild zusehen.

Um sicherzugehen, dass nur offizielle Pakete ohne "Backdoors" auf dem neuen System installiert werden, müssen die Signaturen aller Pakete geprüft werden.

Code:
wget --no-check-certificate https://ftp-master.debian.org/keys/archive-key-6.0.asc
gpg --import archive-key-6.0.asc

Nun wird die Installation (Jessie) gestartet:

Code:
usr/sbin/debootstrap --keyring=/root/.gnupg/pubring.gpg --arch amd64 jessie /mnt/ http://ftp2.de.debian.org/debian

Das Log dazu:

root@rescue:/tmp# wget
--2016-05-21 15:41:56--
Resolving ftp.de.debian.org (ftp.de.debian.org)... 141.76.2.4
Connecting to ftp.de.debian.org (ftp.de.debian.org)|141.76.2.4|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 62742 (61K) [application/x-debian-package]
Saving to: ‘debootstrap_1.0.67_all.deb’

debootstrap_1.0.67_all.deb 100%[==========================================================================================================================================>] 61.27K --.-KB/s in 0.04s

2016-05-21 15:41:56 (1.38 MB/s) - ‘debootstrap_1.0.67_all.deb’ saved [62742/62742]


######################################################


root@rescue:/tmp# ar -xf debootstrap_1.0.67_all.deb
root@rescue:/tmp# tar xzf data.tar.gz
root@rescue:/tmp# tar xzf control.tar.gz
root@rescue:/tmp#


######################################################

root@rescue:/tmp# cat md5sums | cut -d " " -f 3 | xargs md5sum $1 > md5sums.local; diff md5sums md5sums.local

######################################################

root@rescue:/tmp# wget --no-check-certificate
--2016-05-21 15:45:00--
Resolving ftp-master.debian.org (ftp-master.debian.org)... 138.16.160.12
Connecting to ftp-master.debian.org (ftp-master.debian.org)|138.16.160.12|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5587 (5.5K) [text/plain]
Saving to: ‘archive-key-6.0.asc’

archive-key-6.0.asc 100%[==========================================================================================================================================>] 5.46K --.-KB/s in 0.001s

2016-05-21 15:45:01 (4.29 MB/s) - ‘archive-key-6.0.asc’ saved [5587/5587]

root@rescue:/tmp# gpg --import archive-key-6.0.asc
gpg: directory `/root/.gnupg' created
gpg: new configuration file `/root/.gnupg/gpg.conf' created
gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/root/.gnupg/secring.gpg' created
gpg: keyring `/root/.gnupg/pubring.gpg' created
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 473041FA: public key "Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
gpg: no ultimately trusted keys found
root@rescue:/tmp#

######################################################

root@rescue:/tmp# usr/sbin/debootstrap --keyring=/root/.gnupg/pubring.gpg --arch amd64 jessie /mnt/
I: Retrieving Release
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
...
I: Base system installed successfully.

Anschließend ins chroot wechseln:

Code:
mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -t tmpfs none /mnt/tmp
mount -o bind /sys /mnt/sys
LANG=C chroot /mnt /bin/bash

Achtung: Hierbei kommt am Ende folgende Fehlermeldung, welche wir pauschal ignorieren können:

Code:
bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)

Als nächstes ändern wir das Passwort für den Superuser "root":

Code:
passwd

Desweiteren legen wir einen User an -WICHTIG-:

Code:
adduser axfa77

("axfa77" natürlich mit dem gewünschten Usernamen ersetzen!)

So schaut das aus:

root@rescue:/# adduser axfa77
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US:en",
LC_ALL = "en_US.UTF-8",
LANG = "C"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Adding user `axfa77' ...
Adding new group `axfa77' (1000) ...
Adding new user `axfa77' (1000) with group `axfa77' ...
Creating home directory `/home/axfa77' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for axfa77
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y

Jetzt kommen wir zu der Konfiguration des Basissystems. Hierzu benötigen wir nun die zuvor gesicherten Daten (unsere "Serverinfos").

Code:
echo euerhostname > /etc/hostname

Code:
echo eureipadressevomserver euerhostname >> /etc/hosts


Code:
touch /etc/default/bootlogd && cat > /etc/resolv.conf  /etc/network/interfaces  /etc/default/bootlogd


Nun müssen wir die crypttab bzw. fstab abändern:



Code:
nano /etc/crypttab

Dort bitte folgendes einpflegen:

Code:
sda2_crypt /dev/sda2 /dev/urandom cipher=aes-cbc-essiv:sha256,size=256,swap
sda3_crypt /dev/sda3 none luks

Selbiges gilt für die fstab:

Code:
nano /etc/fstab

Code:
/dev/sda1               /boot   ext4    noatime 0       2
/dev/mapper/sda2_crypt  none    swap    sw      0       0
/dev/mapper/sda3_crypt  /       ext4    noatime,defaults,errors=remount-ro 0 1
proc /proc proc defaults


Jetzt noch die Paketliste anpassen:
Code:
nano /etc/apt/sources.list

Folgende Quellen fügen wir ein (Jessie):

Code:
deb http://ftp.de.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.de.debian.org/debian/ jessie main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
deb http://ftp.de.debian.org/debian/ jessie-updates main contrib non-free
deb-src http://ftp.de.debian.org/debian/ jessie-updates main contrib non-free

EDIT: Latest Stable ("Stretch") ist als OK getestet:

HowTo - Rootserver mit Debian Jessie *FULL ENCRYPTED* inkl. Iptables-Firewall und Simplebuild


Code:
deb http://ftp.de.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.de.debian.org/debian/ stretch main contrib non-free
deb http://security.debian.org/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free
deb http://ftp.de.debian.org/debian/ stretch-updates main contrib non-free
deb-src http://ftp.de.debian.org/debian/ stretch-updates main contrib non-free



Als nächstes bearbeiten wir unsere /etc/resolv.conf, damit unser Rootserver auch alles findet im www:

Code:
nameserver 127.0.0.1
nameserver 213.186.33.99
search ovh.net

(Hier ggfs. aus unseren "Serverinfos" anpassen)


Und aktualisieren:

Code:
apt-get update && apt-get upgrade && apt-get dist-upgrade

Sprache und Zone anpassen:

Code:
apt-get install locales && dpkg-reconfigure locales

Wir wählen folgende Einstellungen:

Sprache = de_DE.UTF-8
Zone = Europa --> Berlin

Du musst Regestriert sein, um das angehängte Bild zusehen.

Du musst Regestriert sein, um das angehängte Bild zusehen.

Als nächstes:

Code:
dpkg-reconfigure tzdata

Du musst Regestriert sein, um das angehängte Bild zusehen.

Du musst Regestriert sein, um das angehängte Bild zusehen.

Jetzt installieren wir den Kernel. :)

Hierfür erstmal folgenden Befehl:

Code:
cat /proc/mounts > /etc/mtab

Und anschließend:

Code:
apt-get install linux-image-amd64

Installation von wichtigen Paketen:

Code:
apt-get install ssh grub-pc pciutils psmisc cryptsetup dropbear busybox nmap mc ntpdate

Bei der Installation von Grub werdet Ihr gefragt, wohin es installiert werden soll. Da die meisten nur eine Festplatte nutzen, wählt Ihr bitte /dev/sda aus und bestätigt mit OK.

Du musst Regestriert sein, um das angehängte Bild zusehen.

Jetzt muss der Remote-Unlock eingerichtet werden:

Code:
nano /etc/initramfs-tools/initramfs.conf

Nach DEVICE suchen und folgend ergänzen (aus unseren Serverinfos):

Code:
DEVICE=eth0
IP=ipvomserver::gatewayvomserver:subnetvomserver:hostnamevomserver:eth0:off
DROPBEAR=y

Änderungen in das initrd übernehmen:

Code:
update-initramfs -u -k all

Jetzt müssen wir den RSA-Key kopieren und am besten in notepad++ einfügen. Anschließend unter "id_rsa" abspeichern.

Code:
cat /etc/initramfs-tools/root/.ssh/id_rsa

Jetzt müsst ihr Puttygen ( ) öffnen und auf Conversations --> Importkey klicken.
Anschließend auf "Save Privatekey".

Dieser ist für die Anmeldung notwendig.

Ohne diesen Schritt kommt Ihr nicht auf den Server!

Du musst Regestriert sein, um das angehängte Bild zusehen.

(Ich habe hier noch einen "Passphrase" zusätzlich genommen, ist nicht! zwingend notwendig, könnt Ihr auch weglassen.)

Nun noch Grub updaten:

Code:
update-grub
exit

Nun wieder in das Webinterface vom Provider gehen und als Netboot die HDD wieder auswählen!

Du musst Regestriert sein, um das angehängte Bild zusehen.

Anschließend wie gewohnt rebooten:

Code:
reboot

Du musst Regestriert sein, um das angehängte Bild zusehen.

Nach einigen Minuten sollte der Server wieder hochgefahren sein.

Es steht Euch der Dropbear als SSH im unverschlüsselten Bereich zur Verfügung. Der Dropbear wird über den initrd-Daemon mitgeladen.


Um die Anmeldung erfolgreich abzuschließen benötigt Ihr den zuvor gespeicherten "Private Key"!

Du musst Regestriert sein, um das angehängte Bild zusehen.

Nachdem Ihr Euch angemeldet habt, seid Ihr im unverschlüsselten minimal SSH (Dropbear) des Servers. Nun müsst Ihr folgenden Befehl eingeben:



Code:
echo -n 'das100stelligegeneriertepasswort' > /lib/cryptsetup/passfifo


Mit Enter bestätigen. Jetzt bootet der Server erst komplett durch.

Nun Putty schließen und erneut einloggen. Allerdings nicht mehr mit dem "Private Key" sondern mit eurem festgelegten Passwort und dem User "axfa77" bzw. Eurem angelegten "normalen User" (siehe Punkt passwd^^).

Superuser "root" werdet Ihr als User "axfa77" bzw. Eurem angelegten "normalen User" via:

Code:
su -

:ja

Ich hoffe ich habe dem ein oder anderen damit etwas "Licht ins Dunkel" gebracht.

Weiter mit der Firewall via iptables geht es in "Teil 2 von 3".

Gruß

PS: Ich habe mal einen Laberthread hierzu erstellt damit das hier "sauber" bleibt:

Talk - Laberthread: Rootserver mit Debian Jessie *FULL ENCRYPTED* inkl. Iptables-Firewall...
 

Anhänge

Du musst angemeldet sein, um die Anhangsliste zu sehen.
Zuletzt bearbeitet:
AW: Rootserver mit Debian Jessie *FULL ENCRYPTED* inkl. Iptables-Firewall und Simpleb

Sodile,

hier geht es nun wie versprochen weiter mit:

Teil 2 von 3 :ja

############################################

Wir brauchen als nächstes eine vernünftige Firewall, damit unser Server ganz entspannt im Netz steht.

Der Dank hierfür geht an @T1x. :)

############################################

Ok, wir melden uns also am frisch verschlüsselten System an und führen zur Sicherheit nochmal ein Systemupdate durch:

Code:
apt-get update && apt-get upgrade

So schaut das aus:

Du musst Regestriert sein, um das angehängte Bild zusehen.

Alles im grünen Bereich, sehr gut.

Zu Beginn sollten wir uns einen Port zwischen 1024 - 65535 (IPv4 mögliche s.g. "unpriviligierte" Ports) "aussuchen", auf dem unser SSH-Server zur Administration pauschal lauscht.

Ich nehme hier beispielsweise Port 22222 (Standard und nicht!! empfehlenswert ist "22").

Dazu ändere ich den Standardport in der sshd_config:

Code:
nano /etc/ssh/sshd_config

So schaut das aus:

Du musst Regestriert sein, um das angehängte Bild zusehen.

Den Rest können wir erstmal so lassen. Speichern und neustarten des SSH-Daemons:

Code:
/etc/init.d/ssh restart

Das testen wir mit einer neuen "Putty-Session", diesmal halt auf Port 22222

Desweiteren sind in folgendem Skript von @T1x weitere Regeln "eingebaut" welche auskommentiert sind mit einer "#", auch hier halt die dementsprechenden Ports eintragen:

Code:
#!/bin/bash
sleep 5
iptables=`which iptables`
iptablesv6=`which ip6tables`
#User Definition mit Zugriffen auf spezielle Services
#user="user.dyndns.org,deinedyn.homedns.com"
#(Ist vor Block APNIC eingebaut!)
#sharepartner="bla.dyndns.org"

# 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
#$iptablesv6 -t nat -F
$iptablesv6 -t filter -F
$iptablesv6 -X
$iptables -P INPUT DROP
$iptables -P FORWARD DROP
$iptablesv6 -P FORWARD DROP
$iptables -A INPUT -i lo -j ACCEPT
$iptables -A OUTPUT -o lo -j ACCEPT
$iptablesv6 -A INPUT -i lo -j ACCEPT
$iptablesv6 -A OUTPUT -o lo -j ACCEPT
$iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptablesv6 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#$iptablesv6 -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptables -P OUTPUT ACCEPT
$iptablesv6 -P OUTPUT ACCEPT

# OpenVPN
#$iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -d 10.20.30.40 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#$iptables -A OUTPUT -p icmp --icmp-type 0 -s 10.20.30.40 -d 0/0 -m state --state ESTABLISHED,RELATED -j ACCEPT


# SSH
$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 22222 -j ACCEPT


#Xtream-Codes
#$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport PORT -j ACCEPT

#OScam Webif
#$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport PORT -j ACCEPT
$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport PORT -j ACCEPT

#CCcam Share (Port ggf. anpassen und zum aktivieren des Zugriffs # entfernen!)
$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport PORT -j ACCEPT

#CE Share (Port ggf. anpassen und zum aktivieren des Zugriffs # entfernen!)
$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport PORT -j ACCEPT



#DROPS (unerwünschte IPs, von denen JEGLICHE Anfragen verworfen werden):
$iptables -I INPUT --source <IP> -j DROP
$iptables -I INPUT --source <IP> -j DROP

#Sharepartner Beispiel CE Port 1337
#$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED --source $sharepartner -p tcp --dport 1337-j ACCEPT
#Jeder Sharepartner kann somit auf Port 1337 connecten.
#Willst du das es einer nicht mehr tut, dann einfach oben in der Variable den betroffenen Sharepartner entfernen!


#Block APNIC LACNIC
#Hinweis: Blockiert Asien, Südamerika, Mittelamerika, beschränkt Russland bzw. Osteuropa!
APNIC=(
        "1.0.0.0/8"
        "14.0.0.0/8"
        "27.0.0.0/8"
        "36.0.0.0/8"
        "39.0.0.0/8"
        "42.0.0.0/8"
        "49.0.0.0/8"
        "58.0.0.0/8"
        "59.0.0.0/8"
        "60.0.0.0/8"
        "61.0.0.0/8"
        "101.0.0.0/8"
        "103.0.0.0/8"
        "106.0.0.0/8"
        "110.0.0.0/8"
        "111.0.0.0/8"
        "112.0.0.0/8"
        "113.0.0.0/8"
        "114.0.0.0/8"
        "115.0.0.0/8"
        "116.0.0.0/8"
        "117.0.0.0/8"
        "118.0.0.0/8"
        "119.0.0.0/8"
        "120.0.0.0/8"
        "121.0.0.0/8"
        "122.0.0.0/8"
        "123.0.0.0/8"
        "124.0.0.0/8"
        "125.0.0.0/8"
        "126.0.0.0/8"
        "175.0.0.0/8"
        "180.0.0.0/8"
        "182.0.0.0/8"
        "183.0.0.0/8"
        "202.0.0.0/8"
        "203.0.0.0/8"
        "210.0.0.0/8"
        "211.0.0.0/8"
        "218.0.0.0/8"
        "219.0.0.0/8"
        "220.0.0.0/8"
        "221.0.0.0/8"
        "222.0.0.0/8"
        "223.0.0.0/8"
        "43.0.0.0/8"
        "133.0.0.0/8"
        "150.0.0.0/8"
        "153.0.0.0/8"
        "163.0.0.0/8"
        "171.0.0.0/8"
        "177.0.0.0/8"
        "179.0.0.0/8"
        "181.0.0.0/8"
        "186.0.0.0/8"
        "187.0.0.0/8"
        "189.0.0.0/8"
        "190.0.0.0/8"
        "200.0.0.0/8"
        "201.0.0.0/8"
        )

for blockapnic in ${APNIC[*]}
do
        $iptables -A INPUT --source $blockapnic -j DROP
done



$iptables -N LOGGING
$iptables -A INPUT -j LOGGING
$iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
$iptables -A LOGGING -j DROP
$iptables -A LOGGING -j REJECT

#$iptables -A INPUT -i eth0 -j REJECT
;;
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
$iptablesv6 -t nat -F
$iptablesv6 -t filter -F
$iptablesv6 -X
$iptablesv6 -P INPUT ACCEPT
$iptablesv6 -P OUTPUT ACCEPT
$iptablesv6 -P FORWARD ACCEPT
;;
restart|reload|force-reload)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/firewall (start|stop)"
exit 1
#;;
esac
exit 0

Wir legen unser Firewall-Skript jetzt an:

Code:
nano /etc/init.d/firewall.sh

Hier haben wir eine neue, leere Datei erstellt, dort kopieren wir unser Skript hinein.
(Alles in die Zwischenablage kopieren (Windows), im Putty-Fenster via Rechte Maustaste einfügen)

Das speichern wir im nano mit STRG + X ab und bestätigen mit J(a).

OK, damit die ganze Sache auch ausführbar ist, ändern wir die "Berechtigungen" des Skripts:

Code:
chmod 755 /etc/init.d/firewall.sh

Soweit, so gut. :ja

#####################################################

VORSICHT: DIESES SKRIPT BINDEN WIR NOCH NICHT!!! PAUSCHAL IN UNSERE RC.LOCAL ("Autostart" Linux) EIN!!!

Wir testen es erstmal und bauen eine neue Verbindung auf, um sicherzugehen, das alles funktioniert wie es soll.

ANDERNFALLS SPERREN WIR UNS SELBST AUS DEM SYSTEM AUS, UND ZWAR ENDGÜLTIG!!! ***VORSICHT!!!***

#####################################################



Gehen wir also in /etc/init.d/ und starten unsere Firewall das erste mal:

Code:
cd /etc/init.d/
./firewall.sh start

Auch das testen wir mit einer neuen "Putty-Session"! Können wir uns wieder "normal" einloggen, ist alles gut!
Andernfalls starten wir den Server über das Provider Webinterface neu und müssen unser Firewall-Skript überarbeiten!



Wenn alles funktioniert wie gewünscht, - wir sind ja bequem irgendwo - , tragen wir folgende Befehle in unsere /etc/rc.local ("Autostart" Linux) ein:


Code:
nano /etc/rc.local

Code:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.


# Firewall starten
/etc/init.d/firewall.sh start &

# Zeitabgleich (Physikalisch Technische UNI Braunschweig)
ntpdate ptbtime1.ptb.de &

exit 0

Jetzt wird direkt zum Start des Servers die Firewall gestartet sowie ein Zeitabgleich mit der Physikalisch Technischen (UNI) Braunschweig durchgeführt.

Jetzt sind wir auf der sicheren Seite vorerst, und können gemütlich einen Kaffee "schlürfen". :ja :emoticon-0167-beer:

Wer die Geschichte noch von zuhause aus testen / überprüfen möchte, der tue dieses via nmap:


So schaut das dann beispielhaft aus:

Du musst Regestriert sein, um das angehängte Bild zusehen.

Weiter geht es dann in Teil 3 von 3.

PS: Ich habe mal einen Laberthread hierzu erstellt damit das hier "sauber" bleibt:

https://www.digital-eliteboard.com/41...-firewall.html

Gruß
 

Anhänge

Du musst angemeldet sein, um die Anhangsliste zu sehen.
Zuletzt bearbeitet:
AW: Rootserver mit Debian Jessie *FULL ENCRYPTED* inkl. Iptables-Firewall und Simpleb

So,

nun zum abschließenden Teil 3 von 3, "Installation Simplebuild zum "selbstbacken" von Oscam".

Der Dank hierfür geht an @meister85 und @gorgone aus dem streamboard.

Legen wir los und legen unser "simplebuild-Verzeichnis" an und installieren alle benötigten Pakete:



Code:
dpkg --add-architecture i386 && apt-get update && cd /opt && mkdir simplebuild && cd simplebuild && wget ss4200.homelinux.com/oscam/simplebuild && chmod 777 simplebuild && ./simplebuild debinstall

So schaut das dann am Ende aus:

_ _ _
___| |_ _ __ ___ __ _ _ __ ___ | |__ ___ __ _ _ __ __| |
/ __| __| '__/ _ \/ _` | '_ ` _ \| '_ \ / _ \ / _` | '__/ _` |
\__ \ |_| | | __/ (_| | | | | | | |_) | (_) | (_| | | | (_| |
|___/\__|_| \___|\__,_|_| |_| |_|_.__/ \___/ \__,_|_| \__,_|

Dateicheck
----------

dialog ist installiert gefunden in /usr/bin/dialog
xz ist installiert gefunden in /usr/bin/xz
gawk ist installiert gefunden in /usr/bin/gawk
svn ist installiert gefunden in /usr/bin/svn

Paketcheck
-------------

dialog installiert
xz-utils installiert
gawk installiert
subversion installiert
gcc installiert
make installiert
libusb-dev installiert
libusb-1.0-0 installiert
libusb-1.0-0-dev installiert
libssl-dev installiert
libpcsclite-dev installiert
libccid installiert
libc6-dev installiert
zlib1g-dev installiert
build-essential installiert
gcc-multilib installiert
module-assistant installiert
dos2unix installiert
sshpass installiert
openssl installiert

OK, also starten wir das erste Mal unser simmplebuild-Menü:

Code:
./simplebuild menu

So schaut das (nach "auschecken" der aktuellen Oscam-Revision) aus:

Du musst Regestriert sein, um das angehängte Bild zusehen.

Wir wählen nun: "Continue weiter mit lokalem SVN: r11234 (in diesem Falle, Eure kann natürlich "neuer" sein):

Du musst Regestriert sein, um das angehängte Bild zusehen.

Wir wählen: NATIVE Nativ für debian-x86_64:

Du musst Regestriert sein, um das angehängte Bild zusehen.

Dieses Menü ist eigentlich selbsterklärend, ich gehe nicht weiter darauf ein.

Wir bauen uns unsere Oscam-Binary und wählen "Baue OScam jetzt":

Du musst Regestriert sein, um das angehängte Bild zusehen.

Du musst Regestriert sein, um das angehängte Bild zusehen.

Du musst Regestriert sein, um das angehängte Bild zusehen.

Wir verlassen nun unser simplebuild-Menü und schauen in unser Unterverzeichnis "/opt/simplebuild/archiv":

Du musst Regestriert sein, um das angehängte Bild zusehen.

Dort haben wir also unsere frisch "selbstgebackene" aktuelle Oscam-Binary.

:)

##################################################

Mit simplebuild lassen sich nicht nur Binaries für Euren Server backen, sondern
für alle möglichen Architekturen (z.B. Synology, diverse Router etc.).

Darauf gehe ich nun auch nicht weiter ein, sondern verweise auf diesen Thread:

https://www.digital-eliteboard.com/308686-simplebuild-2-34-1-41-a.html

##################################################

Ich hoffe ich hab dem ein oder anderen auch mit dieser kleinen Anleitung ein wenig geholfen.

PS: Ich habe mal einen Laberthread hierzu erstellt damit das hier "sauber" bleibt:

https://www.digital-eliteboard.com/41...-firewall.html

Gruß
 

Anhänge

Du musst angemeldet sein, um die Anhangsliste zu sehen.
Zuletzt bearbeitet:
Hier ein Update zu Debian 9 "Stretch" (latest STABLE).

Die sources.list muss in obigem Howto angepasst werden:

Code:
deb http://ftp.de.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.de.debian.org/debian/ stretch main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free
deb http://ftp.de.debian.org/debian/ stretch-updates main contrib non-free
deb-src http://ftp.de.debian.org/debian/ stretch-updates main contrib non-free

Danach folgendes ausführen:

Code:
apt-get update && apt-get upgrade && apt-get dist-upgrade -y

Getestet u.a. von @DEFBLN :)

Gruß

PS: Aktualisierung verlinkt im Howto, Thread wieder geschlossen. ;)

Ich habe mal einen Laberthread hierzu erstellt damit das hier "sauber" bleibt:

Talk - Laberthread: Rootserver mit Debian Jessie *FULL ENCRYPTED* inkl. Iptables-Firewall...
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Zurück
Oben