GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So installieren Sie einen drahtlosen Hotspot mit Captive Page unter Linux mit CoovaChilli

Der Zweck dieses Artikels besteht darin, zu demonstrieren, wie Sie einen Linux-basierten Computer oder Laptop in einen drahtlosen Hotspot verwandeln können, an dem Benutzer über eine Captive-Portal-Seite authentifiziert werden können. Für diese Aufgabe ist CoovaChilli die primäre Controller-Software. Diese Software ist eine ideale Hotspot-Verwaltungslösung für Hotels, Restaurants, Supermärkte, Parks und alle Orte, die WiFi-Internet anbieten.

Voraussetzungen

  • Eine Linux-Distribution. In diesem Artikel werde ich Fedora 20 verwenden. Spätere Versionen 21/22 sollten gut funktionieren.
  • Entwicklungsbibliotheken für die Kompilierung von Quellpaketen benötigt.
  • Eine funktionierende MySQL-Server-Installation.
  • Ein kabelgebundenes Netzwerkgerät, das eine Verbindung zum Internet herstellt.
  • Fähigkeit, sudo-Befehle auszuführen.
  • Ein drahtloses Netzwerkgerät, das den Access Point-Modus unterstützt. Um zu sehen, ob Ihr drahtloses Gerät den AP-Modus unterstützt, führen Sie Folgendes aus:
    sudo iw phy |grep -A 5 -i 'Unterstützte Schnittstellenmodi' | grep '*'

Installieren Sie CoovaChilli-Abhängigkeiten

yum installiere libnl3-devel libtalloc-devel iptables

hostapd installieren

Mit Hostapd kann Ihr Computer als Access Point (AP) WPA/WPA2-Authentifikator fungieren. Andere Funktionalitäten umfassen Radius-Authentifizierungsdienste, obwohl wir diese hier nicht verwenden werden.

Die meisten Linux-Distributionen (einschließlich Fedora) haben vorgefertigte Versionen von hostapd und können mit der Paketverwaltungssoftware installiert werden. In Fedora, CentOS und anderen Red-Hat-basierten Linux-Distributionen installiert beispielsweise ein einfacher Befehl dieses Paket:

yum installiere hostapd

Um jedoch die neueste Version von Hostpad zu installieren, müssen wir die Quellen herunterladen und kompilieren. Das geht ganz einfach wie folgt:

cd /usr/src
sudo git clone git://w1.fi/hostap.git

Dadurch werden sowohl hostapd, der Server-Daemon, als auch wpa_supplicant-Quellen heruntergeladen. Ersteres interessiert uns, weswegen wir zu den hostapd-Quellen wechseln:

cd hostap/hostapd

Hostapd hat keinen 'configure'-Befehl, also müssen wir vor dem Kompilieren von hostapd das Installationspräfix ändern. Eine schnelle und einfache Möglichkeit, das Standardinstallationsverzeichnis zu ändern, ist die Verwendung von sed:

sed -i “s:export BINDIR ?=/usr/local/bin/:export BINDIR ?=/usr/sbin:g” Makefile

Kopieren Sie als Nächstes die Standardkonfigurationsdatei:

cp -v defconfig.config

wir müssen einige Voreinstellungen in der Konfigurationsdatei ändern:

vim.config

Kommentieren Sie die folgenden Optionen aus:

CONFIG_LIBNL32=y # libnl 3.2-Bibliotheken verwenden
CONFIG_IEEE80211N=y # Aktiviert die IEEE 802.11n-Unterstützung
CONFIG_WNM=y # Aktiviert die Netzwerkverwaltungsunterstützung
CONFIG_IEEE80211AC=y # Aktiviert die IEEE 802.11ac-Unterstützung
CONFIG_DEBUG_FILE=y # Unterstützung für das Schreiben des Debug-Protokolls in eine Datei

Führen Sie make and install:

aus
make
sudo make install

Um zu überprüfen, ob hostapd richtig installiert ist, führen Sie Folgendes aus:

hostapd -v

Der obige Befehl zeigt Ihnen die Version und die Credits

hostapd konfigurieren

Hostapd-Konfigurationsdatei mit Beispieldatei erstellen:

sudo mkdir /etc/hostapd
sudo cp -v /usr/src/hostap/hostapd/hostapd.conf /etc/hostapd/
sudo vim /etc/hostapd/hostapd.conf

Ändern Sie die folgenden Parameter in der Datei hostapd.conf:

driver=nl80211
interface=wlan0 # Ändern Sie dies auf Ihr drahtloses Gerät
ssid=KAMPALA-3 # Ändern Sie dies auf Ihre SSID
hw_mode=g
channel=6 # Geben Sie Ihren gewünschten Kanal ein
ieee80211n=1 # IEEE 802.11n aktivieren
wpa=1
wpa_passphrase=myverysecretpassword
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP

Verzeichnis für Hostapd-Sockets erstellen:

sudo mkdir /var/run/hostapd

Setzen Sie den Status der WLAN-Schnittstelle auf „UP“ und entsperren Sie WLAN, wenn der Soft-Schalter eingeschaltet ist:

sudo rfkill unblock wifi
sudo ip link set dev wlan0 up

Hostapd testen und starten:

sudo hostapd -d /etc/hostapd/hostapd.conf

Wenn alles gut geht, sollte der Hostapd-Daemon starten und nicht beendet werden.

Erstellen Sie als Nächstes eine systemd-Dienstdatei. Inzwischen verwenden die meisten Linux-Distributionen systemd, um Dienste zu steuern:

sudo vim /etc/systemd/system/hostapd.service

[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
After=dnsmasq.service

[Service]
Type=forking
PIDFile=/var/run/hostapd.pid
ExecStartPre=/bin/mkdir -p /var/run/hostapd
ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf -P /var/run/hostapd.pid -B

[Installieren]
WantedBy=multi-user.target

Aktivieren Sie den Dienst so, dass er beim Booten automatisch gestartet wird:

sudo systemctl enable hostapd.service

Freeradius

Da Clients sich vor dem Zugriff auf das Internet authentifizieren müssen, ist die Installation eines Radius-Servers erforderlich. FreeRadius ist ein Open-Source-basierter Radius-Server. Es kann auch mit Ihrem bevorzugten Linux-Paketmanager wie yum oder apt installiert werden. Aber da wir die neuste Version installieren wollen, kompilieren wir aus dem Quellcode.

Freeradius herunterladen:

cd /tmp/
wget -c ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-3.0.9.tar.bz2

Quellen entpacken und zum Installationsort wechseln:

sudo tar jxvf freeradius-server-3.0.9.tar.bz2 -C /usr/src/
cd /usr/src/freeradius-server-3.0.9

Führen Sie das Konfigurationsskript aus und stellen Sie sicher, dass Sie das richtige Präfix und den richtigen Bibliothekspfad für Ihr Setup verwenden:

sudo ./configure --prefix=/usr --libdir=/usr/lib64 --sysconfdir=/etc --localstatedir=/var/ --enable-fast-install=no

Fahren Sie mit dem Kompilieren und Installieren fort:

sudo make
sudo make install

Wenn Sie auf den folgenden Fehler stoßen

mkdir:Verzeichnis „/etc/raddb/“ kann nicht erstellt werden:Datei existiert
make:*** [/etc/raddb/] Fehler 1

Führen Sie Folgendes aus, um das Problem zu beheben:

rmdir /etc/raddb
make install &&make install

Radiusgruppe und Benutzer hinzufügen:

sudo groupadd -r radiusd
sudo useradd -r -M -c "Radius Server User" -g radiusd radiusd -s /sbin/nologin

Freeradius-MySQL-Tabellen konfigurieren

Starten Sie den MySQL-Server, falls er nicht ausgeführt wird. Wie oben erwähnt, erfolgt der Initialisierungsprozess über systemd, also:

sudo systemctl -q is-active mysqld.service || sudo systemctl mysqld.service starten

Stellen Sie sicher, dass der Dienst auch beim Booten gestartet wird:

sudo systemctl enable mysqld.service

Umkreisdatenbank erstellen:

mysqladmin -u root -p[MYSQL_ROOT_PASSWORD] Radius erstellen

Generieren Sie Datenbanktabellen mit dem MySQL-Schema:

sudo cat /etc/raddb/mods-config/sql/main/mysql/schema.sql | mysql -u root -p[MYSQL_ROOT_PASSWORD] Radius

Erstellen Sie einen MySQL-Radius-Benutzer und legen Sie Berechtigungen für die Radius-Datenbank fest:

mysql -u root -p[MYSQL_ROOT_PASSWORD] radius

GEWÄHREN SIE ALLE PRIVILEGIEN AUF radius.* an [FREERADIUS_DB_USER]@localhost IDENTIFIED by '[FREERADIUS_DB_PASS]';

Konfigurieren Sie das SQL-Radiusmodul:

sudo vim /etc/raddb/mods-available/sql

Entkommentieren Sie die folgenden Parameter und/oder ändern Sie sie:

driver ="rlm_sql_mysql"
dialect ="mysql"
server ="localhost"
port =3306
login ="FREERADIUS_DB_USER"
password ="FREERADIUS_DB_PASS "
read_clients =ja

Chilispot-SQL-Zähler hinzufügen:

sudo vim /etc/raddb/mods-available/sqlcounter

Fügen Sie diese Zeile am Ende der obigen Datei hinzu:

$INCLUDE ${modconfdir}/sql/counter/${modules.sql.dialect}/chillispot.conf

Nächster Link sql, sqlcounter zu den verfügbaren Modulen:

sudo ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/sql
sudo ln -s /etc/raddb/mods-available/sqlcounter /etc/raddb/ mods-enabled/sqlcounter

Radius-Clients konfigurieren

sudo vim /etc/raddb/clients.conf

Ändern Sie das Passwort in das oben verwendete Passwort für die FreeRadius MySQL-Datenbank:

secret =[FREERADIUS_DB_PASS]

Radiusserver konfigurieren:

sudo vim /etc/raddb/radiusd.conf

Ändern Sie im Abschnitt Sicherheit den Benutzer und die Gruppe in den Namen, der während der Installation erstellt wurde:

user =radiusd
group =radiusd
allow_vulnerable_openssl =yes
WICHTIG:Tun Sie dies nicht. Sie sollten wirklich auf die neuesten Versionen von OpenSSL aktualisieren

Fügen Sie unter dem Instantiate-Abschnitt (in der Nähe von Zeile 728) die folgenden Zählermodule hinzu:

chillispot_max_bytes
noresetcounter

Konfigurieren Sie den standardmäßigen virtuellen Server unter „sites-available:

“.
sudo vim /etc/raddb/sites-available/default

Unter Autorisierungsabschnitt:

Kommentieren Sie Folgendes:

#filter_username

Kommentieren Sie Folgendes aus:

auth_log
unix


Ändern Sie Folgendes:

'-sql' zu sql

Fügen Sie am Ende des Autorisierungsabschnitts Folgendes hinzu:

chillispot_max_bytes
noresetcounter

Entkommentieren Sie als Nächstes im Abschnitt "Buchhaltung" Folgendes:

radutmp

Ändern Sie Folgendes:

'-sql' zu sql

Entkommentieren Sie als Nächstes im Sitzungsbereich Folgendes:

radutmp
sql

Entkommentieren Sie als Nächstes im Post-Auth-Abschnitt Folgendes:

reply_log

Ändern Sie Folgendes:

'-sql' zu sql

Konfigurieren Sie den virtuellen Server für innere Tunnelanfragen unter „sites-available:

“.
sudo vim /etc/raddb/sites-available/inner-tunnel

Ändern Sie im Autorisierungsabschnitt Folgendes:

'-sql' zu sql

Fügen Sie am Ende des Autorisierungsabschnitts Folgendes hinzu:

chillispot_max_bytes
noresetcounter

Entkommentieren Sie als Nächstes im Sitzungsabschnitt Folgendes:

sql

Entkommentieren Sie als Nächstes im Post-Auth-Abschnitt Folgendes:

reply_log

Ändern Sie Folgendes:

'-sql' zu sql

Fügen Sie die folgenden MySQL-Zähler für Chillispot hinzu:

sudo vim /etc/raddb/mods-config/sql/counter/mysql/chillispot.conf

sqlcounter chillispot_max_bytes {
counter_name =Max-Total-Octets
check_name =ChilliSpot-Max-Total-Octets
reply_name =ChilliSpot-Max-Total-Octets
reply_message =" Sie haben Ihr Bandbreitenlimit erreicht"
sql_module_instance =sql
key =User-Name
reset =never
query ="SELECT IFNULL((SUM(AcctInputOctets + AcctOutputOctets))),0 ) FROM radacct WO Benutzername ='%{${key}}' UND UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime> '%%b'"
}

Eigentümerschaft von Konfigurations- und Protokollverzeichnissen ändern:

sudo touch /var/log/radius/radutmp
sudo chown -R radiusd:radiusd /etc/raddb
sudo chown -R radiusd:radiusd /var/log/radius

Erstellen Sie einen Admin-Benutzer in der Radius-MySQL-Datenbank:

echo "INSERT INTO radcheck (UserName, Attribute, Value, Op) VALUES ('[ADMIN_USER]', 'Cleartext-Password', '[ADMIN_PASSWORD]', ':=');" | mysql -u Radius -p[FREERADIUS_DB_PASS] Radius

Startradius für Initialisierungs- und Testzwecke

sudo /usr/sbin/radiusd -X

Öffnen Sie ein neues Terminalfenster, um Verbindungen zu testen:

radtest [ADMIN_USER] [ADMIN_PASSWORD] 127.0.0.1 0 [FREERADIUS_DB_PASS]

Wenn Sie eine Meldung wie diese erhalten, sind Sie mit der Einrichtung des minimalen und erforderlichen Radius für die nächsten Schritte fertig:

Access-Accept-ID 174 von 127.0.0.1:1812 bis 0.0.0.0:0 Länge 20 erhalten

Aber bevor Sie den Radius beiseite lassen, erstellen Sie eine systemd-Dienstdatei für Ihren Radius-Server:

sudo vim /etc/systemd/system/radiusd.service

[Unit]
Description=FreeRADIUS Hochleistungs-RADIUS-Server.
After=mysqld.service syslog.target network.target
[Service]
Type=forking
ExecStartPre=-/bin/mkdir /var/log/radius
ExecStartPre=-/bin/mkdir /var/run/radiusd
ExecStartPre=-/bin/chown -R radiusd.radiusd /var/ log/radius
ExecStartPre=-/bin/chown -R radiusd.radiusd /var/run/radiusd
ExecStartPre=/usr/sbin/radiusd -C
ExecStart=/usr/sbin/ radiusd -d /etc/raddb
ExecReload=/usr/sbin/radiusd -C
ExecReload=/bin/kill -HUP $MAINPID
[Installieren]
WantedBy=multi- user.target

Aktivieren Sie den Dienst so, dass er beim Booten automatisch gestartet wird:

sudo systemctl enable radiusd.service

Haserl installieren

Haserl wird für das in CoovaChilli enthaltene eingebettete Miniportal benötigt.

haserl herunterladen:

cd /tmp
wget -c http://superb-dca2.dl.sourceforge.net/project/haserl/haserl-devel/haserl-0.9.35.tar.gz

Entpacke den Tarball:

sudo tar zxvf haserl-0.9.35.tar.gz -C /usr/src/
cd /usr/src/haserl-0.9.35/

Kompilieren und installieren:

./configure --prefix=/usr –libdir=/usr/lib64

(Stellen Sie sicher, dass Sie zur richtigen Bibliothek oder zum gewünschten Präfix wechseln)

make
sudo make install

Installieren Sie CoovaChilli

CoovaChilli ist eine Open-Source-basierte Captive-Portal-Software. Es begann mit dem veralteten Chili-Projekt. Nachdem die Installation und Konfiguration von coovachilli abgeschlossen ist, können Sie Ihre WLAN-Hotspot-Clients auf eine Anmeldeseite umleiten, d. h. ein Captive-Portal, wo sie sich anmelden und auf das Internet zugreifen können.

Laden Sie die neuesten Quellen für Coovachilli herunter:

cd /usr/src
sudo git clone https://github.com/coova/coova-chilli.git

coova konfigurieren und kompilieren :

cd /usr/src/coova-chilli
sh bootstrap
./configure --prefix=/usr --libdir=/usr/lib64 --localstatedir=/var --sysconfdir=/ etc --enable-miniportal --with-openssl --enable-libjson --enable-useragent --enable-sessionstate --enable-sessionid --enable-chilliredir --enable-binstatusfile --enable-statusfile --disable- static --enable-shared --enable-largelimits --enable-proxyvsa --enable-chilliproxy --enable-chilliradsec --with-poll

(Stellen Sie sicher, dass Sie zur richtigen Bibliothek oder zum gewünschten Präfix wechseln)

make
sudo make install

CoovaChilli konfigurieren

Alle Konfigurationsdateien befinden sich unter:/etc/chilli. Sie müssen eine Konfigurationsdatei mit den Änderungen Ihrer Website wie folgt erstellen:

sudo cp -v /etc/chilli/defaults /etc/chilli/config
sudo vim /etc/chilli/config

Ändern Sie die folgenden Parameter entsprechend Ihrer Umgebung:

HS_WANIF=eth0 # WAN-Schnittstelle zum Internet
HS_LANIF=wlan0 # Teilnehmerschnittstelle für Client-Geräte
HS_NETWORK=10.1.0.0 # HotSpot-Netzwerk (muss HS_UAMLISTEN enthalten)
HS_NETMASK=255.255.255. 255.0 # HotSpot-Netzwerk-Netzmaske
HS_UAMLISTEN=10.1.0.1 # HotSpot-IP-Adresse (im Abonnentennetzwerk)
HS_RADSECRET=[FREERADIUS_DB_PASS] # Als Ihr gemeinsames RADIUS-Geheimnis festlegen
HS_UAMSECRET=[FREERADIUS_DB_PASS] # Als Ihr UAM-Geheimnis festlegen
HS_ADMUSR=[ADMIN_USER]
HS_ADMPWD=[ADMIN_PASSWORD]

Fügen Sie das Chili-Skript ipup.sh hinzu. Der Zweck dieser Skripte besteht darin, das System darauf vorzubereiten, als Router zu fungieren. Möglicherweise möchten Sie auch andere Befehle hinzufügen, z. Einstellen des Gateways.

sudo vim /etc/chilli/ipup.sh

#!/bin/sh
#
# IP-Masquerading über dieses Feld zulassen
/usr/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

WICHTIG:Ändern Sie das Internetgerät auf das richtige.

Skript ausführbar machen:

sudo chmod 755 /etc/chilli/ipup.sh

Coovachilli aktivieren, damit es beim Booten startet:

sudo systemctl enable Chili

Coovachilli starten:

sudo systemctl start chili

Testen Ihres Captive-Portals

Bevor Sie mit dem Testen beginnen, stellen Sie sicher, dass Sie zunächst lokal auf das Internet zugreifen können.


Öffnen Sie dann mit einem drahtlosen Client wie Smartphone oder Laptop Ihren bevorzugten Webbrowser. Gehen Sie zu einer beliebigen URL/Website Ihrer Wahl.

Wenn Sie die obigen Schritte befolgt haben, werden Sie wie unten gezeigt auf die Captive-Portalseite weitergeleitet:

Benutzerverwaltung

Um Benutzer hinzuzufügen, damit sie über Ihren Hotspot auf das Internet zugreifen können, führen Sie den folgenden Befehl für jeden Benutzer aus. Sie können es mit einem Skript automatisieren, wenn Sie möchten.

echo "INSERT INTO radcheck (UserName, Attribute, Value, Op) VALUES ('[LOGIN_NAME]', 'Cleartext-Password', '[LOGIN_PASSWORD]', ':=');" | mysql -u Radius -p[FREERADIUS_DB_PASS] Radius

Das war's, Leute!

Folgen Sie mir unter:@jzikusooka


Linux
  1. So installieren Sie den Nginx-Webserver unter Linux

  2. So installieren Sie Vagrant unter Linux

  3. So installieren Sie einen FTP-Server unter Rocky Linux 8 mit VSFTPD

  4. So installieren Sie Fail2ban mit Firewalld auf Rocky Linux 8

  5. So installieren Sie Elasticsearch auf Ubuntu 22.04 mit SSL

So installieren Sie LAMP Stack mit PhpMyAdmin in Arch Linux

So installieren Sie Drupal CMS in RHEL 8 Linux

So installieren Sie Joomla CMS in RHEL 8 Linux

So führen Sie einen Alias ​​mit Sudo in Linux aus

So installieren Sie den OpenLiteSpeed-Webserver auf Alma Linux 8

So installieren Sie MongoDB auf Rocky Linux 8