Narzędzia użytkownika

Narzędzia witryny


generator_plikow_konfiguracyjnych_lms-mgc

LMS-MGC to „magiczny” generator plików konfiguracyjnych. Przy odrobinie wysiłku można stworzyć przy jego pomocy dowolnego rodzaju plik konfiguracyjny (np. generujący odpowiednie strefy dla DNS)

5.1. Instalacja

Lms-mgc posiada własny plik konfiguracyjny: lms-mgc.ini. Jego instalacja polega na przeniesieniu do katalogu /usr/sbin. Uruchomienie generatora można wykonać na dwa sposoby: wpisać do crona (np. co godzinę)

0 * * * *       /usr/sbin/lms-mgc 1 > /dev/null

albo z poziomu LMS skorzystać z menu „Przeładowanie”. Druga metoda wymaga użycia sudo. Niestety, jedyne wyjście by umożliwić uruchomienie lms-mgc, to dopisanie użytkownika do sudo, a następnie ustawienie w sekcji konfiguracyjnej [phpui]:

reload_type = exec

reload_execcmd = sudo /usr/sbin/lms-mgc

Lms-mgc posiada następujące opcje uruchomienia:

-C, --config-file=/path/lms-mgc.ini alternatywny plik konfiguracyjny 
                                    (default: /etc/lms/lms-mgc.ini);
-i, --instances=name                nazwa (lub numer) instancji do uruchomienia, bez czytania 
                                    konfiguracji z lms-mgc.ini, np. -i "name1 name2"
-h, --help                          wyświetla pomoc;
-v, --version                       wyświetla numer wersji;
-q, --quiet                         tylko komunikaty o błędach;
-d, --debug                         informacje szczegółowe dla każdego IP;

5.2. Konfiguracja

Konfigurację dla LMS-MGC przeprowadza się w pliku lms-mgc.ini

5.2.1. Sekcja [database] - ustawienia bazy danych

  • type

Typ bazy danych. Aktualnie w 100% supportowany jest 'mysql', ale jak na razie nie widać większych problemów z 'postgres'. Domyślnie: mysql Przykład: type = mysql

  • host

Host gdzie zainstalowana jest baza danych. Najczęściej, localhost, ale można tutaj wstawić cokolwiek (ipek, domena, path to socketa w formacie 'localhost:/path/to/socket'). Domyślnie: localhost Przykład: host = localhost

  • user

Użytkownik do bazy danych. W wielu wypadkach (jeżeli postępowałeś zgodnie ze wskazówkami w doc/INSTALL) będzie to 'lms'. Jeżeli chcesz używać konta uprzywilejowanego, prawdopodobnie wpiszesz 'root' (MySQL na większości *nixów), 'mysql' (na PLD) bądź 'postgres' (PostgreSQL). Domyślnie: root Przykład: user = mysql

  • password

Hasło do bazy danych. Domyślnie puste. Przykład: password = tajne_haslo

  • database

Nazwa bazy danych, domyślnie lms. Przykład: database = lms

5.2.2. Sekcja [mgc] - lista instancji

Właściwa konfiguracja dotycząca generatorów poszczególnych plików konfiguracyjnych jest umieszczana w sekcji [mgc] i pochodnych. W samej sekcji [mgc] możemy użyć następującego parametru:

  • instances

Lista „instancji” oddzielona spacjami. Przykład: instances = dhcp firewall squid Zmienną instances można także umieścić w sekcji dowolnej instancji. Patrz niżej.

5.2.3. Sekcja [mgc:xxx] - konfiguracja instancji

Każda instancja ma swoją nazwę i jej konfigurację tworzy się umieszczając sekcję o nazwie [mgc:nazwa], czyli przykładowo: [mgc:mydaemon]

W samych instancjach możemy używać następujących opcji konfiguracyjnych:

  • instances

Zmienna, w której możesz podać listę innych instancji, aby następnie wywoływać mgc poleceniem 'lms-mgc -i sekcja' zamiast 'lms-mgc -i „sekcja1 sekcja2 sekcja3”'. Jeśli zostanie użyta, wszystkie pozostałe zmienne tej sekcji zostaną zignorowane. Przykład: instances = dns1 dns2 dns3

  • outfile

Definiuje plik do którego ma być zapisany wynik działania bieżącej instancji (jeżeli ta zmienna będzie nie ustawiona, instancja się zakończy) Przykład: outfile = /etc/somefile

  • append

Pozwala ustawić aby wynik działania instancji nie nadpisywał pliku wynikowego, lecz został dopisany na jego końcu Przykład: append = 1

  • outfile_perm

Pozwala na ustawienie praw dostępu do pliku wyjściowego (domyślnie 600) Przykład: outfile_perm = 700

  • outfile_owner

Pozwala na ustawienie właściciela pliku wyjściowego (domyślnie 0) Przykład: outfile_owner = 0

Właściciel musi być podany numerycznie!

  • outfile_group

Pozwala na ustawienie grupy pliku wyjściowego (domyślnie 0) Przykład: outfile_group = 0

Grupa musi być podana numerycznie!

  • header_file

Pozwala na umieszczenie w pliku wynikowym zawartości innego pliku jako nagłówek (domyślnie nie ustawione) Przykład: header_file = /etc/lms/myservice_header

  • header

Pozwala na umieszczenie w pliku wynikowym zawartości zmiennej jako nagłówka (domyślnie puste) Przykład: header = option1 = bla\noption2 = blabla Znak \n został tu użyty jako separator linii. Końcowe \n nie jest wymagane.

  • customergroups

Pozwala ustalić które z grup klienckich będą uwzględniane w pliku konfiguracyjnym (domyślnie wszystkie) Przykład: customergroups = grupa1 grupa2

  • excluded_customergroups

Pozwala ustalić które z grup klientów mają zostać wyłączone z pliku konfiguracyjnego (domyślnie żadna) Przykład: excluded_customergroups = grupa3 grupa4

  • networks

Pozwala ustalić które z naszych sieci będą uwzględniane w pliku konfiguracyjnym (domyślnie wszystkie) Przykład: networks = cust1-publ cust2-publ cust3-priv

  • excluded_networks

Pozwala ustalić które z naszych sieci będą wyłączone z pliku konfiguracyjnego (domyślnie żadna) Przykład: excluded_networks = cust4-publ cust5-publ

Teraz mgc pobiera kolejne sieci i wykonuje w kółko następujące czynności:

  • network_header

Generuje nagłówek dla każdej sieci (domyślnie puste): Przykład: network_header = network %ADDR/%MASK { # Config section for %NAME

  • dst_networks

Pozwala ustawić sieci docelowe, czyli takie dla których będzie przetwarzany parametr: dst_network_header (domyślnie wszystkie): Przykład: dst_networks = main coalloc

  • dst_network_header

Pozwala ustawić nagłówek dla sieci docelowych Przykład: dst_network_header = \tallow to %DADDR/%DMASK;

  • network_body

Parametr jest przetwarzany po wysłaniu nagłówków dla sieci, a przed rozpoczęciem analizy adresów IP Przykład: network_body = \tnodes {

Teraz MGC rozpocznie przetwarzanie regułek dla kolejnych adresów IP. Robi to w dosyć specyficzny sposób. Tzn. oblicza kolejny adres IP i sprawdza czy zdefiniowano regułę dla hosta i wykonuje pierwszą. Sprawdzanie jest wykonywane w następującej kolejności:

  • ignore

Pozwala na ustawienie listy adresów w postaci adres/prefix lub adres/maska oddzielanej spacjami dla której ma być ignorowane generowanie Przykład: ignore = 192.168.0.100/32

  • node(IP)

Przy pomocy tej opcji można zdefiniować regułę dla wybranego komputera. W nawiasie podaje się jego adres IP. Każda sekcja instancji może zawierać dowolną ilość takich opcji. Przykład: node(192.168.0.20) = ??

  • allnodes

Pozwala na ustawienie regułki przetwarzanej dla każdego kolejnego adresu IP. Przykład: allnodes = ??

  • allexistnodes

Pozwala na ustawienie regułki przetwarzanej dla każdego kolejnego adresu IP który jest używany. Przykład: allexistnodes = ??

  • netdevnode

Pozwala na ustawienie regułki przetwarzanej dla każdego kolejnego adresu IP urządzenia sieciowego. Przykład: netdevnode = ??

  • grantednode_priv

Jest przetwarzana gdy dany adres komputer z danym adresem IP istnieje, ale w lms-ui ma status „podłączony” (regułka przetwarzana dla adresów prywatnych) Przykład: grantednode_priv = \t\tnode %NAME (%IP/%MAC) unique %ID;

  • grantednode_publ

Jest przetwarzana gdy dany adres komputer z danym adresem IP istnieje, ale w lms-ui ma status „podłączony” (regułka przetwarzana dla adresów publicznych) Przykład: grantednode_publ = \t\tnode %NAME (%IP/%MAC) unique %ID;

  • deniednode_priv

Jest przetwarzana gdy dany adres komputer z danym adresem IP istnieje, ale w lms-ui ma status „odłączony” (regułka przetwarzana dla adresów prywatnych) Przykład: deniednode_priv = node %NAME (%IP/%MAC) unique %ID deny;

  • deniednode_publ

Jest przetwarzana gdy dany adres komputer z danym adresem IP istnieje, ale w lms-ui ma status „odłączony” (regułka przetwarzana dla adresów publicznych) Przykład: deniednode_publ = node %NAME (%IP/%MAC) unique %ID deny;

  • dhcpnode_priv

Jest przetwarzana gdy dany adres IP zawiera się w zakresie DHCP (regułka przetwarzana dla adresów prywatnych) Przykład: dhcpnode_priv = node unknown (%IP) reject;

  • dhcpnode_publ

Jest przetwarzana gdy dany adres IP zawiera się w zakresie DHCP (regułka przetwarzana dla adresów publicznych) Przykład: dhcpnode_publ = node unknown (%IP) reject;

  • freeip_priv

Jest przetwarzana gdy dany adres IP nie jest przypisany do żadnego komputera (regułka przetwarzana dla adresów prywatnych) Przykład: freeip_priv = node unknown (%IP) lock_as_unused;

  • freeip_publ

Jest przetwarzana gdy dany adres IP nie jest przypisany do żadnego komputera (regułka przetwarzana dla adresów publicznych) Przykład: freeip_publ = node unknown (%IP) lock_as_unused;

  • default_priv

Regułka domyślna. Jest przetwarzana gdy adres nie zostanie przetworzony przez żadną regułkę grantednode lub deniednode (regułka przetwarzana dla adresów prywatnych) Przykład: default_priv = node unknown (%IP) lock_as_intruder;

lms-mgc sam rozpoznaje który adres należy do puli publicznej, a który do prywatnej.

  • default_publ

Regułka domyślna. Jest przetwarzana gdy adres nie zostanie przetworzony przez żadną regułkę grantednode lub deniednode (regułka przetwarzana dla adresów publicznych) Przykład: default_publ = node unknown (%IP) lock_as_intruder;

W końcu następuje wygenerowanie końcowej części pliku i wykonanie polecenia systemowego.

  • network_footer

Pozwala na ustawienie stopki dla właśnie przetwarzanej sieci Przykład: network_footer = ??

  • footer_file

Pozwala na umieszczenie w pliku wynikowym zawartości innego pliku jako stopka (domyślnie nie ustawione) Przykład: footer_file = /etc/lms/myservice_footer

  • footer

Pozwala na umieszczenie w pliku wynikowym zawartości zmiennej jako stopki (domyślnie puste) Przykład: footer = # End.

  • post_exec

Komenda do wywołania po wygenerowaniu pliku konfiguracyjnego Przykład: post_exec = killall -HUP mydaemon

5.2.4. Zmienne konfiguracyjne

W opcjach konfiguracyjnych można używać następujących zmiennych, które zostaną podmienione na odpowiednie dane z bazy:

Zmienne dla komputerów:

  • %IP - adres IP komputera
  • %PUBIP - drugi (publiczny) adres IP komputera
  • %PIN - pin klienta posiadającego dany komputer
  • %ID - ID komputera w bazie
  • %MAC - adres MAC karty sieciowej
  • %SMAC - adres MAC pisany małymi literami z usuniętymi dwukropkami
  • %CMAC - adres MAC pisany w formacie CISCO (FFFF.FFFF.FFFF)
  • %OWNER - ID właściciela komputera
  • %CUSTOMER - nazwisko i imię właściciela komputera
  • %NAME - nazwa komputera dużymi znakami
  • %name - nazwa komputera małymi znakami
  • %INFO - opis komputera
  • %PASSWD - hasło komputera
  • %PORT - port urządzenia, do którego podłączony jest komputer
  • %UPRATE - gwarantowany transfer dla danych wychodzących
  • %NUPRATE - gwarantowany transfer dla danych wychodzących (dla godzin nocnych)
  • %DOWNRATE - gwarantowany transfer dla danych przychodzących
  • %NDOWNRATE - gwarantowany transfer dla danych przychodzących (dla godzin nocnych)
  • %UPCEIL - maksymalny transfer dla danych wychodzących
  • %NUPCEIL - maksymalny transfer dla danych wychodzących (dla godzin nocnych)
  • %DOWNCEIL - maksymalny transfer dla danych przychodzących
  • %NDOWNCEIL - maksymalny transfer dla danych przychodzących (dla godzin nocnych)
  • %CLIMIT - limit równoczesnych połączeń
  • %NCLIMIT - limit równoczesnych połączeń (dla godzin nocnych)
  • %PLIMIT - limit pakietów
  • %NPLIMIT - limit pakietów (dla godzin nocnych)
  • %1 %2 %3 %4 - kolejne oktety (od lewej) adresu IP
  • %NID - ID sieci, do której należy komputer
  • %NNAME - nazwa sieci dużymi znakami
  • %nname - nazwa sieci małymi znakami
  • %NADDR - adres sieci
  • %NIFACE - interfejs sieci
  • %NMASK - maska sieci
  • %NGATE - adres bramy
  • %NDNS - adres serwera DNS
  • %NDNS2 - adres drugiego serwera DNS
  • %NDOMAIN - domena sieci
  • %NWINS - adres serwera WINS dla tej sieci
  • %NDHCPS - pierwszy adres DHCP sieci
  • %NDHCPE - ostatni adres DHCP sieci

Zmienne dla sieci (w opcjach dotyczących tylko sieci):

  • %ID - ID sieci w bazie
  • %NAME - nazwa sieci dużymi znakami
  • %name - nazwa sieci małymi znakami
  • %ADDR - adres sieci
  • %IFACE - interfejs
  • %MASK - maska
  • %GATE - brama sieci
  • %DNS - serwer DNS tej sieci
  • %DNS2 - drugi serwer DNS tej sieci
  • %DOMAIN - domena tej sieci
  • %WINS - adres serwera WINS dla tej sieci
  • %DHCPS - pierwszy adres DHCP tej sieci
  • %DHCPE - ostatni adres DHCP tej sieci

W opcji konfiguracyjnej dst_network_header można ponadto użyć powyższych zmiennych ale poprzedzonych literą D (np. %DADDR, %dname) jako parametry sieci docelowych.

Zmienne które można stosować we wszystkich opcjach:

  • %DATE - data w formacie YYYYMMDD;
  • %TIME - czas w formacie HHMM;
  • %TIMES - czas w formacie HHMMSS;
  • %UTIME - czas w formacie unix timestamp;

5.3. Przykład zastosowania lms-mgc

Konfiguracja i zasada działania lms-mgc może się wydawać dość zawiła, dlatego posłużymy się przykładem. Poniżej przedstawiono sposób generowania i uruchamiania firewalla ipchains (bardzo prostego).

Przykład 5-1. Lms-mgc: Przykład instancji

Zacznij od utworzenia nowej sekcji mgc w lms-mgc.ini, nazywając ją 'ipchains' i stwórz w tej sekcji prostą maskaradę per adres IP z lanu:

[mgc:ipchains]
outfile           = /etc/rc.d/rc.masq
outfile_perm      = 700
header            = #!/bin/sh\n/sbin/ipchains -F\n/sbin/ipchains -X\n/sbin/ipchains -P forward DENY
grantednode_priv  = /sbin/ipchains -A forward -s %IP -j MASQ
post_exec         = /etc/rc.d/rc.masq

Dopiszmy także do sekcji głównej mgc informację żeby mgc uruchamiał tą sekcję:

[mgc]
instances         = ipchains

Teraz próba odpalenia lms-mgc powinna zaowocować wygenerowaniem /etc/rc.d/rc.masq, oraz jego odpaleniem.

generator_plikow_konfiguracyjnych_lms-mgc.txt · ostatnio zmienione: 2012/12/05 00:00 (edycja zewnętrzna)