Nms.fjfi.cvut.cz

From NMS
(Redirected from DHCP)
Jump to: navigation, search
Servery / Služby
Přístupné komukoliv
windows
srk
linux / unix
kmlinux
Omezený/individuální účet
linux / unix
bimbo · buon(KF) · km(KM) · lenochod(KJR) · linux · node(KM) · sunrise(KF) · unixlab(KFE) · vkstat(KM)
Služby
backup · DHCP · DNS · doména FJFI · eduroam · fileserver · IdM · forum · gitlab · lists · moodle · indico · mailgw · K4 · mailserver · NMS · openvpn · skolniftp · ssh · videokonference · VoIP · video · VPN · wififjfi · wiki · www
Učebny
e-sklipek · KFE unixlab · KFE pclab · PD1 · KM 105 · KM 115
Ostatní
Network · Blokované porty
[edit] · [view]

Základní informace o nms (Trojanova)

Správce 
Petr Vokáč
HW 
Supermicro X8STE, Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz, 12GB RAM, 2x250 SATA HDD (Intel RAID1), chasis 2U (6x3.5 HDD)
OS 
CentOS7
Využití 
Network Monitoring, User Account Configuration, WiFiFJFI, FJFI VPN Server, Admin Wiki, DHCP, caching DNS, ...
Konto 
---

Základní informace o nms-br (Břehová)

Správce 
Petr Vokáč
HW 
ASUS 1U server RS120-E5/PA4, Intel(R) Xeon(R) CPU X3220 @ 2.40GHz, 4GB RAM, 2x250GB SATA HDD (RAID1)
OS 
CentOS7
Využití 
Network monitoring for Břehová, WiFiFJFI, DHCP, caching DNS, Network device registration support, ...
Konto 
---

Základní informace o nms-vh (Trója)

Správce 
Petr Vokáč
HW 
Asus AT5NM10-I Mini-ITX, CPU Atom 510, 2GB RAM
OS 
CentOS7
Využití 
Network monitoring for Trója, DHCP, caching DNS, Network device registration support, ...
Konto 
---

Základní informace o nms-dp (Děčín)

Správce 
Petr Vokáč
HW 
Dell PowerEdge SC430, Intel(R) Pentium(R) 4 CPU 2.80GHz, 2.5GB RAM, HDD 80GB
OS 
CentOS7
Využití 
Network Monitoring for Děčín, DHCP, caching DNS, WiFiFJFI, ...
Konto 
---

konfigurace sítě

  • vychází z informací na Network
  • pro zjednodušení správy jsou síťové interfacy pomnenovány resp. přejmenovány na netX s využitím systemd link souborů
    • primární interface bude mít označení net0

ipsec (libreswan)

  • zabezpečené spojení mezi NMS servery
    • včetně dat v GRE tunelech pro privátní adresy
    • statická konfigurace routování přivátních adres skrz GRE tunely /etc/sysconfig/network-scripts/route-gre*
  • používá lokálně vygenerované vzájemně důvěryhodné certifikáty
  • je nutné zprovoznit jako první službu, protože jinak nebude fungovat komunikace mezi NMS servery (e.g. puppet repository, databaze, ...)
  • yum install libreswan
  • ipsec verify

Puppet

  • server 3.x běží na nms.fjfi.cvut.cz (2.6.x verze nespolupracují s 3.x klienty), novější je i facter
  • pro zpřístupnění konfigurací se používá rubygem-passenger, konfigurace /etc/httpd/conf.d/puppet.conf
  • po instalaci z RPM je potřeba doinstalovat některé standardní moduly
puppet module install puppetlabs-stdlib
puppet module install puppetlabs-ntp
...
  • pro puppet server je možné používat alias puppet.fjfi.cvut.cz (funkční/důvěryhodné certifikáty serveru)
  • slouží ke konfiguraci zákládních služeb na serveru
    • fnspe_rsyslog -- centrální logování
    • fnspe_krb5 -- konfigurace kerberos klienta
    • fnspe_dns -- caching DNS (bind)
    • fnspe_ntp -- NTP client
    • fnspe_openvpn -- OpenVPN konfigurace (pro přístup k lokálním privátním subnetům)

DHCP

  • failover konfigurace (druhý server vždy v Trojance s vyjímkou Trojanka-Břehovka)
    • DHCP relay na CISCO
      • Břehová - VLAN1 relay (147.32.9.2, 147.32.9.4, 147.32.9.66), VLAN9 147.32.9.66
      • Trojanova - VLAN1 relay (147.32.9.2, 147.32.9.4, 147.32.9.66), VLAN9 147.32.9.2, VLAN13 relay (147.32.9.2, 147.32.9.4, 147.32.9.66)
      • Trója - VLAN1 147.32.25.2 + realy (147.32.9.2, 147.32.9.4)
  • konfigurace z informací o registrovaných zařízeních

ISC DHCP

  • oficiální DHCP server v CentOS7 (ISC DHCP 4.2.5) nepodporuje IPv6 classes
  • aktuálně je nasazen novější ISC DHCP 4.3.1 z src.rpm balíku Fedory 21
    • nutné provést drobné změny v dhcp.spec souboru
    • kompilováno s vloženými ISC BIND knihovnami (požadovaná verze je 9.9.6 a CentOS7 používá 9.9.4)
    • revertnut dhcp-remove-bind.patch odstraňující závislost na interních ISC BIND knihovnách
    • portován dhcp-sd-daemon.patch (z CentOS7) namísto dhcp-sd_notify.patch vyžadujícího novější verzi systemd
    • použity systemd service soubory z CentOS7
  • detaily změn se dají dohledat porovnáním spec souboru z originálního balíku (z Fedory) a lokálně upraveného
  • na Alma9 použit distribuční ISC DHCP 4.4.2
  • pro funkčnost update daemon musíte:
dnf install python3-netaddr python3-dns python3-PyMySQL

Konfigurace

  • veškeré konfigurační soubory jsou v /etc/dhcp
  • databáze přidělených IP adres je ve /var/lib/dhcp
  • hlavním konfiguračním souborem je dhcpd.conf resp. dhcpd6.conf, který includuje obecné a pro lokální DHCP server specifické konfigurace
  • ze seznamu zaregistrovaných zařízení jsou s využitím skriptu DhcpUpdate.py generovány konfigurační soubory dhcpd.static.conf resp. dhcpd6.static.conf

RADVD

  • zkonfigurováno na FJFI zakončení IPv6 tunelů, tj. nms-br, nms-tr, nms-vh

TACACS+

  • zkonfigurován [1] pro síťové prvky
  • konfigurace v /etc/tac_plus.conf
  • firewall nastaven tak, aby byl dostupný pouze z management VLAN

HTTP

  • web rozhraní pro uživatelské konfigurace
  • konfigurace wififjfi logování (virtualhost pro privátní adresy)
  • yum install httpd
  • konfigurace virtualhostu /etc/httpd/conf.d/virtual.conf
systemctl enable httpd
systemctl start httpd

nginx

  • přesměrování na registraci síťových zařízení
  • přesměrování na captive portál login do sítě wififjfi
yum install nginx

# konfigurace přesměrování
#
#   server {
#       listen 172.1x.19.1:80;
#       listen 172.1x.23.1:80;
#       listen 172.1x.79.1:80;
#       listen 172.1x.111.1:80;
#       server_name _;
#       return 301 $scheme://nms.fjfi.cvut.cz/index.php?r=register&client=$remote_addr;
#   }
#
#   server {
#       listen 172.1x.112.1:80;
#       server_name _;
#       return 301 $scheme://nms.fjfi.cvut.cz/index.php?r=wififjfi&client=$remote_addr;
#   }

systemctl enable nginx
systemctl start nginx

Certifikáty

  • aktuálně jsou zkonfigurovány DANE/TLSA záznamy v DNS
  • při změně privátního klíče je nejprve nutný jejich updat v DNS

Logging

  • rsyslog @ nms
    • zkonfigurován pro příjem logů z ostatních zařízení
    • podpora standardního remote logging 514/udp, ale i zabezpečeného syslog-tls
    • klienty je potřeba zkonfigurovat tak, aby i při použití TCP loggingu nekolabovali, když log server neběží
    • (většinou) nepotřebujeme reliable logging a je možné v případě potřeby logovací hlášky zahazovat
  • mailsql
    • daemon pro parsování log souborů postfix+amavis a jejich ukládání do databáze
    • log daemon zkonfigurován tak, aby přijímal "mail" logy od mailgw a ukládal je do /dev/shm

Monitoring

  • nagios
 yum install nagios nagios-plugins-all nagios-plugins-bacula nagios-plugins-uptime
 systemctl enable nagios
 #systemctl start nagios # až po dokončení konfigurace
 # pro autentizaci proti LDAP k web rozhraní nagiosu
 yum install mod_ldap
  • konfigurace uloženy v /etc/nagios (některé lze generovat skriptem - routery/switche/ap)
  • některé vlastní monitorovací pluginy přidány do /usr/lib64/nagios/plugins (např.: check_openvpn, check_radius_simple, check_radius_eap, check_mysql_ping.sh, check_kdc_user, check_imap_login.php, check_certificate.pl, check_bacula.pl, check_kdc)
  • některé přidané pluginy potřebují další nainstalované balíčky (např. bacula-console, freeradius-utils, ...), ty lze dohledat podle (ne)fungujícího monitoringu a příkazu, které jsou používány
  • konfigurace apache (přístupu k web rozhraní) je v /etc/httpd/conf.d/nagios.conf

OpenVPN

  • přístup do lokálních sítí
  • nutná instalace kerberos klienta (kinit)
  • vygenerovat DH klíče
openssl dhparam -out /etc/openvpn/dh1024.tmp 1024 2> /dev/null && chmod 644 /etc/openvpn/dh1024.tmp && mv /etc/openvpn/dh1024.tmp /etc/openvpn/dh1024.pem
  • povolení logování přístupu do databáze
GRANT INSERT ON admin.audit_log TO 'openvpn'@'nms-br.fjfi.cvut.cz' IDENTIFIED BY '*****';
GRANT INSERT ON admin.audit_log TO 'openvpn'@'nms-tr.fjfi.cvut.cz' IDENTIFIED BY '*****';
GRANT INSERT ON admin.audit_log TO 'openvpn'@'nms-vh.fjfi.cvut.cz' IDENTIFIED BY '*****';
GRANT INSERT ON admin.audit_log TO 'openvpn'@'nms-dp.fjfi.cvut.cz' IDENTIFIED BY '*****';
  • nutné nastavit heslo a zkonfigurovat TLS pro přístup k databázi v ~/.my.cnf

NAT konfigurace

  • potřeba nastavit helpery pomocí IPTABLES_MODULES v /etc/sysconfig/iptables-config
IPTABLES_MODULES="nf_conntrack_ftp nf_nat_ftp nf_conntrack_tftp nf_nat_tftp nf_conntrack_irc nf_nat_irc nf_conntrack_h323 nf_nat_h323 nf_conntrack_sip nf_nat_sip nf_nat_proto_gre nf_conntrack_proto_gre nf_conntrack_pptp nf_nat_pptp"
  • IGMP proxy

NAT logging

  • používá se standadní daemon ulogd
rpm -Uvh libnetfilter_acct-1.0.2-3.el7.centos.x86_64.rpm \
  libnetfilter_log-1.0.1-6.el7.centos.x86_64.rpm \
  ulogd-2.0.4-3.el7.centos.x86_64.rpm \
  ulogd-mysql-2.0.4-3.el7.centos.x86_64.rpm
yum -y install mariadb-server
systemctl enable mariadb
systemctl start mariadb
  • konfigurace MariaDB
    • nastavit per database separátní InnoDB soubor
      innodb_file_per_table
    • zkonfigurovat používání SSL/TLS pro remote spojení
    • inspirovat se dalšími nastaveními z ostatních NMS serverů
  • inicializace MariaDB
# mysql mysql
delete from user where user = '';
delete from user where user = 'root' and host != 'localhost';
update user set password = PASSWORD('secret'), host = '%' where user = 'root';
flush privileges;
  • vytvořit databázi pro ukládání conntrack dat
mysql --batch -e 'CREATE DATABASE IF NOT EXISTS `nulog`;'
mysql --batch -e 'GRANT select,insert,update,drop,delete,alter,alter routine,create,create routine,create temporary tables,create view ON nulog.* TO "nulog"@"localhost" IDENTIFIED BY "secret";'
mysql -u nulog -p nulog < mysql-ulogd2.sql
# z mysql-ulog2.sql je potreba odstranit sloupce:
#    reply_ip_saddr, reply_ip_daddr, reply_ip_protocol
#    reply_bytes, reply_packets
# a to z tabulek/view/funkci:
#    conntrack, INSERT_CT, ulog2_ct
mysql --batch -e 'GRANT select,insert,update,drop,delete,create temporary tables ON nulog.* TO "nulog"@"localhost" IDENTIFIED BY "secret";'
  • konfigurace /etc/ulogd.conf
# ...
stack=ct3:NFCT,ip2bin1:IP2BIN,mysql2:MYSQL
# ...
[ct3]
accept_src_filter=172.16.0.0/12,2001:718:2:1900::/128
hash_enable=0 # requires net.netfilter.nf_conntrack_timestamp=1
# ...
[mysql2]
db="nulog"
host="localhost"
user="nulog"
table="conntrack"
pass="secret"
procedure="INSERT_CT"
# ...
  • vytvoření systemd unit file pro ulogd
[Unit]
Description=Userspace logging daemon for NFLOG

[Service]
ExecStart=/usr/sbin/ulogd -u nobody
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target
  • nastartování ulogd
systemctl daemon-reload
systemctl enable ulogd
systemctl start ulogd
  • SELinux nemá pro ulogd asi správná pravidla a tak je dočasně pro tento daemon disablován
semanage permissive -a ulogd_t
  • konfigurace conntracku parametru v /etc/sysctl.d/98-ulogd.conf
# to log full information some kernel options must be enabled (be careful
# because they are by default disabled because of their impact on performance)
#net.netfilter.nf_conntrack_acct = 1
net.netfilter.nf_conntrack_timestamp = 1

Ostatní

  • konfigurace parametrů jádra (sysctl.conf) - puppet
  • konfigurace síťových rozhraní - /etc/sysconfig/network-scripts/ifcfg-*
  • konfigurace firewallu (iptables, ip6tables, ipset)
yum install iptables-services ipset
# add missing ipset startup script from Fedora 20 ipset-service package
systemctl disable firewalld
systemctl enable ipset
systemctl enable iptables
systemctl enable ip6tables
# create configuration files using Iptables.py script
  • konfigurace SELinux (aktuálně se používá na nms-br, nms-vh, nms-dp)
yum install policycoreutils-python
# DHCPv6 omapi-port (nelze použít default port 7911 používaný již pro DHCPv4)
semanage port --add -t dhcpd_port_t -p tcp 7912
# povolení dalších portů potřebných pro konfiguraci dhcp-failover ve více než dvou lokalitách
semanage port --add -t dhcpd_port_t -p tcp 648
semanage port --add -t dhcpd_port_t -p tcp 848
semanage port --add -t dhcpd_port_t -p tcp 649
semanage port --add -t dhcpd_port_t -p tcp 849
  • puppet agent
# install puppet client
rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
yum install puppet
echo "server = puppet.fjfi.cvut.cz" >> /etc/puppet/puppet.conf
# apply puppet configuration for this node and enable automatic updates
puppet agent -t -d
systemctl enable puppet
systemctl start puppet
  • arpmon
yum install MySQL-python python-ldap python-netaddr libnet
rpm -Uvh python-pycap-0.2-17.el7.x86_64.rpm arpmon-0.9.17-4.noarch.rpm
# use backup of configs /etc/arpmon.conf.enp3s0*
systemctl enable arpmon@enp3s0.service
systemctl start arpmon@enp3s0.service
  • dinfo (dočasně, bude nahrazeno něčím rozumnějším)
yum install python-dns
rpm -Uvh dinfo-0.9.8-0.noarch.rpm
# edit list of services in /etc/sysconfig/dinfo
systemctl enable dinfo
systemctl start dinfo
  • bacula
yum install bacula-client
# use backup of /etc/bacula/bacula-fd.conf
systemctl enable bacula-fd
systemctl start bacula-fd
  • shibboleth
    • konfigurace dle oficiálního ČVUT návodu
    • použit pro zabezpečení přístupu k admin wiki, logování NMS UI a WiFiFJFI sítě, registrace zařízení
  • tftp-server
  • presmerovani mailu pro root uzivatele /etc/aliases + newaliases
  • dinfo konfigurace
  • konfigurace cron tasků
  • ocsinventory
    • evidence hardware linuxových stanic
      • ocsinventory-agent
      • doinstalovat balík perl-LWP-Protocol-https chybějící v závislostech (done by puppet)
    • nutné zkonfigurovat přístupová práva v konfiguracích apache
    • používá MySQL databázi pro ukládání nasbíraných dat
  • mysql/mariadb
    • aktuální verze MariaDB 5.5.x v CentOS7 nepodporuje funkce pro konverzi IPv6 adres
    • nutné přidat knihovnu pro podporující IPv6 funkce, které byly přidány do verze 5.6.3
    • zkompilovat zdrojáky do knihovny a zaregistrovat nové funkce
CREATE FUNCTION inet6_ntop RETURNS STRING SONAME "mysql_udf_ipv6.so"; 
CREATE FUNCTION inet6_pton RETURNS STRING SONAME "mysql_udf_ipv6.so"; 
CREATE FUNCTION inet6_lookup RETURNS STRING SONAME "mysql_udf_ipv6.so"; 
CREATE FUNCTION inet6_rlookup RETURNS STRING SONAME "mysql_udf_ipv6.so"; 
CREATE FUNCTION inet6_mask RETURNS STRING SONAME "mysql_udf_ipv6.so"; 
CREATE FUNCTION idna_to_ascii RETURNS STRING SONAME "mysql_udf_idna.so"; 
CREATE FUNCTION idna_from_ascii RETURNS STRING SONAME "mysql_udf_idna.so";
    • funkce nemají shodné názvy jako oficiální takže při přechodu na novou verzi bude potřeba upravit příslušné SQL dotazy
    • tyto funkce jsou vyžadovány monitoringem síťových zařízení (databazový backend pro arpmon)
  • stunnel
    • slouží pro debugovaní problému se SSL/TLS spojeními
    • slouží pro přístup k Oracle databázi
    • konfigurace v /etc/stunnel/stunnel.conf
    • systemd service file stunnel.service převzat z Fedory (v CentOS7.1 není k dispozici)
  • squid