标题: FreeBSD6.1入门级Web服务器配置手记 [打印本页]
作者: conanwchen 时间: 2006-8-18 04:01 PM 标题: FreeBSD6.1入门级Web服务器配置手记
关于FreeBSD的介绍,我这里就不写了,大家可以自己找找,有很多
如果你是高手的话,请多多批评指正,因为本人毕竟只研究了3个星期左右,难免出现纰漏
本文的目的,是记录我自己的研究过程,仅作参考,千万不要完全照搬
最好的教程是http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/index.html,如果大家真心要驾驭FreeBSD,一定要看
最后,致那些像我一样如果对FreeBSD感兴趣的新手:一定要有耐心!坚持不下去的时候多想想当年学习Windows的情况^_^说实话,FreeBSD的界面不友好,别说Windwos跟Mac,可能连Linux都不如-_-!不过,在它桀骜不驯的外表下,是一颗强健稳定的心,需要用耐心去征服——并且这也是值得的
本文阅读说明
QUOTE:
这样的表示在命令行下的输入和执行
这样表示的是选项
这样表示的是文件内容(如果原文件没有,本文有——请新增;如果原文件有,本文没有——保持不变;如果原文件有,本文也有——请按照范例修改;如果原文件跟本文都没有——自己看着办吧^_^)
好了,按步骤开始!
作者: conanwchen 时间: 2006-8-18 04:02 PM
安装系统
这部分比较简单
出现启动菜单时,按2(禁用acpi启动,服务器不用电源管理)
选择国家->China
选择键盘布局->USA ISO
出现安装菜单,选择Standard
提示需要对硬盘分区,回车,出现分区表,比较简便的方法是按a(使用整个硬盘),分区完成后,按q退出(磁盘分区请参考:http://www.freebsd.org/doc/zh_CN ... /install-steps.html和http://www.freebsd.org/doc/zh_CN ... tuning-initial.html)
提示选择启动方式->Standard(服务器用的是单系统,所以不需要启动管理器Bootmgr)
提示需要划分lable,回车,出现磁盘编辑画面,比较简便的是按a(自动划分),完成后,按q退出出现安装选项,选择Minimal(最小化安装)
选择安装媒体,当然是CD/DVD,出现提示,再次确认。2-3分钟后安装完成,出现提示,回车确认
提示是否配置网络->Yes
出现菜单,选择接入公网的网卡/接口
提示是否配置ipv6->No
提示是否通过DHCP配置(根据自己情况选择)
出现网络配置界面,依次检查/填好各选项,确认(如果自定义的网络设置,会提示是否立即应用,确认即可)
提示是否将本机作为网关->No
提示是否配置inetd->No
提示是否启用SSH连接(远程控制)->Yes
提示是否应用匿名的FTP->No
提示是否将本机作为NFS服务器->No
提示是否将本机作为NFS客户端->No
提示是否配置系统控制台->No
提示是否设定时区/时间->Yes
提示是否与UTC同步->No
选择区域->Asia
选择国家->China
选择时区->1
出现提示,回车确认
提示是否启用Linux二进制兼容->No(可以兼容90%以上的Linux程序,不过服务器用不上)
提示配置鼠标->No
提示是否永远禁用ACPI->Yes(服务器无需电源管理)
提示是否浏览软件包->No
提示是否增加用户->Yes(在这里配置将来的远程访问用户)
出现菜单,选择User
填好Login ID ,Member groups = wheel , Password后确认(提示:FreeBSD默认情况下只允许wheel用户组成员远程登录,需要修改关键配置时可以su到root,这是“”洋葱式“安全机制的体现)
退出编辑用户菜单
提示配置root密码,回车确认
输入2次密码
提示是否编辑其它选项->No
退出安装菜单
出现提示->Yes
第一次启动时,会提示生成远程访问密钥,回车确认
作者: conanwchen 时间: 2006-8-18 04:03 PM
系统更新和优化
同步系统时间
QUOTE:
# ntpdate clepsydra.dec.com
安装cvsup
QUOTE:
# pkg_add –r cvsup-without-gui ; rehash
选择需要更新的内容(如果不在乎更新时间的话可以跳过)
可以有选择地更新系统源码和ports树,参考http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/cvsup.html
关于release跟stable的选择:从字面上理解,stable是稳定版之意,并且好多人认为stable是做服务器的最佳选择。不过官方称stabel只不过是current的一个分支,并不推荐用于生产服务器,生产级服务器应选择release(正式发行)版本http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/current-stable.html
QUOTE:
# ee /usr/share/examples/cvsup/standard-supfile
# ee /usr/share/examples/cvsup/ports-supfile
更新系统源码跟ports树
根据自己网络情况选择速度最快的cvsup镜像站点,官方列表http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/cvsup.html
QUOTE:
# cvsup -L 2 -h cvsup3.tw.freebsd.org /usr/share/examples/cvsup/standard-supfile ; rehash ; # cvsup –L 2 –h cvsup3.tw.freebsd.org /usr/share/examples/cvsup/ports-supfile ; rehash
编译内核
QUOTE:
# dmesg | more #获得当前设备资源列表
# cd /usr/src/sys/i386/conf
# cp GENERIC MYKERNEL
# ee MYKERNEL
# 具体选项请参考http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/kernelconfig-config.html
其中需要注意的是
ident MYKERNEL #内核标记名称
options QUOTA #启用磁盘配额
QUOTE:
# cd /usr/src
# make -j4 buildworld ; rehash ; make –j4 buildkernel KERNCONF=MYKERNEL ; rehash ; make –j4 installkernel KERNCONF=MYKERNEL ; reboot
QUOTE:
# cd /usr/src
# mergemaster –p ; make –j4 installworld ; mergemaster ; reboot
(出现提示,回车继续,或输入i安装)
QUOTE:
#cd /usr/obj
#chflags -R noschg *
#rm -rf *
网络优化
QUOTE:
# ee /etc/sysctl.conf
net.inet.ip.check_interface=1
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.tcp.recvspace=65535
net.inet.tcp.sendspace=65535
kern.ipc.somaxconn=32768
kern.ipc.maxsockbuf=2097152
net.inet.ip.redirect=0
net.inet.icmp.icmplim=100
net.inet.tcp.always_keepalive=1
net.inet.tcp.delayed_ack=1
net.inet.udp.maxdgram=65535
net.local.stream.sendspace=65535
net.local.stream.recvspace=65535
kern.maxfiles=65536
kern.maxfilesperproc=65536
net.inet.udp.checksum=1
net.inet.tcp.msl=7500
net.inet.tcp.syncookies=1
net.inet.icmp.bmcastecho=0
net.inet.icmp.maskrepl=0
kern.securelevel=0
QUOTE:
# ee /boot/loader.conf
kern.maxdsiz="536870912"
kern.ipc.maxsockets="4008"
kern.ipc.nmbclusters="32768"
kern.ipc.nmbufs="65535"
kern.ipc.nsfbufs="2496"
net.inet.tcp.tcbhashsize="2048"
安装多线程下载工具axel
QUOTE:
# cd /usr/ports/ftp/axel
# make install clean ; rehash
默认选项
QUOTE:
# ee /etc/make.conf
FETCH_CMD=axel
FETCH_BEFORE_ARGS= -n 10 -a
FETCH_AFTER_ARGS=
DISABLE_SIZE=yes
MASTER_SITE_OVERRIDE?=\
http://ports.hshh.org/${DIST_SUBDIR}/\
ftp://ftp.tw.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\
ftp://ftp.jp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\
ftp://ftp.freeBSDchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=${MASTER_SITE_BACKUP}
作者: conanwchen 时间: 2006-8-18 04:04 PM
应用程序及服务
基础环境
配置中文环境
QUOTE:
# ee /.cshrc
setenv EDITOR ee
setenv LC_ALL zh_CN.GBK
setenv LANG zh_CN.GBK
setenv LC_CTYPE zh_CN.GBK
QUOTE:
# cd /usr/ports/chinese/cce/
# make install clean ; rehash
以后就可以通过cce命令来启动中文环境了
安装perl
QUOTE:
# cd /usr/ports/lang/perl5.8
# make install clean ; rehash
安装openssl(可选)
QUOTE:
# cd /usr/ports/security/openssl
# make install clean ; rehash
安装Ports检查更新工具
QUOTE:
# cd /usr/ports/sysutils/portupgrade
# make install clean ; rehash
默认选项
作者: conanwchen 时间: 2006-8-18 04:05 PM
AMP环境配置
安装mysql
QUOTE:
# cd /usr/ports/databases/mysql40-server
# make install clean ; rehash
# cd /usr/ports/databases/mysql40-scripts
# make install clean ; rehash
# /usr/local/bin/mysql_install_db
# ln -s /usr/local/lib/mysql/libmysqlclient.so.12 /usr/lib
# chown -R mysql /var/db/mysql
# chown -R root /var/db/mysql
# chown -R mysql:mysql /var/db/mysql
# chmod 700 /var/db/mysql
优化mysql
QUOTE:
# ee /etc/my.cnf
[mysqld]
skip-networking
skip-innodb
skip-bdb
skip-name-resolve
skip-locking
#log-bin
# 以下选项基于2G内存
key_buffer=512M
max_allowed_packet=4M
table_cache=1024
thread_cache=64
join_buffer_size=32M
sort_buffer=32M
record_buffer=32M
max_connections=512
wait_timeout=120
interactive_timeout=120
max_connect_errors=30000
long_query_time=1
max_heap_table_size=256M
tmp_table_size=128M
thread_concurrency=8
myisam_sort_buffer_size=128M
mysql随系统启动
QUOTE:
# cp /usr/local/etc/rc.d/mysql-server /usr/local/etc/rc.d/mysql.sh
# ee /etc/rc.conf
mysql_enable="YES"
启动mysql
# /usr/local/etc/rc.d/mysql-server.sh start
安装apache22
QUOTE:
# cd /usr/ports/www/apache22
# make install clean ; rehash
安装过程中,取消ipv6
apache随系统启动
QUOTE:
# ee /etc/rc.conf
apache22_enable="YES"
启动apache
QUOTE:
# /usr/local/etc/rc.d/apache22.sh start
安装php
QUOTE:
# cd /usr/ports/lang/php5
# make install clean ; rehash
安装过程中,选择apache,取消ipv6
安装php扩展
# cd /usr/ports/lang/php5-extensions
# make install clean ; rehash
选择
CALENDAR
CTYPE
GD
ICONV
MBSTRING
MYSQL
PCRE
SESSION
SOCKETS
ZIP
ZLIB
配置php
QUOTE:
# cd /usr/local/etc
# cp php.ini-recommended php.ini
# ee php.ini
; 基于安全考虑,禁用某些功能,根据自己情况修改
disable_functions = passthru, exec, phpinfo, system, ini_alter, readlink, symlink, leak, proc_open, popepassthru, chroot, scandir, chgrp, chown, escapeshellcmd, escapeshellarg, shell_exec, proc_get_status
配置apache
具体选项参考http://lamp.linux.gov.cn/Apache/ApacheMenu/index.html
QUOTE:
# ee /usr/local/etc/apache22/httpd.conf
DocumentRoot "/usr/www" # 网站主目录
<Directory "/usr/www"> # 网站主目录
Options FollowSymLinks
<IfModule dir_module>
DirectoryIndex index.html index.php index.htm
</IfModule>
<IfModule mime_module>
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
AddDefaultCharset GB2312
ServerTokens Prod
ServerSignature Email
<IfModule prefork.c> # 优化针对BSD的网络支持
StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1500
MaxRequestsPerChild 10000
</IfModule>
安装ZendOptimizer
ZendOptimizer属于商业软件,所以不能通过ports编译安装,只能下载安装
QUOTE:
# ln -s /lib/libm.so.3 /lib/libm.so.2
# mount /cdrom
# cp -R /cdrom/Zend /usr/ports/devel/Zend
# cd /usr/ports/devel/zend
# ./install
一路默认
安装phpmyadmin
也可以通过传统方式,通过ftp下载/上传到机器上,配置好参数即可运行。
QUOTE:
# cd /usr/ports/databases/phpmyadmin
# make install clean ; rehash
默认选项
QUOTE:
# cp -R /usr/local/www/phpMyAdmin /usr/www/phpMyAdmin
# cd /usr/www/phpMyAdmin
# cp ./libraries/config.default.php config.inc.php
# ee config.inc.php
$cfg['PmaAbsoluteUri'] = 'http://192.168.163.130/phpMyAdmin/' # 设置phpMyAdmin的绝对地址
$cfg['blowfish_secret'] = 'host'; # 设置cookie加密
$cfg['Servers'][$i]['auth_type'] = 'cookie' # 设置认证方式
QUOTE:
# chmod 755 config.inc.php
作者: conanwchen 时间: 2006-8-18 04:05 PM
FTP设置
配置ftp(系统自带)
QUOTE:
# ee /etc/inetd.conf
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -h
QUOTE:
# ee /etc/rc.conf
inetd_enable="YES"
启动ftp
QUOTE:
# killall -HUP inetd
添加ftp用户组
QUOTE:
# pw groupadd ftpgroup -g 10001
添加ftp用户
QUOTE:
# adduser
Username:ftp
Full name:
Uid (Leave empty for default):1001
Login group [ftpuser]: ftpgroup
Login group is ftpgrou. Invite ftpuser into other groups? []:
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]:
Home directory [/home/ftpuser]:/usr/www
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : ftpuser
Password : *****
Full Name :
Uid : 1001
Class :
Groups : ftpgroup
Home : /usr/www
Shell : /bin/sh
Locked : no
OK? (yes/no) : yes
adduser: INFO: Successfully added (ftpuser) to the user database.
Add another user? (yes/no): no
Goodbye!
禁止匿名用户登录
QUOTE:
# ee /etc/ftpusers
anonymous
@guest
设定用户使用目录
QUOTE:
# ee /etc/ftpchroot
ftpusr /usr/www
设置用户磁盘限额
QUOTE:
# ee /etc/rc.conf
enable_quotas="YES"
check_quotas="YES"
QUOTE:
# ee /etc/fstab
/dev/ad0s1f /usr ufs rw,userquota,groupquota 2 2
QUOTE:
# quotacheck -av
# repquota –a
# edquota –u ftpuser
/usr: kbytes in use: 0, limits (soft = 100000, hard = 100020) # soft是警告容量,hard是强制容量
QUOTE:
# edquota –t
/usr: block grace period: 1 minutes, file grace period: 1 minutes
QUOTE:
# quotaon -a
安装pure-ftpd(推荐)
QUOTE:
# pw groupadd ftpgroup -g 10001
# pw useradd ftp -u 10001 -g ftpgroup -s /sbin/nologin
# chown ftp:ftpgroup /usr/www
# cd /usr/ports/ftp/pure-ftpd
# ee Makefile
CONFIGURE_ARGS = --without-standalone # 为将来以守护进程模式运行准备(可选)
QUOTE:
# make install clean
选择MYSQL,PAM,PRIVSEP,PERUSERLIMITS,THROTTLING,BANNER,UPLOADSCRIPT,SENDFILE
建立pure-ftpd数据库
通过phpmyadmin执行
CREATE DATABASE pureftpd;
USE pureftpd;
CREATE TABLE `users` (
`User` varchar(16) NOT NULL default '',
`Password` varchar(32) binary NOT NULL default '',
`Uid` int(11) NOT NULL default '14',
`Gid` int(11) NOT NULL default '5',
`Dir` varchar(128) NOT NULL default '',
`QuotaFiles` int(10) NOT NULL default '500',
`QuotaSize` int(10) NOT NULL default '30',
`ULBandwidth` int(10) NOT NULL default '80',
`DLBandwidth` int(10) NOT NULL default '80',
`ipaccess` varchar(15) NOT NULL default '*',
`Comment` tinytext,
`Status` enum('0','1') NOT NULL default '1',
`ULRatio` smallint(5) NOT NULL default '1',
`DLRatio` smallint(5) NOT NULL default '1',
PRIMARY KEY (`User`),
UNIQUE KEY `User` (`User`)
) TYPE=MyISAM;
通过phpmyadmin新建一用户名为ftpadmin,密码adminpassword,并赋予其pureftpd数据库的Select,Insert,Update,Delete权限。
配置pure-ftp
QUOTE:
# cd /usr/local/etc
# cp pureftpd-mysql.conf.sample pureftpd-mysql.conf
# ee pureftpd-mysql.conf
# 具体选项请参考http://download.pureftpd.org/pub/pure-ftpd/doc/README
MYSQLServer localhost
MYSQLUser ftpadmin
MYSQLPassword adminpassword
MYSQLDatabase pureftpd
MYSQLCrypt crypt
MYSQLGetPW SELECT Password FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
MYSQLGetUID SELECT Uid FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
MYSQLGetGID SELECT Gid FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
MYSQLGetDir SELECT Dir FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
MySQLGetQTAFS SELECT QuotaFiles FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
# MySQLGetRatioUL SELECT ULRatio FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
# MySQLGetRatioDL SELECT DLRatio FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
如果以standalone(独立进程)方式运行,还需要编辑pure-ftpd的配置文件
QUOTE:
# cp pureftpd.conf.sample pure-ftpd.conf
# ee pure-ftpd.conf
让pure-ftpd随系统启动
如果以inetd(守护进程)方式运行
QUOTE:
# ee /etc/rc.conf
inetd_enable=”YES”
QUOTE:
# ee /etc/inetd.conf
# 详细启动参数请参考http://download.pureftpd.org/pub/pure-ftpd/doc/README
ftp stream tcp nowait root /usr/local/sbin/pure-ftpd pure-ftpd -A -b -c50 -C2 -D -E -fftp -H -i -I15 -lmysql:/usr/local/etc/pureftpd-mysql.conf -m4 -s -u100 -j -k99 -Z -4
如果以standalone(独立进程)方式运行
QUOTE:
# ee /usr/local/etc/rc.d/pure-ftpd.sh
#!/bin/sh
case "$1" in
start)
/usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf
echo ‘pure-ftpd started!’
echo ‘’
;;
stop)
killall pure-ftpd
echo ‘pure-ftpd stopped!’
echo ‘’
;;
restart)
killall pure-ftpd
/usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf
echo ‘pure-ftpd restarted!’
echo ‘’
;;
*)
echo ‘Usage: {start|stop|restart}’ >&2
exit 64
;;
esac
exit 0
QUOTE:
# chmod u+x /usr/local/etc/rc.d/pure-ftpd.sh
# ee /etc/rc.conf
pure-ftpd_enable=”YES”
安装配置pureftpdadmin
QUOTE:
# mount /cdrom
# cp –R /cdrom/pureftpdadmin /usr/www/pureftpdadmin
# ee /usr/www/pureftpdadmin/pureftp.config.php
$PUREFTP_CONFIG_FILE = '/usr/local/etc/pureftpd-mysql.conf';
$DefaultUser = "ftpadmin";
$DefaultPass = "adminpassword";
QUOTE:
# ee /usr/www/pureftpdadmin/goodies/Quota_Checker.php
$PUREFTP_CONFIG_FILE = '/usr/local/etc/pureftpd-mysql.conf';
QUOTE:
# chmod 755 /usr/local/sbin/pure-ftpwho
# chmod ug+s /usr/local/sbin/pure-ftpwho
设置pureftpdadmin安全
QUOTE:
# ee /usr/local/etc/apache22/httpd.conf
<Directory "/usr/www/pureftpdadmin">
deny from all
Options None
AllowOverride AuthConfig
Order deny,allow
</Directory>
QUOTE:
# ee /usr/www/pureftpdadmin/.htaccess
AuthType Basic
AuthUserFile /usr/local/ftpadmin.pwd
AuthName “操作前请登录”
require valid-user
satisfy any
QUOTE:
# htpasswd -bc /usr/local/ftpadmin.pwd ftpadmin adminpassword
作者: conanwchen 时间: 2006-8-18 04:06 PM
系统安全
防火墙IPFW
启用防火墙
QUOTE:
# ee /etc/rc.conf
firewall_enable="YES"
firewall_type="open"
firewall_script="/etc/ipfw.rules"
firewall_logging="YES"
QUOTE:
# ee /etc/sysctl.conf
net.inet.ip.fw.verbose=1
net.inet.ip.fw.verbose_limit=5
编辑防火墙规则
QUOTE:
# ee /etc/ipfw.rules
# 具体语法请参考http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/firewalls-ipfw.html
#
##################
#启动时重载规则列表#
##################
ipfw -q -f flush
#
#############
#设置命令前缀#
#############
cmd="ipfw -q add"
#
#############
#设置DNS地址#
#############
dns="192.168.163.2"
#
################
#公网网卡界面名称#
################
pif="lnc0"
#
################
#不限制loopback#
################
$cmd 00100 allow all from any to any via lo0
#
###############
#允许自定义规则#
###############
$cmd 00200 check-state
#
###############
#允许与DNS通讯#
###############
$cmd 00300 allow tcp from any to $dns 53 out via $pif keep-state
$cmd 00400 allow udp from any to $dna 53 out via $pif keep-state
#
#####################################################
#允许http连接(limit src-addr意为限制同一地址连接数量)#
#####################################################
$cmd 00500 allow tcp from any to any 80 out via $pif setup keep-state
$cmd 00600 allow tcp from any to me 80 in via $pif setup limit src-addr 10
#
######################################################
#允许https连接(limit src-addr意为限制同一地址连接数量)#
######################################################
$cmd 00700 allow tcp from any to any 443 out via $pif setup keep-state
$cmd 00800 allow tcp from any to me 443 in via $pif setup limit src-addr 10
#
#######################################################
#允许收发电子邮件(limit src-addr意为限制同一地址连接数量)#
#######################################################
$cmd 00900 allow tcp from any to any 25 out via $pif setup keep-state
#$cmd 01000 allow tcp from any to me 25 in via $pif setup limit src-addr 1
#
$cmd 01100 allow tcp from any to any 110 out via $pif setup keep-state
#$cmd 01100 allow tcp from any to me 110 in via $pif setup limit src-addr 1
#
#########################
#允许CVSP和PORT安装/更新#
#########################
$cmd 01200 allow tcp from any to any via $pif setup keep-state uid root
#
##########
#允许ping#
##########
$cmd 01300 allow icmp from any to any out via $pif keep-state
#$cmd 01300 allow icmp from any to any in via $pif keep-state
#
####################################################
#允许FTP连接(limit src-addr意为限制同一地址连接数量)#
####################################################
$cmd 01400 allow tcp from any to any 21 out via $pif setup keep-state
$cmd 01500 allow tcp from any to any 21 in via $pif setup limit src-addr 2
#
########################################################
#允许SSH远程连接(limit src-addr意为限制同一地址连接数量)#
########################################################
$cmd 01600 allow tcp from any to any 22 out via $pif setup keep-state
$cmd 01700 allow tcp from any to any 22 in via $pif setup limit src-addr 2
#
######################
#禁止此规则以外的所有连接#
######################
$cmd 60000 deny log all from any to any
作者: conanwchen 时间: 2006-8-18 04:07 PM
设置远程登录安全
QUOTE:
# ee /etc/ssh/sshd_config
port 22 //可以改成不常用端口,并在防火墙设置中作相应修改
protocol 1
hostkey /etc/ssh/ssh_host_key
PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeyFiles .ssh/authorized_keys
PasswordAuthentication no
QUOTE:
# ssh-keygen -b 1024 -t rsa1
一路回车默认
QUOTE:
# cp /root/.ssh/identity.pub /usr/www # 复制到一个可以用ftp下载的地方
用ftp下载identity.pub,保存到本地;
在本地启动putty.exe(免费软件);
在session设置中填好IP和端口;
在connection-SSH-Auth中,Browse下载的identity.pub;
勾选Attempt TIS or CryptoCard auth(SSH-1);
点击open连接;
按照提示输入用户名、密码
作者: conanwchen 时间: 2006-8-18 04:07 PM
其他安全设置
关闭一些不安全的服务
QUOTE:
# ee /etc/rc.conf
sendmail_enable="NONE"
nfs_server_enable="NO"
nfs_client_enable="NO"
portmap_enable="NO"
syslogd_enable="YES"
syslogd_flags="-ss"
icmp_drop_redirect="YES"
log_in_vain="YES"
inetd_enable=”NO” # 如果pure-ftpd以Inetd方式运行,需设置为YES
禁止一般用户查看系统日志
QUOTE:
# chmod g-w,o-r /var/log/*
# chmod 600 /etc/syslog.conf
# chmod 600 /etc/newsyslog.conf
对bin和sbin进行安全保护
QUOTE:
# chflags schg /bin/*
# chflags schg /sbin/*
禁止一般用户使用crontab
QUOTE:
# ee /var/cron/allow
root
QUOTE:
# chmod 600 /var/cron/allow
作者: conanwchen 时间: 2006-8-18 04:08 PM
安装旧版软件
默认情况下,通过ports编译安装的都是软件的最新版本,在某些情况下需要自定义安装特定的旧版本(传说中的稳定版),这个时候需要特殊处理
首先要知道准备安装的port属于哪个类别,比如常见的Mysql4.0.26属于databases,php4.4.0属于lang等等……我们这里以php4为例
然后,到http://www.freebsd.org/cgi/cvsweb.cgi/ports/查看相应软件的发布日期,php4.4.1最后的发布日期为2005年12月9日
根据相应版本的发布日期(通常以公布日期稍延后一点,但一定要在下一个版本日期之前)修改cvsup文件
QUOTE:
# ee /usr/share/examples/cvsup/ports-supfile
*default date=2005.12.10.00.00.00 #格式:年/月/日/时/分/秒
#ports-all #不用将所有port都回滚
ports-lang # 只回滚相应的软件类别
然后将ports回滚到那个时候:
QUOTE:
# cvsup –L 2 –h cvsup3.tw.freebsd.org /usr/share/examples/cvsup/ports-supfile
最后就可以安装了
QUOTE:
# cd /usr/lang/php4
# make install clean ; rehash
FreeBSD目录架构
/ 文件系统的根目录。
/bin/ 在单个用户和多用户环境下的基本工具目录。
/boot/ 在操作系统在启动加载期间所用的程序和配置。
/boot/defaults/ 默认每步引导启动的配置内容,请查阅loader.conf(5)。
/dev/ 设备节点,请查阅 intro(4)。
/etc/ 系统启动的配置和脚本。
/etc/defaults/ 系统默认的启动配置和脚本,请参考 rc(8) 。
/etc/mail/ 关系到邮件系统运作的配置, 请参考 sendmail(8)。
/etc/namedb/ named 配置文件,请参考 named(8)。
/etc/periodic/ 每天、每星期和每月周期性地运行的脚本, 请通过 cron(8)查阅 periodic(8)。
/etc/ppp/ ppp配置文件,请查阅ppp(8)。
/mnt/ 由管理员习惯使用挂接点的临时空目录。
/proc/ 运行中的文件系统,请参阅 procfs(5) 和 mount_procfs(8)。
/rescue/ 用于紧急恢复的一组静态联编的程序; 参见 rescue(8)。
/root/ root用户的Home(主)目录。
/sbin/ 在单个用户和多用户环境下的存放系统程序和管理所需的基本实用目录。
/stand/ 独立的程序环境。
/tmp/ 临时文件。 /tmp 目录中的内容,一般不会在系统重新启动之后保留。 通常会将基于内存的文件系统挂在 /tmp 上。 这一工作可以用一系列 tmpmfs 相关的 rc.conf(5) 变量来自动完成。 (或者, 也可以在 /etc/fstab 增加对应项; 参见 mdmfs(8))。
/usr/ 存放大多数用户的应用软件。
/usr/bin/ 存放实用命令,程序设计工具,和应用软件。
/usr/include/ 存放标准 C include 文件.
/usr/lib/ 存放库文件。
/usr/libdata/ 存放各种实用工具的数据文件。
/usr/libexec/ 存放系统实用或后台程序 (从另外的程序启动执行)。
/usr/local/ 存放本地执行文件, 库文件等等, 同时也是 FreeBSD ports 安装的默认安装目录。 /usr/local 在 /usr 中的目录布局大体相同,请查阅 hier(7)。 但 man 目录例外, 它们是直接放在 /usr/local 而不是 /usr/local/share 下的, 而 ports 说明文档在 share/doc/port。
/usr/obj/ 通过联编 /usr/src 得到的目标文件。
/usr/ports 存放 FreeBSD 的 Ports Collection (可选)。
/usr/sbin/ 存放系统后台程序 和 系统工具 (由用户执行)。
/usr/share/ 存放架构独立的文件。
/usr/src/ 存放 BSD 或者本地源码文件。
/usr/X11R6/ 存放 X11R6 可执行文件、 库文件、 配置文件等的目录(可选)。
/var/ 多用途日志、 临时或短期存放的, 以及打印假脱机系统文件。有时会将基于内存的文件系统挂在 /var 上。 这一工作可以通过在 rc.conf(5) 中设置一系列 varmfs 变量 (或在 /etc/fstab 中加入一行配置; 参见 mdmfs(8)) 来完成。
/var/log/ 存放各种的系统记录文件。
/var/mail/ 存放用户mailbox(一种邮件存放格式)文件。
/var/spool/ 各种打印机和邮件系统spooling(回环)的目录。
/var/tmp/ 临时文件。 这些文件在系统重新启动时通常会保留, 除非 /var 是一个内存中的文件系统。
/var/yp NIS 映射。
/etc 一般的系统配置信息。这儿的数据是与特定系统相关的。
/etc/defaults 系统配置文件的默认版本。
/etc/mail 额外的 sendmail(8) 配置信息,其他 MTA 配置文件。
/etc/ppp 用于用户级和内核级 ppp 程序的配置。
/etc/namedb named(8) 数据的默认位置。通常 named.conf 和区域文件存放在这里。
/usr/local/etc 被安装的应用程序配置文件。可以参考每个应用程序的子目录。
/usr/local/etc/rc.d 被安装程序的 启动/停止 脚本。
/var/db 特定系统自动产生的数据库文件,像 package 数据库,位置数据库等等。
FreeBSD配置文件说明
/etc/resolv.conf
指示了 FreeBSD 如何访问域名系统(DNS)。
nameserver 按顺序要查询的名字服务器的 IP 地址,最多三个。
search 搜索机器名的列表。这通常由本地机器名的域决定。
domain 本地域名。
/etc/hosts
是 Internet 早期使用的一个简单文本数据库。它结合 DNS 和 NIS 提供名字到 IP 地址的映射。
syslog.conf
是 syslogd(8) 程序的配置文件。 它指出了的 syslog 哪种信息类型被存储在特定的日志文件中。
newsyslog.conf
是一个通常用 cron(8) 计划运行的 newsyslog(8) 程序的配置文件。指出了什么时候日志文件需要打包或者重新整理。指出了哪个日志文件要被管理,要保留多少和它们什么时候被创建。日志文件可以在它们达到一定大小或者在特定的日期被重新整理。
sysctl.conf
看起来很像 rc.conf。它用 variable=value 的形式来设定值。指定的值在系统进入多用户模式之后被设定。并不是所有的变量都可以在这个模式下设定。
************************************************************************************
至此,关于用FreeBSD组架的web服务器基本上就可以告一段落了。
关于本文中提到的
QUOTE:
# mount /cdrom
其实是我自己做的一张光盘镜像,现在把这个镜像提供给大家。光盘里还包括了文中提到的所有配置文件的范例供大家参考。
作者: conanwchen 时间: 2006-8-18 04:09 PM
这篇牛B吧~~
作者: conanwchen 时间: 2006-8-19 02:54 AM
顶下
作者: ttmax 时间: 2006-8-19 01:30 PM
路过!
作者: conanwchen 时间: 2006-8-20 03:22 AM
寒
作者: 诱饵 时间: 2006-8-20 05:34 PM
好东西
一看LZ就用心了
支持
支持
作者: 王飞强 时间: 2006-9-6 02:37 PM
支持一下了,我不会了
作者: cm80 时间: 2006-10-4 05:27 PM
这些对初学者来说真是好东西啊!
不过要架设一个专业级别的服务器,他和你这篇 “入门级”的 有什么区别!望指教!
作者: cm80 时间: 2006-10-4 05:30 PM
还有 FreeBAD如何升级到 stable 前面的还是没看太明白
下面编辑的2个文件里面要做什么样的修改吗?
QUOTE:
# ee /usr/share/examples/cvsup/standard-supfile
# ee /usr/share/examples/cvsup/ports-supfile
作者: HarbinBeer 时间: 2006-10-18 01:13 AM
我路过,顺便告诉楼上,不修改是可以的
作者: dt231 时间: 2006-11-5 10:00 PM
呵呵,不错,当初俺学BSD,花了好多时间,看了好多资料。。。。寒
作者: dcm007 时间: 2006-11-15 09:15 AM
不错,我又懂了许多
作者: hipalm 时间: 2007-4-12 12:36 AM
不会.
作者: baby 时间: 2007-4-12 11:55 AM
看签名,学BSD太难,还是学CentOS把
欢迎光临 梦游时光互联 (http://web.meyu.net./) |
Powered by Discuz! 4.0.0 |