FreeBSD 6.1 入门级Web服务器配置手记末


QUOTE:

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

  # ee /etc/rc.conf

  CODE:

  pure-ftpd_enable=”YES”

  安装配置pureftpdadmin

  QUOTE:

  # mount /cdrom

  # cp –R /cdrom/pureftpdadmin /usr/www/pureftpdadmin

  # ee /usr/www/pureftpdadmin/pureftp.config.php

  CODE:

$PUREFTP_CONFIG_FILE    = '/usr/local/etc/pureftpd-mysql.conf';
$DefaultUser = "ftpadmin";
$DefaultPass = "adminpassword";

  QUOTE:

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

  CODE:

$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

  CODE:

<Directory "/usr/www/pureftpdadmin">
deny from all
Options None
AllowOverride AuthConfig
Order deny,allow
</Directory>

  QUOTE:

  # ee /usr/www/pureftpdadmin/.htaccess

  CODE:

AuthType Basic
AuthUserFile /usr/local/ftpadmin.pwd
AuthName “操作前请登录”
require valid-user
satisfy any

  QUOTE:

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

  四、系统安全

  1、防火墙IPFW

 启用防火墙

  QUOTE:

  # ee /etc/rc.conf

  CODE:

firewall_enable="YES"
firewall_type="open"
firewall_script="/etc/ipfw.rules"
firewall_logging="YES"

  QUOTE:

  # ee /etc/sysctl.conf

  CODE:

net.inet.ip.fw.verbose=1
net.inet.ip.fw.verbose_limit=5

  编辑防火墙规则

  QUOTE:

# ee /etc/ipfw.rules

  CODE:

# 具体语法请参考http://doc.code365.net/Manual/FreeBSD_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
 2、设置远程登录安全

# 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
# 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连接;

  按照提示输入用户名、密码

  3、其他安全设置

  关闭一些不安全的服务

# 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

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

# 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
root
# chmod 600 /var/cron/allow

  五、安装旧版软件

  默认情况下,通过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
*default date=2005.12.10.00.00.00    #格式:年/月/日/时/分/秒
#ports-all                                #不用将所有port都回滚
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服务器基本上就可以告一段落了。

  关于本文中提到的

  QUOTE:

  # mount /cdrom

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

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3