====== FreeBSD Basissetup ====== Für ein reines "pgk" Setup ohne Ports ohne zusätzlichen User. ===== Grundsetup ===== vi /etc/motd pkg update pkg install zsh vim-lite git wget curl nullmailer ezjail atop py27-powerline-status powerline-fonts most Setup für zsh, vim, git usw. cd git clone https://github.com/mahescho/dotfiles.git cd ~/dotfiles ./initdf.sh Mir reicht der "Nullmailer", ich mag "atop", Syslog Setup damit in den Jails auch Syslog funktioniert und den Inetd, da ich check_mk benutze: vi /etc/rc.conf Hinzufügen: sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO" nullmailer_enable="YES" atop_enable="YES" syslogd_flags="-ss -a 127.0.0.1 -C" inetd_enable=yes inetd_flags=-wW Nullmailerconfig in "/usr/local/etc/nullmailer" anpassen. ===== IPv4 IPs für Jails ===== Wenn keine weiteren öffentliche IPv4 IPs zur Verfügung stehen wird ein lokales RFC 1918 Netz und NAT für die Jails benötigt: vi /etc/rc.conf Hinzufügen nach Bedarf z.B: cloned_interfaces="lo0" ifconfig_lo0_alias0="inet 10.0.0.1 netmask 255.255.255.0" ifconfig_lo0_alias1="inet 10.0.0.2 netmask 255.255.255.0" Wenn öffentliche IPv4 IPs vorhanden sind, einfach Interface-Aliase hinzufügen: ifconfig_vtnet0_alias0="inet 8.7.6.5 netmask 0xffffff00" ifconfig_vtnet0_alias1="inet 9.8.7.6 netmask 0xffffff00" ===== IPv6 IPs für den Host und die Jails ===== einfach "fe80::" als defaultgateway zu nehmen hat sich nich bewährt. Bei manchen hostern funktioniert das nich zuverlässig. Zuverlässig funktioniert aber "link-local" zu verwenden. Zu ermitteln mittels: ping -c 1 ff02::2%vtnet0 ergebnis: fe80::xxxx:xxxx:xxxx:xxxx%vtnet0 vi /etc/rc.conf Hinzufügen: # IPv6 ipv6_activate_all_interfaces="YES" ipv6_network_interfaces="vtnet0" ifconfig_vtnet0_ipv6="inet6 xxxx:xxxx:xxxx:xxxx::xxxx prefixlen 64" ipv6_defaultrouter="fe80::xxxx:xxxx:xxxx:xxxx%vtnet0" ipv6_gateway_enable="YES" Wenn in den Jails weitere IPv6 IPs benötigt werden auch hier einfach Aliase hinzufügen: ifconfig_vtnet0_ipv6_alias0="inet6 xxxx:xxxx:xxxx:xxxx::xxxx prefixlen 64" ifconfig_vtnet0_ipv6_alias1="inet6 xxxx:xxxx:xxxx:xxxx::xxxx prefixlen 64" ===== PF mit NAT für Jails ===== Beim Booten aktivieren: vi /etc/rc.conf Hinzufügen: pf_enable="YES" pf_rules="/etc/pf.conf" pflog_enable="YES" pflog_logfile="/var/log/pflog" Logverzeichnis anlegen: mkdir /var/log/pflog Meine Config: * Vollzugriff für meine Managementnetze (MHC, MHC6) * NAT für den IPv4 Zugriff auf den Webserver * check_mk Zugriff für meine Server (m01) :!: "re0" muss wie auch die IPs angepasst werden :!: if = "{ re0 }" table persist { 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 224.0.0.0/5 } table { 1.2.3.4/29 } table { xxx:xxx:xxx:xxx::/48} icmp_types = "echoreq" open_tcp = "{ 80, 443 }" open_udp = "{ 80 }" check_mk = "{ 6556 }" jails = "{ 10.0.0.1, 10.0.0.2}" jails_net ="10.0.0.0/24" ip = 4.5.6.7 # IP des Hosts www = 10.0.0.2 m01 = 2.3.4.5 # IP des Nagiosservers set block-policy drop set skip on lo0 set timeout { interval 10, frag 30 } set timeout { tcp.first 120, tcp.opening 30, tcp.established 86400 } set timeout { tcp.closing 900, tcp.finwait 45, tcp.closed 90 } set timeout { udp.first 60, udp.single 30, udp.multiple 60 } set timeout { icmp.first 20, icmp.error 10 } set timeout { other.first 60, other.single 30, other.multiple 60 } set timeout { adaptive.start 0, adaptive.end 0 } set limit { states 10000, frags 5000 } set loginterface re0 set optimization normal set require-order yes set fingerprints "/etc/pf.os" set ruleset-optimization basic scrub in all fragment reassemble random-id rdr on $if proto tcp from any to $if port { 80, 443 } -> $www rdr on $if proto udp from any to $if port { 80 } -> $www nat on $if proto {tcp udp icmp} from $jails to any -> $ip block log all block return antispoof quick for $if pass in quick proto icmp6 all pass in quick from to any keep state pass in quick inet6 from to any keep state pass in on $if proto tcp from any to any port $open_tcp keep state pass in on $if proto udp from any to any port $open_udp keep state pass in on $if proto tcp from $m01 to $ip port $check_mk keep state pass out quick all keep state pass in on $if inet proto icmp all icmp-type $icmp_types keep state pass in on $if inet proto icmp all icmp-type $icmp_types keep state pass in on $if inet proto udp from any to any port 33433 >< 33626 keep state pass in on $if inet proto udp from any to any port 33433 >< 33626 keep state pf starten service pf start service pflog start Nützliche Komandos |Komando|Zweck| |pfctl -e|Enable PF.| |pfctl -d|Disable PF.| |pfctl -F all -f /etc/pf.conf|Flush all NAT, filter, state, and table rules and reload /etc/pf.conf.| |pfctl -s [ rules %%|%% nat %%|%% states ]|Report on the filter rules, NAT rules, or state table.| |pfctl -vnf /etc/pf.conf|Check /etc/pf.conf for errors, but do not load ruleset.| ===== Jails ===== vi /usr/local/etc/ezjail.conf Meine Einstellungen: ezjail_use_zfs="YES" ezjail_use_zfs_for_jails="YES" ezjail_jailzfs="zroot/ezjail" ezjail_zfs_properties="-o atime=off" vi /etc/rc.conf Hinzufügen: ezjail_enable="YES" In den Jail-Configs, für Ping: export jail_www_parameters="allow.raw_sockets allow.sysvipc" Jails anlegen: ezjail-admin create JailName IP,IP ==== Grundsetup ==== ezjail-admin console JailName vi /etc/motd pkg update pkg install zsh vim-lite git nullmailer py27-powerline-status powerline-fonts most Setup für zsh, vim, git usw. cd git clone https://github.com/mahescho/dotfiles.git cd ~/dotfiles ./initdf.sh vi /etc/rc.conf Hinzufügen: sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO" nullmailer_enable="YES" inetd_enable=yes inetd_flags=-wW Nullmailerconfig in "/usr/local/etc/nullmailer" anpassen.