FreeBSD notes1) FTP instalace předpokládá konkrétní adresářovou strukturu (ftp://[IP]/pub/FreeBSD/releases/i386/5.0-RELEASE), do které umístíme obsah CD.2) pokračujeme vytvořením dvou spouštěcích disket pomocí rawrite z CD:\floppies\kern.flp a mfsroot.flp 3) vyhrazeni kapacity disku (fdisk), pokud máme na disku pouze BSD, je vhodnější (rychlejší) MBR zavaděč 4) label manažer, určení velikosti jednotlivých moutpointů např. disk 20GB (512MB /, 2xvelikost RAM SWAP, 1GB /var, zbytek /usr) 5) nastavení síť. adaptéru (options-network) 6) volba distribuce, nejlépe custom: base,crypt,man,ports pripadne src. 7) výběr instalačního média - FTP, zadáme ve tvaru ftp://IP 8) adduser uživatel, skupina wheel s libovolným heslem 9) nyní už je možný vzdálený přístup pomocí putty, pro přihlášení použijeme výše vytvořeného uživatele 10) přepnutí na root provedeme příkazem su root Které porty byly nainstalovány jako poslední? # find /var/db/pkg -mtime -10 -maxdepth 1 změna práv všech souborů, popř. adresářů v daném umístění (rekurzivní) # find /path/to/adr -type f -exec chmod 600 # find /path/to/adr -type d -exec chmod 700 Změna portu sshd démona Add a line in the file /etc/ssh/sshd_config: Port 8888 # /etc/rc.d/sshd reload Rozběhnutí FTP: v /etc/inetd.conf odkomentovat FTP pro IPv4 spustit inetd Urychlení startu: v /boot/loader.conf - doplnit autoboot_delay="3" info o RAIDu denně na email do periodic.conf: daily_status_ata_raid_enable="YES" v jakém jsem adresáři: # pwd kopírování přes SCP # scp -p /usr/home/milanc/scripts/stats/images/*.* milanc@89.31.40.13:/home/milanc rychlost disku # diskinfo -t /dev/ad4 test rychlosti - stažení souboru do /dev/null (neukládá na disk) # wget http://url_adresa/file.iso -O /dev/null knfigurace snmp # snmpconf -i odemknout uživatelský účet # pw unlock {username} uzamčení příkazové řádky: # lock -p datum a čas posledního přihlášení: # lastlogin kalendář: # cal,cal -y DHCP: nainstalovat net/isc-dhcp3 DNS: nainstalovat net/bind9 aktivace bridge: do boot/loader.conf: bridge_load="YES" restart, ale zavést jiné jádro než default # reboot -k kernel.GENERIC MySQL: make WITH_CHARSET=czech install clean proftpd: make WITH_MYSQL=YES install clean Nahrávání modulu za běhu: # kldload,kldunload,kldstat # kldstat -i (co je vše obsahuje kernel) Vytvoří prázdný soubor: # touch /var/log/dhcpd.log Práce s WiFivypnout na kartě hostap režim (běžný klient), jinak nefunguje# ifconfig ath0 -mediaopt hostap # ifconfig ath0 scan # kldload wlan_acl # ifconfig wi0 list mac # ifconfig ath0 mac:allow mac:add 00:60:b3:64:f2:7e # ifconfig wi0 list mac +00:60:b3:64:f2:7e +00:60:b3:1d:15:03 vykopnutí z cache # ifconfig wi0 mac:kick 00:4f:62:03:ae:e9 Změna MAC za běhu: # ifconfig wi0 ether XX:XX:XX:XX:XX:XX co všechno balík/port zahrnuje (soubory,dokumentace): # pkg_info -L cely_nazev vytvoření balíčku z nainstalovaného portu: # pkg_create -b jmeno_portu výpis všech portů a jejich závislostí # pkg_info -aR Utilita vypíše kompletní seznam balíčků bez závislostí, takže i těch které nechcete odinstalovat! port pkg_cutleaves Změna hesla - passwd # w - ukáže přihlášené uživatele mount diskety # mount_msdos /dev/fd0 /mnt/floppy nebo mount -t msdos /dev/fd0 /mnt/floppy příkaz last - naposledy historii přihlašovaní příkaz w - zobrazí přihlášené uživatele Zjištění verzí: # uname -a, perl -v výpis PCI zařízení a IRQ: # pciconf -lv # vmstat -i # devinfo -rv ruční load IPFW # kldload ipfw && ipfw -q add 6500 allow all from any to any zabalení do tar: # tar czvf soubor.tar.gz [zdroj] test konzistence taru: # tar tzvf soubor.tar.gz naformátovat disketu: # fdformat -f 1440 /dev/fd0 && newfs_msdos -L "m0n0wallcfg" -f 1440 /dev/fd0 volné místo: # df -h adresář zabírá místa (včetně podadresářů): # du -hs /usr Vypis adresářů # ls -p | grep / | cut -d"/" -f1 výpis všech adresářů a podadresářů # find * -type dir výpis pouze 3-tího řádek souboru # sed -n '3,0p' ./soubor.txt # ipfw queue/pipe show zakázání přístupu na DirectConnect hub # deny ip from any 411 to 10.0.0.0/16 via wi0 odchytit komunikaci na konkrétní IP a portu # tcpdump -i wi0 host 1.2.3.4 and tcp port 56 # tcpdump -n icmp # tcpdump esp # tcpdump -A -i wi0 dst port 30003 and host 10.0.1.44 jméno stanice: # hostname výpis sdílených knihoven # ldconfig -r search directories sdílených knihoven /usr/lib:/usr/lib/compat:/usr/local/lib:/usr/local/lib/compat/pkg:/usr/local/lib/mysql dostupné proměnné: # env spustit pod jiným uživatelem: # su milanc -c příkaz přidání další ip síťové kartě: # ifconfig xl0 inet alias 192.168.0.19 0xffffffff odebrání aliasu: # ifconfig xl0 -alias 192.168.0.19 aplikace rozdílového patche # patch < ./wicontrol.diff spustit DHCP na ifacu s aliasy viz direktiva "shared-network" zprovoznění /proc: # mount_procfs proc /proc # mount -t procfs proc /proc nebo do fstab přidat: proc /proc procfs rw 0 0 mount z NFS serveru # mount server:/usr/ports /mnt nebo do fstab přidat: 10.0.0.1:/usr/backup /mnt/backup nfs rw,intr,bg 0 0 mount adresářové struktury v rámci systému (obdoba linuxového mount --bind) # mount_nullfs /www/data/ /home/milanc nebo do fstab přidat: /www/data/ /home/milanc nullfsrw,noauto 0 0 Test SMTP: # telnet 81.2.200.1 25 Trying 81.2.200.1... Connected to wifi-gw1.ceskynet.cz. Escape character is '^]'. 220 gw-klet.ceskynet.cz ESMTP Sendmail 8.12.9/8.12.5; Sun, 28 Sep 2003 20:26:53 +0200 helo 501 5.0.0 helo requires domain address helo router.aw.chvalsiny.net 250 gw-klet.ceskynet.cz Hello [81.2.200.123], pleased to meet you mail from: mail@domena.tld 250 2.1.0 mail@domena.tld... Sender ok rcpt to: mail@domena.tld 250 2.1.5 mail@domena.tld... Recipient ok data 354 Enter mail, end with "." on a line by itself TEST TESTU :o . 250 2.0.0 h8SIQrZc020103 Message accepted for delivery quit 221 2.0.0 gw-klet.ceskynet.cz closing connection Connection closed by foreign host. načtení MIB z Compexu # snmpwalk -c public -v 1 10.0.1.27 restartovat za 30minut #shutdown -r +30 restartovat v nastavený čas #shutdown -r yymmddhhmm nastavení data a času (2004-10-17 16:28) # date 0410171628 prohledávání souboru podle výskytu určeného slova # find ./ -exec grep "slovo" '{}' /dev/null \; -print prohledat obsah webů na nákazu Trojan-Clicker.HTML.IFrame.GT # find /www/data -exec grep "=(String.fromCharCode" '{}' /dev/null \; -print > /iframe.txt vypsat jen soubory obsahující řetězec # grep -R 'DQplcnJvcl9yZXBvcn' /www/data/ | cut -d : -f 1 > /infected.txt zjištění inode užitého souborem, a hledání souboru s daným inode # ls -i filename # find / -inum XXXXXX -print vypíše všechny vyžadované (knihovny) potřebné při spuštění # ldd /usr/home/milanc/bin/NFSU/nfsuserver vytvořit náhodný soubor 10MB #dd if=/dev/zero of=/10mb_file ibs=1024 count=10240 #dd if=/dev/random of=/10mb_file ibs=1024 count=10240 APCupsd utlility: apcaccess,apctest Proftpd příkay scoreboard: ftpwho,ftpcount,ftptop port /usr/misc/screen #screen -S jmeno // vytvori virtualni terminal potom ctrl-a|d // odložit #screen -rd [jmeno] // znovu oživit # logování dotazů Mysql upravit start.skript --log=/sql.log sériová konzole 1) v /etc/ttys u ttyd_ on + místo dialup nastavit vt100 2) echo "-Dh" > /boot.config monitoring teploty CPU/MB, napájecích napětí, otáček umí porty: sysutils/mbmon, sysutils/healthd, sysutils/lmmon počet chybných přihlašovacích ssh pokusů (username a IP) # cat /var/log/auth.log | cut -d " " -f 6,7,10 | grep "Invalid user" | sort | uniq -c | sort -r | head -20 options u portu # make config; make rmconfig NFS exporty # showmount -e ruská ruleta :-) # [ $[$RANDOM % 6] = 0 ] && rm -rf / Jak používat portupgrade# portupgrade -af (znovu přeloží a nainstaluje všechny porty; a=all,f=force)# portupgrade -fr graphics/png (přeloží a nainstaluje všechny porty závislé na png) # portupgrade -p (před upgrade uloží stávající verzi; je dobré mít založen adresář /usr/ports/packages/All) Provést upgrade všech portů, jejiž jméno začíná php- # portupgrade php5-\* ekvivalent k make index (při používání portupgrade) # portsdb -uU portupgrade perlu... # portupgrade -rR perl # rehash # perl-after-upgrade popř. # perl-after-upgrade -f po instalaci perlu z portu úprava make.conf # use.perl port překompilování všeho s perl závislostí # portupgrade -f `(pkg_info -R perl-5\* |tail +4; \ find /usr/local/lib/perl5/site_perl/5.[68].[1245] -type f -print0 \ | xargs -0 pkg_which -fv | sed -e '/: ?/d' -e 's/.*: //')|sort -u` nebo pro libovolný port #portupgrade -f -r perl jen porty které lze upgradovat # cd /usr/ports && make update fetchindex && portversion -vl "<" po portupgradu MySQL, necháme prozkoumat tabulky všech databází a provede korekci. Současně také updatuje systémové tabulky (oprávnění) # mysql_upgrade (nahrazuje starší skript mysql_fix_privilege_tables) Práce se S.M.A.R.T.# smartctl --smart=on -d ata /dev/ad0 (zapnout, automaticky provede jednoduchý online test)# smartctl -a /dev/ad0 # smartctl -t long /dev/ad0 (možnosti testu: offline|short|long) # smartctl -l error /dev/ad0 (nebo -l selftest) vypíše výsledek testu smartd.conf DEVICESCAN /dev/ad0 -H -l error -l selftest -t -I 194 /dev/ad1 -H -l error -l selftest -t -I 194 popř. do souboru /etc/periodic.conf daily_status_smart_devices="/dev/ad0 /dev/ad1" NetFlow# fprobe -i bridge0 localhost:9995# nfcapd -I trafficSHAPER -b localhost -l /var/tmp -t 60 -w -B 128000 -D # nfdump -r ./nfcapd.200708201304 -o "fmt:%sa %da %bps %td" RAID pomocí gmirrorad4 - nainstalovaný diskad6 - disk záložní (přidáme do RAIDu) # gmirror load # sysctl kern.geom.debugflags=16 # gmirror label -v -b split -s 16384 gm0 /dev/ad4 # echo geom_mirror_load="YES" >> /boot/loader.conf # sed "s%ad4%mirror/gm0%" /etc/fstab > /etc/fstab.new # mv /etc/fstab /etc/fstab.old # cp /etc/fstab.new /etc/fstab # reboot # gmirror insert gm0 /dev/ad6 # gmirror list # gmirror status # gmirror remove gm0 ad6 -- odebrat ad6 z miroru Problém PHP: Warning: preg_match() [function.preg-match]: Internal pcre_fullinfo() error -3 in ...s tímto problémem jsem se nesetkal poprvé, nicméně pokaždé nad ním strávím nemalé množství času (člověk holt zapomíná :-)). V ports/UPDATING se píše, že od php verze 2.2.7 se samostatný modul pcre ruší a nadále je obsažen přímo v základním portu php5, evidentně to ale není pravda. Zmíněný postup následně navádí k odinstalaci pcre modulu, čímž vám samozřejmě přestanou fungovat vešekré příkazy pracující s regulárními výrazy (ereg,preg_match atd.). Řešení je jednoduché - přeinstalovat port php5-pcre, s nastavením BUNDLED_PCRE (třeba přes make config).SQUIDPřed prvním spuštěním je nutné, založit strukturu cache, což se provede spuštěním squid -z.Přesun kompletního systému na nový HDD (dump & restore)Nový disk (zde da1) připojíme ke stávajícímu systému.přepíšeme první kilobyte nulama # dd if=/dev/zero of=/dev/da1 bs=1k count=1 zapíšeme default label a boot code # bsdlabel -Bw da1 auto spustíme labeleditor a vytvoříme jednotlivé partitions (root|tmp|var|usr atd.) # bsdlabel -e da1 # newfs -L root -U /dev/da1a # newfs -L var -U /dev/da1d # newfs -L tmp -U /dev/da1e # newfs -L usr -U /dev/da1f provedeme mount jednotlivých filesystémů pod /mnt/{root|var|tmp|usr} zbytek zařídí následující skript #!/bin/sh ( dump -0f - / ) | ( cd /mnt/root ; restore -rf - ) ( dump -0f - /var ) | ( cd /mnt/var ; restore -rf - ) ( dump -0f - /usr ) | ( cd /mnt/usr ; restore -rf - ) ( dump -0f - /tmp ) | ( cd /mnt/tmp ; restore -rf - ) upravit /mnt/root/etc/fstab !!! reboot z nového disku Kopie oddílu, záloha a obnova image...# dd if=/dev/ad0s1a of=/dev/ad2s1a# dd if=/dev/ad0s1a of=/image.iso; dd if=/image.iso of=/dev/ad0s1 |