Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Портал перехвата, на котором производится авторизация сессий пользователей беспроводной сети, можно реализовать и также на Linux-маршрутизаторе. Для этого необходимо, чтобы:

  • этот сервер был маршрутизатором для пользователей беспроводной сети (шлюзом по умолчанию);
  • на этом же сервере работало ПО функционировала система WNAM;
  • этот же сервер выполнял роль DHCP-сервера для пользователей.

Работа портала перехвата обеспечивается следующими дополнительными компонентами: isc-dhcp-server, iptables, ipset, nginx. Об их настройке Установка и настройка дополнительного ПО приведена ниже. Применение RADIUS-сервера в этом случае не требуется.

Установка и настройка isc-dhcp-server

Производится Установка isc-dhcp-server производится штатным образом из пакета. Дополнительных настроек при этом не требуется. Не забудьте При установке необходимо указать имя интерфейса, на котором принимать запросы, в файле /etc/default/isc-dhcp-server.

Для того, чтобы система WNAM при обращении пользователей к сети могла понять, какому IP-адресу соответствует MAC-адрес устройства абонента (и каково имя устройства), необходим механизм передачи этой информации до сервера системы WNAM. Напомним, что идентификация пользователей основана на определении и учёте МАС-адресов устройств. Использование arp вместо dhcp не решает проблему, так как абоненты могут находиться в маршрутизируемой сети. Необходимо взять скрипт связки по адресу: После этого, необходимо взять скрипт http://www.netams.com/files/wnam/misc/wnam-leases.pl и положить его скрипт в /usr/local/bin.

Добавить Затем необходимо добавить права на исполнение: chmod +x /usr/local/bin/wnam-leases.pl.

Установить Далее установить модуль Text::DHCPLeases cpan -i Text::DHCPLeases или apt-get install libtext-dhcpleases-perl perl.

После установки модуля необходимо проверить Проверить работоспособность скрипта: /usr/local/bin/wnam-leases.pl (должен вернуть вернуться пустой ответ).

Настройка межсетевого экрана

Необходимо Для настройки межсетевого экрана необходимо установить следующие пакетыipset, netfilter-persistent.
Отредактировать После установки необходимо отредактировать файл правил /usr/share/netfilter-persistent/plugins.d/15-ip4tables таким образом, чтобы он содержал инициализацию ipset: 

 ipset -X
ipset --restore </etc/iptables/ipset.rules
iptables-restore < /etc/iptables/rules.v4 2> /dev/null

Необходимо Затем необходимо создать файл /etc/iptables/ipset.rules следующего содержания:

create ACCESS hash:ip family inet hashsize 1024 maxelem 65536 counters timeout 1800

Указанный в последнем параметре абсолютный тайм-аут нахождения записи в таблице должен быть чуть больше (например, на 300 секунд) настроенного в системе WNAM параметра длительности сессии (см. ниже) и служит дополнительным защитным механизмом.

Далее необходимо Необходимо создать файл /etc/iptables/rules.v4 следующего содержания (eth0-внешний интерфейс, eth1 - внутренний интерфейс):

*nat
:PREROUTING ACCEPT [7882:475437]
:INPUT ACCEPT [7333:440931]
:OUTPUT ACCEPT [1214:82126]
:POSTROUTING ACCEPT [275:16624]
-A POSTROUTING -o eth0 -j MASQUERADE
-A PREROUTING -p tcp -m tcp -d внешний_IP_адрес_сервера --dport 80 -j RETURN
-A PREROUTING -p tcp -m tcp -d внутренний_IP_адрес_сервера --dport 80 -j RETURN
-A PREROUTING -p tcp -m tcp --dport 80 -m set --match-set ACCESS src -j RETURN
-A PREROUTING -p tcp -m tcp -i eth1 --dport 80 -j REDIRECT --to-port 81
COMMIT
*filter
:INPUT ACCEPT [712781:180062776]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [812150:164158586]
:ACCESS - [0:0]
:FORWARD_EXT - [0:0]
:INPUT_EXT - [0:0]
-A INPUT -i eth0 -g INPUT_EXT
-A FORWARD -i eth0 -g FORWARD_EXT
-A FORWARD -i eth1 -g ACCESS
-A ACCESS -m set --match-set ACCESS src -j ACCEPT
-A ACCESS -p udp --dport 53 -j ACCEPT
-A ACCESS -j DROP
-A FORWARD_EXT -m state --state INVALID -j DROP
-A FORWARD_EXT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD_EXT -j DROP
-A INPUT_EXT -m state --state INVALID -j DROP
-A INPUT_EXT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT_EXT -p tcp -m state --state NEW -m multiport --dports 22,80 -j ACCEPT
-A INPUT_EXT -j DROP
COMMIT

Необходимо После произведенных действий следует протестировать работу правил через iptables-apply /etc/iptables/rules.v4. Внимание!

Warning
Ошибки в настройках межсетевого экрана могут привести к потере управления сервером.

После успешного тестирования работоспособности межсетевого экрана !В конце необходимо дать возможность любому пользователю (в частности, пользователю tomcat7) запускать утилиту ipset: chmod a+s /sbin/ipset.

Настройка прокси-сервера

Для того, чтобы трафик не авторизованных неавторизованных пользователей попадал на портал перехвата, необходимо установить обратный прокси-сервер nginx Nginx и настроить его в минимальной конфигурации. Для этого в файле /etc/nginx/sites-enabled/wnam укажите необходимо указать:

server {
listen 81;
server_name wnam;
expires -10s;
keepalive_timeout 0;
rewrite ^(.*)$ http://внутренний_IP_адрес_сервера/cp/linux?dst=$scheme://$host$request_uri redirect;
access_log /var/log/nginx/access-redir.log;
if 
if ($http_user_agent ~*
 
 (CaptiveNetworkSupport))
 { return 200; 
 { return 200; }
}
И удалите Также необходимо удалить все остальные файлы и ссылки из из каталога /etc/nginx/sites-enabled/.

Настройка системы WNAM

Необходимо В первую очередь необходимо создать сервер доступа типа Linux с адресом 127.0.0.1 (включив сбор NetFlow), и соответствующую площадку: в разделе "Конфигурация" → "Сервера доступа", а также соответствующую площадку в разделе "Конфигурация" → "Площадки".

Настройка конфигурационного файла

Время Необходимо настроить время жизни авторизованной сессии (абсолютный/максимальный и неактивной сессий) и путь до скрипта работы с DHCH настраиваются DHCP в файле /etc/wnam.properties. Там же надо указать, что сбор статистики ведётся по NetFlow:

  linuxcp_leasescheck_script=/usr/local/bin/wnam-leases.pl
  linuxcp_session_timeout=
300
1500
linuxcp_inactive_timeout=600
is_netflow_acct=true

После внесенных изменений потребуется перезапуск системы WNAM (процесса tomcat7).  

Настройка модуля NetFlow


Warning
Для сбора статистики требуется применение NetFlow.


Для получения корректных счётчиков байт вам необходимо установить модуль ядра ipt_netflow. Дистрибутив с инструкцией по установке можно получить здесьпо ссылкеhttp://sourceforge.net/projects/ipt-netflow/. После установки пропишите необходимо прописать авто-запуск модуля в файле /etc/modprobe.d/ipt_NETFLOW.conf :

   options ipt_NETFLOW destination=127.0.0.1:20002 maxflows=0
Добавьте
 active_timeout=300  
Затем необходимо добавить в конфигурацию межсетевого экрана в начало цепочки FORWARD запись:
   -A FORWARD -j NETFLOW

Перезапустите После произведенных действий необходимо перезапустить межсетевой экран и запустите запустить модуль ядра ipt_netflow. Он будет собирать статистику по всем потокам трафика, проходящим через ваш сервер, и отправлять её в систему WNAM.

Настройка безусловного доступа авторизованных пользователей

При необходимости разрешения доступа ранее авторизованным (т.е. известным системе) пользователям без необходимости запуска браузера и подтверждения на портале перехвата системы WNAM  можно воспользоваться тем фактом, что DHCP-сервер работает на том же сервере, что и портал. Решение основано на запуске скрипта в момент выделения и освобождения абонентом IP-адреса. Необходимо в файл /etc/dhcp/dhcpd.conf добавить следующие строки:

subnet 172.16.70.0 netmask 255.255.255.0 {
.......
   on commit {
set clip = binary-to-ascii(10, 8, ".", leased-address);
set clhw = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
set clhost = pick-first-value(host-decl-name, option fqdn.hostname, option host-name, "");
execute("/usr/local/bin/wnam-dhcpd-bridge.pl", "commit", clip, clhw, clhost);
}
on release {
set clip = binary-to-ascii(10, 8, ".", leased-address);
set clhw = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
execute("/usr/local/bin/wnam-dhcpd-bridge.pl", "release", clip, clhw, host-decl-name);
}
on expiry {
set clip = binary-to-ascii(10, 8, ".", leased-address);
set clhw = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
execute("/usr/local/bin/wnam-dhcpd-bridge.pl", "expiry", clip, clhw, host-decl-name);
}
}

Далее необходимо взять скрипт wnam-dhcpd-bridge.pl по адресу http://www.netams.com/files/wnam/misc/ и переложить его в каталог /usr/local/bin/, сделав исполняемым.

При операции выдачи/возврата адреса DHCP-сервер вызывает скрипт wnam-dhcpd-bridge.pl с соответствующим параметрами, а тот в свою очередь передаёт команду серверу системы WNAM. Если окажется, что подключившийся пользователь уже имеется в БД, для него откроется сессия и создастся запись в таблице ipset. В таком случае рекомендуется указывать время жизни сессии абонента равным 12 часам (linuxcp_session_timeout=43200), а время жизни записи в IPSET чуть большим (43300). В случае успешного подключения в логе /var/log/tomcat7/wnam.log будет создана следующая цепочка записей:
13:18:33.730 DEBUG [c.n.wnam.services.WnamCmdService:240] - Start handling client connection
13:18:33.838 DEBUG [c.n.wnam.services.LinuxCPService:154] - LINUX_CP openAccess IP=172.16.70.12, res='' (0)
13:18:33.845 INFO [c.n.wnam.services.LinuxCPService:172] - LINUX_CP new session 'Linux-172.16.70.12-1453407513816', request MAC=18:AE:64:9A:28:F8, IP=172.16.70.12, cust_clientid=iPhone
13:18:33.854 DEBUG [c.n.wnam.services.WnamCmdService:259] - Finish handling client connection