如何落伍 | 落伍帐号规则 | 站长俱乐部 | 落伍代码下载 | 落伍预告页 | 现金任务 | 人才招聘 | 落伍DIY | 站长工具
北京VPS 香港VPS ­­— 紫田网络千次搜索税后周付11元,比百度赚钱!做广告赚钱,还得找XIOO联盟强氧服务器落伍硬件专卖全面升级
"壹支付"秒清算,提现立刻到卡! 中客:新春新年新气象,跃马奔腾迎新年!九九数据 20人合租 399元 赠CDN加速韩国高速主机 合租 服务器 月付!
恋爱塔罗/虎年运势, 挚盟新品火爆上线discuz!旗下联盟,加入就送10元65视讯cps40%分成/效果佳!3A网络 为合法网站护航 2G仅188元/年
广东浙江电信SAS百独1400/月网通9折亚太名网 北京虚拟主机 美国虚拟主机CPC点击100元千IP不限量周结十强ISP服务商,COM 36,主机稳定之选
网通100M独享1200/月,另代理企业QQ英拓网络Q8200租用3999送产权高速多线合租空间 可试用 可月付 稳定!香港虚拟主机 1G只要99元
返回列表 发帖

[Unix/Linux] FreeBSD6.1入门级Web服务器配置手记

[Unix/Linux] FreeBSD6.1入门级Web服务器配置手记

关于FreeBSD的介绍,我这里就不写了,大家可以自己找找,有很多

如果你是高手的话,请多多批评指正,因为本人毕竟只研究了3个星期左右,难免出现纰漏

本文的目的,是记录我自己的研究过程,仅作参考,千万不要完全照搬

最好的教程是http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/index.html,如果大家真心要驾驭FreeBSD,一定要看

最后,致那些像我一样如果对FreeBSD感兴趣的新手:一定要有耐心!坚持不下去的时候多想想当年学习Windows的情况^_^说实话,FreeBSD的界面不友好,别说Windwos跟Mac,可能连Linux都不如-_-!不过,在它桀骜不驯的外表下,是一颗强健稳定的心,需要用耐心去征服——并且这也是值得的

本文阅读说明

这样的表示在命令行下的输入和执行


这样表示的是选项

  1. 这样表示的是文件内容(如果原文件没有,本文有——请新增;如果原文件有,本文没有——保持不变;如果原文件有,本文也有——请按照范例修改;如果原文件跟本文都没有——自己看着办吧^_^)
复制代码


好了,按步骤开始!

[ 本帖最后由 HarbinBeer 于 2006-8-2 19:12 编辑 ]

捌号主机        瑞驰数据        你的地盘

安装系统

这部分比较简单

出现启动菜单时,按2(禁用acpi启动,服务器不用电源管理)

选择国家->China

选择键盘布局->USA ISO

出现安装菜单,选择Standard

提示需要对硬盘分区,回车,出现分区表,比较简便的方法是按a(使用整个硬盘),分区完成后,按q退出(磁盘分区请参考:http://www.freebsd.org/doc/zh_CN ... /install-steps.htmlhttp://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

第一次启动时,会提示生成远程访问密钥,回车确认

[ 本帖最后由 HarbinBeer 于 2006-8-2 16:43 编辑 ]

捌号主机        瑞驰数据        你的地盘

TOP

系统更新和优化

同步系统时间

# ntpdate clepsydra.dec.com


安装cvsup

# 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

# 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

# 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


编译内核

# 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


其中需要注意的是

  1. ident                MYKERNEL        #内核标记名称
  2. options        QUOTA                #启用磁盘配额
复制代码

# cd /usr/src
# make -j4 buildworld ; rehash ; make –j4 buildkernel KERNCONF=MYKERNEL ; rehash ; make –j4 installkernel KERNCONF=MYKERNEL ; reboot

# cd /usr/src
# mergemaster –p ; make –j4 installworld ; mergemaster ; reboot


(出现提示,回车继续,或输入i安装)

#cd /usr/obj
#chflags -R noschg *
#rm -rf *


网络优化

# ee /etc/sysctl.conf

  1. net.inet.ip.check_interface=1
  2. net.inet.tcp.blackhole=2
  3. net.inet.udp.blackhole=1
  4. net.inet.tcp.recvspace=65535
  5. net.inet.tcp.sendspace=65535
  6. kern.ipc.somaxconn=32768
  7. kern.ipc.maxsockbuf=2097152
  8. net.inet.ip.redirect=0
  9. net.inet.icmp.icmplim=100
  10. net.inet.tcp.always_keepalive=1
  11. net.inet.tcp.delayed_ack=1
  12. net.inet.udp.maxdgram=65535
  13. net.local.stream.sendspace=65535
  14. net.local.stream.recvspace=65535
  15. kern.maxfiles=65536
  16. kern.maxfilesperproc=65536
  17. net.inet.udp.checksum=1
  18. net.inet.tcp.msl=7500
  19. net.inet.tcp.syncookies=1
  20. net.inet.icmp.bmcastecho=0
  21. net.inet.icmp.maskrepl=0
  22. kern.securelevel=0
复制代码

# ee /boot/loader.conf

  1. kern.maxdsiz="536870912"
  2. kern.ipc.maxsockets="4008"
  3. kern.ipc.nmbclusters="32768"
  4. kern.ipc.nmbufs="65535"
  5. kern.ipc.nsfbufs="2496"
  6. net.inet.tcp.tcbhashsize="2048"
复制代码


安装多线程下载工具axel

# cd /usr/ports/ftp/axel
# make install clean ; rehash


默认选项

# ee /etc/make.conf

  1. FETCH_CMD=axel
  2. FETCH_BEFORE_ARGS= -n 10 -a
  3. FETCH_AFTER_ARGS=
  4. DISABLE_SIZE=yes
  5. MASTER_SITE_OVERRIDE?=\
  6. http://ports.hshh.org/${DIST_SUBDIR}/\
  7. ftp://ftp.tw.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\
  8. ftp://ftp.jp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\
  9. ftp://ftp.freeBSDchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
  10. MASTER_SITE_OVERRIDE?=${MASTER_SITE_BACKUP}
复制代码

[ 本帖最后由 HarbinBeer 于 2006-8-2 17:00 编辑 ]

捌号主机        瑞驰数据        你的地盘

TOP

应用程序及服务

基础环境

配置中文环境

# ee /.cshrc

  1. setenv        EDITOR                ee
  2. setenv        LC_ALL                zh_CN.GBK
  3. setenv        LANG                zh_CN.GBK
  4. setenv        LC_CTYPE        zh_CN.GBK
复制代码

# cd /usr/ports/chinese/cce/
# make install clean ; rehash


以后就可以通过cce命令来启动中文环境了

安装perl

# cd /usr/ports/lang/perl5.8
# make install clean ; rehash


安装openssl(可选)

# cd /usr/ports/security/openssl
# make install clean ; rehash


安装Ports检查更新工具

# cd /usr/ports/sysutils/portupgrade
# make install clean ; rehash


默认选项

[ 本帖最后由 HarbinBeer 于 2006-8-2 17:05 编辑 ]

捌号主机        瑞驰数据        你的地盘

TOP

AMP环境配置

安装mysql

# 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

# ee /etc/my.cnf

  1. [mysqld]
  2. skip-networking
  3. skip-innodb
  4. skip-bdb
  5. skip-name-resolve
  6. skip-locking
  7. #log-bin
  8. # 以下选项基于2G内存
  9. key_buffer=512M
  10. max_allowed_packet=4M
  11. table_cache=1024
  12. thread_cache=64
  13. join_buffer_size=32M
  14. sort_buffer=32M
  15. record_buffer=32M
  16. max_connections=512
  17. wait_timeout=120
  18. interactive_timeout=120
  19. max_connect_errors=30000
  20. long_query_time=1
  21. max_heap_table_size=256M
  22. tmp_table_size=128M
  23. thread_concurrency=8
  24. myisam_sort_buffer_size=128M
复制代码


mysql随系统启动

# cp /usr/local/etc/rc.d/mysql-server /usr/local/etc/rc.d/mysql.sh
# ee /etc/rc.conf

  1. mysql_enable="YES"
复制代码


启动mysql

  1. # /usr/local/etc/rc.d/mysql-server.sh start
复制代码


安装apache22

# cd /usr/ports/www/apache22
# make install clean ; rehash


安装过程中,取消ipv6

apache随系统启动

# ee /etc/rc.conf

  1. apache22_enable="YES"
复制代码


启动apache

# /usr/local/etc/rc.d/apache22.sh start


安装php

# cd /usr/ports/lang/php5
# make install clean ; rehash


安装过程中,选择apache,取消ipv6

安装php扩展

  1. # cd /usr/ports/lang/php5-extensions
  2. # make install clean ; rehash
复制代码


选择
CALENDAR
CTYPE
GD
ICONV
MBSTRING
MYSQL
PCRE
SESSION
SOCKETS
ZIP
ZLIB


配置php

# cd /usr/local/etc
# cp php.ini-recommended php.ini
# ee php.ini

  1. ; 基于安全考虑,禁用某些功能,根据自己情况修改
  2. 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

# ee /usr/local/etc/apache22/httpd.conf

  1. DocumentRoot "/usr/www"        # 网站主目录
  2. <Directory "/usr/www">        # 网站主目录
  3. Options FollowSymLinks
  4. <IfModule dir_module>
  5. DirectoryIndex index.html index.php index.htm
  6. </IfModule>
  7. <IfModule mime_module>
  8. AddType application/x-gzip .gz .tgz
  9. AddType application/x-httpd-php .php
  10. AddType application/x-httpd-php-source .phps
  11. </IfModule>
  12. AddDefaultCharset GB2312
  13. ServerTokens Prod
  14. ServerSignature Email
  15. <IfModule prefork.c>        # 优化针对BSD的网络支持
  16. StartServers 10
  17. MinSpareServers 10
  18. MaxSpareServers 15
  19. ServerLimit 2000
  20. MaxClients 1500
  21. MaxRequestsPerChild 10000
  22. </IfModule>
复制代码


安装ZendOptimizer

ZendOptimizer属于商业软件,所以不能通过ports编译安装,只能下载安装

# 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下载/上传到机器上,配置好参数即可运行。

# cd /usr/ports/databases/phpmyadmin
# make install clean ; rehash


默认选项

# 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

  1. $cfg['PmaAbsoluteUri'] = 'http://192.168.163.130/phpMyAdmin/'        # 设置phpMyAdmin的绝对地址
  2. $cfg['blowfish_secret'] = 'host';                                                                        # 设置cookie加密
  3. $cfg['Servers'][$i]['auth_type'] = 'cookie'                                                # 设置认证方式
复制代码

# chmod 755 config.inc.php

[ 本帖最后由 HarbinBeer 于 2006-8-2 17:18 编辑 ]

捌号主机        瑞驰数据        你的地盘

TOP

FTP设置

配置ftp(系统自带)

# ee /etc/inetd.conf

  1. ftp        stream        tcp        nowait        root        /usr/libexec/ftpd        ftpd        -l -h
复制代码

# ee /etc/rc.conf

  1. inetd_enable="YES"
复制代码


启动ftp

# killall -HUP inetd


添加ftp用户组

# pw groupadd ftpgroup -g 10001


添加ftp用户

# 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!


禁止匿名用户登录

# ee /etc/ftpusers

  1. anonymous
  2. @guest
复制代码


设定用户使用目录

# ee /etc/ftpchroot

  1. ftpusr /usr/www
复制代码


设置用户磁盘限额

# ee /etc/rc.conf

  1. enable_quotas="YES"
  2. check_quotas="YES"
复制代码

# ee /etc/fstab

  1. /dev/ad0s1f        /usr        ufs                rw,userquota,groupquota                2        2
复制代码

# quotacheck -av
# repquota –a
# edquota –u ftpuser

  1. /usr: kbytes in use: 0, limits (soft = 100000, hard = 100020)        # soft是警告容量,hard是强制容量
复制代码

# edquota –t

  1. /usr: block grace period: 1 minutes, file grace period: 1 minutes
复制代码

# quotaon -a


安装pure-ftpd(推荐)

# 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

  1. CONFIGURE_ARGS        =        --without-standalone                # 为将来以守护进程模式运行准备(可选)
复制代码

# make install clean


选择MYSQL,PAM,PRIVSEP,PERUSERLIMITS,THROTTLING,BANNER,UPLOADSCRIPT,SENDFILE

建立pure-ftpd数据库
通过phpmyadmin执行

  1. CREATE DATABASE pureftpd;
  2. USE pureftpd;
  3. CREATE TABLE `users` (
  4. `User` varchar(16) NOT NULL default '',
  5. `Password` varchar(32) binary NOT NULL default '',
  6. `Uid` int(11) NOT NULL default '14',
  7. `Gid` int(11) NOT NULL default '5',
  8. `Dir` varchar(128) NOT NULL default '',
  9. `QuotaFiles` int(10) NOT NULL default '500',
  10. `QuotaSize` int(10) NOT NULL default '30',
  11. `ULBandwidth` int(10) NOT NULL default '80',
  12. `DLBandwidth` int(10) NOT NULL default '80',
  13. `ipaccess` varchar(15) NOT NULL default '*',
  14. `Comment` tinytext,
  15. `Status` enum('0','1') NOT NULL default '1',
  16. `ULRatio` smallint(5) NOT NULL default '1',
  17. `DLRatio` smallint(5) NOT NULL default '1',
  18. PRIMARY KEY  (`User`),
  19. UNIQUE KEY `User` (`User`)
  20. ) TYPE=MyISAM;
复制代码


通过phpmyadmin新建一用户名为ftpadmin,密码adminpassword,并赋予其pureftpd数据库的Select,Insert,Update,Delete权限。

配置pure-ftp

# cd /usr/local/etc
# cp pureftpd-mysql.conf.sample pureftpd-mysql.conf
# ee pureftpd-mysql.conf

  1. # 具体选项请参考http://download.pureftpd.org/pub/pure-ftpd/doc/README
  2. MYSQLServer     localhost
  3. MYSQLUser      ftpadmin
  4. MYSQLPassword   adminpassword
  5. MYSQLDatabase  pureftpd
  6. MYSQLCrypt      crypt
  7. MYSQLGetPW      SELECT Password FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
  8. MYSQLGetUID     SELECT Uid FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
  9. MYSQLGetGID     SELECT Gid FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
  10. MYSQLGetDir     SELECT Dir FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
  11. MySQLGetQTAFS  SELECT QuotaFiles FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
  12. MySQLGetQTASZ  SELECT QuotaSize FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
  13. # MySQLGetRatioUL SELECT ULRatio FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
  14. # MySQLGetRatioDL SELECT DLRatio FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
  15. MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
  16. MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L" AND Status="1" AND (Ipaccess = "*" OR Ipaccess LIKE "\R")
复制代码


如果以standalone(独立进程)方式运行,还需要编辑pure-ftpd的配置文件

# cp pureftpd.conf.sample pure-ftpd.conf
# ee pure-ftpd.conf


让pure-ftpd随系统启动

如果以inetd(守护进程)方式运行

# ee /etc/rc.conf

  1. inetd_enable=”YES”
复制代码

# ee /etc/inetd.conf

  1. # 详细启动参数请参考http://download.pureftpd.org/pub/pure-ftpd/doc/README
  2. 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(独立进程)方式运行

# ee /usr/local/etc/rc.d/pure-ftpd.sh

  1. #!/bin/sh
  2. case "$1" in
  3. start)
  4. /usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf
  5. echo ‘pure-ftpd started!’
  6. echo ‘’
  7. ;;
  8. stop)
  9. killall pure-ftpd
  10. echo ‘pure-ftpd stopped!’
  11. echo ‘’
  12. ;;
  13. restart)
  14. killall pure-ftpd
  15. /usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf
  16. echo ‘pure-ftpd restarted!’
  17. echo ‘’
  18. ;;
  19. *)
  20. echo ‘Usage: {start|stop|restart}’ >&2
  21. exit 64
  22. ;;
  23. esac
  24. exit 0
复制代码

# chmod u+x /usr/local/etc/rc.d/pure-ftpd.sh
# ee /etc/rc.conf

  1. pure-ftpd_enable=”YES”
复制代码


安装配置pureftpdadmin

# mount /cdrom
# cp –R /cdrom/pureftpdadmin /usr/www/pureftpdadmin
# ee /usr/www/pureftpdadmin/pureftp.config.php

  1. $PUREFTP_CONFIG_FILE        = '/usr/local/etc/pureftpd-mysql.conf';
  2. $DefaultUser = "ftpadmin";
  3. $DefaultPass = "adminpassword";
复制代码

# ee /usr/www/pureftpdadmin/goodies/Quota_Checker.php

  1. $PUREFTP_CONFIG_FILE        = '/usr/local/etc/pureftpd-mysql.conf';
复制代码

# chmod 755 /usr/local/sbin/pure-ftpwho
# chmod ug+s /usr/local/sbin/pure-ftpwho


设置pureftpdadmin安全

# ee /usr/local/etc/apache22/httpd.conf

  1. <Directory "/usr/www/pureftpdadmin">
  2. deny from all
  3. Options None
  4. AllowOverride AuthConfig
  5. Order deny,allow
  6. </Directory>
复制代码

# ee /usr/www/pureftpdadmin/.htaccess

  1. AuthType Basic
  2. AuthUserFile /usr/local/ftpadmin.pwd
  3. AuthName “操作前请登录”
  4. require valid-user
  5. satisfy any
复制代码

# htpasswd -bc /usr/local/ftpadmin.pwd ftpadmin adminpassword

[ 本帖最后由 HarbinBeer 于 2006-8-2 17:36 编辑 ]

捌号主机        瑞驰数据        你的地盘

TOP

系统安全

防火墙IPFW

启用防火墙

# ee /etc/rc.conf

  1. firewall_enable="YES"
  2. firewall_type="open"
  3. firewall_script="/etc/ipfw.rules"
  4. firewall_logging="YES"
复制代码

# ee /etc/sysctl.conf

  1. net.inet.ip.fw.verbose=1
  2. net.inet.ip.fw.verbose_limit=5
复制代码


编辑防火墙规则

# ee /etc/ipfw.rules

  1. # 具体语法请参考http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/firewalls-ipfw.html
  2. #
  3. ##################
  4. #启动时重载规则列表#
  5. ##################
  6. ipfw -q -f flush
  7. #
  8. #############
  9. #设置命令前缀#
  10. #############
  11. cmd="ipfw -q add"
  12. #
  13. #############
  14. #设置DNS地址#
  15. #############
  16. dns="192.168.163.2"
  17. #
  18. ################
  19. #公网网卡界面名称#
  20. ################
  21. pif="lnc0"
  22. #
  23. ################
  24. #不限制loopback#
  25. ################
  26. $cmd 00100 allow all from any to any via lo0
  27. #
  28. ###############
  29. #允许自定义规则#
  30. ###############
  31. $cmd 00200 check-state
  32. #
  33. ###############
  34. #允许与DNS通讯#
  35. ###############
  36. $cmd 00300 allow tcp from any to $dns 53 out via $pif keep-state
  37. $cmd 00400 allow udp from any to $dna 53 out via $pif keep-state
  38. #
  39. #####################################################
  40. #允许http连接(limit src-addr意为限制同一地址连接数量)#
  41. #####################################################
  42. $cmd 00500 allow tcp from any to any 80 out via $pif setup keep-state
  43. $cmd 00600 allow tcp from any to me 80 in via $pif setup limit src-addr 10
  44. #
  45. ######################################################
  46. #允许https连接(limit src-addr意为限制同一地址连接数量)#
  47. ######################################################
  48. $cmd 00700 allow tcp from any to any 443 out via $pif setup keep-state
  49. $cmd 00800 allow tcp from any to me 443 in via $pif setup limit src-addr 10
  50. #
  51. #######################################################
  52. #允许收发电子邮件(limit src-addr意为限制同一地址连接数量)#
  53. #######################################################
  54. $cmd 00900 allow tcp from any to any 25 out via $pif setup keep-state
  55. #$cmd 01000 allow tcp from any to me 25 in via $pif setup limit src-addr 1
  56. #
  57. $cmd 01100 allow tcp from any to any 110 out via $pif setup keep-state
  58. #$cmd 01100 allow tcp from any to me 110 in via $pif setup limit src-addr 1
  59. #
  60. #########################
  61. #允许CVSP和PORT安装/更新#
  62. #########################
  63. $cmd 01200 allow tcp from any to any via $pif setup keep-state uid root
  64. #
  65. ##########
  66. #允许ping#
  67. ##########
  68. $cmd 01300 allow icmp from any to any out via $pif keep-state
  69. #$cmd 01300 allow icmp from any to any in via $pif keep-state
  70. #
  71. ####################################################
  72. #允许FTP连接(limit src-addr意为限制同一地址连接数量)#
  73. ####################################################
  74. $cmd 01400 allow tcp from any to any 21 out via $pif setup keep-state
  75. $cmd 01500 allow tcp from any to any 21 in via $pif setup limit src-addr 2
  76. #
  77. ########################################################
  78. #允许SSH远程连接(limit src-addr意为限制同一地址连接数量)#
  79. ########################################################
  80. $cmd 01600 allow tcp from any to any 22 out via $pif setup keep-state
  81. $cmd 01700 allow tcp from any to any 22 in via $pif setup limit src-addr 2
  82. #
  83. ######################
  84. #禁止此规则以外的所有连接#
  85. ######################
  86. $cmd 60000 deny log all from any to any
复制代码

[ 本帖最后由 HarbinBeer 于 2006-8-3 18:35 编辑 ]

捌号主机        瑞驰数据        你的地盘

TOP

设置远程登录安全

# ee /etc/ssh/sshd_config

  1. port 22        //可以改成不常用端口,并在防火墙设置中作相应修改
  2. protocol 1
  3. hostkey /etc/ssh/ssh_host_key
  4. PermitRootLogin no
  5. RSAAuthentication yes
  6. PubkeyAuthentication yes
  7. AuthorizedKeyFiles .ssh/authorized_keys
  8. PasswordAuthentication no
复制代码

# ssh-keygen -b 1024 -t rsa1


一路回车默认

# 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连接;
按照提示输入用户名、密码

[ 本帖最后由 HarbinBeer 于 2006-8-2 17:42 编辑 ]

捌号主机        瑞驰数据        你的地盘

TOP

其他安全设置

关闭一些不安全的服务

# ee /etc/rc.conf

  1. sendmail_enable="NONE"
  2. nfs_server_enable="NO"
  3. nfs_client_enable="NO"
  4. portmap_enable="NO"
  5. syslogd_enable="YES"
  6. syslogd_flags="-ss"
  7. icmp_drop_redirect="YES"
  8. log_in_vain="YES"
  9. inetd_enable=”NO”                # 如果pure-ftpd以Inetd方式运行,需设置为YES
复制代码


禁止一般用户查看系统日志

# chmod g-w,o-r /var/log/*
# chmod 600 /etc/syslog.conf
# chmod 600 /etc/newsyslog.conf


对bin和sbin进行安全保护

# chflags schg /bin/*
# chflags schg /sbin/*


禁止一般用户使用crontab

# ee /var/cron/allow

  1. root
复制代码

# chmod 600 /var/cron/allow

[ 本帖最后由 HarbinBeer 于 2006-8-2 17:45 编辑 ]

捌号主机        瑞驰数据        你的地盘

TOP

安装旧版软件

默认情况下,通过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文件

# ee /usr/share/examples/cvsup/ports-supfile

  1. *default date=2005.12.10.00.00.00        #格式:年/月/日/时/分/秒
  2. #ports-all                                                                #不用将所有port都回滚
  3. ports-lang                                                                # 只回滚相应的软件类别
复制代码


然后将ports回滚到那个时候:

# cvsup –L 2 –h cvsup3.tw.freebsd.org /usr/share/examples/cvsup/ports-supfile


最后就可以安装了

# 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服务器基本上就可以告一段落了。

关于本文中提到的

# mount /cdrom


其实是我自己做的一张光盘镜像,现在把这个镜像提供给大家。光盘里还包括了文中提到的所有配置文件的范例供大家参考。

[ 本帖最后由 HarbinBeer 于 2006-8-2 18:15 编辑 ]
附件: 您需要登录才可以下载或查看附件。没有帐号?12小时内审核,注册理由请带你的网址,同时需含“落伍”二字

捌号主机        瑞驰数据        你的地盘

TOP

返回列表