Heute zeigen wir Ihnen, wie Sie IP-Adressen mit iptables blockieren. Im folgenden Artikel fügen wir dem Firewall-Skript eine Blacklist hinzu, die es Ihnen ermöglicht, missbräuchliche IP-Adressen oder IP-Bereiche in Ihrem Debian zu blockieren oder Ubuntu basierter virtueller Server. Iptables ist ein Userspace-Anwendungsprogramm, das es einem Systemadministrator ermöglicht, die Tabellen zu konfigurieren, die von der Linux-Kernel-Firewall bereitgestellt werden (als verschiedene Netfilter-Module implementiert ) und die darin gespeicherten Ketten und Regeln. Das Blockieren einer IP-Adresse mit iptables ist ziemlich einfach und sollte nicht länger als 5 Minuten dauern.
Bevor Sie fortfahren, lesen Sie unbedingt das Tutorial zum Sichern/Entwerfen der Firewall in Ihrem Linux-VPS. Dazu gehören:
- Löschen der alten Firewall-Regeln
- Service-Ports bestimmen
- Standardrichtlinien einrichten
- Einrichten Ihrer Firewall-Regeln
- Speichern Ihrer Firewall-Regeln
IP mit iptables blockieren
Um einige missbräuchliche IP-Adressen oder IP-Bereiche zu blockieren, können Sie die folgenden iptables
verwenden Regeln:
## iptables -I INPUT -s 1.2.3.4 -j DROP ## iptables -I INPUT -s 1.2.0.0/16 -j DROP
Erstellen der Blacklist in iptables
Für eine bessere Lesbarkeit und Wartung ist es eine gute Idee, alle missbräuchlichen IPs in einer bestimmten Datei zu haben, zum Beispiel /etc/blacklist.ips
. Auf diese Weise können Sie die IP-Adressen oder Subnetze in dieser Datei hinzufügen (eine IP oder ein Subnetz pro Zeile ) und verwende die fwall-rules
Skript unten, um alles zu blockieren, was in dieser Datei aufgeführt ist.
Erstellen oder bearbeiten Sie also /usr/local/bin/fwall-rules
und machen Sie es wie folgt:
#!/bin/bash # # iptables firewall script # https://www.rosehosting.com # IPTABLES=/sbin/iptables BLACKLIST=/etc/blacklist.ips echo " * flushing old rules" ${IPTABLES} --flush ${IPTABLES} --delete-chain ${IPTABLES} --table nat --flush ${IPTABLES} --table nat --delete-chain echo " * setting default policies" ${IPTABLES} -P INPUT DROP ${IPTABLES} -P FORWARD DROP ${IPTABLES} -P OUTPUT ACCEPT echo " * allowing loopback devices" ${IPTABLES} -A INPUT -i lo -j ACCEPT ${IPTABLES} -A OUTPUT -o lo -j ACCEPT ${IPTABLES} -A INPUT -p tcp ! --syn -m state --state NEW -j DROP ${IPTABLES} -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ## BLOCK ABUSING IPs HERE ## #echo " * BLACKLIST" #${IPTABLES} -A INPUT -s _ABUSIVE_IP_ -j DROP #${IPTABLES} -A INPUT -s _ABUSIVE_IP2_ -j DROP echo " * allowing ssh on port 5622" ${IPTABLES} -A INPUT -p tcp --dport 5622 -m state --state NEW -j ACCEPT echo " * allowing ftp on port 21" ${IPTABLES} -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT echo " * allowing dns on port 53 udp" ${IPTABLES} -A INPUT -p udp -m udp --dport 53 -j ACCEPT echo " * allowing dns on port 53 tcp" ${IPTABLES} -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT echo " * allowing http on port 80" ${IPTABLES} -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT echo " * allowing https on port 443" ${IPTABLES} -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT echo " * allowing smtp on port 25" ${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT echo " * allowing submission on port 587" ${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT echo " * allowing imaps on port 993" ${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 993 -j ACCEPT echo " * allowing pop3s on port 995" ${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 995 -j ACCEPT echo " * allowing imap on port 143" ${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 143 -j ACCEPT echo " * allowing pop3 on port 110" ${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT echo " * allowing ping responses" ${IPTABLES} -A INPUT -p ICMP --icmp-type 8 -j ACCEPT # DROP everything else and Log it ${IPTABLES} -A INPUT -j LOG ${IPTABLES} -A INPUT -j DROP # # Block abusing IPs # from ${BLACKLIST} # if [[ -f "${BLACKLIST}" ]] && [[ -s "${BLACKLIST}" ]]; then echo " * BLOCKING ABUSIVE IPs" while read IP; do ${IPTABLES} -I INPUT -s "${IP}" -j DROP done < <(cat "${BLACKLIST}") fi # # Save settings # echo " * SAVING RULES" if [[ -d /etc/network/if-pre-up.d ]]; then if [[ ! -f /etc/network/if-pre-up.d/iptables ]]; then echo -e "#!/bin/bash" > /etc/network/if-pre-up.d/iptables echo -e "test -e /etc/iptables.rules && iptables-restore -c /etc/iptables.rules" >> /etc/network/if-pre-up.d/iptables chmod +x /etc/network/if-pre-up.d/iptables fi fi iptables-save > /etc/fwall.rules iptables-restore -c /etc/fwall.rules
Stellen Sie sicher, dass das Skript ausführbar ist, indem Sie ihm ein „x“-Bit hinzufügen:
## chmod +x /usr/local/bin/fwall-rules
Anwendung der Regeln
Um die Firewall-Regeln anzuwenden und die Missbraucher zu blockieren, müssen Sie nur die fwall-rules
ausführen Skript und das war's.
## fwall-rules * flushing old rules * setting default policies * allowing loopback devices * allowing ssh on port 5622 * allowing ftp on port 21 * allowing dns on port 53 udp * allowing dns on port 53 tcp * allowing http on port 80 * allowing https on port 443 * allowing smtp on port 25 * allowing submission on port 587 * allowing imaps on port 993 * allowing pop3s on port 995 * allowing imap on port 143 * allowing pop3 on port 110 * allowing ping responses * BLOCKING ABUSIVE IPs * SAVING RULES
Natürlich müssen Sie IP-Adressen nicht mit iptables blockieren, wenn Sie einen unserer Linux-VPS-Hosting-Dienste verwenden. In diesem Fall können Sie einfach unsere erfahrenen Linux-Administratoren bitten, jede IP-Adresse für Sie zu blockieren. Sie sind rund um die Uhr erreichbar und kümmern sich umgehend um Ihr Anliegen.
PS. Wenn Ihnen dieser Beitrag zum Blockieren von IP-Adressen mit iptables gefallen hat, teilen Sie ihn bitte mit Ihren Freunden in den sozialen Netzwerken über die Schaltflächen auf der linken Seite oder hinterlassen Sie einfach unten eine Antwort. Danke.