Úč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.confZměň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=CCMPVytvořte adresář pro sokety hostapd:
sudo mkdir /var/run/hostapdNastavte stav WiFi rozhraní na 'UP' a odblokujte Wifi, pokud je soft switch zapnutý:
sudo rfkill odblokovat wifi
sudo ip link set dev wlan0 upOtestujte a spusťte hostapd:
sudo hostapd -d /etc/hostapd/hostapd.confPokud 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.targetPovolte 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.bz2Rozbalte 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.9Spusť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=noPokračujte v kompilaci a instalaci:
sudo make
sudo make installPokud narazíte na následující chybu
mkdir:nelze vytvořit adresář ‘/etc/raddb/’:Soubor existuje
značka:*** [/etc/raddb/] Chyba 1Chcete-li to opravit, spusťte následující:
rmdir /etc/raddb
provést instalaci &&provést instalaciPř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.serviceUjistěte se, že se služba spouští i při bootování:
sudo systemctl povolit mysqld.serviceVytvořit databázi poloměrů:
mysqladmin -u root -p[MYSQL_ROOT_PASSWORD] vytvořit poloměrVygenerujte 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ěrVytvoř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/sqlOdkomentujte 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 =anoPřidejte čítače chillispot SQL:
sudo vim /etc/raddb/mods-available/sqlcounterPřidejte tento řádek na konec výše uvedeného souboru:
$INCLUDE ${modconfdir}/sql/counter/${modules.sql.dialect}/chillispot.confDalší 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/sqlcounterKonfigurace radius klientů
sudo vim /etc/raddb/clients.confZměň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.confV 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 OpenSSLDo části instance (Near line 728) přidejte následující moduly čítače:
chillispot_max_bytes
noresetcounterNakonfigurujte výchozí virtuální server v části Sites-available:
sudo vim /etc/raddb/sites-available/defaultV části autorizace:
Komentujte následující:#filter_usernameOdkomentujte následující:
auth_log
unix
Změňte následující:'-sql' na sqlNa konec části autorizace přidejte následující:
chillispot_max_bytes
noresetcounterDále v sekci účetnictví zrušte komentář u následujícího:
radutmpZměňte následující:
'-sql' na sqlDále v sekci relace odkomentujte následující:
radutmp
sqlDále v části post-auth odkomentujte následující:
reply_logZměňte následující:
'-sql' na sqlNakonfigurujte virtuální server požadavků vnitřního tunelu v části Sites-available:
sudo vim /etc/raddb/sites-available/inner-tunnelV části autorizovat změňte následující:
'-sql' na sqlNa konec části autorizace přidejte následující:
chillispot_max_bytes
noresetcounterDále v sekci relace odkomentujte následující:
sqlDále v části post-auth odkomentujte následující:
reply_logZměňte následující:
'-sql' na sqlPř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/radiusVytvoř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ěrPočáteční rádius pro účely inicializace a testování
sudo /usr/sbin/radiusd -XOtevř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.targetPovolte 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.gzRozbalte 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.gitKonfigurace 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 installNakonfigurujte 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/configZměň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 MASQUERADEDŮLEŽITÉ:Změňte internetové zařízení na správné.
Udělat skript spustitelný:
sudo chmod 755 /etc/chilli/ipup.shPovolit coovachilli, aby se spustilo při spouštění:
sudo systemctl enable chilliZač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
Jak spojit fotografie do panoramatu pomocí Hugin Panorama Creator na Linuxu Jak se připojit přes Bluetooth v GNOME na LinuxuLinux