GNU/Linux >> Belajar Linux >  >> Linux

Cara menginstal hotspot nirkabel dengan halaman captive di Linux menggunakan CoovaChilli

Tujuan artikel ini adalah untuk mendemonstrasikan bagaimana Anda dapat mengubah komputer atau laptop berbasis Linux menjadi hotspot nirkabel di mana pengguna dapat diautentikasi melalui halaman captive portal. Untuk tugas ini, perangkat lunak pengontrol utama adalah CoovaChilli. Perangkat lunak ini adalah solusi manajemen hotspot yang ideal untuk hotel, restoran, supermarket, taman, dan tempat mana pun yang menawarkan Internet WiFi.

Prasyarat

  • Distribusi Linux. Dalam artikel ini, saya akan menggunakan Fedora 20. Versi 21/22 yang lebih baru akan berfungsi dengan baik.
  • Library pengembangan yang diperlukan untuk kompilasi paket sumber.
  • Instalasi server MySQL yang berfungsi.
  • Perangkat jaringan kabel yang terhubung ke Internet.
  • Kemampuan untuk menjalankan perintah sudo.
  • Perangkat jaringan nirkabel yang mendukung mode Titik Akses. Untuk melihat apakah perangkat nirkabel Anda mendukung mode AP jalankan:
    sudo iw phy |grep -A 5 -i 'Mode antarmuka yang didukung' | grep '*'

Instal dependensi CoovaChilli

yum install libnl3-devel libtalloc-devel iptables

Instal hostapd

Hostapd memungkinkan komputer Anda berfungsi sebagai Access Point (AP) WPA/WPA2 Authenticator. Fungsionalitas lainnya termasuk layanan autentikasi Radius, meskipun kami tidak akan menggunakannya di sini.

Sebagian besar distribusi Linux (termasuk Fedora) memiliki versi pra-paket dari hostapd dan dapat diinstal menggunakan perangkat lunak manajemen paket te. Misalnya di Fedora, CentOS dan distro Linux berbasis Red-Hat lainnya, perintah sederhana akan menginstal paket ini:

yum install hostapd

Namun, untuk menginstal hostpad versi terbaru, kita perlu mengunduh dan mengkompilasi sumbernya. Ini dapat dilakukan dengan mudah sebagai berikut:

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

Ini akan mengunduh hostapd server daemon, dan sumber wpa_supplicant. Kami tertarik pada yang pertama, jadi akan berubah ke sumber hostapd:

cd hostap/hostapd

Hostapd tidak memiliki perintah 'configure', jadi sebelum kita mengkompilasi hostapd, kita perlu mengubah awalan install. Cara cepat dan sederhana untuk mengubah direktori instal default adalah dengan menggunakan sed:

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

Selanjutnya, salin file konfigurasi default:

cp -v defconfig .config

kita perlu mengubah beberapa default di file konfigurasi:

vim .config

Batalkan komentar pada opsi berikut:

CONFIG_LIBNL32=y # Gunakan perpustakaan libnl 3.2
CONFIG_IEEE80211N=y # Mengaktifkan dukungan IEEE 802.11n
CONFIG_WNM=y # Mengaktifkan dukungan Manajemen Jaringan
CONFIG_IEEE80211AC=y # Mengaktifkan dukungan IEEE 802.11ac
CONFIG_DEBUG_FILE=y # Dukungan untuk menulis log debug ke file

Jalankan make dan install:

make
sudo make install

Untuk memeriksa apakah hostapd terinstal dengan benar, jalankan:

hostapd -v

Perintah di atas akan menampilkan versi dan kredit

Konfigurasikan hostapd

Buat file konfigurasi hostapd menggunakan file contoh:

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

Ubah parameter berikut di file hostapd.conf:

driver=nl80211
interface=wlan0 # Ubah ini ke perangkat nirkabel Anda
ssid=KAMPALA-3 # Ubah ini ke SSID Anda
hw_mode=g
channel=6 # Masukkan saluran yang Anda inginkan
ieee80211n=1 # Aktifkan IEEE 802.11n
wpa=1
wpa_passphrase=myverysecretpassword
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP

Buat direktori untuk soket hostapd:

sudo mkdir /var/run/hostapd

Setel status antarmuka WiFi ke 'UP' dan buka blokir Wifi jika sakelar lunak aktif:

sudo rfkill buka blokir wifi
sudo ip link set dev wlan0 up

Uji dan mulai hostapd:

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

Jika semuanya berjalan dengan baik, daemon hostapd akan mulai dan tidak berhenti.

Selanjutnya, buat file layanan systemd. Saat ini, sebagian besar distribusi Linux menggunakan systemd untuk mengontrol layanan:

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

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

[Layanan]
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

[Instal]
WantedBy=multi-user.target

Aktifkan layanan untuk memulai secara otomatis saat boot:

sudo systemctl aktifkan hostapd.service

Radius bebas

Karena kami akan meminta klien untuk mengautentikasi sebelum mengakses Internet, instalasi server radius diperlukan. FreeRadius adalah server radius berbasis open source. Itu juga dapat diinstal menggunakan manajer paket Linux favorit Anda seperti yum atau apt. Namun karena kami ingin memasang versi terbaru, kami akan mengompilasinya dari sumber.

Unduh freeradius:

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

Buka paket sumber dan ubah ke lokasi pemasangan:

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

Jalankan skrip konfigurasi untuk memastikan bahwa Anda menggunakan awalan dan jalur pustaka yang benar untuk penyiapan Anda:

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

Lanjutkan untuk mengkompilasi dan menginstal:

sudo make
sudo make install

Jika Anda mengalami kesalahan berikut

mkdir:tidak dapat membuat direktori ‘/etc/raddb/’:File ada
buat:*** [/etc/raddb/] Kesalahan 1

Jalankan yang berikut ini, untuk memperbaikinya:

rmdir /etc/raddb
make install &&make install

Tambahkan grup dan pengguna radiusd:

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

Konfigurasikan tabel MySQL freeradius

Mulai server MySQL jika tidak berjalan. Seperti disebutkan di atas, proses inisialisasi melalui systemd, jadi:

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

Pastikan layanan dimulai bahkan saat boot:

sudo systemctl aktifkan mysqld.service

Buat basis data radius:

mysqladmin -u root -p[MYSQL_ROOT_PASSWORD] buat radius

Buat tabel database menggunakan skema MySQL:

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

Buat pengguna radius MySQL dan atur hak istimewa pada basis data radius:

mysql -u root -p[MYSQL_ROOT_PASSWORD] radius

GRANT ALL PRIVILEGES ON radius.* to [FREERADIUS_DB_USER]@localhost IDENTIFIED by '[FREERADIUS_DB_PASS]';

Konfigurasi modul radius SQL:

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

Batalkan komentar dan atau ubah parameter berikut:

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

Tambahkan penghitung SQL chillspot:

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

Tambahkan baris ini di akhir file di atas:

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

Tautan berikutnya sql, sqlcounter ke modul yang tersedia:

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

Konfigurasikan klien radius

sudo vim /etc/raddb/clients.conf

Ubah sandi menjadi sandi yang digunakan di atas untuk database MySQL FreeRadius:

rahasia =[FREERADIUS_DB_PASS]

Konfigurasikan server radius:

sudo vim /etc/raddb/radiusd.conf

Di bawah bagian keamanan, ubah pengguna dan grup menjadi nama yang dibuat saat penginstalan:

user =radiusd
group =radiusd
allow_vulnerable_openssl =yes
PENTING:Jangan lakukan ini. Anda benar-benar harus memperbarui ke versi OpenSSL terbaru

Di bawah bagian instantiate (Dekat baris 728), tambahkan modul penghitung berikut:

chillispot_max_bytes
noresetcounter

Konfigurasikan server virtual default di bawah situs-tersedia:

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

Di bawah bagian otorisasi:

Komentar berikut ini:

#filter_namapengguna

Batalkan komentar berikut:

auth_log
unix


Ubah berikut ini:

'-sql' ke sql

Tambahkan berikut ini di akhir bagian otorisasi:

chillispot_max_bytes
noresetcounter

Selanjutnya di bawah bagian akuntansi, Batalkan komentar berikut:

radutmp

Ubah berikut ini:

'-sql' ke sql

Selanjutnya di bawah bagian sesi, Batalkan komentar berikut:

radutmp
sql

Selanjutnya di bawah bagian post-auth, Batalkan komentar berikut:

reply_log

Ubah berikut ini:

'-sql' ke sql

Konfigurasikan permintaan terowongan dalam server virtual di bawah situs-tersedia:

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

Di bawah bagian otorisasi, ubah yang berikut:

'-sql' ke sql

Tambahkan berikut ini di akhir bagian otorisasi:

chillispot_max_bytes
noresetcounter

Selanjutnya di bawah bagian sesi, Batalkan komentar berikut:

sql

Selanjutnya di bawah bagian post-auth, Batalkan komentar berikut:

reply_log

Ubah berikut ini:

'-sql' ke sql

Tambahkan penghitung MySQL berikut untuk Chillispot:

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

sqlcounter chilispot_max_bytes {
counter_name =Max-Total-Octets
check_name =ChilliSpot-Max-Total-Octets
reply_name =ChilliSpot-Max-Total-Octets
reply_message =" Anda telah mencapai batas bandwidth"
sql_module_instance =sql
key =User-Name
reset =never
query ="SELECT IFNULL((SUM(AcctInputOctets + AcctOutputOctets)),0 ) FROM radacct WHERE username ='%{${key}}' AND UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime> '%%b'"
}

Ubah kepemilikan direktori konfigurasi dan log:

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

Buat Pengguna Admin dalam radius database MySQL:

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

Mulai radius untuk tujuan inisialisasi dan pengujian

sudo /usr/sbin/radiusd -X

Buka jendela terminal baru untuk menguji koneksi:

tes awal [ADMIN_USER] [ADMIN_PASSWORD] 127.0.0.1 0 [FREERADIUS_DB_PASS]

Jika Anda mendapatkan pesan seperti ini, berarti Anda telah menyelesaikan penyiapan radius minimal dan yang diperlukan untuk langkah selanjutnya:

Menerima Access-Accept Id 174 dari 127.0.0.1:1812 hingga 0.0.0.0:0 panjangnya 20

Tetapi sebelum mengesampingkan radius, buat file layanan systemd untuk server radius Anda:

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

[Unit]
Description=FreeRADIUS server RADIUS performa tinggi.
After=mysqld.service syslog.target network.target
[Layanan]
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
[Instal]
WantedBy=multi- pengguna.target

Aktifkan layanan untuk memulai secara otomatis saat boot:

sudo systemctl aktifkan radiusd.service

Instal Haserl

Haserl diperlukan untuk miniportal tertanam yang disertakan dalam CoovaChilli.

Unduh haserl:

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

Kemas tarball:

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

Kompilasi dan instal:

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

(Pastikan Anda mengubah pustaka yang benar atau awalan yang diinginkan)

make
sudo make install

Instal CoovaChilli

CoovaChilli adalah perangkat lunak portal tawanan berbasis sumber terbuka. Ini dimulai dari proyek cabai yang sudah usang. Setelah instalasi dan konfigurasi coovachilli selesai, Anda akan dapat mengarahkan klien hotspot WiFi Anda ke halaman login, yaitu portal captive di mana mereka dapat login dan mengakses Internet.

Unduh sumber terbaru untuk coovachilli:

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

Konfigurasi dan Kompilasi coova :

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

(Pastikan Anda mengubah pustaka yang benar atau awalan yang diinginkan)

make
sudo make install

Konfigurasi CoovaChilli

Semua file konfigurasi berada di bawah:/etc/chilli. Anda perlu membuat file konfigurasi dengan modifikasi situs Anda sebagai berikut:

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

Ubah parameter berikut agar sesuai dengan lingkungan Anda:

HS_WANIF=eth0 # Antarmuka WAN menuju Internet
HS_LANIF=wlan0 # Antarmuka Pelanggan untuk perangkat klien
HS_NETWORK=10.1.0.0 # Jaringan HotSpot (harus menyertakan HS_UAMLISTEN)
HS_NETMASK=255.255. 255.0 # Jaringan HotSpot Netmask
HS_UAMLISTEN=10.1.0.1 # Alamat IP HotSpot (pada jaringan pelanggan)
HS_RADSECRET=[FREERADIUS_DB_PASS] # Tetapkan sebagai rahasia bersama RADIUS Anda
HS_UAMSECRET=[FREERADIUS_DB_PASS] # Tetapkan sebagai rahasia UAM Anda
HS_ADMUSR=[ADMIN_USER]
HS_ADMPWD=[ADMIN_PASSWORD]

Tambahkan skrip ipup.sh cabai. Tujuan dari skrip ini adalah untuk mempersiapkan sistem untuk bertindak sebagai router. Anda mungkin juga ingin menambahkan perintah lain mis. Menyetel gerbang.

sudo vim /etc/chilli/ipup.sh

#!/bin/sh
#
# Izinkan IP menyamar melalui kotak ini
/usr/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PENTING:Ubah perangkat Internet ke perangkat yang benar.

Jadikan skrip dapat dieksekusi:

sudo chmod 755 /etc/chilli/ipup.sh

Aktifkan coovachilli agar dapat dijalankan saat boot:

sudo systemctl aktifkan cabai

Mulai coovachilli:

sudo systemctl start cabai

Menguji portal tawanan Anda

Sebelum memulai pengujian, pastikan terlebih dahulu Anda dapat mengakses internet secara lokal.


Kemudian menggunakan klien nirkabel seperti smartphone atau laptop, buka browser web favorit Anda. Buka URL/situs web pilihan Anda.

Jika Anda mengikuti langkah-langkah di atas, maka Anda akan diarahkan ke halaman captive portal seperti gambar di bawah ini:

Pengelolaan Pengguna

Untuk menambahkan pengguna agar mereka dapat mengakses Internet menggunakan hotspot Anda, jalankan perintah berikut untuk setiap pengguna. Anda dapat mengotomatiskannya menggunakan skrip jika diinginkan.

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

Itu saja!

Ikuti saya di:@jzikusooka


Linux
  1. Cara Menginstal Vagrant di Linux

  2. Cara Menginstal Fail2ban dengan Firewalld di Rocky Linux 8

  3. Cara Menginstal Elasticsearch di Ubuntu 22.04 dengan SSL

  1. Cara Menginstal Server Web Nginx di Linux

  2. Cara Menginstal Server FTP di Rocky Linux 8 Dengan VSFTPD

  3. Bagaimana cara menginstal modul untuk semua pengguna dengan pip di linux?

  1. Cara Menginstal MX Linux 21 Langkah demi Langkah dengan Tangkapan Layar

  2. Cara Instal Apache SVN di Linux Mint 19 / Linux Mint 18

  3. Cara Install phpMyAdmin dengan Nginx di Linux Mint 19 / Linux Mint 18