Narzędzia użytkownika

Narzędzia witryny


generator_plikow_konfiguracyjnych_lms-mgc

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

generator_plikow_konfiguracyjnych_lms-mgc [2012/12/05 00:00]
generator_plikow_konfiguracyjnych_lms-mgc [2012/12/05 00:00] (aktualna)
Linia 1: Linia 1:
 +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ę)
 +
 +<​code>​
 +0 * * * *       /​usr/​sbin/​lms-mgc 1 > /dev/null
 +</​code>​
 +
 +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: ​
 +<​code>​
 +-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;
 +</​code>​
 +
 +====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
 +
 +<fc #FF0000>
 +Właściciel musi być podany numerycznie!
 +</​fc> ​
 +
 +  * outfile_group
 +Pozwala na ustawienie grupy pliku wyjściowego (domyślnie 0)
 +Przykład: outfile_group = 0
 +
 +<fc #FF0000>
 +Grupa musi być podana numerycznie!
 +</​fc> ​
 +
 +  * 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: 
 +<​code>​
 +[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
 +</​code>​
 +
 + ​Dopiszmy także do sekcji głównej mgc informację żeby mgc uruchamiał tą sekcję: ​
 +<​code>​
 +[mgc]
 +instances ​        = ipchains
 +</​code>​
 +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)