🔹 Überblick
Manuelle Firewall-Konfiguration kann mühsam und fehleranfällig sein. Mein iptables Generator erleichtert diesen Prozess durch eine webbasierte Oberfläche, die Regeln automatisch generiert. Ideal für Linux-Admins, die schnell und flexibel Sicherheitsregeln setzen möchten!
🛠️ Features
✅ Generiert iptables-Regeln basierend auf Nutzer-Eingaben
✅ Unterstützt gängige Dienste (SSH, HTTP, HTTPS, FTP, etc.)
✅ Benutzerdefinierte Ports & IP-Adressen möglich
✅ Einfache Web-Oberfläche für schnelle Regel-Erstellung
✅ Download-Funktion für generierte Firewall-Regeln
📌 Beispiel: Generierte Regel für SSH-Zugang
Ein Nutzer gibt folgende Werte ein:
- Protokoll: TCP
- Quelle: 192.168.1.100
- Ziel: 192.168.1.1
- Dienst: SSH
- Aktion: ACCEPT
Das Skript generiert dann automatisch folgende iptables-Regel:
iptables -A INPUT -s 192.168.1.100 -d 192.168.1.1 -p tcp --dport 22 -j ACCEPT
📜 Code-Ausschnitt (Hauptlogik)
<?php $generatedIptablesConf = ""; // Überprüfung, ob das Formular gesendet wurde if ($_SERVER['REQUEST_METHOD'] === 'POST') { $action = $_POST['action']; $protocol = $_POST['protocol']; $sourceIP = $_POST['source_ip']; $targetIP = $_POST['target_ip']; // Dienste-Ports Zuordnung $ports = [ 'http' => 80, 'https' => 443, 'ssh' => 22, 'ftp' => 21, 'smtp' => 25, 'dns' => 53, 'pop3' => 110, 'imap' => 143 ]; // Überprüfen, ob Dienste ausgewählt wurden if (isset($_POST['services'])) { $selectedServices = $_POST['services']; foreach ($selectedServices as $service) { $port = $ports[$service]; // Erstellen der iptables-Regel für jeden ausgewählten Dienst $generatedIptablesConf .= "iptables -A INPUT "; if (!empty($sourceIP)) { $generatedIptablesConf .= "-s {$sourceIP} "; } if (!empty($targetIP)) { $generatedIptablesConf .= "-d {$targetIP} "; } $generatedIptablesConf .= "-p {$protocol} --dport {$port} -j {$action}\n"; } } // Überprüfen, ob ein benutzerdefinierter Port eingegeben wurde if (!empty($_POST['port'])) { $port = $_POST['port']; $generatedIptablesConf .= "iptables -A INPUT "; if (!empty($sourceIP)) { $generatedIptablesConf .= "-s {$sourceIP} "; } if (!empty($targetIP)) { $generatedIptablesConf .= "-d {$targetIP} "; } $generatedIptablesConf .= "-p {$protocol} --dport {$port} -j {$action}\n"; } } ?> <!DOCTYPE html> <html lang="de"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>iptables-Regel-Generator</title> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css" rel="stylesheet"> <style> @import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@500&display=swap'); body { font-family: 'Orbitron', sans-serif; background-color: #121212; margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; min-height: 100vh; color: #E0E0E0; } .container { background: #1F1F1F; border-radius: 15px; padding: 40px; max-width: 800px; box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.4); text-align: left; } h2 { color: #00E5FF; font-size: 2rem; text-transform: uppercase; letter-spacing: 4px; text-align: center; } .form-group { margin-bottom: 20px; } label { display: block; font-size: 1.2rem; margin-bottom: 5px; color: #BBBBBB; } .hint { font-size: 0.9rem; color: #888888; margin-bottom: 8px; } .form-group input[type="text"], .form-group select, .form-group input[type="checkbox"] { padding: 12px; font-size: 1rem; border-radius: 8px; border: none; width: 100%; box-sizing: border-box; background-color: #333; color: #E0E0E0; margin-top: 5px; transition: background-color 0.3s ease; } .form-group input[type="text"]:focus { background-color: #444; outline: none; border: 2px solid #00E5FF; } .checkbox-group { display: flex; flex-direction: column; } button { background-color: #00E5FF; padding: 15px 30px; font-size: 1rem; border: none; border-radius: 8px; color: #000; cursor: pointer; text-transform: uppercase; transition: background-color 0.3s ease, transform 0.3s ease; margin-top: 20px; width: 100%; } button:hover { background-color: #00BFA5; transform: translateY(-2px); } .code-block { background-color: #1b1b1b; color: #0FF; padding: 20px; border-radius: 10px; margin-top: 30px; font-family: 'Courier New', Courier, monospace; white-space: pre; word-wrap: break-word; box-shadow: 0px 3px 15px rgba(0, 255, 255, 0.5); } .download-link { display: inline-block; margin: 20px 0; text-decoration: none; background-color: #FF4081; color: #000; padding: 15px 30px; border-radius: 8px; transition: background-color 0.3s ease, transform 0.3s ease; text-transform: uppercase; } .download-link:hover { background-color: #FF79B0; transform: translateY(-2px); } </style> </head> <body> <div class="container"> <h2><i class="fas fa-shield-alt"></i> iptables-Regel-Generator</h2> <form action="" method="POST"> <div class="form-group"> <label for="action"><i class="fas fa-play-circle"></i> Aktion:</label> <div class="hint">Wähle die Aktion, die für diese Regel ausgeführt werden soll (ACCEPT, REJECT oder DROP).</div> <select id="action" name="action" required> <option value="ACCEPT">ACCEPT</option> <option value="REJECT">REJECT</option> <option value="DROP">DROP</option> </select> </div> <div class="form-group"> <label for="protocol"><i class="fas fa-satellite-dish"></i> Protokoll:</label> <div class="hint">Wähle das Netzwerkprotokoll (TCP oder UDP).</div> <select id="protocol" name="protocol" required> <option value="tcp">TCP</option> <option value="udp">UDP</option> </select> </div> <div class="form-group"> <label for="service"><i class="fas fa-server"></i> Dienst:</label> <div class="hint">Du kannst einen bekannten Dienst wählen, der den entsprechenden Port automatisch festlegt.</div> <div class="checkbox-group"> <label><input type="checkbox" name="services[]" value="http"> HTTP (Port 80)</label> <label><input type="checkbox" name="services[]" value="https"> HTTPS (Port 443)</label> <label><input type="checkbox" name="services[]" value="ssh"> SSH (Port 22)</label> <label><input type="checkbox" name="services[]" value="ftp"> FTP (Port 21)</label> <label><input type="checkbox" name="services[]" value="smtp"> SMTP (Port 25)</label> <label><input type="checkbox" name="services[]" value="dns"> DNS (Port 53)</label> <label><input type="checkbox" name="services[]" value="pop3"> POP3 (Port 110)</label> <label><input type="checkbox" name="services[]" value="imap"> IMAP (Port 143)</label> </div> </div> <div class="form-group"> <label for="port"><i class="fas fa-network-wired"></i> Benutzerdefinierter Port (optional):</label> <div class="hint">Gib den Zielport an, falls kein Dienst gewählt wird.</div> <input type="text" id="port" name="port"> </div> <div class="form-group"> <label for="source_ip"><i class="fas fa-laptop-house"></i> Quell-IP (optional):</label> <div class="hint">Du kannst eine spezifische Quell-IP angeben, von der der Verkehr kommt.</div> <input type="text" id="source_ip" name="source_ip"> </div> <div class="form-group"> <label for="target_ip"><i class="fas fa-server"></i> Ziel-IP (optional):</label> <div class="hint">Du kannst eine spezifische Ziel-IP angeben, auf die die Regel angewendet wird.</div> <input type="text" id="target_ip" name="target_ip"> </div> <button type="submit"><i class="fas fa-cogs"></i> Regel generieren</button> </form> <?php if ($generatedIptablesConf): ?> <h3>Generierte iptables-Regel:</h3> <div class="code-block"><?php echo htmlspecialchars($generatedIptablesConf); ?></div> <a href="data:text/plain;charset=utf-8,<?php echo rawurlencode($generatedIptablesConf); ?>" download="iptables_rule.sh" class="download-link"><i class="fas fa-download"></i> Regel herunterladen</a> <?php endif; ?> </div> </body> </html>
🚀 Anwendungsszenarien
🔹 Sichere Webserver: Erlaube nur spezifische IPs für Admin-Zugänge
🔹 Private Netzwerke: Filtere ungewollte externe Verbindungen
🔹 Docker & Container-Umgebungen: Definiere Firewall-Regeln pro Container
🔹 Automatisierte Deployment-Sicherheit
📥 Download & Nutzung
💾 Download:iptables_generator.php
📌 Lizenz: Open-Source – Feel free to use & modify!
💬 Feedback oder Fragen? Lass es mich wissen!
Ein IPTables Generator! Das ist ja mal ein Ding. Manuelles Konfigurieren ist der blanke Horror. Werde ich direkt auf meinem Server testen, das spart Nerven und Zeit. Danke dir!
Fantastisches Tool, Daniel! Als jemand, der täglich mit Firewalls arbeitet, finde ich diesen iptables Generator extrem nützlich. Eine echte Arbeitserleichterung! Bin gespannt, wie du den Code weiterentwickelst.
Sehr gut gemacht! Die Visualisierung der Regeln im Generator macht es so viel einfacher, komplexe Setups zu verstehen. Ein echtes Highlight für alle, die sich mit Linux-Security beschäftigen.
Endlich mal ein Tool, das die Erstellung von Firewall-Regeln vereinfacht, ohne Kompromisse bei der Sicherheit einzugehen. Absolut empfehlenswert für alle, die ihre Server härten wollen.
Praktisch, praktisch, praktisch! Das ist genau die Art von Tool, die im Alltag fehlt. Kein langes Tippen mehr, einfach generieren und anwenden. Großartig!