GNU/Linux >> Znalost Linux >  >> Linux

Jak nainstalovat bezdrátový hotspot s kaptivní stránkou v systému Linux pomocí CoovaChilli

Účelem tohoto článku je demonstrovat, jak můžete počítač nebo notebook se systémem Linux proměnit v bezdrátový hotspot, kde lze uživatele ověřit prostřednictvím stránky captive portálu. Pro tento úkol bude softwarem primárního ovladače CoovaChilli. Tento software je ideálním řešením pro správu hotspotů pro hotely, restaurace, supermarkety, parky a jakékoli místo nabízející WiFi internet.

Předpoklady

  • Distribuce Linuxu. V tomto článku budu používat Fedoru 20. Pozdější verze 21/22 by měly fungovat dobře.
  • Vývojové knihovny potřebné pro kompilace zdrojových balíčků.
  • Fungující instalace serveru MySQL.
  • Drátové síťové zařízení, které se připojuje k internetu.
  • Možnost spouštět příkazy sudo.
  • Bezdrátové síťové zařízení, které podporuje režim přístupového bodu. Chcete-li zjistit, zda vaše bezdrátové zařízení podporuje režim AP, spusťte:
    sudo iw phy |grep -A 5 -i 'Podporované režimy rozhraní' | grep '*'

Instalace závislostí CoovaChilli

yum install libnl3-devel libtalloc-devel iptables

Instalovat hostapd

Hostapd umožňuje vašemu počítači fungovat jako přístupový bod (AP) WPA/WPA2 Authenticator. Mezi další funkce patří autentizační služby Radius, i když je zde nebudeme používat.

Většina distribucí Linuxu (včetně Fedory) má předem zabalené verze hostapd a lze je nainstalovat pomocí softwaru pro správu balíčků. Například ve Fedoře, CentOS a dalších linuxových distribucích založených na Red-Hat tento balíček nainstalujete jednoduchým příkazem:

yum nainstalovat hostapd

Abychom však mohli nainstalovat nejnovější verzi hostpadu, budeme si muset stáhnout a zkompilovat zdrojové kódy. To lze snadno provést následovně:

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

Tím se stáhne jak serverový démon hostapd, tak zdroje wpa_supplicant. Máme zájem o první, takže se změní na zdroje hostapd:

cd hostap/hostapd

Hostapd nemá příkaz 'configure', takže než zkompilujeme hostapd, musíme změnit předponu instalace. Rychlý a jednoduchý způsob, jak změnit výchozí instalační adresář, je pomocí sed:

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

Dále zkopírujte výchozí konfigurační soubor:

cp -v defconfig .config

budeme muset změnit některá výchozí nastavení v konfiguračním souboru:

vim .config

Odkomentujte následující možnosti:

CONFIG_LIBNL32=y # Použít knihovny libnl 3.2
CONFIG_IEEE80211N=y # Povolí podporu IEEE 802.11n
CONFIG_WNM=y # Povolí podporu správy sítě
CONFIG_AC=0.IE8021 povolí podporu<0.0021118 br />CONFIG_DEBUG_FILE=y # Podpora zápisu protokolu ladění do souboru

Spusťte make a install:

make
sudo make install

Chcete-li zkontrolovat, zda je hostapd správně nainstalován, spusťte:

hostapd -v

Výše uvedený příkaz vám ukáže verzi a titulky

Konfigurovat hostapd

Vytvořte konfigurační soubor hostapd pomocí ukázkového souboru:

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

Změňte následující parametry v souboru hostapd.conf:

driver=nl80211
interface=wlan0 # Změňte toto na své bezdrátové zařízení
ssid=KAMPALA-3 # Změňte toto na své SSID
hw_mode=g
channel=6 # Zadejte požadovaný kanál
ieee80211n=1 # Povolit IEEE 802.11n
wpa=1
wpa_passphrase=myverysecretpassword
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP

Vytvořte adresář pro sokety hostapd:

sudo mkdir /var/run/hostapd

Nastavte stav WiFi rozhraní na 'UP' a odblokujte Wifi, pokud je soft switch zapnutý:

sudo rfkill odblokovat wifi
sudo ip link set dev wlan0 up

Otestujte a spusťte hostapd:

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

Pokud vše půjde dobře, démon hostapd by se měl spustit a ne končit.

Dále vytvořte soubor služby systemd. V současné době většina distribucí Linuxu používá k ovládání služeb systemd:

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

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

[Služba]
Typ=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

[Instalovat]
WantedBy=multi-user.target

Povolte automatické spouštění služby při spuštění:

sudo systemctl enable hostapd.service

Freeradius

Protože budeme vyžadovat, aby se klienti před přístupem k internetu autentizovali, je nutná instalace radius serveru. FreeRadius je radius server založený na open source. Lze jej také nainstalovat pomocí vašeho oblíbeného správce balíčků Linuxu, jako je yum nebo apt. Ale protože chceme nainstalovat nejnovější verzi, zkompilujeme ze zdroje.

Stáhnout freeradius:

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

Rozbalte zdroje a změňte umístění instalace:

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

Spusťte konfigurační skript a ujistěte se, že používáte správnou předponu a cestu ke knihovně pro vaše nastavení:

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

Pokračujte v kompilaci a instalaci:

sudo make
sudo make install

Pokud narazíte na následující chybu

mkdir:nelze vytvořit adresář ‘/etc/raddb/’:Soubor existuje
značka:*** [/etc/raddb/] Chyba 1

Chcete-li to opravit, spusťte následující:

rmdir /etc/raddb
provést instalaci &&provést instalaci

Přidat skupinu radiusd a uživatele:

sudo groupadd -r radiusd
sudo useradd -r -M -c "Uživatel rádiusového serveru" -g radiusd radiusd -s /sbin/nologin

Konfigurovat freeradius tabulky MySQL

Spusťte MySQL server, pokud není spuštěn. Jak bylo uvedeno výše, proces inicializace probíhá přes systemd, takže:

sudo systemctl -q is-active mysqld.service || sudo systemctl spusťte mysqld.service

Ujistěte se, že se služba spouští i při bootování:

sudo systemctl povolit mysqld.service

Vytvořit databázi poloměrů:

mysqladmin -u root -p[MYSQL_ROOT_PASSWORD] vytvořit poloměr

Vygenerujte databázové tabulky pomocí schématu MySQL:

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

Vytvořte uživatele MySQL radius a nastavte oprávnění pro databázi radius:

mysql -u root -p[MYSQL_ROOT_PASSWORD] poloměr

UDĚLEJTE VŠECHNA PRIVILEGIA NA okruhu.* uživateli [FREERADIUS_DB_USER]@localhost IDENTIFIKOVÁNO '[FREERADIUS_DB_PASS]';

Nakonfigurujte modul SQL Radius:

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

Odkomentujte nebo změňte následující parametry:

driver ="rlm_sql_mysql"
dialekt =”mysql”
server ="localhost"
port =3306
login ="FREERADIUS_DB_USER"
heslo ="FREERADIUS_DB_PASS "
read_clients =ano

Přidejte čítače chillispot SQL:

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

Přidejte tento řádek na konec výše uvedeného souboru:

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

Další odkaz sql, sqlcounter na dostupné moduly:

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

Konfigurace radius klientů

sudo vim /etc/raddb/clients.conf

Změňte heslo na heslo použité výše pro databázi FreeRadius MySQL:

tajné =[FREERADIUS_DB_PASS]

Konfigurace radius serveru:

sudo vim /etc/raddb/radiusd.conf

V sekci zabezpečení změňte uživatele a skupinu na jméno vytvořené během instalace:

user =radiusd
group =radiusd
allow_vulnerable_openssl =yes
DŮLEŽITÉ:Nedělejte to. Opravdu byste měli aktualizovat na nejnovější verze OpenSSL

Do části instance (Near line 728) přidejte následující moduly čítače:

chillispot_max_bytes
noresetcounter

Nakonfigurujte výchozí virtuální server v části Sites-available:

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

V části autorizace:

Komentujte následující:

#filter_username

Odkomentujte následující:

auth_log
unix


Změňte následující:

'-sql' na sql

Na konec části autorizace přidejte následující:

chillispot_max_bytes
noresetcounter

Dále v sekci účetnictví zrušte komentář u následujícího:

radutmp

Změňte následující:

'-sql' na sql

Dále v sekci relace odkomentujte následující:

radutmp
sql

Dále v části post-auth odkomentujte následující:

reply_log

Změňte následující:

'-sql' na sql

Nakonfigurujte virtuální server požadavků vnitřního tunelu v části Sites-available:

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

V části autorizovat změňte následující:

'-sql' na sql

Na konec části autorizace přidejte následující:

chillispot_max_bytes
noresetcounter

Dále v sekci relace odkomentujte následující:

sql

Dále v části post-auth odkomentujte následující:

reply_log

Změňte následující:

'-sql' na sql

Přidejte následující čítače MySQL pro Chillispot:

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 =" Dosáhli jste limitu šířky pásma"
sql_module_instance =sql
key =Uživatelské jméno
reset =nikdy
dotaz ="SELECT IFNULL((SUM(AcctInputOctets + AcctOutputOctets)),0 ) FROM radacct WHERE uživatelské jméno ='%{${key}}' AND UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime> '%%b'"
}

Změna vlastnictví adresářů config a log:

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

Vytvořit administrátora v databázi Radius MySQL:

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

Počáteční rádius pro účely inicializace a testování

sudo /usr/sbin/radiusd -X

Otevřete nové okno terminálu a otestujte připojení:

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

Pokud obdržíte zprávu jako je tato, jste hotovi s nastavením minimálního a požadovaného okruhu pro další kroky:

Přijaté ID přístupu-přijetí 174 z 127.0.0.1:1812 na 0.0.0.0:0 délka 20

Než však ponecháte rádius stranou, vytvořte soubor služby systemd pro váš server rádius:

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

[Jednotka]
Popis=FreeRADIUS vysoce výkonný server RADIUS.
After=mysqld.service syslog.target network.target
[Služba]
Typ=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
[Instalovat]
WantedBy=multi- user.target

Povolte automatické spouštění služby při spuštění:

sudo systemctl enable radiusd.service

Instalovat Haserl

Haserl je potřebný pro vložený miniportál obsažený v CoovaChilli.

Stáhnout haserl:

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

Rozbalte tarball:

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

Kompilace a instalace:

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

(Ujistěte se, že jste změnili na správnou knihovnu nebo požadovanou předponu)

make
sudo make install

Nainstalujte CoovaChilli

CoovaChilli je open source software pro captive portál. Začalo to u zastaralého chilli projektu. Po dokončení instalace a konfigurace coovachilli budete moci přesměrovat své WiFi hotspot klienty na přihlašovací stránku, tedy captive portál, kde se mohou přihlásit a přistupovat k internetu.

Stáhněte si nejnovější zdroje pro coovachilli:

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

Konfigurace a kompilace coova :

cd /usr/src/coova-chilli
sh bootstrap
./configure --prefix=/usr --libdir=/usr/lib64 --localstatedir=/var --sysconfdir=/ atd. --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

(Ujistěte se, že jste změnili na správnou knihovnu nebo požadovanou předponu)

make
sudo make install

Nakonfigurujte CoovaChilli

Všechny konfigurační soubory jsou umístěny pod:/etc/chilli. Budete muset vytvořit konfigurační soubor s úpravami vašich stránek následovně:

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

Změňte následující parametry tak, aby odpovídaly vašemu prostředí:

HS_WANIF=eth0 # Rozhraní WAN směrem k internetu
HS_LANIF=wlan0 # Rozhraní předplatitele pro klientská zařízení
HS_NETWORK=10.1.0.0 # Síť HotSpot (musí zahrnovat HS_UAMLISTEN)
HS_NETMASK=255.255. 255.0 # Síťová maska ​​HotSpot
HS_UAMLISTEN=10.1.0.1 # IP adresa HotSpot (v předplatitelské síti)
HS_RADSECRET=[FREERADIUS_DB_PASS] # Nastaveno jako vaše sdílené tajemství RADIUS
HS_UAMSECRET_] #DBREERADIASSUS Nastavit jako vaše tajemství UAM
HS_ADMUSR=[ADMIN_USER]
HS_ADMPWD=[ADMIN_PASSWORD]

Přidejte skript chilli ipup.sh. Účelem těchto skriptů je připravit systém, aby fungoval jako router. Můžete také chtít přidat další příkazy, např. Nastavení brány.

sudo vim /etc/chilli/ipup.sh

#!/bin/sh
#
# Povolit maskování IP prostřednictvím tohoto pole
/usr/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

DŮLEŽITÉ:Změňte internetové zařízení na správné.

Udělat skript spustitelný:

sudo chmod 755 /etc/chilli/ipup.sh

Povolit coovachilli, aby se spustilo při spouštění:

sudo systemctl enable chilli

Začněte coovachilli:

sudo systemctl start chilli

Testování vašeho captive portálu

Než začnete s testováním, ujistěte se, že máte nejprve místně přístup k internetu.


Potom pomocí bezdrátového klienta, jako je smartphone nebo notebook, otevřete svůj oblíbený webový prohlížeč. Přejděte na libovolnou adresu URL/webovou stránku dle vašeho výběru.

Pokud jste postupovali podle výše uvedených kroků, budete přesměrováni na stránku captive portálu, jak je uvedeno níže:

Správa uživatelů

Chcete-li přidat uživatele, aby měli přístup k internetu pomocí vašeho hotspotu, spusťte pro každého uživatele následující příkaz. Pokud chcete, můžete jej zautomatizovat pomocí skriptu.

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

To je ono, lidi!

Sledujte mě na:@jzikusooka


Linux
  1. Jak nainstalovat webový server Nginx na Linux

  2. Jak nainstalovat Vagrant v Linuxu

  3. Jak nainstalovat FTP server na Rocky Linux 8 s VSFTPD

  1. Jak nainstalovat Fail2ban s Firewalld na Rocky Linux 8

  2. Jak nainstalovat Elasticsearch na Ubuntu 22.04 s SSL

  3. Jak nainstalovat modul pro všechny uživatele s pip na linux?

  1. Jak nainstalovat MX Linux 21 krok za krokem pomocí snímků obrazovky

  2. Jak nainstalovat Apache SVN na Linux Mint 19 / Linux Mint 18

  3. Jak nainstalovat phpMyAdmin s Nginx na Linux Mint 19 / Linux Mint 18