AktuellesBetriebssystemeLinuxProgrammierungServerShell

IPTables – leichtere Bedienung mittels Skript

Skripte Skripte Skripte – wer hat noch nicht, wer will nochmal  …

Endlich ist es mal wieder so weit. Ich werde euch heute einen kleinen Kniff zeifen, wie sich eure IPTables deutlich einfacher managen lassen. Das Stichtwort heiß hier „Shellskript“. Ein Shellskript ist quasi einfach nur eine Textdatei, die das System (mit normalen Shellkommandos) anweist, bestimmte Abläufe anzustoßen.

Okay – zuerst solltet Ihr euch eine Ordnerstruktur ausdenken. Der Einfachheit halber habe ich das mal bis hierhin übernommen, ihr hingegen könnt euch etwas einfallen lassen oder einfach das hier benutzen 😛

Als erstes legen wir uns die Zieltordner, Dateien und die Rechte zu den jeweiligen Dateien an:

mkdir -p /home/security/iptables.d/
touch /home/security/iptables
chmod 755 /home/security/iptables

So und als erstes werden wir unseren Webservice (Apache Port 80) absichern. Dazu benötige ich noch eine weitere Datei

touch /home/security/iptables.d/80_http

Der Dateiname ist mit Absicht so gewählt. Irgendwann wird das Konstrukt immer größer und größer und so habe ich die möglichkeit den Inhalt der Dateien schon am Namen abzuschätzen – so was in der Art solltet ihr auch nutzen.
Nun lege ich noch die Datei general_drop an, damit ich dort IP Adressen definieren kann, die grundsätzlich systemweit (also alle Ports und IPs) gesperrt werden:

touch /home/security/iptables.d/general_drop

Kommen wir nun zum Inhalt:

vi /home/security/iptables

#!/bin/bash

## GLOBAR ABSOLUT PATH ##
IPT=“/sbin/iptables“ ## path to iptables program

### First of all flush $IPT
$IPT –flush ## get empty ruleset

## include security files
source /home/security/iptables.d/80_http
## HERE ALL DEFINITIONFILES

##############
#### DROP ####
##############
### DROP SEPCIFIC NETS ###
source /home/security/iptables.d/general_drop

Der Inhalt für die 80_http Datei sieht in etwa so aus (fügt bitte eure eigenen IPs hinzu!):
— $IPT habt ihr bereits in der /home/security/iptables festgelegt – durch das „source“ – include – werden die Variablen auch in der 80_http bekannt

vi /home/security/iptables.d/80_http

## allow ssh from
$IPT -A INPUT -p tcp -m tcp -s 1.2.3.4 –dport 80 -j ACCEPT # ok from home
$IPT -A INPUT -p tcp -m tcp -s 2.2.2.2 –dport 80 -j ACCEPT # ok from xyz

## deny all other
$IPT -A INPUT -p tcp -m tcp -s 0.0.0.0/0 –dport 80 -j DROP

[the_ad id=“266″]

WICHTIG! Kommentiert euch, welche IP ihr freigegeben habt, damit ihr nachher noch wisst, was ihr dort getan habt!

Nun fehlt noch der Inhalt für die general_drop. Hier stehen alle IPs drin die ihr nicht wollt (ich zum Beispiel habe eine „China-NET“ List dort eingefügt, da ich nichts mit den Chinesen am Hut haben will :-P)

vi /home/security/iptables.d/general_drop

## deny all mo-fus

$IPT -A INPUT -s 123.59.64.0/19 -j DROP
$IPT -A INPUT -s 79.171.80.0/21 -j DROP
$IPT -A INPUT -s 201.148.0.0/16 -j DROP

Das war es schon!
Nun könnt ihr natürlich noch nach Belieben weitere Unterdateien anlegen, die andere Ports beschränken.

Noch ein Tipp:
Legt euch doch ruhig einen Crontab Eintrag für das Skript an (alle 5 Minuten) – dann müsst ihr es nicht immer händisch neu laden und nach einem Neustart des Servers werden die Regeln so definitiv neu geladen 😉

Ich hoffe ich konnte euch helfen. Wer Fragen hat, darf sehr gerne fragen!

 

Grüße
Nico

Leave a comment

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert


Related Articles

OVH Kimsufi KS-A: Das Phantom der Günstig-Server?

Wenn es um günstige dedizierte Server geht, ist OVH mit seiner Kimsufi-Reihe...

Plesk ClamAV unter Debian 12 installieren (postfix free antivirus)

Hallo zusammen, in den letzten Wochen bin ich von LiveConfig auf Plesk...

Counter Strike 2 offiziell bestätigt – Beta Testphase

Es ist offiziell, Counter Strike 2 befindet sich in der beta Testphase....

RustDesk – kostenlose Teamviewer (R)(TM) Alternative

Hi zusammen, ich wurde auf ein nettes Tool aufmerksam gemacht. Das Ganze...