LAN administration system

Wszystko Off Topic
Awatar użytkownika
mruz
Posty: 2
Rejestracja: 12 lipca 2014, 15:40

LAN administration system

Post autor: mruz »

Witam,


W 2010 roku stworzyłem na własne potrzeby system zarządzania siecią - głównie połączeniem internetowym, którego zadaniem jest udostępnianie i dzielenie połączenia, zarządzanie taryfami (zapewnione/maksymalne prędkości), klientami, urządzaniami, płatnościami. Po dodaniu do crona system sam nalicza odpowiedni abonament wg taryfy i odcina klienta (żądania ze wszystkich jego urządzeń przekierowuje na stronę z komunikatem) jeśli zalega więcej niż miesiąc, dzięki czemu zarządzanie sprowadza się do wprowadzenia raz danych i księgowania płatności przez przeglądarkę internetową.


System napisany był w PHP w kohana framework i na podstawie danych z bazy generował odpowiednie reguły IPTABLES, u mnie obsługiwał ok. 30 urządzeń i można powiedzieć, że się sprawdził, dlatego postanowiłem go udoskonalić - przepisać w phalcon framework i udostępnić kod open source'owo na githubie.


Jeśli znajdzie się ktoś kto wdroży, będzie używał i będzie taka potrzeba, to można bez problemu go rozwijać jeszcze dalej, np. dodać obsługę płatności online czy multiwan. Mi to nie jest potrzebne więc może w kolejnych wersjach.


LAS jest inspirowany przez LMS, którego chyba nie trzeba przedstawiać. Gdyby ktoś chciał przetestować, pomóc w rozwoju to system umieściłem na githubie: https://github.com/mruz/las. Chciałbym zaznaczyć, że potrzeba więcej czasu, żeby dopracować reguły domyślnych firewalli, ale jak można zauważyć składnia jest to dość prosta i można edytować przez przeglądarkę. Oczywiście można stworzyć własne. Gdyby ktoś czuł się na siłach, to proszę zgłaszać poprawki.


demo
user: admin
password: admin


* Z wiadomych względów na demo nie działa cron, nie można też przeładowywać firewalli, a kompilacja aktywnych jest wykonywana interwałowo. Jeśli więc uzupełnimy danymi, zmodyfikujemy jakiś firewall, to co 10min firewalle są kompilowane i można podglądnąć jakie komendy firewall wyprodukuje.


Jest to wersja alpha, więc proszę o zgłaszanie błędów/poprawek na issues. Odsyłam też do, jak na razie skromnej, dokumentacji.
Awatar użytkownika
mruz
Posty: 2
Rejestracja: 12 lipca 2014, 15:40

Post autor: mruz »

Demo uzupełniłem przykładowymi danymi, tak aby można było podglądnąć co generuje dany firewall.

W dokumentacji jest opisana procedura instalacji na openSUSE, ale phalcona skompilować można bez problemu ze źródeł:

Kod: Zaznacz cały

# Requirements
sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev

git clone --depth=1 git://github.com/phalcon/cphalcon.git
cd cphalcon/build
sudo ./install
A następnie dodać rozszerzenie w php.ini

Kod: Zaznacz cały

extension=phalcon.so
Pytanie do usług - QoS.
Taryfy mają swoje limity i priorytety. Chcę to zrobić tak, że jak włączymy QoS to dla każdej taryfy zostaną dodane podtaryfy - priorytety, które procentowo będą dzieliły daną taryfę:

Kod: Zaznacz cały

Prio Rate Ceil
1:   70 - 100%
2:   10 - 100%
3:   10 - 95%
4:   5  - 95%
5:   5  - 90%
Wartości te można zmodyfikować w ustawienia/qos. Zaznaczam, że to jeszcze nie działa prawidłowo. Usługi mogą być dla urządzenia, klienta czy dla wszystkich. Będziemy mogli ustawić np.
WWW 0-512KB High
WWW 512KB+ Low
DNS 0-2KB Highest
DNS 2KB+ Lowest
Porty 1024-65535 Lowest

Główny firewall może prezentować się tak LAS-main, a reguły zezwalające LAS-allow. Firewall jest modułowy, więc nie musimy przeładowywać wszystkiego za każdą zmianą. Po naliczeniu płatności i odcięciu użytkownika przeładuje się LAS-deny, który jest sprawdzany na początku i klient zostanie odcięty zanim zostanie zaakceptowany. Po rozliczeniu płatności wystarczy przeładować LAS-deny (albo cron to zrobi za nas). Tak samo przypomnienia, jeśli będzie zalegał to np. co godz info i musi nacisnąć coś żeby dalej korzystać.

System można wykorzystać do generacji własnego firewalla, przykład:

Kod: Zaznacz cały

{# dla wszystkich klientów #}
{% for client in clients %}
    {# dla każdego aktywnego urządzenia klienta #}
    {% for device in client.getDevices("status=" ~ devices__ACTIVE()) %}
        {# dodaj regułę zezwalającą na ruch o danym ip i mac  #}
        {{ ipt }} -A FORWARD -s {{ device.IP|long2ip }} -m mac --mac-source {{ device.MAC }} -m state --state NEW -j ACCEPT
    {% endfor %}
{% endfor %}
Macie jakieś własne reguły firewall, tak aby razem coś poprawić i udoskonalić. Nie wklejam ich tu żeby nie zaśmiecić, a i tak brak kolorowania. Znajdzie się jakiś dostawca internetu jeszcze, gotowy przetestować system? Może ktoś ma jakieś pomysły, zawsze lepiej to skonfrontować się z kimś.
ODPOWIEDZ