Freebsd Security Optimization
/etc/make.conf
WITHOUT_X11=YES
WITH_IDEA=yes
MAKE_IDEA=yes
DEFAULT_MYSQL_VER=50
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-server
WITH_CHARSET=cp1251
WITH_COLLATION=cp1251_bin
WITH_LINUXTHREADS=yes
BUILD_OPTIMIZED=yes
BUILD_STATIC=yes
.endif
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-client
WITH_CHARSET=cp1251
WITH_COLLATION=cp1251_bin
BUILD_OPTIMIZED=yes
.endif
#apache22
.if ${.CURDIR:N*/usr/ports/www/apache22} == ""
#WITH_THREADS=true
#WITHOUT_HUGE_STACK_SIZE=true
#WITH_UCS4=true
#WITH_PYMALLOC=true
#WITHOUT_FPECTL=true
#WITH_MPM=worker
WITH_SUEXEC=true
SUEXEC_DOCROOT="/home"
.endif
KERNEL
options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=4000 options IPFIREWALL_DEFAULT_TO_ACCEPT options IPFIREWALL_FORWARD options ACCEPT_FILTER_DATA options ACCEPT_FILTER_HTTP options HZ=1000 options DEVICE_POLLING
/etc/sysctl.conf
security.bsd.see_other_uids=0 net.inet.tcp.blackhole=2 # включаем черные дыры для tcp net.inet.udp.blackhole=1 # и udp kern.ipc.nmbclusters=65536 # увеличиваем лимиты kern.ipc.somaxconn=32768 kern.ipc.maxsockets=204800 kern.maxfiles=256000 kern.maxfilesperproc=230400 net.inet.ip.portrange.first=1024 net.inet.ip.portrange.last=65535 net.inet.ip.portrange.randomized=0 net.inet.tcp.maxtcptw=40960 net.inet.tcp.msl=40000 net.inet.tcp.finwait2_timeout=40000 net.inet.tcp.syncookies=1 net.inet.tcp.sack.enable=1 net.inet.tcp.nolocaltimewait=1 net.inet.tcp.fast_finwait2_recycle=1 net.inet.icmp.drop_redirect=1 net.inet.icmp.log_redirect=1 net.inet.ip.redirect=0 kern.polling.enable=1 kern.polling.burst_max=1000 kern.polling.each_burst=50 net.inet.icmp.icmplim=5000 # Запрещаем отвечать на все лишние запросы. net.inet.icmp.maskrepl=0 net.inet.ip.sourceroute=0 net.inet.ip.accept_sourceroute=0 net.inet.icmp.bmcastecho=0
/boot/loader.conf
net.inet.tcp.syncache.hashsize=1024 net.inet.tcp.syncache.bucketlimit=100 net.inet.tcp.tcbhashsize=4096
/etc/rc.conf
inetd_enable="NO" #inetd_enable="YES" #inetd_flags="-l -R 1024"
Найти все suid/sgid бинарники в системе можно следующей командой:
# find / -type f \( -perm -4000 -o -perm -2000 \) -ls
цифра 4 в маске означает suid, 2 - sgid.
find / -perm -0777 -type d -ls
#!/bin/sh
logname=/home/site/logs/access.log
linesave=.linenumber
line1=$(cat $logname |wc -l)
if [ -f $linesave ];
then
line0=$(cat $linesave)
offset=$((line1-line0))
else
offset=$line1
fi
if [ $line1 -ne $line0 ];
then
echo $line1 >$linesave
tail -n $offset $logname | grep "GET / " | awk '{print $1}' | sort | uniq -c | sort -n | awk '{if ($1>100) print "ipfw add deny tcp from "$2" to me"}' | sh
fi
Основное изменение - просмотр только части access.log с последнего запуска. Таким образом, если запускать этот скрипт каждую минуту, то будут блокироваться IP обратившиеся к главной странице 100 раз ({if ($1>100)) в течении минуты. Механизм блокировки основан на командах Himiko. Пояснения к коду. Обрабатываемый лог указывается в переменной logname. В коде это /home/site/logs/access.log. Файл .linenumber используется для сохранения номера последней строки со времени последнего запуска. Если используется ротация логов, то .linenumber нужно удалять.
FreeBSD memory for linux users
#fetch http://www.cyberciti.biz/files/scripts/freebsd-memory.pl.txt #mv freebsd-memory.pl.txt /usr/local/bin/free #chmod +x /usr/local/bin/free #free
# cd /usr/ports/sysutils/freecolor # make install clean # freecolor -t -m -o
http://www.lissyara.su/?id=1147
http://www.opennet.ru/base/net/tune_freebsd.txt.html
Что поставить дополнительно:
/usr/ports/sysutils/sysinfo /usr/ports/ports-mgmt/portaudit /usr/ports/net/trafshow /usr/ports/net/bmon
