Linux за българи: Форуми

Нетехнически теми => Предложения за български проект => Темата е започната от: mystical в Sep 25, 2013, 18:02



Титла: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: mystical в Sep 25, 2013, 18:02
В предишни мои теми бях споменал, че разработвам система за контролиране на интернет достъпа.
Вече е ясно името и - (Management System for Internet Users in the LAN) - “Система за управление на интернет потребители в локална мрежа”.
Абе това хич не звучи на Английски ???
или още по добро

Internet Management System for LAN Users.
Приемам предложението на Naka, системата да се казва IMSLU - "Internet Management System for LAN Users".
Предполагам, че има проблеми и на други места с английския.

Уеб интерфейса е завършен частично и поддържа основна функционалност. Све още няма различни теми, оставени са за най-накрая.

Първо искам да дам линк към демо, което не винаги ще е активно.
IMSLU ($2)

Има четири вида оператори и всеки има достъп до определени неща:

- Системен администратор
потребител: sadmin
парола: sadmin

- Администратор
потребител: admin
парола: admin

-Касиер
потребител: cashier
парола: cashier

- Техник

Моля, ако изтриете нещо за тест,  после пак да го създадете, за да има какво да видят и другите. Моля не променайте паролите.
Давам ви достъп до системата, за да не си мислите, че говоря празни приказки.

Статичните IP адреси се управляват чрез python скриптове, които вдигад рутиране, създават статична arp таблица, създават vlan-ни "Виртуални локални мрежи", намират vlan и/или mac, използват база данни ...

Системата ще се разпространява под "GNU General Public License" версия 2 или по-нова, поваш избор.
Документацията, ще е под "GNU Free Documentation License - GFDL" версия 1.3.

Всяка помощ и идея е добре дошла.

АКТУАЛНА ВЕРСИЯ ($2)

Последна версия на разработчиците.
git clone https://github.com/mysticall/imslu.git

Имайте в предвид, че до излизане на стабилна версия, новите промени може да изискат и нова инсталация на системата.

Промени:
Окт 10, 2013
- Проблемите свързани с CSRF и XSS атаки са оправени
- Системата вече, пуска интернета при плащане или удължаване на крайната дата през "Edit" за съответния потребител. Съответно и спира интернета.
- Добавени са две нови функции към скриптовете -  за проверка и спиране на интернета; за проверка на потребители, които не се изключват (добавя автоматични задължения)
- Има малки промени и по документацията

Окт 11, 2013
В "Administration" е добавена опция за стартиране и спиране на търсене на VLAN, MAC или и двете. Ситемата автоматично преценява, какво да търси според променливата "USE_VLANS" в "/etc/imslu/scripts/config.py".

Окт 13, 2013
- Добавени са опции за ping и arping в "info" или "edit" за съответния потребител. С Chromium пинга се вижда в реално време, а arping само като краен резултат.
- Има промени в "include/network.inc.php". Тук се намират две функции, които се използват: когато системния администратор прилага директни промени върху статичните IP адреси; когато се редактира потребител и се натисне "Save", всеки IP адрес, който се използва от потребителя, се проверява за промени през една от двете функции. Метода на работа е: за всеки IP адрес се запазват старите стойности в сесията на оператора, а новите се вземат от формуляра и се дават на една от двете функции за проверка на промените. Функциите имат пирамидиална структура и на първо място се намират проверките за промените, които най-често биха се използвали. comparison_ip_vlan_changes() е по-сложна и е работено предимно върху нея. Това са важни функции и е добре да се прегледат от повече хора.

Окт 25, 2013
- ipset е заменен с ip rule. Създадена е таблица за маршрутизиране за неплатили потребител, това намалява натоварването върху сървъра и в същото време позволява тези потребители, да се пренасочват към страница на доставчика, без да се включва conntrack (ако използвате само директно маршрутизиране на публични IP адреси).
- оправени са логични грешки в php кода, има промени в скриптовете и документацията.

Окт 28, 2013
- Планираната поддръжка от системата на статични IP адреси и PPPoE сесиите е завършена.
- Системата е преведена на български език

Окт 29, 2013
- Отстранени са логически проблеми при смяна на езика на системата.

Окт 31, 2013
- Оправени са проблеми, причинени след интегриране на политики за сигурност
- Има известно оптимизиране на системата
- Добавена е история за PPPoE сесиите

Ное 04, 2013
- Оправени са доста проблеми

Мисля на определени места думите да са изписани само с малки букви.
Има малко довършителна работа в раздел "Users" .
Има и още планирани неща, но когато им дойде времето...


Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: Naka в Sep 25, 2013, 23:48
Вече е ясно името и - (Management System for Internet Users in the LAN) -.

Абе това хич не звучи на Английски ???

По скоро нещо такова: Management System for Internet LAN Users

или още по добро
Internet Management System for LAN Users.


Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: gat3way в Sep 26, 2013, 00:02
Трябва малко да оправиш сигурността. В момента ако съм касиер мога да правя поразии, например лесно да стана системен администратор, залагайки капани в системата. Примерно логни се като sadmin, виж списъка с потребителите (Users->show), в момента в който го направиш вече имаш добавен нов системен администратор с потребителско име hacker. Сигурно и други такива поразии могат да се правят, но това ми се видя най-простото.


Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: mystical в Sep 26, 2013, 10:05
Благодаря за отзивите.

Трябва да призная, че не съм на ти с английски. Ако "Internet Management System for LAN Users" е граматически правилно веднага се сменя името.

gat3way можели да дадеш малко повече информация.

Довечера след работа, ще ги прегледам нещата.


Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: gat3way в Sep 26, 2013, 11:03
Касиерите могат да създават/редактират потребители. Детайлите на потребителя (телефонен номер, адрес) не се санитизират и е възможно да се вмъкне javascript код. Впоследствие когато отидеш на списъка с потребителите, понеже детайлите се визуализират, javascript кода се изпълнява. Когато системния администратор създава нов оператор, имаш една форма, с която пращаш детайлите за новия оператор с POST заявка към PHP скрипт. Тази POST заявка лесно може да я засилиш и с xmlhttprequest в javascript кода, който виси в детайлите на потребителя. Така, когато администраторът преглежда списъка с потребители, реално погледнато "скрито" създава нов системен администратор с потребителско име и парола според това как му е казано. В случаят има 2 проблема: persistent XSS атаката (където javascript код влиза в базата и после се изпълнява в браузъра на друг потребител), вторият е че административният интерфейс не е подсигурен срещу CSRF атаки. Комбинацията от тези двете дава възможност да се правят пакости.



Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: go_fire в Sep 26, 2013, 12:35
Нито една от трите двойки име-парола не дава допуск до системата. И няма да е зле в такива случай да уведомяваш подателя, че нещо не е наред и какво е то.


Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: mystical в Sep 26, 2013, 20:13
Мисля, че успях да променя името на системата във всички файлове.
В по-горния линк "doc ($2)" добавих и кода на програмката. Все още не са оправени проблемите със сигурността, за които писа gat3way. Изгладени са някои проблеми, които видях докато инсталирах на ново системата, след промяната на името.
Не се ангажирам да качвам и най-актуалната версия, понеже постоянно се работи по системата.
Идеята ми е когато има функционираща система, която може да изпълнява основни дейности, да се хоства на http://sourceforge.net/. Но на този етап и в този все още незавършен вид, няма смисъл.

Ако някой иска да помогне с каквото и да е било, може да ми изпрати мейл на:
fahri_hasan_маймунскоA_hotmail.com

В случаят има 2 проблема: persistent XSS атаката (където javascript код влиза в базата и после се изпълнява в браузъра на друг потребител), вторият е че административният интерфейс не е подсигурен срещу CSRF атаки. Комбинацията от тези двете дава възможност да се правят пакости.

Мисля, че първият проблем е решен, поне в частта при потребителите. Сигурно има и други места където съм забравил да опиша от какъв тип (PDO::PARAM_INT, PDO::PARAM_BOOL, PDO::PARAM_NULL, PDO::PARAM_STR), очаквам да бъдат променливите. Има много неща за вършене и много често се оплесквам, започвам едно нещо, а завършвам съвсем друго. CSRF атаките не са ми мнго ясни.


Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: gat3way в Sep 26, 2013, 23:00
Параметризираните заявки не мисля че вършат работа срещу XSS атаки, трябва да оправяш HTML таговете във входа (там htmlentities() ли не знам какво е официално приетото средство в PHP, не съм се занимавал с тези неща отдавна и съм забравил). На практика може и с един или повече регулярни изрази да го направиш, ама не те съветвам, винаги може да се изпусне нещо.

CSRF атаките са възможно най-малоумното и просто нещо. Цялата идея е че ако си потребител, който се е автентицирал в уеб приложението, можеш да бъдеш накаран да изпълняваш заявки към уеб приложението,  всичко опира до това да те накарат да изпълниш javascript код (дори не е задължително, в определени случаи просто да заредиш чист HTML документ е достатъчен), за да  правиш глупости в контекста на уеб приложението без да знаеш за това. Примерно представи си че създаването на нов администратор ставаше с GET а не с POST. Аз ти пращам новата cooool страничка с малоумни картинки и една "скрита" такава, зареждаща URL-то което ми добавя нов потребител. Съответно ти я разглеждаш и така ми създаваш нов потребител.

Гадното е че колкото и да е тъпо, не е много лесно да се оправяш с това. В общият случай, начинът е с някакви случайно генерирани токени. Примерно когато зареждаш формата за нов потребител, се създава случаен токен и се вкарва в HTML изхода под формата на INPUT TYPE=HIDDEN, така че да се submit-не. После сравняваш това което ти се праща с това, което ти се генерирал и така знаеш че заявката идва както си му е реда. Друг вариант е да проверяваш referer-а, но това не е много умно.


Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: mystical в Sep 26, 2013, 23:43
Параметризираните заявки не мисля че вършат работа срещу XSS атаки, трябва да оправяш HTML таговете във входа (там htmlentities()...).

Видях потребителя test, към чийто адрес имаше прикачен javascript код, пуснах саниране за типа на променливите във функцията prepare_array($sql, $array), която се намира в "/IMSLU/PHP/include/classes/class.cpdoinstance.php" и която я ползвам в някои случаи. След като дадох Save PDO автоматично прeмахна доста неща от javascript кода и остави само "<script src=".

Нито една от трите двойки име-парола не дава допуск до системата. И няма да е зле в такива случай да уведомяваш подателя, че нещо не е наред и какво е то.

В началото доста мислех относно този проблем, но не намерих решение. Това се дължи на факта, че при вход в системата се правят доста дълбоки проверти и не мога да върна точно съобщение за причината, поради която е отказан достъпа до ситемата.

Малко инфо:
- При грешен опит за вход, системата забавя отговора за 30 сек.
- При 3 неуспешни опита за вход, системата банва IP адреса за 2 часа.
- При 5 неуспешни опита за вход, системата банва IP адреса перманентно.
Поради тази причина в Login Attempts -> Show -> Action -> Reset Selected има опция за изчистване на опитите за конкретния IP адрес.

Благодаря за полезните съвети.


Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: Naka в Sep 27, 2013, 14:55
Малко инфо:
- При грешен опит за вход, системата забавя отговора за 30 сек.
- При 3 неуспешни опита за вход, системата банва IP адреса за 2 часа.
- При 5 неуспешни опита за вход, системата банва IP адреса перманентно.

Не трябва да е точно така. Знаеш ли колко пъти се бърка паролата при начално изписване. Я клавиш зацепил, я капслок натиснат, я админа е препил, я много бързо набира паролата и бърка, я паролата е много дълга и се греши...... На мене много често ми се случвало два-три пъти в начало да не уцеля паролата си.

За това правилното решение е:
- 3 грешни последователни опита за вход без ограничения.
- При всеки следващ грешен опит за вход, системата забавя отговора за 30 сек.
- При 6+ неуспешни опита за вход, системата банва IP адреса за 2 часа.
Като това последното може и да не го правиш.
* без автоматичен преманентен бан. Забавянето даже за 30 сек. според мен е достъчно да откаже всеки хакер или автомат. Но ако искаш може да направиш перманентен бан след 50-100 опита. За някой автомат дето ще е много упорит и ще издържи 50 * 2часа.


Колкото за името сменяй го на нещо друго, че ще ти се смеят.
Не съм ти тествал системата нито четох подробно точно за какво е.. но
ако смисълът и е такъв, както го разбирам:

Имаме юзери в локална мрежа. Тези юзери, могат да бъдат, както със локални ip-та така и с реални итернетски. Ти правиш система с която да им управляваш достъпа до I-t. На кой да се спира, на кой да се пуска, кой платил, кой не платил....какви портове да бъдат отворени и т.н.

Та ако това е както го разбирам и независимо какво се разбира под LAN ??? - Частни вътрешни ip-та или публични Интернетски Ip-та Това звучи правилно:

Internet Management System for LAN Users.

(Система за управление на Итернета за Лан потребители.)

и си е граматически правилно.



Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: mystical в Sep 27, 2013, 22:53
Не трябва да е точно така. Знаеш ли колко пъти се бърка паролата при начално изписване. Я клавиш зацепил, я капслок натиснат, я админа е препил, я много бързо набира паролата и бърка, я паролата е много дълга и се греши...... На мене много често ми се случвало два-три пъти в начало да не уцеля паролата си.

За това правилното решение е:
- 3 грешни последователни опита за вход без ограничения.
- При всеки следващ грешен опит за вход, системата забавя отговора за 30 сек.
- При 6+ неуспешни опита за вход, системата банва IP адреса за 2 часа.
Като това последното може и да не го правиш.
* без автоматичен преманентен бан. Забавянето даже за 30 сек. според мен е достъчно да откаже всеки хакер или автомат. Но ако искаш може да направиш перманентен бан след 50-100 опита. За някой автомат дето ще е много упорит и ще издържи 50 * 2часа.
Ще изгладя нещата на по-късен етап. Не мога да намеря достатъчно време, за други по-важни неща.

Колкото за името сменяй го на нещо друго, че ще ти се смеят.
Не съм ти тествал системата нито четох подробно точно за какво е.. но
ако смисълът и е такъв, както го разбирам:

Имаме юзери в локална мрежа. Тези юзери, могат да бъдат, както със локални ip-та така и с реални итернетски. Ти правиш система с която да им управляваш достъпа до I-t. На кой да се спира, на кой да се пуска, кой платил, кой не платил....какви портове да бъдат отворени и т.н.

Та ако това е както го разбирам и независимо какво се разбира под LAN ??? - Частни вътрешни ip-та или публични Интернетски Ip-та Това звучи правилно:

Internet Management System for LAN Users.

(Система за управление на Итернета за Лан потребители.)

и си е граматически правилно.
Името вече е сменено с това което предложи.
IMSLU (Internet Management System for LAN Users) - “Система за управление на интернета за потребители в локална мрежа”.

Правилно си разбрал за предназначението на програмата.
Потребителите даже и да използват публични IP адреси, те все пак се намират в локалната мрежа на интернет доставчика.


Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: edmon в Sep 28, 2013, 00:13
Я не моа разбера, за къв чемер ти е такава сигурност като може да разрешиш достъп само на краен брой лица близък до 10, с краен брой работни станции....
както и да е.. :)


Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: gat3way в Sep 28, 2013, 13:55
Ако оправиш CSRF проблемите, всичко ще е 6. Обаче иначе не. Касиерът може да бъде подмамен да отвори някакъв линк, който прави поразии (социално инженерство, виж яката страничка със снимки с котки или нещо от сорта). В момента в който го направи, ще заложи капана без да знае.


Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: edmon в Sep 28, 2013, 19:22
ima едно "XSS Me" плъгин за мозила :))

Цитат
Submitted Form State:

    alias: sadmin
    password1:
    password2:
    lang: en_US
    theme: darkorange
    url:
    alias_old: sadmin
    save: Save

Results:
DOM was modified by attack string. Field appears to be very vulnerable to XSS String.
Tested value: <xml src="javascript:document.vulnerable=true;">
DOM was modified by attack string. Field appears to be very vulnerable to XSS String.
Tested value: <!-- -- --><script>document.vulnerable=true;</script><!-- -- -->
DOM was modified by attack string. Field appears to be very vulnerable to XSS String.
Tested value: <![CDATA[<!--]]<script>document.vulnerable=true;//--></script>
This field passed 19 tests. To see all the passed results, go to Tools->XSS Me->Options and click 'Show passed results in final report' and rerun this test.


Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: mystical в Sep 29, 2013, 20:01
Мисля, че оправих проблемите с CSRF и XSS в Профил, Оператори, Редактиране на потребител, Плащания на потребителя, Плащания.
Работя и по другите страници. Ако може да тествате, за да съм сигурен, че всичко е наред.


Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: kiss в Sep 29, 2013, 21:31
Мисля, че оправих проблемите с CSRF и XSS в Профил, Редактиране на потребител и Плащания на потребителя.
Работя и по другите станици. Ако може да тествате, за да съм сигурен, че всичко е наред.

не е зле на paymenta като се кликне да има javascript който да чеква сумата и да пита дали е приета или ако не е да има кенсълиране, друго което мога да ти вметна е да има сторниране от страна на sysadmin:)


Титла: Re: MSIUL - “Система за управление на интернет потребители в локална мрежа”
Публикувано от: mystical в Sep 29, 2013, 22:24
не е зле на paymenta като се кликне да има javascript който да чеква сумата и да пита дали е приета или ако не е да има кенсълиране, друго което мога да ти вметна е да има сторниране от страна на sysadmin:)
Ако влезеш в системата като касиер ще видиш, че касиера нямаправо да променя сумата и датата, на която изтича плащането.
Всяка скорост (Тарифен план) има собствена цена, която се взема и добавя автоматично в полето за плащане, освен ако администратора не е задал друга сума за конкретния потребител. В този случай се взема сумата на конкретния потребител.
Администратора може освен това да променя сумата и датата в полето за плащане. Ако има проблеми, може да се кликне на "ID" за съответното плащане и да се промени крайна дата или сумата. Също така може да се изтрие и самото плащане.
Всяка промяна или изтриване на плащане се записва:
Audit->на Resource->се избира Payments->Show
Audit->тук може да се изберат и по-конкретни действия Action->Resource->се избира Payments->Show

Също на "ID" за съответния лог има по-подробна информация.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: mystical в Oct 16, 2013, 22:07
След дълго търсене и ровене, мисля, че ако искате да пренасочвате потребители с изтекла дата за предоставената услуга към ваша уеб страница, conntrack НЕ МОЖЕ, да се спре.
След като стигнах до този извод, реших малко да оптимизирам нещата в "/etc/sysctl.conf", което изглежда така:
Код
GeSHi (Bash):
  1. kernel.pid_max = 65536
  2. kernel.randomize_va_space = 1
  3.  
  4. net.core.wmem_max = 11534336
  5. net.core.rmem_max = 11534336
  6.  
  7. net.ipv4.tcp_synack_retries = 3
  8. net.ipv4.tcp_syncookies = 1
  9. net.ipv4.tcp_max_syn_backlog = 2048
  10.  
  11. net.ipv4.tcp_wmem = 4096 87380 11534336
  12. net.ipv4.tcp_rmem = 4096 87380 11534336
  13.  
  14. #net.netfilter.nf_conntrack_expect_max = 4096
  15. #net.ipv4.netfilter.ip_conntrack_generic_timeout = 600
  16. #net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 5
  17. #net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent2 = 5
  18. #net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 5
  19. #net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 86400
  20. #net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 10
  21. #net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 10
  22. #net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 10
  23. #net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 10
  24. #net.ipv4.netfilter.ip_conntrack_tcp_timeout_close = 10
  25. #net.ipv4.netfilter.ip_conntrack_tcp_timeout_max_retrans = 300
  26. #net.ipv4.netfilter.ip_conntrack_tcp_loose = 1
  27. #net.ipv4.netfilter.ip_conntrack_tcp_be_liberal = 0
  28. #net.ipv4.netfilter.ip_conntrack_tcp_max_retrans = 3
  29. #net.ipv4.netfilter.ip_conntrack_udp_timeout = 10
  30. #net.ipv4.netfilter.ip_conntrack_udp_timeout_stream = 180
  31. #net.ipv4.netfilter.ip_conntrack_icmp_timeout = 10
  32. #net.ipv4.netfilter.ip_conntrack_max = 16777216
  33.  
  34. net.ipv4.conf.all.accept_redirects = 0
  35. net.ipv4.conf.all.rp_filter = 1
  36. net.ipv4.conf.all.accept_source_route = 0
  37. net.ipv4.conf.all.log_martians = 0
  38. net.ipv4.conf.all.arp_filter = 1
  39. net.ipv4.conf.all.arp_announce = 2
  40. net.ipv4.conf.all.arp_ignore = 1
  41.  
  42. net.ipv4.conf.default.accept_redirects = 0
  43. net.ipv4.conf.default.rp_filter = 1
  44. net.ipv4.conf.default.accept_source_route = 0
  45. net.ipv4.conf.default.log_martians = 0
  46. net.ipv4.conf.default.arp_filter = 1
  47. net.ipv4.conf.default.arp_announce = 2
  48. net.ipv4.conf.default.arp_ignore = 1
  49.  
  50. net.ipv4.icmp_echo_ignore_broadcasts = 1
  51. net.ipv4.icmp_ignore_bogus_error_responses = 1
  52.  
  53. net.ipv6.conf.default.accept_redirects = 0
  54. net.ipv6.conf.default.accept_source_route = 0
  55.  
  56. net.ipv4.ip_forward = 1
  57.  
sysctl -p

В "/etc/rc.local" се добавя:
Код
GeSHi (Bash):
  1. #!/bin/sh -e
  2.  
  3. #modprobe ip_conntrack
  4. sysctl -p
  5. # change hashsize on the fly
  6. #echo 4194304 > /sys/module/nf_conntrack/parameters/hashsize
  7. # check current hashsize
  8. #cat /sys/module/nf_conntrack/parameters/hashsize
  9. # check current tracked connections
  10. #cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count
  11.  
  12. #/etc/imslu/scripts/global_rules.py
  13. # OR
  14. #/etc/imslu/scripts/global_rules_vlans.py
  15.  

Тези правила все още не са тествани в реална среда. Имат за цел да предпазят сървъра от определени атаки и в същото време да отстранят проблемите с conntrack.

Дали ще има инмормация за публични IP адреси, които се маршрутизират директно (не минават през NAT), във файла "/proc/net/ip_conntrack". Идеята е от някъде да вземам инфо, за всички активни IP адреси в локална мрежа и тази информация да се вижка в уеб интерфейса, под формата на "online" или "offline". Но за тази цел искам да използвам съществуваща информация в линукс.
Има ли друг файл подобен на  "/proc/net/ip_conntrack", от където мога да взема информация. Изключвам "/proc/net/tcp" и "/proc/net/udp", които съдържат информация за отворените tcp и udp сокети за връзки към самия сървър.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: 10101 в Oct 17, 2013, 17:37
 cat /proc/net/pppoe
Id       Address              Device
00005E01 00:0d:61:18:7b:27 vlan2013
0000F200 00:18:4d:86:1b:7f vlan2009
00004301 00:0c:f6:31:f8:25 vlan0067
0000E801 00:1e:58:11:77:73 vlan2029
0000A600 c8:3a:35:1c:14:3d vlan2007
00005401 00:1e:58:11:77:77 vlan2029
0000E100 1c:c1:de:9e:a3:33 vlan2032
0000B200 00:a1:b0:00:4b:36 vlan0067
00009A00 c8:3a:35:60:ad:95 vlan0067
00001A00 00:c0:26:74:05:3f vlan2007
00002301 a0:f3:c1:79:c5:71 vlan2007
00007F00 00:18:4d:8b:fa:05 vlan2029
0000F000 00:16:36:b6:27:d4 vlan0067
00000101 00:23:cd:17:47:c5 vlan2013

това показва активтите mac адреси тоест логнати потребители
това естествено е на pppoe сървъра.
можеш да си правиш база с физически адреси при логването на потребителя и така ще имаш кой е на линия и кой не е

За dhcp сървър arping .... или web login за dhcp сървър(клиента се логва с юзер и парола), като на микротик hotspot-a.Тогава отпада редиректа, при неплащане.



Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: mystical в Oct 17, 2013, 18:14
можеш да си правиш база с физически адреси при логването на потребителя и така ще имаш кой е на линия и кой не е
Колкото и да не ми се иска, за момента ще използвам "/proc/net/ip_conntrack" в "info" и "edit" за съответния потребител. Решението е просто:
Код
GeSHi (Bash):
  1. # Get info for active IP addresses from file /var/log/ip_status.log.
  2. */5 * * * * root awk '!a[$11]++ { print substr($11,5) }' /var/log/ip_status.log > /tmp/imslu_online_ip_addresses.tmp && cat /dev/null > /var/log/ip_status.log
  3.  
  4. # Get info for active IP addresses from file /proc/net/ip_conntrack.
  5. #*/5 * * * * root awk '{ if ($1 == "tcp" && $4 == "ESTABLISHED" && !a[$5]++) print substr($5,5); else if ($1 == "udp" && !a[$4]++) print substr($4,5); else if ($1 == "icmp" && !a[$4]++) print substr($4,5); }' /proc/net/ip_conntrack > /tmp/imslu_online_ip_addresses.tmp
  6.  
  7. # Get info for active IP addresses from file /proc/net/ip_conntrack. This script will find only IP addresses from network 10.111.2
  8. #*/5 * * * * awk '{ if ($1 == "tcp" && $4 == "ESTABLISHED" && substr($5,5,8) == "10.111.2" && !a[$5]++) print substr($5,5); else if ($1 == "udp" && substr($4,5,8) == "10.111.2" && !a[$4]++) print substr($4,5); else if ($1 == "icmp" && substr($4,5,8) == "10.111.2" && !a[$4]++) print substr($4,5); }' /proc/net/ip_conntrack > /tmp/imslu_online_ip_addresses.tmp

Първият вариянт взима всички активни IP  адреси на всеки 5 минути, а вторият взима всички активни IP адреси от мрежа "10.111.2" на всеки 5 минути и ги записва в " /tmp/imslu_online_ip_addresses.tmp". След което php чете от " /tmp/imslu_online_ip_addresses.tmp" и сравнява, ако IP  адреса е там - статус "online", ако не  - статус "offline". При втория вариянт php би използвал сравнително по-малко ресурси за обработка на информацията, за сметка на awk.

За dhcp сървър arping .... или web login за dhcp сървър(клиента се логва с юзер и парола), като на микротик hotspot-a.Тогава отпада редиректа, при неплащане.
Този метод ми се струва труден за прилагане. Системата поддържа и PPPoE сесии, която възможност може да замени това. dhcp мисля, че не е добър избор, за професионални мрежи, понеже кабел поставен в грешна дупка на рутер, ще обърка много неща, и ще създаде доста излишна работа.

Благодаря за предложенията.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: mystical в Oct 22, 2013, 22:29
Хрумна ми следната идея, за пренасочване на неплатили потребители към уеб страница на доставчика с ИЗКЛЮЧЕН conntrack.

В експеримента използвам три компютъра:
- главен сървър с vlan-ни
- втори сървър - vlan21; IP: 10.111.2.5
- потребител -  vlan11; IP: 10.111.2.6, на който е спрян интернета.

Трафика на неплатилите потребители се маршрутизира към  втория линукс сървър. За целта са необходими следните неща:

1. Да се добави нова таблица за маршрутизиране
Код
GeSHi (Bash):
  1. echo "3 EXPIRED" >> /etc/iproute2/rt_tables
  2.  
2. Втори линукс сървър, който ще следи за трафик от съответните мрежи и ще го пренасочва към себе си.
Код
GeSHi (Bash):
  1. iptables -t nat -A PREROUTING ! -d 10.111.2.5 -p tcp --dport 80 -j REDIRECT --to-ports 80
  2.  
3. След като знаем IP адреса и VLAN-а на този сървър, добавяме рутиращи правила в ново създадената таблица в главния сървър
Код
GeSHi (Bash):
  1. ip route add default via 10.111.2.5 dev vlan21 table EXPIRED
  2. ip rule add from 10.111.2.6/32 lookup EXPIRED

Бележка:
Първоначалните тестове минаха успешно!
Заменям "ipset" с "ip rule" в pytho скриптовете и уеб интерфейса. Когато всичко е готово, ще добавя новата версия.
Този метод ще минимизира натоварването върху сървъра.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: martos в Oct 23, 2013, 11:25
Може много лесно да се направи пренасочването с "ip rule" без да товариш излишно с CONNTRACK.



Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: edmon в Oct 24, 2013, 19:27
нали е пппое, когато достъпът на потребителя не е валиден по някаква причина,
просто му дай друго ип и друг гейт!  :)


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: mystical в Oct 24, 2013, 19:59
PPPoE и/или статични IP адреси (извън PPPoE).
Само PPPoE в някои случаи остава недостатъчно.

След като проблема с conntrack е решен, остава въпроса с информацията за активните IP адреси.

Не можах да измисля нищо читаво, колкото и да не ми се иска, за момента мисля да използвам "-j LOG".
Код
GeSHi (Bash):
  1. iptables -A FORWARD -s 10.111.2.0/24 -m limit --limit 3/s --limit-burst 1 -j LOG --log-level info --log-prefix "IP_STATUS: "

nano /etc/rsyslog.d/ip_status.conf
Код
GeSHi (Bash):
  1. :msg, regex, "^\[ *[0-9]*\.[0-9]*\] IP_STATUS: " -/var/log/ip_status.log
  2. & ~
/etc/init.d/rsyslog restart

cat /var/log/ip_status.log

Този метод е отворен към големи статистически грешки. В конкретния случай,  през 3 секунди ще записва информаци за един пакет от произволнен IP адрес от мрежа 10.111.2.0/24.
Съмнително е, колко реална може да бъде информацията. А ако води отчет за повече пакети, лавинообразно ще се увеличи и използването на ресурси от iptables и awk.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: mystical в Nov 16, 2013, 23:46
Проекта се хоства в https://sourceforge.net/projects/imslu/ ($2), от където може да следите за нови версии.

Последна версия на разработчиците.
git clone https://github.com/mysticall/imslu.git

Имайте в предвид, че до излизане на стабилна версия, новите промени може да изискат и нова инсталация на системата.

Може да има грешки в описанието, използвано е google за превод.  :)


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: Naka в Nov 17, 2013, 12:09
А така?

Цитат
The system performs administration of the users with Internet access through a static IP addresses or PPPoE sessions, limits their speed and automatically stops the service provided after a specified date.

Много често се налага да се пуска някаква информация или документация на Чужд език. Затова според мен ако се ползва например гого за превод (или друг сървис) правилният подход е следният:

Пуска се текста машинно преведен. Обаче най-отдолу пишем:
Мachine Тranslated
Original text (Bulgarian): ($2)

Така хем вълкът сит, хем агнето цяло. Никой няма да се възмути защо е толкова кофти езика - Най отдолу си пишем, че е машинно преведен. А пък за да няма двусмислици и неправилно разбиране на прочетеното - даваме и ликн към оригиналният текст. Който иска да си го сравнява и да си го превежда както ще. Мисля че този подход е и юридически правилен.
 




Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: mystical в Jul 31, 2017, 23:16
Благодаря на всички, които са взели участие в темата и са допринесли за развитието на системата. Прочетох темата отново, след толкова години и ми подейства добре.
Някой има ли информация за gat3way ($2)?

Малко информация за това какво се случва с проекта.

След като имаше нещо работещо, макар и с доста въпросителни относно използваните решения, не се занимавах сериозно със системата.
Еднин администратор се престраши да я използва в реална среда и оправях само бъговете, които намираше. Според хронологията в github, това е продължило до Apr 8, 2015.

Във фирма, където работя, мигрирахме на Ipacct. След като видях, какво са направили хората, тотално изоставих проекта. Това продължи към една година. Вече не помня, какво ме мотивира да започна, отново да разработвам проекта.
Част от отговорите, които търсех преди, за да мога, да продължа с развитието на системата, бяха в Ipacct. Но тези от вас, които са имали достъп до Ipacct, добре знаят, че Боян добре се е погрижил, за да заключи системата  :) Поздрави на Боян, въпреки, че Ipacct е комерсиален продук, има голяма заслуга за развитието на много интернет доставчици в България! Също много поздрави и на колегата networker ($2), който сподели опита си с мен, за да се спра на работещи решения.

След доста работа, която продължи по-малко от колкото очаквах, около 2-3 месеца голяма част от системата беше променена. Няма да се спирам подробно на промените, най-важните ги описах тук ($2). Какъв е резултата?

Ако не са ми дали грешна информация, новата версия на системата поддържа 1000+ PPPoE потребителя и 1 - 2Gb трафик с 6 ядрен xeon (старо поколение).

Мисля, че постигнах първоначалните си цели. Създадох алтернатива на комерсиалните продукти. Какво следва?

freebsd-11-howto ($2) свърших с голяма част от интеграцията на системата. Остана да разгледам как стоят нещата с mpd5 и dns сървърите под FreeBSD. Нямам информация, някой да използва системата под FreeBSD и за това не си давам много зор.

Ако някой иска да помогне с развитието на системата, всяка помощ е добре дошла. Ако изпратите "pull request" през github, още по-добре  :)


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: go_fire в Jul 31, 2017, 23:32
Кой е този  Боян?!? Оня идиот от StorePull?

Твоето нещо ползва bash. По политически причини във FreeBSD се избягва ГНУ. Никой няма да го ползва там.

Поздрави за добрата работа!

Мога само да кажа — браво!

Макар за мен това да не е полезно по никакъв начин, вярвам, че ще има много заинтересовани.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: mystical в Jul 31, 2017, 23:45
Боян Бонев - ipacct.com ($2)

Всички скриптове за FreeBSD са пренаписани на sh, примерен скрипт shaper.sh ($2). Bourne Shell ($2) е писан за Unix и почти всички скриптове във FreeBSD са на Bourne Shell.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: go_fire в Jul 31, 2017, 23:54
Значи е някакъв друг Боян, дето не го знам.

В описанието на програмата пишеш, че всичко е пренаписано на Bash. Преди на какво е било? Браво, че си помислил за FreeBSD!

п.п. Гейта понякога рядко се вясва в Dev BG. Най-лесно можеш да се свържеш с него през Twitter. Gat3way.eu гледам, че нещо е побягнал, няма го. Не знам дали за постоянно.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: ddantgwyn в Aug 01, 2017, 00:14
Значи е някакъв друг Боян, дето не го знам.

Е, аз го знам. Още от времената на Fidonet. Мисля, че сме свързани и в LinkedIn.

Дълго време ползвах клавиатурния му драйвер за DOS -- поддържаше три кодови таблици и автоматично превключваше между тях.

После го изпуснах от поглед, засичали сме се само инцидентно.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: mystical в Aug 01, 2017, 00:32
В описанието на програмата пишеш, че всичко е пренаписано на Bash. Преди на какво е било? Браво, че си помислил за FreeBSD!

Прав си, там бях описал промените за Линукс. Предишните скриптове бяха на python и ги смених с bash.
Прав си и за bash във FreeBSD, bash трябва да се инсталира допълнител и него използват изобще във FreeBSD.
След като първо писах на bash, писането на sh ме затрудни много, но беше наложително. На времето, ако имах сегашния опит, нямаше да се лутам толкова много.  :)


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: 4096bits в Aug 01, 2017, 02:07
Какво наложи пренаписването на bash?
Написах си find на Python и работи пъти по-бързо, отколкото същата команда в bash.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: pennywise в Aug 01, 2017, 02:58
Написах си find на Python и работи пъти по-бързо, отколкото същата команда в bash.
А ще споделиш ли, че ми стана интересно?


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: go_fire в Aug 01, 2017, 06:56
Какво наложи пренаписването на bash?
Написах си find на Python и работи пъти по-бързо, отколкото същата команда в bash.

Допълнителна зависимост. Има п4п, има питон. Така поне само едното. Одобрявам.

п.п. Питон е хубав, но бавен език. И паралелно има две версии.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: 4096bits в Aug 01, 2017, 11:29
Написах си find на Python и работи пъти по-бързо, отколкото същата команда в bash.
А ще споделиш ли, че ми стана интересно?
Не е нищо особено. Не е пълноценен заместител на find. Използвам os.walk, concurrent.futures.ProcessPoolExecutor и os.scandir. Трябва да го донаправя да приема и специалните символи като *, ? и прочее. Което означава да разбера най-накрая, как работи re модулът, но това ще стане като ми потрябва сигурно.

Има ли iterable object може да се използва някакъв вид паралелна обработка. Същото направих преди време и със сайта на парламента, щото ми трябваше информация, която беше разпръсната по много страници. От около 30 секунди за получаването на всичко, след преработката на скрипта, същото се случваше за 5-7 сек. Зависи от момента, защото мрежата не е нещо постоянно. Ако се използва asyncio, може да е и по-бързо, но още не мога да го разбера съвсем, как работи това нещо. Ма ще ми се наложи.

Може да се използва и subprocess заедно с някоя от командите в bash като например grep по абсолютно същия начин. Ако трябва да претърсваш десетки или стотици хиляди файлове за нещо, просто не можеш да го пуснеш ей така, да си бачка, че ще чакаш доста докато прерови едно по едно всичко. Може и да е възможно да накараш с bash да се използват всички ядра, но не съм чувал за това, ако го има като възможност.

Цитат
Допълнителна зависимост.
Така е. Но пък Python го има сигурно в почти всеки Линукс, защото половината от системата се движи от скриптове на Perl и Python.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: mystical в Aug 01, 2017, 13:26
Какво наложи пренаписването на bash?
Написах си find на Python и работи пъти по-бързо, отколкото същата команда в bash.

bash/shell е достъпен за по-голяма аудидория, който използва Unix подобна ОС, рано или късно се сблъсква със shell.
Целта е нещата да са максимално опростени и разбираеми за повече разработчици.
Особеното при python е, че първо създаваш командите, а после ги изпълняваш.
sh позволява директно изпълнение на командите и с по-малко код се получава същия ефект. Когато се добавят и коментари, на sh се пишат по-разбираеми скриптове.

Малко информация за това как работи системата:
ip_edit.php ($2) -потребителите работят с тази станица, за да направят мрежови промени.
ip_edit_apply.php ($2) - прилага мрежовите промени

Няма дълбоки зависимости в php кода.  *.php и *_apply.php - има страница с формуляр и страница, която обработва информацията от формуляра. Ако се направят промени в ip_edit.php или ip_edit_apply.php, те по никакъв начин няма да засегнат работат на останалите страници.

include/network.php ($2) - библиотека, която с малки изключения, отговаря за повечето мрежови промени.
etc/imslu/scripts/functions-php.sh ($2) или usr/local/etc/imslu/scripts/functions-php.sh ($2) (за FreeBSD) - тези функции се използват от PHP, за да се приложат мрежови промени.

Мрежовите промени се прилагат по следния начин:
ip_edit.php-->ip_edit_apply.php-->network.php-->functions-php.sh--> Linux or FreeBSD

* на други места също се правят мрежови промени, но начина на работа е подобен или директно се извиква функция от functions-php.sh


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: Naka в Aug 01, 2017, 13:44
Що не и направиш отделен веб сайт? връзките пак може да си стоят към sourceforge и гитхъб.....Нo според мен един проект който само се рекламира в sourceforge/гитхъб някакси се губи в цялото множество от проекти и изглежда несериозно.

И аз мисля че баш ще е по добре от питон. Като видя скрип на питон и изтръпвам. Все очаквам да каже нямате тази версия на питон или пък да изписка за някакъв модул дето му трябвало. :(

//offtopic
като си говорим за скриптов език....Май няма такъв подходящ за линукс...Хем прост хем разбираем хем постоянен във времето.
Питона - лошо име и горните проблеми.
Баш е универсален но много тегав за писане.
Пърл - става за скриптов език но много неразбираем. Особенно за по големи проекти е отврът.

А затова за себе съм си намерил решение. Конзолните скрипрове си ги пиша на PHP. Незнам как ви звучи но php се спрявя чудесно в конзолата и си има абсолютно всичко необходимо! Хем разбираем; хем постоянен; хем пълен. Недостатък е че трябва да имаш апачи ама какво от това. Всяка система го има.





Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: 4096bits в Aug 01, 2017, 14:06
Не зная, какво му е неразбираемото на Питоня. Освен това съвсем лесно може да се направи скрипта на изпълним файл, който да си съдържа всичко в него и да не реве за модули, ако му трябва някой дето не идва с него.

Ето един пример, дето си направих одеве, за да го сложа в панела на XFCE4, защото нещото, което върши тази работа ме дразни страшно. Грозно, забравя си настройките и ми показва небивалици.

Имаше лека промяна по скриптчето заради промяна на състоянието при напълно заредена батерия. Тук не поиска да го постне цялото. В прикачените е. Защо предпочитам Python пред bash, за да направя нещо подобно. Четимо е и разбираемо


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: remotexx в Aug 01, 2017, 20:28
А затова за себе съм си намерил решение. Конзолните скрипрове си ги пиша на PHP. Незнам как ви звучи но php се спрявя чудесно в конзолата и си има абсолютно всичко необходимо! Хем разбираем; хем постоянен; хем пълен. Недостатък е че трябва да имаш апачи ама какво от това. Всяка система го има.

Чакай-чакай, я върни малко назад, че изгубихме детската аудитория... защо "трябва да имаш апачи"?


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: 4096bits в Aug 01, 2017, 20:49
Да, не трябва ли да имаш просто РНР?
$ php -S скрипт

ако не се лъжа, изпълняваше php скрипт



Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: Naka в Aug 01, 2017, 21:00
не трябва ли? ако нетрябва значи греша.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: mystical в Aug 01, 2017, 21:26
python, sh, php ... всички стават и вършат работа, най-добре е да работеш с това, с което ти е най-удобно.
Но аз трябваше, да се спра на стандартен скриптов език като sh, който го има във всяка Unix подобна система. И преобладаващите системни скриптове са писани на sh.

php кода може, да се изпълнява директно от конзолата, примерно:
$ php database/import-ipacct-database.php


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: remotexx в Aug 02, 2017, 02:01
А бе хора.. явно жегата ни е хванала яко... Не му трябват никакви опции, замислете се, как  вашта м.. нашта ОС изпълнява sh/bash/dash и пр. Файл , вярно може и изрично да се укаже, ама мързелив народ ей..
Нали всеку текстов т.е. И с код файл, на първия му ред може да се укаже в определн формат, през кой аджеба интерпретатор да се изпълни.. И реда го има на първа позиция в почти всеки шел скрипт кокто съм виждал и си е така по дизайн.. Какъв е приблема направо вътре да се укаже - кеф ти пърл кеф ти пхп?!


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: jet в Aug 02, 2017, 04:07
А бе хора.. явно жегата ни е хванала яко... Не му трябват никакви опции, замислете се, как  вашта м.. нашта ОС изпълнява sh/bash/dash и пр. Файл , вярно може и изрично да се укаже, ама мързелив народ ей..
Нали всеку текстов т.е. И с код файл, на първия му ред може да се укаже в определн формат, през кой аджеба интерпретатор да се изпълни.. И реда го има на първа позиция в почти всеки шел скрипт кокто съм виждал и си е така по дизайн.. Какъв е приблема направо вътре да се укаже - кеф ти пърл кеф ти пхп?!
Защото не можеш горе да пишеш #!/usr/bin/perl а кода надолу да е php.
Например като се пише шел скрипт се ползва sh а не bash, защото колкото и да са еднакви, много неща в bash ги няма в sh и няма да работят коректно. Един вид sh е най-малкият доминатор и ще върви на всякъде.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: Naka в Aug 02, 2017, 11:49
така:
http://www.linux-bg.org/forum/index.php?topic=46936.msg288782#msg288782

ама айде да не спамим повече че му отиде темата на човека.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: mystical в Aug 02, 2017, 21:32
Искам да дам малко информация за отговора, който писах в друга тема относно линукс рутер и защитна стена.

Линукс рутера, през който минават почти 9 Gb трафик работи с ipacct.com ($2)
Линукс защитната стена, през която минават над 100 Gb трафик се разработва от млад човек, който е изключително в час, в тази област.

Тази информация я споделям, за да знаете, че в България също има много добри специалисти.
Моето лично мнение е, че ако държавата използва подобни специалисти, няма да има новините от типа:
- атаки блокираха работата на държавно учреждение, защото преди да падне услугада на това учреждение, че паднат много големи доставчици.
!!! Моля не доразвивайте тази теория в тази тема. Може да отворим друга тема, ако има интерес!!!

Предполагам, че във форума има потребители, които се занимават сериозно с мрежово администриране. Ако дадат своето мнение, за използваните инструменти и начина на работа на системата, ще съм им благодарен.

Системата се стартира в тори ред, Линукс :
rc.local ($2) - създава vlan-ни, iptables правила, ipset таблици
start.sh ($2) - създава правила за шейпъра, добавя рутиране за IP адреси по интерфейсите, пуска mac защита, проверява платилите клиенти

Ако има интерес, мога да обясня по-подробно.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: 10101 в Aug 02, 2017, 23:37
Като си започнал давай до край ,на мен ми е интересно.Можеш да споделиш детайли.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: mystical в Aug 03, 2017, 19:45
Конфигурационни файлове, които се използват от php:
/etc/imslu/config.php ($2) - съдържа общи конфигурационни променливи
/etc/imslu/database_config.php ($2) - съдържа променливи за база данни
include/os.php ($2) - изберете каква ОС използвате, по подразбиране е FreeBSD

/etc/imslu/config.sh ($2)  - съдържа общи конфигурационни променливи, които се използват от скриптовете.

За някои потребители може да изглежда малко объркващо и сигурно се питат, дали има нужда от конфигурационни файлове, скриптове, ...?

Идеята е проста.
Конфигурационните файлове съдържат най-общите системни настройки и позволяват лесна промяна на стойности, без да се правят промени по кода.
В база данни се съхранява останалата информация.
Уеб интерфейса променя данните в база данни и стартира functions-php.sh скрипта, за да приложи новите промени.
sh скриптовете имат достъп до системата и прилагат промените.

/etc/rc.local ($2):

. /etc/imslu/config.sh
. /etc/imslu/scripts/functions.sh
Включва променливи от конф. файл и системни функции.

####### IMQ #######
Правилата трябва да се разкоментират, ако imq модула не е част от ядрото. На IMQ интерфейсите не създават правилата за шейпъра.

##### ADD VLANS #####
Тази функция се намира в functions.sh и служи за автоматично създаване на виртуални интерфейси. Разгледайте променливата VLAN_SEQ в /etc/imslu/config.sh, тя определя колко и с какво id да бъдат vlan-ните.

####### ipset #######
Създават се ipset таблици, за да се използват по-късно. ipset създава хеш таблици, чрез които се прави много бърза проверка, дали пакета отговаря на даденото правило. С едно ipset правило може да се заменят много iptables правила.

### kinds of traffic ###
Маркира се входящ и изходящ трафик, който не е български (международен). Българския трафик се използва повече, поради което маркираме международни. Ако има обратна тенденция могат да им се сменят местата, но това ще наложи промени и в другите скриптове. Маркираме може би, не е правилния израз, понеже iptables разполага и с инструмент "-j MARK". Мисля, че "-j TOS" е по-бърза операция в сравнение с "-j MARK", ако греша моля да ме поправите.

### Shaper ###
Тези правила пренасочват трафика за ограничаване на скоростт в IMQ интерфейса.

# Dynamic NAT
Тези правила са интересни. DNETMAP модула позволява частни мрежи да се nat-ват с част или цяла публична подмрежа.

# Redirect expiret users to warning page
Това правило излишно проверява уеб трафика, за да пренасочи неплатилите клиенти към старицата за предупреждение.
Не ми харесва, че има такова правило, но не мога да намеря по-елегантно решение.
Ако има начин това да се прави във FORWARD таблицата, след като е минала проверката за плащането, ще е перфектно.

# NAT
Няма какво да обяснявам.

# Set default policy for chain FORWARD to DROP
Запазва се минимален лог и се извършва проверка за платили клиенти. "-m set --match-set allowed" таблица allowed съдържа IP адреси на клиенти, които са платили услугата. С ipset проверката става чрез бързи хеш таблици и само с две правила.

Разгледайте /etc/imslu/scripts/start.sh ($2) има интересни команди. Този скрипт работи с БД, за да създаде правилата за щейпър, платили клиенти, рутиране, mac защита.

Отворен съм на всякакви предложения, за оптимизиране на производителността.
Писането не ми е силната страна, ако имате въпроси, питайте.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: supportpc в Jun 20, 2020, 18:51
Здравейте , като тръгна да зареждам веб интерфейса ми дава тази грешка

Secure Connection Failed

An error occurred during a connection to 192.168.88.89. SSL received a record that exceeded the maximum permissible length. Error code: SSL_ERROR_RX_RECORD_TOO_LONG

    The page you are trying to view cannot be shown because the authenticity of the received data could not be verified.
    Please contact the website owners to inform them of this problem.

всичко съм спазил по документа на инсталацията инсталирал съм го на debian 8

до тука стигам !!!!!!!!!!!!!!!!!!!!!!!
Може да изтеглите системата от уеб адрес: https://sourceforge.net/projects/imslu/
   tar -zxvf imslu_0.1-alpha.tar.gz

ИЛИ
Актуална версия от:
   git clone https://github.com/mysticall/imslu.git
cd  imslu

За по-добра отчетност, ще създадем няколко директории и ще копираме системата в тях.
mkdir /usr/share/imslu - Създаваме директория за PHP уеб интерфейса.
cp -r PHP/* /usr/share/imslu – Преместваме уеб интерфейса.
mkdir /etc/imslu - Създаваме главна директория, която ще съдържа конфигурационните файлове и ядрото.
cp -r conf/debian/* /etc/imslu/ - Копираме всички файлове в главната директория.
chmod +x /etc/imslu/scripts/* - Променя режима на скриптовете, за да са изпълними.
mkdir /etc/imslu/backup  - В тази директория ще се намират резервните копия на базата данни. Ако искате да използвате друга директория, променете “ SQL_BACKUP_DIR = "/etc/imslu/backup/" ” в “/etc/imslu/scripts/config.py”.
chown www-data:www-data /etc/imslu/backup
mkdir /var/log/imslu – Създаваме директорията, в която програмата ще води подробни дневници (log dir).
cp conf/cron/imslu /etc/cron.d/ - Този файл, ще се стартира автоматично от cron всяка сутрин в 00:01 часа. Първо проверява за потребители, които не се изключват и ако намери добавя автоматични задължения. След което проверява за потребители с изтекла дата за предоставената услуга. Прави архив на най-важните таблици от базата данни.

2.3 База данни

   База данни заема централно място и е най-важния елемент от “Система за управление на интернета за потребители в локална мрежа”. В база данни се записва и съхранява информация за потребители, плащания, срокове за преплатена услуга, информация за оператори и друга информация. След което тази информация се използва от Freeradius и скриптовете, които правят работоспособна системата. Без база данни нищо няма да работи.
   В процес на разработване на системата за база данни сървър се изполваше MariaDB - https://mariadb.org/ и тук ще разгледаме как да инсталираме този сървър. Това да не притеснява тези, които искат да използват MySQL, понеже MariaDB е заместител на MySQL. Ако искате да използвате друг база данни сървър, ще трябва да донапишите системата, но добрата нивина е, че връзките към база данни сървъра са писана на PDO. Предполага се, че с минимални промени по кода, може да се добави поддръжка и за други база данни.

Всички команди в това ръководство, ще се изпълняват с права на root!

Създаваме файла “MariaDB.list” и добавяме следното съдържание:

nano /etc/apt/sources.list.d/MariaDB.list
# MariaDB 5.5 repository list
# http://mariadb.org/mariadb/repositories/
deb http://mirror.timeweb.ru/mariadb/repo/5.5/debian wheezy main
deb-src http://mirror.timeweb.ru/mariadb/repo/5.5/debian wheezy main

gpg --keyserver keys.gnupg.net --recv-keys CBCB082A1BB943DB
gpg -a --export CBCB082A1BB943DB | apt-key add -

apt-get update
apt-get install mariadb-server

Когато актуализираме системата, тя иска да замени libmysqlclient на MariaDB с тази на  MySQL, за да предотвратим това изпълняваме следната команда:
echo libmysqlclient18 hold | dpkg –set-selections

Ако  трябва да актуализирате libmysqlclient на MariaDB:
echo libmysqlclient18 install | dpkg --set-selections

Вече имаме инсталиран база данни сървър. Създаваме база данни:
mysql -uroot -p
CREATE DATABASE imslu DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON imslu.* TO imslu@localhost IDENTIFIED BY 'imslu_password';
quit;

Нека да разгледаме съдържанието на папка “database/mysql/”, където се намира информацията, която трябва да прелеем в новосъздадената база данни:
01_schema.sql – таблици, които се използват от системата
02_data.sql – информация, която позволява достъп до системата
03_example_static_ip-addresses.sql -  примерна мрежа за статични IP адреси
04_freeradius_schema.sql - таблици, които се използват от Freeradius
05_freeradius_data.sql – информация, която Freeradius използва за изтекли потребители
06_freeradius_example.sql – примерни конфигурации, които се използват от Freeradius
07_freeradius_example_ippool.sql – примерна мрежа, от която Freeradius дава IP адреси на валидни клиенти

  Бележка: Трябва да са налични и таблиците за FreeRADIUS в базата данни, даже и да не позволявате на вашите потребители, да имат достъп до интернет чрез PPPoE сесии. Причината за това е
      try {

       }
       catch (PDOException $e) {

       }
блока в “include/classes/class.cpdoinstance.php”. PHP, ще се опита да извлече информация от дадена таблица на FreeRADIUS и ако не съществува ще се спре изпълнението на кода. Ако не е включена и опцията за показване на грешки “error_reporting(E_ALL); ini_set('display_errors', 'On');” , ще имате само празна страница, без да знаете какво се случва.

    Бележка: Всички примери в ръковоството са от мрежите, които се намират в горните файлове.

Създаване на таблици и вмъкване на данни:
mysql -D imslu -u imslu -pimslu_password < 01_schema.sql
mysql -D imslu -u imslu -pimslu_password < 02_data.sql
mysql -D imslu -u imslu -pimslu_password < 03_example_static_ip-addresses.sql
mysql -D imslu -u imslu -pimslu_password < 04_freeradius_schema.sql
mysql -D imslu -u imslu -pimslu_password < 05_freeradius_data.sql
mysql -D imslu -u imslu -pimslu_password < 06_freeradius_example.sql
mysql -D imslu -u imslu -pimslu_password < 07_freeradius_example_ippool.sql

   Прилагане на пачове

mysql -D imslu -u imslu -pimslu_password < ../upgrades/mysql/01_patch-0.1-alpha-1.sql

   2.4 Apache2 и PHP5

Инсталиране:
apt-get install libapache2-mod-php5 php5-mysql subversion

В Дебиан подразбиращия се събирач на боклука за PHP е заменен със скрипт. Първо трябва да се спре този скрипт:
nano /etc/cron.d/php5 и само коментирате “#”

Старниране на PHP default garbage collection:
nano /etc/php5/apache2/php.ini
session.gc_probability = 1

Задаване на времева зона по подразбиране:
nano /etc/php5/apache2/php.ini
date.timezone = "Europe/Sofia"

mkdir /etc/apache2/ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Най-важната линия е "Common Name". Въведете името на официалния си домейн тук или ако нямате такъв все още, IP адреса на сайта.
Пример:
Generating a 2048 bit RSA private key
............................................................+++
...........................................................+++
writing new private key to '/etc/apache2/ssl/apache.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:BG
State or Province Name (full name) [Some-State]:Sofia
Locality Name (eg, city) []:Sofia
Organization Name (eg, company) [Internet Widgits Pty Ltd]:imslu
Organizational Unit Name (eg, section) []:imslu
Common Name (e.g. server FQDN or YOUR name) []:192.168.1.253
Email Address []:webmaster@localhost

a2enmod ssl
rm /etc/apache2/sites-enabled/default-ssl
rm /var/www/index.html
ln -s /etc/imslu/apache-ssl.conf /etc/apache2/sites-enabled/imslu-ssl
cp /etc/imslu/index.php /var/www
/etc/init.d/apache2 restart


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: go_fire в Jun 20, 2020, 21:08
Исмаиле, безкрайно благодаря от свое име, а надявам се и от други, че буташ проекта и той се развива. На мен не ми помага с нищо, но вярвам, че на много народ им върши работа, при това професионално.

Само един въпрос. Публикува ли го в „Мейд ин Би Джи“? Просто там има много по-голяма видимост, отколкото има във форума.


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: 4096bits в Jun 21, 2020, 00:25
Не обичам никакъв вид контрол  ;D


Титла: Re: IMSLU- “Система за управление на интернета за потребители в локална мрежа”
Публикувано от: supportpc в Jun 21, 2020, 00:44
Исмаиле, безкрайно благодаря от свое име, а надявам се и от други, че буташ проекта и той се развива. На мен не ми помага с нищо, но вярвам, че на много народ им върши работа, при това професионално.

Само един въпрос. Публикува ли го в „Мейд ин Би Джи“? Просто там има много по-голяма видимост, отколкото има във форума.

БРАВО!!!