Автор Тема: IMSLU- “Система за управление на интернета за потребители в локална мрежа”  (Прочетена 36310 пъти)

mystical

  • Напреднали
  • *****
  • Публикации: 326
  • Distribution: Debian, FreeBSD
  • Window Manager: XFCE
    • Профил
    • WWW
В предишни мои теми бях споменал, че разработвам система за контролиране на интернет достъпа.
Вече е ясно името и - (Management System for Internet Users in the LAN) - “Система за управление на интернет потребители в локална мрежа”.
Абе това хич не звучи на Английски ???
или още по добро

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

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

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

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

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

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

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

- Техник

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

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

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

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

АКТУАЛНА ВЕРСИЯ

Последна версия на разработчиците.
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" .
Има и още планирани неща, но когато им дойде времето...
« Последна редакция: Nov 19, 2013, 22:02 от mystical »
Активен

Ако не можеш да градиш, поне не руши!

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Вече е ясно името и - (Management System for Internet Users in the LAN) -.

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

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

или още по добро
Internet Management System for LAN Users.
« Последна редакция: Sep 25, 2013, 23:57 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Трябва малко да оправиш сигурността. В момента ако съм касиер мога да правя поразии, например лесно да стана системен администратор, залагайки капани в системата. Примерно логни се като sadmin, виж списъка с потребителите (Users->show), в момента в който го направиш вече имаш добавен нов системен администратор с потребителско име hacker. Сигурно и други такива поразии могат да се правят, но това ми се видя най-простото.
Активен

"Knowledge is power" - France is Bacon

mystical

  • Напреднали
  • *****
  • Публикации: 326
  • Distribution: Debian, FreeBSD
  • Window Manager: XFCE
    • Профил
    • WWW
Благодаря за отзивите.

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

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

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

Ако не можеш да градиш, поне не руши!

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Касиерите могат да създават/редактират потребители. Детайлите на потребителя (телефонен номер, адрес) не се санитизират и е възможно да се вмъкне javascript код. Впоследствие когато отидеш на списъка с потребителите, понеже детайлите се визуализират, javascript кода се изпълнява. Когато системния администратор създава нов оператор, имаш една форма, с която пращаш детайлите за новия оператор с POST заявка към PHP скрипт. Тази POST заявка лесно може да я засилиш и с xmlhttprequest в javascript кода, който виси в детайлите на потребителя. Така, когато администраторът преглежда списъка с потребители, реално погледнато "скрито" създава нов системен администратор с потребителско име и парола според това как му е казано. В случаят има 2 проблема: persistent XSS атаката (където javascript код влиза в базата и после се изпълнява в браузъра на друг потребител), вторият е че административният интерфейс не е подсигурен срещу CSRF атаки. Комбинацията от тези двете дава възможност да се правят пакости.

Активен

"Knowledge is power" - France is Bacon

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8780
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Нито една от трите двойки име-парола не дава допуск до системата. И няма да е зле в такива случай да уведомяваш подателя, че нещо не е наред и какво е то.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

mystical

  • Напреднали
  • *****
  • Публикации: 326
  • Distribution: Debian, FreeBSD
  • Window Manager: XFCE
    • Профил
    • WWW
Мисля, че успях да променя името на системата във всички файлове.
В по-горния линк "doc" добавих и кода на програмката. Все още не са оправени проблемите със сигурността, за които писа 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 атаките не са ми мнго ясни.
« Последна редакция: Sep 26, 2013, 23:29 от mystical »
Активен

Ако не можеш да градиш, поне не руши!

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Параметризираните заявки не мисля че вършат работа срещу XSS атаки, трябва да оправяш HTML таговете във входа (там htmlentities() ли не знам какво е официално приетото средство в PHP, не съм се занимавал с тези неща отдавна и съм забравил). На практика може и с един или повече регулярни изрази да го направиш, ама не те съветвам, винаги може да се изпусне нещо.

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

Гадното е че колкото и да е тъпо, не е много лесно да се оправяш с това. В общият случай, начинът е с някакви случайно генерирани токени. Примерно когато зареждаш формата за нов потребител, се създава случаен токен и се вкарва в HTML изхода под формата на INPUT TYPE=HIDDEN, така че да се submit-не. После сравняваш това което ти се праща с това, което ти се генерирал и така знаеш че заявката идва както си му е реда. Друг вариант е да проверяваш referer-а, но това не е много умно.
« Последна редакция: Sep 26, 2013, 23:03 от gat3way »
Активен

"Knowledge is power" - France is Bacon

mystical

  • Напреднали
  • *****
  • Публикации: 326
  • Distribution: Debian, FreeBSD
  • Window Manager: XFCE
    • Профил
    • WWW
Параметризираните заявки не мисля че вършат работа срещу 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 адрес.

Благодаря за полезните съвети.
« Последна редакция: Sep 26, 2013, 23:55 от mystical »
Активен

Ако не можеш да градиш, поне не руши!

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Малко инфо:
- При грешен опит за вход, системата забавя отговора за 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.

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

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

« Последна редакция: Sep 27, 2013, 17:26 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

mystical

  • Напреднали
  • *****
  • Публикации: 326
  • Distribution: Debian, FreeBSD
  • Window Manager: XFCE
    • Профил
    • WWW
Не трябва да е точно така. Знаеш ли колко пъти се бърка паролата при начално изписване. Я клавиш зацепил, я капслок натиснат, я админа е препил, я много бързо набира паролата и бърка, я паролата е много дълга и се греши...... На мене много често ми се случвало два-три пъти в начало да не уцеля паролата си.

За това правилното решение е:
- 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 адреси, те все пак се намират в локалната мрежа на интернет доставчика.
Активен

Ако не можеш да градиш, поне не руши!

edmon

  • Гост
Я не моа разбера, за къв чемер ти е такава сигурност като може да разрешиш достъп само на краен брой лица близък до 10, с краен брой работни станции....
както и да е.. :)
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Ако оправиш CSRF проблемите, всичко ще е 6. Обаче иначе не. Касиерът може да бъде подмамен да отвори някакъв линк, който прави поразии (социално инженерство, виж яката страничка със снимки с котки или нещо от сорта). В момента в който го направи, ще заложи капана без да знае.
Активен

"Knowledge is power" - France is Bacon

edmon

  • Гост
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.
Активен

mystical

  • Напреднали
  • *****
  • Публикации: 326
  • Distribution: Debian, FreeBSD
  • Window Manager: XFCE
    • Профил
    • WWW
Мисля, че оправих проблемите с CSRF и XSS в Профил, Оператори, Редактиране на потребител, Плащания на потребителя, Плащания.
Работя и по другите страници. Ако може да тествате, за да съм сигурен, че всичко е наред.
« Последна редакция: Sep 29, 2013, 21:54 от mystical »
Активен

Ако не можеш да градиш, поне не руши!