dns bind

создадим ключ

cd /etc/namedb
touch rndc.key
rndc-confgen >> rndc.conf


в итоге получаем

# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "*********IBfA4aVO9*****";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#       algorithm hmac-md5;
#       secret "*********IBfA4aVO9*****";
# };
#
# controls {
#       inet 127.0.0.1 port 953
#               allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf


часть задокументированную переносим в named.conf и убираем #

часть копируем в rndc.key
key "rndc-key" {
        algorithm hmac-md5;
        secret "*********IBfA4aVO9*****";
};


правим далее как обычно сам named.conf
запускаем /usr/sbin/named -u bind

и при rndc status видим «ругань» типа

rndc status
WARNING: key file (/etc/namedb/rndc.key) exists, but using default configuration file (/etc/namedb/rndc.conf)
version: 9.8.1-P1 (tetris 1.0beta)
CPUs found: 4
worker threads: 2
number of zones: 1514
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 4
query logging is OFF
recursive clients: 0/0/10000
tcp clients: 0/1000
server is up and running


у нас последняя версия. просто удалим файл rndc.conf, проблема уйдет.

mrtg ping probe VS SmokePing

mrtg-ping-probe
/usr/ports/net-mgmt/mrtg-ping-probe/
mrtg-ping-probe is a ping probe for MRTG 2.x.  It is used to monitor
the round trip time and packet loss to networked devices.  MRTG uses
its output to generate graphs visualizing minimum and maximum round
trip times or packet loss.


SmokePing
/usr/ports/net-mgmt/smokeping
SmokePing is a latency logging and graphing system. It consists of a
daemon process which organizes the latency measurements and a CGI
which presents the graphs.

sysctl

security.bsd.see_other_uids=0 : запрещаем пользователям просматривать чужие процессы (будут видны только свои)
security.bsd.see_other_gids=0 : тоже самое, только группам
net.inet.tcp.blackhole=2 : пускаем запросы на закрытые порты в «чёрные дыры», то есть просто напросто убиваем, без всяких оповещений. Очень помогает при сканнировании портов. Это для протокола tcp.
net.inet.udp.blackhole=1 : тоже самое, но только для udp
security.bsd.hardlink_check_uid=1 : пользователи могут делать hardlink только на свои файлы
security.bsd.hardlink_check_gid=1 : тоже самое, но только для групп.
net.link.ether.ipfw=1 : ipfw2 позволяет фильтровать по MAC адресам
net.inet.icmp.drop_redirect=1 : ICMP REDIRECT пакеты игнорируются
net.inet.icmp.bmcastecho=0 : для защиты от SMURF атак (ICMP echo request на broadcast адрес)
net.inet.icmp.maskrepl=0 : запрет широковещательного запроса временного штампа
kern.ipc.somaxconn=32768 : защита от synflood атак (увеличиваем количество полуоткрытых сокетов)
net.inet.tcp.sendspace=64395 : размера TCP окна (Увеличенный размер окна позволит более эффективно передавать данные)
net.inet.tcp.recvspace=64395 : размера TCP окна (Увеличенный размер окна позволит более эффективно передавать данные)
net.link.ether.inet.max_age=1200 : для защиты от подмены Arp-записей
net.inet.ip.sourceroute=0: защита для локальных IP
net.inet.ip.accept_sourceroute=0 : защита для локальных IP
net.inet.tcp.drop_synfin=1 : небольшая защита
net.inet.tcp.syncookies=1 : от доса
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet6.ip6.redirect=0
net.inet.ip.ttl=128 : Определяем TTL в заголовке IP-пакета
net.inet.tcp.rfc1323=1 : Указываем ОС изменять параметры window и timestamps в соответствии с RFC 1323.
net.inet.tcp.msl=15000
net.inet.icmp.icmplim=50
net.inet.tcp.log_in_vain=1
net.inet.udp.log_in_vain=1
net.link.ether.inet.log_arp_movements=1
net.inet.tcp.icmp_may_rst=0
security.bsd.conservative_signals=1
security.bsd.unprivileged_proc_debug=0
security.bsd.unprivileged_read_msgbuf=0
security.bsd.unprivileged_get_quota=0
vfs.usermount=0
kern.ps_showallprocs=0
net.inet.tcp.sack.enable=0
kern.ps_showallprocs=0: Разрешаем смотреть список всех процессов только root

ssh

все по идеи есть в доке… но напишем значимое.

Рассоединение при отсутствии активности в шелле
ClientAliveInterval и ClientAliveInterval

ClientAliveCountMax – Параметр указывает на полное количество сообщений, отсылаемого ssh-сервером для распознавания активности ssh-клиента. По умолчанию это 3.
ClientAliveInterval – Параметр указывает на время ожидания в секундах. После указанного времени ssh-сервер отошлет сообщение-запрос клиенту. По умолчанию значение этого параметра — 0. Т.е сервер не отсылает сообщение для проверки.

LoginGraceTime — времени ожидания авторизации

php5 ffmpeg FreeBSD

WWW
ставим ffmpeg
Port:   php5-ffmpeg-0.6.0_7
Path:   /usr/ports/graphics/php5-ffmpeg
Info:   The ffmpeg shared extension for php


подключаем
/usr/local/etc/php/extensions.ini
extension=ffmpeg.so


phpinfo или php -i

ffmpegffmpeg-php version 	0.6.0-svn 
ffmpeg-php built on 	Oct 21 2012 23:22:22 
ffmpeg-php gd support 	enabled 
ffmpeg libavcodec version 	Lavc52.123.0 
ffmpeg libavformat version 	Lavf52.111.0 
ffmpeg swscaler version 	SwS0.14.1


установка проверена под
php -v
PHP 5.3.16 with Suhosin-Patch (cli) (built: Sep  6 2012 18:51:57)
Copyright © 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright © 1998-2012 Zend Technologies
    with the ionCube PHP Loader v4.0.10, Copyright © 2002-2011, by ionCube Ltd.

ispmanager vs exim

ставим exim и подключаем spamassassin
exim валится с ошибкой.

 cat ./panic.log
2012-10-20 22:13:18 Exim configuration error in line 195 of /etc/exim/exim.conf:
  error in ACL: syntax error or unrecognized name after "set" in ACL modifier "set acl_m_spam_score_int = $spam_score_int"


открываем…

и меняем acl_m_spam_score_int на acl_m4

в итоге получается так.

.ifdef SA_ENABLE
        warn
            !authenticated = *
            hosts = !+relay_from_hosts
            condition = ${if < {$message_size}{100K}}
            spam       = SA_SPAMD_USER:true/defer_ok
            add_header = X-Spam_score: $spam_score\n\
                    X-Spam_score_int: $spam_score_int\n\
                    X-Spam_bar: $spam_bar\n\
                    X-Spam_report: $spam_report
            set acl_m4 = $spam_score_int
            logwrite = From $sender_address to $recipients X-Spam_score: $acl_m4.

        deny
            condition = ${if !eq{$acl_m4}{} {yes}{no}}
            condition = ${if >{$acl_m4}{SA_SCORE_REJECT} {yes}{no}}
            message = Content analisis tool detect spam (from $sender_address to $recipients). Contact SA_ABUSE_ADDR.
.endif

                accept

Динамическая маршрутизация в FreeBSD с BIRD, Quagga

under


http://subnets.ru/wrapper.php?p=7
http://subnets.ru/blog/?p=1728
http://subnets.ru/blog/?p=19


http://subnets.ru/forum/viewtopic.php?f=3&t=371&start=30

hostname AS123456
password zebra
enable password zebra
log file /var/log/bgpd.log
router bgp 123456
bgp router-id 173.45.248.98
bgp log-neighbor-changes
no synchronization
network 48.151.4.0/23
neighbor 173.45.248.97 remote-as 45975
neighbor 178.45.248.97 next-hop-self
neighbor 178.45.248.97 route-map ROSTELEKOM_IN in
neighbor 178.45.248.97 route-map ROSTELEKOM_OUT out
!
ip prefix-list bogons description bogus nets
ip prefix-list bogons seq 15 permit 0.0.0.0/8 le 32
ip prefix-list bogons seq 20 permit 127.0.0.0/8 le 32
ip prefix-list bogons seq 30 permit 10.0.0.0/8 le 32
ip prefix-list bogons seq 35 permit 172.16.0.0/12 le 32
ip prefix-list bogons seq 40 permit 192.168.0.0/16 le 32
ip prefix-list bogons seq 45 permit 169.254.0.0/16 le 32
ip prefix-list bogons seq 50 permit 224.0.0.0/4 le 32
ip prefix-list bogons seq 55 permit 240.0.0.0/4 le 32
ip prefix-list default description default route
ip prefix-list default seq 10 permit 0.0.0.0/0
ip prefix-list our-CIDR-blocks seq 5 permit 48.151.4.0/23 le 32
ip prefix-list upstream-out seq 10 permit 48.151.4.0/23
!
ip as-path access-list 1 permit _6451[2-9]_
ip as-path access-list 1 permit _645[2-9][0-9]_
ip as-path access-list 1 permit _64[6-9][0-9][0-9]_
ip as-path access-list 1 permit _65[0-9][0-9][0-9]_
!
route-map ROSTELEKOM_IN deny 100
match as-path 1
!
route-map ROSTELEKOM_IN deny 110
match ip address prefix-list bogons
!
route-map ROSTELEKOM_IN deny 115
match ip address prefix-list default
!
route-map ROSTELEKOM_IN deny 120
match ip address prefix-list our-CIDR-blocks
!
route-map ROSTELEKOM_IN permit 200
set local-preference 100
!
route-map ROSTELEKOM_OUT permit 100
match ip address prefix-list upstream-out
!
route-map ROSTELEKOM_OUT deny 200



gw# vtysh

Hello, this is Quagga (version 0.99.21).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

gw#
  clear        Reset functions
  configure    Configuration from vty interface
  copy         Copy from one file to another
  debug        Enable debug messages for specific or all part.
  disable      Turn off privileged mode command
  end          End current mode and change to enable mode
  exit         Exit current mode and down to previous mode
  list         Print command list
  no           Negate a command or set its defaults
  ping         Send echo messages
  quit         Exit current mode and down to previous mode
  show         Show running system information
  ssh          Open an ssh connection
  start-shell  Start UNIX shell
  telnet       Open a telnet connection
  terminal     Set terminal line parameters
  traceroute   Trace route to destination
  undebug      Disable debugging functions (see also 'debug')
  write        Write running configuration to memory, network, or terminal
gw#


получить список подсетей из кваги и залить по ftp

#!/bin/bash
# получить список подсетей AS и залить на фтп
file=/tmp/zebra/peering_as_subnets
echo "sh ip ro bgp" | vtysh | grep 127,0,0.1 | awk {'print $2'} > $file
echo "send $file" | pftp lt.lan
rm $file

hex-string iptables ipfw

Защита от HLDSFlood
iptables -A INPUT -p udp -m udp -m string --hex-string "|17c74a30a2fb752396b63532b1bf79b0|" --algo kmp -j DROP
iptables -A INPUT -p udp -m udp -m string --hex-string "|17951a20e2ab6d63d6ac7d62f1f721e057cd4270e2f1357396f66522f1ed61f0|" --algo kmp -j DROP
iptables -A INPUT -p udp -m udp -m string --hex-string "|178f5230e2e17d73d6bc6562f1ed29e0|" --algo kmp -j DROP
iptables -A INPUT -p udp -m udp -m string --hex-string "|d50000806e000000|" --algo kmp -j DROP
iptables -A INPUT -p udp -m udp -m string --hex-string "|ffffffff6765746368616c6c656e6765000000000000|" --algo kmp -j DROP


/sbin/iptables -A FORWARD -m udp -p udp -m string --hex-string "|0000000000380000|" --algo bm --from 36 --to 45 -j DROP
/sbin/iptables -A FORWARD -m udp -p udp -m string --hex-string "|7F FF FF FF AB|" --algo bm --from 40 --to 44 -j DROP
/sbin/iptables -A FORWARD -m udp -p udp -m string --hex-string "|7F FF FF FF 00 03 20 00|" --algo bm --from 36 --to 43 -j DROP
/sbin/iptables -A FORWARD -m udp -p udp -m string --hex-string "|00 38 00 00 00 01 00 00|" --algo bm --from 40 --to 47 -j DROP


iptables -A FORWARD -p udp -m length --length 61 -m string --hex-string "|7F FF FF FF|" --algo kmp --from 40 --to 44 -j DROP


FreeBSD через ng_bpf
#!/bin/sh
 
kldload ng_bpf
kldload ng_tag
kldload ng_ipfw
 
/usr/sbin/ngctl -f- < <-SEQ
        mkpeer ipfw: bpf 61 ipfw_hook61
        name ipfw:61 bpf_utp_filter
        mkpeer bpf_utp_filter: tag matched tag_utp
        name bpf_utp_filter:matched tag_utp_tagger
SEQ
 
ngctl msg bpf_utp_filter: setprogram { thisHook=\"ipfw_hook61\" ifNotMatch=\"ipfw_hook61\" ifMatch=\"matched\" bpf_prog_len=12 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=8 k=64 } { code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=6 k=17 } { code=40 jt=0 jf=0 k=6 } { code=69 jt=4 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=64 jt=0 jf=0 k=20 } { code=21 jt=0 jf=1 k=2147483647 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }
ngctl msg bpf_utp_filter: setprogram { thisHook=\"matched\" ifMatch=\"ipfw_hook61\" bpf_prog_len=1 bpf_prog=[ { code=6 jt=0 jf=0 k=96 } ] }
ngctl msg tag_utp_tagger: sethookin { thisHook=\"tag_utp\" ifNotMatch=\"tag_utp\" }
ngctl msg tag_utp_tagger: sethookout { thisHook=\"tag_utp\" tag_cookie=1148380143 tag_id=61 }
 
ipfw add netgraph 61 udp from any to any iplen 0-61
ipfw add deny udp from any to any tagged 0-61
 
# to test outgoing - tcpdump -pni Out_Interface "ip[40:4]=0x7FFFFFFF" and "ip[44:1]=0xab" and ether src Ext_If_Mac


снятие
tcpdump -Xni vlan0 "ip[40:4]=0x7FFFFFFF and ip[44:1]=0xAB"


kldload ng_ipfw
# ngctl mkpeer ipfw: bpf 127 ipfw
# ngctl name ipfw:127 utp_filter
# ngctl name ipfw:127 pptp_utp_filter
# ngctl msg pptp_utp_filter: setprogram '{ thisHook="ipfw" ifMatch="matched" ifNotMatch="ipfw" bpf_prog_len=36 bpf_prog=[ { code=0xb1 } { code=0x40 } { code=0x54 k=4286578687 } { code=0x15 jf=31 k=805406731 } { code=0x50 k=1 } { code=0x54 k=128 } { code=0x74 k=5 } { code=0x4 k=12 } { code=0xc } { code=0x7 } { code=0x48 } { code=0x15 jf=3 k=65283 } { code=0x87 jf=3 } { code=0x4 k=2 } { code=0x7 } { code=0x50 } { code=0x15 jf=3 } { code=0x87 jf=3 } { code=0x4 k=1 } { code=0x7 } { code=0x50 } { code=0x15 jf=13 k=33 } { code=0x87 jf=3 } { code=0x4 k=1 } { code=0x7 } { code=0x50 k=9 } { code=0x15 jf=8 k=17 } { code=0x50 } { code=0x54 k=15 } { code=0x64 k=2 } { code=0xc } { code=0x7 } { code=0x40 k=20 } { code=0x15 jf=1 k=2147483647 } { code=0x6 k=65535 } { code=0x6 } ] }'
# sysctl net.inet.ip.fw.one_pass=0
# ipfw add 127 netgraph 127 gre from any to any via ng0
# ngctl msg pptp_utp_filter: getstats '"ipfw"'



/usr/sbin/ngctl -f- <<-SEQ
        mkpeer ipfw: bpf 61 ipfw_hook61
        name ipfw:61 bpf_utp_filter
        mkpeer bpf_utp_filter: tag matched tag_utp
        name bpf_utp_filter:matched tag_utp_tagger
SEQ

ngctl msg bpf_utp_filter: setprogram { thisHook=\"ipfw_hook61\" ifNotMatch=\"ipfw_hook61\" ifMatch=\"matched\" bpf_prog_len=12 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=8 k=64 } { code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=6 k=17 } { code=40 jt=0 jf=0 k=6 } { code=69 jt=4 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=64 jt=0 jf=0 k=20 } { code=21 jt=0 jf=1 k=2147483647 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }
ngctl msg bpf_utp_filter: setprogram { thisHook=\"matched\" ifMatch=\"ipfw_hook61\" bpf_prog_len=1 bpf_prog=[ { code=6 jt=0 jf=0 k=96 } ] }
ngctl msg tag_utp_tagger: sethookin { thisHook=\"tag_utp\" ifNotMatch=\"tag_utp\" }
ngctl msg tag_utp_tagger: sethookout { thisHook=\"tag_utp\" tag_cookie=1148380143 tag_id=61 }


ipfw add netgraph 61 udp from any to any iplen 0-61
ipfw add deny udp from any to any tagged 0-61




sysctl net.inet.ip.fw.one_pass=0

почитать
http://citrin.ru/freebsd:ng_ipfw_ng_bpf