Alle Beiträge von Don Matteo

lebt in der Schweiz, ist System Engineer MCP bei A-Enterprise GmbH. Mitglied des UNBLOG Knowledge Network. Author und Blogger zu den Themen, Tutorials für Linux und Open Source.

Unifi UAP Device adoption

Ubiquiti UAP Geräteadoption mit UniFi-Netzwerkanwendung und SSH Terminal

Bei der Geräte adoption wird ein UniFi-Gerät mit der UniFi-Netzwerkanwendung, dem UniFi Controller verbunden, um die Geräte verwalten zu können.

In diesem Beitrag wird erläutert, wie die Geräte adoption funktioniert, wie Geräte in die UniFi-Netzwerkanwendung übernommen werden und wie auftretende Probleme behoben werden können.

Die UniFi-Netzwerkanwendung scannt und zeigt alle Geräte, diese vom UniFi-Controller verwaltet werden, angezeigt durch eine statische weiße LED. Dies bedeutet, dass das Gerät zur Erkennung und Annahme (adoption) verfügbar ist.

Ist die Annahme für ein Gerät nicht mehr möglich, weil der UniFi-Controller die Annahme verweigert (Reject), beispielsweise nach einer fehlgeschlagenen Provisionierung, muss als erstes das nicht mehr verbundene Geräte aus dem UniFi-Controller entfernt werden, mit Klick auf den Forget Button.

UniFi Device Disconnected klick Forget

Manuell set-inform in SSH Terminal

Dazu eine SSH Verbindung zum Gerät herstellen, beispielsweise aus PuTTY oder unter Linux mit SSH zum UAP Access Point.

SSH Terminal zu UniFi UAP mit PuTTY öffnen

BusyBox v1.25.1 () built-in shell (ash)


  ___ ___      .__________.__
 |   |   |____ |__\_  ____/__|
 |   |   /    \|  ||  __) |  |   (c) 2010-2020
 |   |  |   |  \  ||  \   |  |   Ubiquiti Networks, Inc.
 |______|___|  /__||__/   |__|
            |_/                  https://www.ui.com/

      Welcome to UniFi UAP-AC-LR!

APBern-BZ.v4.3.28# info

Model:       UAP-AC-LR
Version:     4.3.28.11361
MAC Address: 18:e8:29:c0:b0:d6
IP Address:  192.168.1.20
Hostname:    APBern
Uptime:      104426 seconds

Status:      Server Reject (http://192.168.2.17:8080/inform)
APBern-BZ.v4.3.28#

Wird der Status des UAP mit Server Reject ausgegeben, muss der UAP zurückgesetzt werden, mit folgender Zeile aus dem SSH Terminal.

sudo syswrapper.sh restore-defaul

Bei der Zurücksetzung wird der UAP neu gestartet, nach ungefähr 2 Minuten ist das Gerät wieder erreichbar, möglicherweise jetzt unter einer anderen IP-Adresse.

Das Gerät befindet sich nun im Status – Ausstehende Annahme (statische weiße LED), das Geräte kann jetzt von der UniFi-Controller Anwendung übernommen werden.

Nun erneut ein SSH Terminal öffnen und die Kommandozeilen ausführen, der Befehl set-inform muss dabei mehrmals ausgeführt werden. Nach der Zurücksetzung ist die Anmeldung ubnt/ubnt oder root/ubnt. Der UniFi-Controller wird hier auf dem Server 192.168.2.17 ausgeführt, kann aber auch mit einem UniFi Cloud-Key gehen.

set-inform http://192.168.2.17:8080/inform
set-inform

Nach etwa 2 Minuten steht das Gerät bereit zur adoption, in der UniFi Controller Anwendung auf Adopt klicken. Nach weiteren 2 Minuten ist das Gerät angenommen und wurde provisioniert. Die Gerätestatus-LED leuchtet jetzt dauerhaft blau.

Fehlerbehebung bei häufig auftretenden Problemen bei der Geräteadoption

Wenn die Gerätestatus-LED nicht leuchtet, prüfe ob das Gerät mit Strom versorgt wird. Überprüfe das PoE- und Ethernet-Kabel. Wenn das Gerät mit Strom versorgt wird, wird es möglicherweise von einem anderen UniFi-Controller verwaltet.

Wenn die Gerätestatus-LED dauerhaft blau leuchtet, bedeutet dies, dass das Gerät entweder bereits von einer UniFi-Netzwerkanwendung übernommen wurde und jetzt keine Verbindung mehr herstellen kann, oder dass das Gerät von einer anderen UniFi-Netzwerkanwendung verwaltet wird, die die Erkennung des Geräts verhindert.

Ein Reset kann am UniFi-Gerät neben dem RJ-45 LAN Anschluss ausgelöst werden, in dem mit einem Stift oder mithilfe einer aufgebogenen Büroklammer für min. 5 Sekunden die Reset Taste gedrückt hält, die Gerätestatus-LED beginnt zu blinken.

Zusätzliche IP-Adresse bei Windows

Wenn das Gerät die IP-Adresse 192.168.1.20 hat, und nicht von DHCP bezogen wurde, bedeutet es dass das Gerät vom UniFi-Controller zurückgewiesen wurde (Reject), und die Provisionierung nicht mehr funktioniert. Um nun das Gerät über SSH-Terminal erreichen zu können, muss beim Client Computer eine zweite IP-Adresse zugewiesen werden, da man möglicherweise ein anderes Subnet verwendet, dazu kann unter Windows wie folgt vorgegangen werden, mit drücken der Tasten, Win+R für ausführen.

In das Feld öffnen ncpa.cpl eingeben und OK klicken.

Das Fenster Netzwerkverbindungen wird geöffnet, über dem aktiven Netzwerkadapter mit Rechtsklick auf Eigenschaften gehen.

Die Zeile Internetprotokoll Version 4 (TCP/IPv4) markieren und auf Eigenschaften klicken.

Im Abschnitt Alternative Konfiguration eine IP-Adresse eintragen, zB. 192.168.1.2 und die Subnetmaske 255.255.255.0. Die Eingabe mit Klick auf OK bestätigen, um die alternative IP-Adresse zu aktivieren.

Zweite IP-Adresse unter Linux

Unter Linux kann eine zweite IP-Adresse temporär zum Netzwerk Interface als Root zugewiesen werden.

$ ifconfig eth0:0 192.168.1.2 netmask 255.255.255.0 up

Bei modernen Linux Distributionen wie Debian 10 (buster) oder CentOS 7 und neuer, ist es diese Kommandozeile.

$ ip address add 192.168.1.2/24 dev eth0

In macOS Terminal zweite IP-Adresse zu Interface en0 hinzufügen.

$ sudo ifconfig en0 inet 192.168.1.2 netmask 255.255.255.0

Das Gerät kann nun mit Ping überprüft werden und über SSH-Terminal zu 192.168.1.20 verbunden werden.

$ ssh ubnt@192.168.1.20

Bei Linux ist SSH built in und kann direkt aus der Shell verwendet werden. Nachdem die SSH-Verbindung zum Gerät hergestellt wurde, wird das oben beschriebene Verfahren ausgeführt.

Wird ein UniFi AP nach mehreren versuchen mit Adopt nicht angenommen, hilft beim Host auf diesem der UniFi-Controller läuft, das zuweisen einer alternativen IP-Adresse zB. 192.168.1.100. Der UAP der keine IP vom DHCP bezieht, kann so vom UniFi-Controller erreicht werden, um eine Provisionierung anstossen zu können, da der UAP nach dem zurücksetzten über die IP-Adresse 192.168.1.20 vom Controller erreichbar wird. Nach der erfolgreichen Provisionierung ist der UAP wieder im ursprünglichen Subnet.

Zeigt der UniFi-Controller den UAP Status MANAGED BY OTHER, kann mit Klick auf + die Option ADVANCED ADOPT helfen.

Firewall-cmd Firewalld: 5 Tipps für Linux Host-Schutz

Blockiere Brute-Force Angriffe mithilfe von firewall-cmd (firewalld) für den Linux Host-Schutz. Ein bash-Skript, das eine IP-Adresse mit firewall-cmd (firewalld) sperrt, und es ermöglicht eine IP-Adresse durch firewall-cmd (firewalld) entfernen.

Firewall Daemon („firewalld“) für den Schutz vor laufenden Brute-Force Attacken, bei der Erkennung versuchter Angriffe auf ein Linux Host. Blockiere verdächtige Quellen schnell. Das folgende bash Script sperrt die IP, diese als Argument übergeben wird und von firewall-cmd auf reject gesetzt wird.

#!/bin/bash
# permanently reject or remove suspicious sources by kernel firewall
# dependency: firewalld (fail2ban optional)
if [[ $1 == "add" && $2 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
   echo "$2 add to reject"
   firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="'$2'" reject'

elif [[ $1 == "remove" && $2 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
   echo "$2 being to remove"
   firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="'$2'" reject'

 elif [[ $1 == "add6" && $2 =~ ^[A-Za-z0-9]{1,4}\:[A-Za-z0-9]{1,4}\: ]]; then
    echo "$2 add to reject"
    firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv6" source address="'$2'" reject'

  elif [[ $1 == "remove6" && $2 =~ ^[A-Za-z0-9]{1,4}\:[A-Za-z0-9]{1,4}\: ]]; then
    echo "$2 being to remove"
    firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv6" source address="'$2'" reject'

  else
    echo "Usage: fw add|remove [source IPv4]"
    echo "       fw add6|remove6 [source IPv6]"
    exit 0
fi
firewall-cmd --reload
sleep 1
if [[ -f /run/fail2ban/fail2ban.pid ]]; then
  systemctl restart fail2ban
else
  echo "fail2ban not running"
fi
sleep 2
firewall-cmd --list-all

Das Script wurde auf Debian 10 (buster) geschrieben, bei Debian muss firewalld erst installiert werden, wie auch unter Ubuntu 20. Bei RHEL und CentOS Linux 7 und höher wie auch bei Fedora ist firewalld im Standard und das Script ist gleich anwendbar.

Speichere die Skriptzeilen in eine Datei, beispielsweise als fw und mache sie ausführbar, dann führe das Skript aus, um eine IP-Adresse mit add zu blockieren.

$ chmod u+x fw
./fw add 192.168.89.56

Mit remove kann die IP Adresse wieder aus der Kette entfernt werden.

Firewalld Installation auf Debian

Das firewalld-Paket ist in den offiziellen Debian Repositorys verfügbar. Die Installation ist unschwer wie folgender Ablauf zeigt.

$ sudo apt update
$ sudo apt -y install firewalld

Firewalld Bereitstellung

Bereitstellung von Firewalld im Terminal als root.

$ sudo ufw disable

Wenn ufw aktiviert ist, muss die Uncomplicated Firewall (ufw) zur Verwaltung der Netfilter deaktiviert werden, um firewalld zur Standard-Firewall zu machen.

$ sudo systemctl enable firewalld
$ sudo systemctl start firewalld

Den Firewall daemon starten und für den Systemstart aktivieren.

$ sudo firewall-cmd --state
running

Ausführung und Erreichbarkeit überprüfen.

$ sudo firewall-cmd --reload

Laden der neuen Firewall-Regeln unter beibehalten des Status.

Es erscheint bei Debian nach firewall-cmd --reload der Fehler:

Error: COMMAND_FAILED: ‚/usr/sbin/ip6tables-restore -w -n‘ failed: ip6tables-restore v1.8.2 (nf_tables:
line 4: RULE_REPLACE failed (no such file or directory): rule in chain OUTPUT

Die Lösung ist das Ausführen von update-alternatives, um die Verlinkung für iptables und ip6tables anstelle von nftables zu verwenden.

$ sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
$ sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

Nach dem wechsel von nftables zu iptables den Linux Rechner mit reboot neu starten.

Firewalld Konfiguration

Firewalld ist eine Firewall-Verwaltungslösung als Frontend für das vom Linux-Kernel bereitgestellte iptables-Paketfiltersystem. firewall-cmd ist das Dienstprogramm zum Verwalten der Firewall-Konfiguration. Der firewalld Daemon verwaltet Gruppen von Regeln mithilfe von Entitäten, die als „Zonen“ bezeichnet werden. Zonen sind wie Regelsätze, die festlegen, welcher Datenverkehr zugelassen werden soll, anhand des Vertrauen der Netzwerke, mit denen der Computer verbunden ist. Den Netzwerkschnittstellen wird eine Zone zugewiesen, um das Verhalten festzulegen, das die Firewall zulassen soll.

Firewalld Zonen und Interfaces

Ein Netzwerk Interface zur Default Zone public zuweisen, unter Verwendung des firewall-cmd Tools, mit dem Befehl zur Überprüfung von Zonen und Interfaces.

$ sudo firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dhcpv6-client https ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
        rule family="ipv4" source address="10.10.10.1" reject

Erscheint bei interfaces keine Netzwerk Schnittstelle, muss dieses der Zone noch zugeweisen werden, dazu mit ip oder ifconfig (net-tools) die Schnittstellen abfragen.

$ ip link
$ ip addr
$ ifconfig

Hier bei einem virtuellen Debian (buster) ist es Link 2 ens33.

Das Interface ens33 wird zur Default Zone public zugewiesen.

$ sudo firewall-cmd --zone=public --change-interface=ens33

Das zur Zone zugewiesene Interface überprüfen mit der Ausgabe.

$ firewall-cmd --get-active-zones
public
  interfaces: ens33
$ sudo firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: dhcpv6-client https ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
        rule family="ipv4" source address="10.10.10.1" reject

Das Interface ens33 ist nun mit der Zone verbunden.

Fail2ban und Firewalld Interaktion

Fail2ban (Fehlschlag führt zum Bann) ist ein in Python entwickeltes IPS und Framework zur Vorbeugung gegen Einbrüche, das für alle Unixoide OS verfügbar ist, die ein manipulierbares Paketfiltersystem oder eine Firewall besitzen wie iptables oder firewalld.

Beim Script (oben), wird falls vorhanden und ausgeführt, die von Fail2ban verbannten (banned) Adressen nach der manipulation von firewalld, von fail2ban wieder hergestellt.

firewall-cmd add | remove source addr

Mit firewall-cmd verdächtige Anfragen durch die Firewall ablehnen.

$ sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.10.10.1" reject'

Die abgelehnte IP-Adresse wird wie folgt wieder entfernt.

$ sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="10.10.10.1" reject'

Jede änderung muss mit firewall-cmd –reload aktiviert werden.

$ sudo firewall-cmd --reload

Anwendung und Hilfe zu firewall-cmd

$ sudo firewall-cmd --zone=public --list-all

Ausgabe der geänderten und aktivierten Regel der Zone Public.

$ sudo firewall-cmd --list-all

Aktuelle Firewall Regeln überprüfen mit iptables.

$ sudo iptables -vxnL

Standardzone für Verbindungen und Schnittstellen ausgeben.

$ firewall-cmd --get-default-zone

Eine Zone zur Defaultzone festlegen.

$ sudo firewall-cmd --set-default-zone=zone_name

Derzeit aktive Zonen ausgeben.

$ firewall-cmd --get-active-zones

Vordefinierte Zonen ausgeben.

$ firewall-cmd --get-zones

Hilfe und man page von firewall-cmd ausgeben.

$ firewall-cmd --help
$ man firewall-cmd