Freebsd Security Optimization

From Help system
Jump to: navigation, search


/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
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox