本文仅提供自己备查之用,所以很多地方可能由于机器环境的不同和用途不同,设置会有所不同。
#--【Freebsd用光盘最小化安装】
这个不是重点,有很多文章,这里就不重复了。
------------------------------------------------------------------------------
#--【安装sys和ports】
系统安装最小化模式+man+ports+src+sys+perl5.8
www# /stand/sysinstall
位置:
Configure -- Distributions -- src -- sys
Configure -- Distributions -- Ports
Configure -- Distributions -- man
#--【安装网络系统,使计算机可以上网并准备防火墙、IPNAT和DNS设置】
www# ee /etc/ipf.rules
写入:
pass in all
pass out all
www# ee /etc/ipnat.rules
写入:
map tun0 192.168.1.0/24 -> 0/32 proxy port ftp ftp/tcp
map tun0 192.168.1.0/24 -> 0/32 portmap tcp/udp 10000:65535
map tun0 192.168.1.0/24 -> 0/32
rdr tun0 0/0 port 80 -> 127.0.0.1 port 3128 tcp //这里转发是为了用squid
www# ee /etc/resolv.conf
nameserver 127.0.0.1
nameserver 221.228.255.1
nameserver 202.102.3.141
www# ee /etc/rc.conf
defaultrouter="192.168.1.1" //网关
ifconfig_fxp0="inet 192.168.1.2 netmask 255.255.255.0" //IP地址和子网掩码
------------------------------------------------------------------------------
#--【安装防火墙编译内核】
www# cd /usr/src/sys/i386/conf
www# cp GENERIC mysysknl
www# ee mysysknl
修改为 ident mysysknl
加入语句:
options IPFILTER
options IPFILTER_LOG
options IPFILTER_DEFAULT_BLOCK
www# /usr/sbin/config mysysknl
www# cd ../compile/mysysknl
www# make depend
www# make
www# make install
www# ee /etc/rc.conf
加一条 ipfilter_enable="YES" (这个很重要,如果在本机操作不要紧,如果在SSH操作那重新启动后你就登陆不了了,因为防火墙已经启动了,能把你自己隔在外面,前面事先编辑/etc/ipf.rules就是为了这个)
www# reboot
------------------------------------------------------------------------------
#--【安装cvsup并升级所有ports】
www# cd /usr/ports/net/cvsup-without-gui
www# make install clean
www# mkdir /usr/cvsup
www# cp /usr/share/examples/cvsup/stable-supfile /usr/cvsup
www# cp /usr/share/examples/cvsup/standard-supfile /usr/cvsup
www# cp /usr/share/examples/cvsup/ports-supfile /usr/cvsup
www# ee /usr/cvsup/ports-supfile
修改服务器为 *default host=cvsup3.cn.freebsd.org
www# source ~/.cshrc
www# cvsup -g -L 2 /usr/cvsup/ports-supfile
------------------------------------------------------------------------------
#--【下载内核并更新系统为最新版本(升级系统)】
www# ee /usr/cvsup/standard-supfile
修改下载服务器为 *default host=cvsup3.cn.freebsd.org
修改现在用的版本号 *default release=cvs tag=RELENG_5_2_1_RELEASE
www# source ~/.cshrc
www# cvsup -g -L 2 /usr/cvsup/standard-supfile
www# /usr/sbin/config 你的内核文件名
www# cd ../complie/你的内核文件名
www# make depend
www# make
www# make install
www# reboot
另外,如果系统升级过源代码树,按下面方法编译内核:
cd /usr/src
make buildkernel KERNCONF= 你的内核文件名
make installkernel KERNCONF=你的内核文件名
------------------------------------------------------------------------------
#--【设置缓冲型DNS】
www# ee /etc/resolv.conf
domain xxxxx.com
nameserver 127.0.0.1
nameserver xxx.xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx.xxx
www# chmod 744 /etc/namedb/make-localhost
www# cd /etc/namedb
www# ./make-localhost
www# ee /etc/namedb/named.conf
options {
directory "/etc/namedb";
forward only;
forwarders {
xxx.xxx.xxx.xxx; xxx.xxx.xxx.xxx;
};
};
zone "." {
type hint;
file "named.root";
};
zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "localhost.rev";
};
注: 上面两个xxx.xxx.xxx.xxx就是/etc/resolv.conf 里面的两个nameserver地址
www# ee /etc/rc.conf
www# named -g # 测试
使用 rndc reload 命令来重新读入配置文件
named_enable="YES"
------------------------------------------------------------------------------
#--【设置泛解析DNS】
www# cat /var/named/etc/namedb/rndc.key 拷贝下面类似内容
key "rndc-key" {
algorithm hmac-md5;
secret "T+DanPgSUW8GkMQWtng6qZZQvSlaoMVkrS+rOzCRpts=";
};
www# ee /etc/namedb/named.conf
# Use with the following in named.conf, adjusting the allow list as needed:
key "rndc-key" {
algorithm hmac-md5;
secret "T+DanPgSUW8GkMQWtng6qZZQvSlaoMVkrS+rOzCRpts=";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
# End of named.conf
zone "12345.com" {
type master;
allow-update {
key "rndc-key";
};
file "dynamic/12345.com";
};
www# ee /etc/namedb/dynamic/12345.com
$ttl 1D
@ IN SOA 12345.com. root.12345.com. (
2006048888
3H
15M
1W
1D )
IN NS 12345.com.
IN MX 5 12345.com.
* IN A 127.0.0.1
www# ee /etc/host.conf
bind
hosts
www# named -g # 测试
使用 rndc reload 命令来重新读入配置文件
www# sh /etc/rc.d/named restart
------------------------------------------------------------------------------
#--【 Mysql 】
4.1版本以上就有编码支持了,如果不想麻烦就选4.1以下的MYSQL吧
www# cd /usr/ports/databases/mysql323-server
www# make install
www# ee /etc/rc.conf
mysql_enable="YES"
mysql_limits="NO"
mysql_dbdir="/var/db/mysql"
www# cd /etc
www# && sh rc
www# mysqladmin -u root password 123456
------------------------------------------------------------------------------
#--【 apache+perl+gzip+fastcgi 】
www# cd /usr/ports/www/apache13-modssl
www# make install
www# cd /usr/ports/www/mod_perl
www# make install
www# cd /usr/ports/www/mod_gzip
www# make install
www# cd /usr/ports/www/mod_fastcgi
www# make install
www# mkdir /usr/local/logs
www# mkdir /usr/local/logs/fastcgi
www# mkdir /usr/local/logs/fastcgi/dynamic
www# chown -R www:www /usr/local/logs
www# ee /usr/local/etc/apache/httpd.conf
LoadModule gzip_module libexec/apache/mod_gzip.so
LoadModule fastcgi_module libexec/apache/mod_fastcgi.so
AddModule mod_gzip.c
AddModule mod_fastcgi.c
www# ee /etc/rc.conf
apache_enable="YES"
www# reboot
------------------------------------------------------------------------------
#--【 php5 】
www# cd /usr/ports/lang/php5
www# make install
[X] CLI Build CLI version
[X] CGI Build CGI version
[X] APACHE Build Apache module (这个一定要选,否则装好了整合不了apache和php)
[ ] DEBUG Enable debug
[X] SUHOSIN Enable Suhosin protection system
[X] MULTIBYTE Enable zend multibyte support
[X] IPV6 Enable ipv6 support
[ ] REDIRECT Enable force-cgi-redirect support (CGI only)
[ ] DISCARD Enable discard-path support (CGI only)
[X] FASTCGI Enable fastcgi support (CGI only)
[X] PATHINFO Enable path-info-check support (CGI only)
www# ee /usr/local/etc/apache/httpd.conf
检查下面2句话而且前面没被#掉,如果上面不选apache模块那么下面2句话是没有的:
LoadModule php5_module libexec/apache/libphp5.so
AddModule mod_php5.c
添加下面2句话:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
www# ee /usr/local/etc/php.ini
register_globals = On
www# php -v 测试
------------------------------------------------------------------------------
#--【 php5-extensions 】
www# cd /usr/ports/lang/php5-extensions
www# make install
全部选上,如果哪个so安装不了,很垃圾的办法是做个“装不了的文件名.so”骗骗系统,然后继续装,装好了禁用这个so,不过一般不会出现这样的情况的。
www# /usr/local/etc/rc.d/apache.sh restart
如果启动不了就禁用扩展模块,开启需要用的
www# ee /usr/local/etc/php/extensions.ini
---------------------------------------------------------------
接下来装点常用的东西,目的是让系统支持常见的网页程序,PORTS安装的好处就在这里啦,你不用去考虑装什么模块什么的,在这里用PORTS装一次,它已经帮你定制好环境了,这里装的WWW软件一般会默认安装到/usr/local/www下面,当然你不能现在就用,装好了你必须用ln命令连接到能够访问的目录下,这样你就可以使用了。
# cd /usr/ports/www/phpSysInfo
# make install clean
# ln -s /usr/local/www/phpSysInfo /usr/local/www/data
# cd /usr/local/www/phpSysInfo
# cp config.php.new config.php
好了,到这里127.0.0.1已经可以看到这个目录了(/usr/local/www/data下默认页面可以删除)
# cd /usr/ports/databases/phpmyadmin
# make install clean
# ln -s /usr/local/www/phpMyAdmin /usr/local/www/data
# ee /usr/local/www/data/phpMyAdmin/libraries/config.default.php
加入一个mysql密码就可以用了
# cd /usr/ports/www/MT
# make install clean
##安装DBI和DBD for mysql 用于提供perl访问mysql数据库的接口规范
# cd /usr/ports/databases/p5-DBD-mysql
# make install
------------------------------------------------------------------------------
#--【 ZendOptimizer 】
方法1:
# cd /usr/ports/devel/ZendOptimizer
cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
ee /usr/local/etc/php.ini
加入下面一段文字:
[Zend]
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer="/usr/local/lib/php/20060613/Optimizer"
zend_extension_manager.optimizer_ts="/usr/local/lib/php/20060613/Optimizer_TS"
zend_extension="/usr/local/lib/php/20060613/ZendExtensionManager.so"
zend_extension_ts="/usr/local/lib/php/20060613/ZendExtensionManager_TS.so"
修改:register_globals=On
# /usr/local/etc/rc.d/apache.sh restart
方法2:
上传ZendOptimizer-2.6.2-freebsd5.4-i386.tar.gz到/home/sysop/soft
www# cd /home/sysop/soft
www# tar zxvf ZendOptimizer-2.6.2-freebsd5.4-i386.tar.gz
www# cd ZendOptimizer-2.6.2-freebsd5.4-i386
www# ./install
------------------------------------------------------------------------------
#--【 Squid 】
www# cd /usr/ports/www/squid
www# make install
│ │[ ] SQUID_LDAP_AUTH Install LDAP authentication helpers │ │
│ │[ ] SQUID_SASL_AUTH Install SASL authentication helpers │ │
│ │[X] SQUID_DELAY_POOLS Enable delay pools │ │
│ │[X] SQUID_SNMP Enable SNMP support │ │
│ │[ ] SQUID_CARP Enable CARP support │ │
│ │[ ] SQUID_SSL Enable SSL support for reverse proxies│ │
│ │[ ] SQUID_PINGER Install the icmp helper │ │
│ │[ ] SQUID_DNS_HELPER Use the old 'dnsserver' helper │ │
│ │[ ] SQUID_HTCP Enable HTCP support │ │
│ │[ ] SQUID_VIA_DB Enable forward/via database │ │
│ │[X] SQUID_CACHE_DIGESTS Enable cache digests │ │
│ │[X] SQUID_WCCP Enable Web Cache Coordination Protocol│ │
│ │[X] SQUID_UNDERSCORES Allow underscores in hostnames │ │
│ │[X] SQUID_CHECK_HOSTNAME Do hostname checking │ │
│ │[ ] SQUID_STRICT_HTTP Be strictly HTTP compliant │ │
│ │[X] SQUID_IDENT Enable ident (RFC 931) lookups │ │
│ │[X] SQUID_USERAGENT_LOG Enable User-Agent-header logging │ │
│ │[X] SQUID_CUSTOM_LOG Enable custom log format │ │
│ │[ ] SQUID_ARP_ACL Enable ACLs based on ethernet address │ │
│ │[ ] SQUID_PF Enable transparent proxying with PF │ │
│ │[ ] SQUID_IPFILTER Enable transp. proxying with IPFilter │ │
│ │[ ] SQUID_FOLLOW_XFF Follow X-Forwarded-For headers │ │
│ │[ ] SQUID_ICAP Enable ICAP client functionality │ │
│ │[ ] SQUID_AUFS Enable the aufs storage scheme │ │
│ │[ ] SQUID_COSS Enable the COSS storage scheme │ │
│ │[x] SQUID_LARGEFILE Support log and cache files >2GB │ │
│ │[ ] SQUID_STACKTRACES Create backtraces on fatal errors │ │
│ │[X] SQUID_RCNG Install an rc.d style startup script │ │
www# chown sysop /usr/local/etc/squid
www# ee /usr/local/etc/squid/squid.conf
useragent_log /var/log/useragent.log
www# reboot
www# squid -k parse
www# squid -zX
www# cat >> /var/log/useragent.log
www# chown squid /var/log/useragent.log
www# /usr/local/etc/rc.d/squid.sh start
www# ee /etc/rc.conf
squid_enable="YES"
www# reboot
------------------------------------------------------------------------------
#--【 设置ipnat 】
www# ee /etc/ipnat.rules
map tun0 192.168.1.0/24 -> 0.0.0.0/32 proxy port ftp ftp/tcp
map tun0 192.168.1.0/24 -> 0.0.0.0/32 portmap tcp/udp 10000:65535
map tun0 192.168.1.0/24 -> 0.0.0.0/32
rdr tun0 0.0.0.0/0 port 80 -> 127.0.0.1 port 3128 tcp
rdr tun0 0.0.0.0/0 port 25 -> 192.168.1.100 port 25 tcp
rdr tun0 0.0.0.0/0 port 110 -> 192.168.1.100 port 110 tcp
rdr fxp0 192.168.1.0/24 port 80 -> 127.0.0.1 port 3128 tcp
www# ipnat -CF -f /etc/ipnat.rules
------------------------------------------------------------------------------
#--【 设置ADSL 】
www# cat > /etc/ppp/ppp.conf
www# ee /etc/ppp/ppp.conf
default:
ident user-ppp VERSION (built COMPILATIONDATE)
set device /dev/cuaa1
set speed 115200
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
\"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
set timeout 0
set log Phase tun command
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255
nat same_ports yes
nat use_sockets yes
adsl:
set device PPPoE:fxp0
set mru 1492
set mtu 1492
set speed sync
enable lqr
set dial
set login
set authname 123456这里的用户名根据自己情况决定修改
set authkey 123456这里的密码根据自己情况决定修改
add default HISADDR
www# ee /etc/rc.conf
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"
ppp_profile="adsl"
----------------
www# cd /usr/ports/ftp/wget
www# make install
www# cd /usr/ports/www/lynx
www# make install
www# cd /usr/ports/net/fping
www# make install
www# cd /usr/ports/www/mod_limitipconn
www# make install
www# cd /usr/ports/www/mod_encoding
www# make install
挂接一块硬盘------------------------
www# cat /var/run/dmesg.boot 检查一下有没有找到新的磁盘记下标号ad3
www# mount /dev/ad3s1e /mysql
www# mount /dev/ad3s1f /cache
www# mount /dev/ad3s1g /sites
www# ee /etc/fstab
/dev/ad3s1e /mysql ufs rw 2 2
/dev/ad3s1f /cache ufs rw 2 2
/dev/ad3s1g /sites ufs rw 2 2
---------安装新硬盘---------------------
www# cat /var/run/dmesg.boot 找到硬盘编号 例:ad2
www# dd if=/dev/zero of=/dev/ad2 bs=1k count=1 #准备工作
www# fdisk -BI ad2 #初始化新磁盘
www# disklabel -B -w -r ad2s1 auto #加上标签
www# disklabel -e ad2s1 #现在编辑您刚才创建的磁盘分区
www# mkdir -p /cache # 要挂到根下的分区名,可以自己定义
www# newfs /dev/ad2s1 # 创建这数据结构,为您创建的每个分区重复这个操作
www# mount /dev/ad2s1 /cache2 # 挂上分区
www# ee /etc/fstab # 完成之后,添加合适的记录到您的 /etc/fstab文件。
---------------------------------------------------------------------------------------
No.16 MRTG 流量分析
//安装MRTG 可谓艰难.查了好多资料.也走了很多弯路.一步一步走出来的..
//在安裝 MRTG 之前,我们先使用 ports 來安装 SNMP:
#cd /usr/ports/net-mgmt/net-snmp
#make install clean
#cd /usr/local/share/snmp
#cp snmpd.conf.example snmpd.conf
#ee /usr/local/share/snmp/snmpd.conf
//添加以下内容
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
rocommunity mrtg
syslocation Office
syscontact stuceo@stuhack.com
#/usr/local/etc/rc.d/snmpd start
#netstat -an
udp4 0 0 *.161 *.*
//接着ports 來安裝 MRTG:
#cd /usr/ports/net-mgmt/mrtg
#make install clean
#################################################
# Please create a MRTG config file in /usr/local/etc/mrtg #
# A configuration file can be automatically generated with cfgmaker #
# A sample configuration file is installed as mrtg.cfg.sample #
# #
# To enable MRTG in daemon mode, put the following to your /etc/rc.conf or #
# /etc/rc.conf.local file: #
# mrtg_daemon_enable="YES" #
#################################################
#ee /etc/rc.conf
snmpd_enable="YES"
mrtg_daemon_enable="YES"
#mkdir /usr/local/www/apache22/data/mrtg
//新建mrtg 为了是用ip可以直接访问mrtg
#cd /usr/ports/distfiles/
#tar -zxvf mrtg-2.14.5.tar
#cd mrtg-2.14.5
#cp images/* /usr/local/www/apache22/data/mrtg
//把mrtg解压一下.再把这些图像文件cp到mrtg下面.
#cd /usr/local/etc/mrtg
# rehash
# cfgmaker mrtg@www.stuhack.com >mrtg.cfg
//上面请特别注意:在 mrtg@www.stuhack.com 也可以换成mrtg@yourip
//mrtg 是有其意义的(在 snmp 这个通讯服务里面的预设搜寻的一个代码,默认的可能是public,这就是刚才要查看snmpd.conf里的原因了)
//所以,如果你的主机的动态 DNS 名称为 your.domain.name 则你就『一定』要写成 mrtg@your.domain.name 才行!千万不要弄错了!
#ee mrtg.conf
//还需要编辑一下这个文件加入WorkDir这一项,就是你的生成的网页的存放的位置。
WorkDir: /usr/local/www/apache22/data/mrtg
# Options[_]: growright, bits
Language:GB2312
//这个要注意的一点是他们前边不要有空格,否则会有什么” ERROR: Line 8 ( WorkDir: /var/www/html/mrtg) in CFG file (mrtg) does not make sense”的错误。
#whereis mrtg
mrtg: /usr/local/bin/mrtg /usr/local/man/man1/mrtg.1.gz /usr/ports/net-mgmt/mrtg
//为查找mrtg到底在哪..
# /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
# /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
# /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
//这个需要运行3次,前两次都会报错,不用去理会他,第3次就应该没有错误了
//不过,若是有问题的话,就需要修改mrtg.cfg,再执行直到没有错误发生为止。
//如以下错误:
Rateup WARNING: /usr/local/mrtg2/bin/rateup could not read the primary log file for localhost
Rateup WARNING: /usr/local/mrtg2/bin/rateup The backup log file for localhost was invalid as well
Rateup WARNING: /usr/local/mrtg2/bin/rateup Can't remove localhost.old updating log file
Rateup WARNING: /usr/local/mrtg2/bin/rateup Can't rename localhost.log to localhost.old updating log file
#whereis indexmaker
indexmaker: /usr/local/bin/indexmaker /usr/local/man/man1/indexmaker.1.gz
/usr/local/bin/indexmaker
//为了查找indexmaker在哪.不要弄错了..
#/usr/local/bin/indexmaker -output=/usr/local/www/apache22/data/mrtg/index.html -title=LL /usr/local/etc/mrtg/mrtg.cfg
//上面这个程序indexmaker是在制作首页。会自动地输出一个index.html的文件中。
//如果说你以后修改了这个文件(比如增加对CPU,硬盘等的侦测,要再重新生成一次,否则图面会出不来的.
#crontab -e
//按下I键 插入的意思!
*/5 * * * * /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
//ESC 输入
:wq!
//设定每5分钟执行一次
//使用手工运行mrtg并不能定时产生适当的统计信息,因此最好还是定时自动运行mrtg来生 成统计信息,默认为五分钟运行一次。
//ok!到此为止,配置完毕,记得一定要重新启动snmp和httpd服务!
#/usr/local/etc/rc.d/snmpd restart
Stopping snmpd.
Starting snmpd.
#apachectl restart
//現在你可以使用 http://yourserver/mrtg 來連去看看。
//打开http://unix.stuhack.com/mrtg/
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
常用命令:
/usr/local/etc/rc.d/apache.sh start
/usr/local/etc/rc.d/apache.sh stop
/usr/local/etc/rc.d/apache.sh restart
--------------修改php.ini文件--------------
www# cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
www# ee /usr/local/etc/php.ini
进行php.ini文件的配置工作
(0)查找safe_mode=Off,更改为safe_mode=On
(1)查找max_execution_time = 30,更改为max_execution_time = 600
(2)查找max_input_time = 60,更改为max_input_time = 600
(3)查找memory_limit = 8M ,更改为memory_limit = 20M
(4)查找display_errors = On,更改为display_errors = Off
(5)查找register_globals = Off,更改为register_globals = On
(6)查找post_max_size = 8M,更改为post_max_size = 20M
(7)查找upload_max_filesize = 2M,更改为upload_max_filesize = 20M
(8)查找session.auto_start = 0,更改为session.auto_start = 1
保存后退出,从而完成了php.ini文件的配置工作。
www# /usr/local/etc/rc.d/apache.sh restart
------------------使用Squid----------------
www# mkdir /home/sysop/squid
www# mkdir /home/sysop/squid/cache
www# mkdir /home/sysop/squid/var
www# mkdir /home/sysop/squid/var/logs
www# cd /usr/local/etc/squid/
www# mv squid.conf squid.conf.bak
www# ee squid.conf
改变cache目录和logs目录的所有者为squid用户和组:
www# chown –R squid /home/sysop/squid/cache
www# chgrp –R squid /home/sysop/squid/cache
www# chown –R squid /home/sysop/squid/var/logs
www# chgrp –R squid /home/sysop/squid/var/logs
www# /usr/local/sbin/squid –z
www# /usr/local/sbin/squid –NCd1 测试
www# ee /etc/rc.conf 添加squid_enable="YES"
www# cd /etc
www# ee /etc/ipnat.rules
添加rdr tun0 0/0 port 80 -> 127.0.0.1 port 3128 tcp
------------设置透明代理-------------------------
这里假设你已经设置好squid并已投入使用,如果大家对squid不熟悉的话,我稍后会贴出squid的设置.
一般网上都是用ipfw做防火墙的,但我觉得ipfilter较ipfw方便而且好用,所以这里采用ipfilter.
1.编辑/boot/defaults/loader.conf
在Networking modules段加入:
ipl_load="YES"
2.创建/etc/ipfilter.rules (ipfilter规则),这里仅仅给出一个例子,要根据自己的实际需求设定规则.
block in log on 外网卡名 from any to any
block out log on 外网卡名 from any to any
pass out log on 外网卡名 proto icmp all keep state
pass out log on 外网卡名 proto tcp/udp from any to any keep state
pass in on 外网卡名 proto tcp from any to any port = ftp-data keep state
pass in on 外网卡名 proto tcp from any port = ftp-data to any port > 1023 keep state
pass in on 内网卡名 all
pass out on 内网卡名 all
block return-rst in log on 外网卡名 proto tcp from any to any flags S/SA
block return-icmp(net-unr) in log on 外网卡名 proto udp from any to any
3.创建/etc/ipnat.rules (NAT规则)
rdr 内网卡名 0.0.0.0/0 port 80 -> 192.168.0.1 port 3128 tcp/udp
注: 192.168.0.1 为内网卡ip地址, 并假设你的squid的端口为3128,不是的话改成实际的就可以了.
4.编辑 /etc/rc.conf , 加入:
ipfilter_enable="YES"
ipfilter_rules="/etc/ipfilter.rules"
ipnat_enable="YES"
ipnat_rules="/etc/ipnat.rules"
到这里为止,整个设置透明代理设置基本完成, 确保你的squid服务正常并开机自动启动. 然后重新启动服务器.将客户端电脑的网关和DNS服务器地址都改为内网卡ip地址(我那里是192.168.0.1) 就可以了.
---------------在FreeBSD设置ADSL上网----------------------------
我曾经发表过一篇这样的文章,在这里我不在罗嗦了. 可以参考下面:
如何在FreeBSD设置ADSL上网(在FreeBSD 4.4下测试通过)
网上有部分关于FreeBSD设置ADSL上网的文章有些错误,这里公布葱头的设置文件。
1。编辑/etc/ppp/ppp.conf 文件
default:
set log Phase tun command
enable dns
adsl:
set device PPPoE: 设备名 ;即网卡的设备名
set speed sync
set mru 1492
set mtu 1492
set dial
set login
add default HISADDR
set authname 帐户名
set authkey 密码
Papchap:
set authname 帐户名
set authkey 密码
2。编辑/boot/defaults/loader.conf
ng_pppoe_load="YES"
虚拟拨号: ppp -background adsl
测试: ifconfig -a 看到tun0伪设备捆绑了ISP分配的IP地址即成功
如果想开机就自动拨号,那就要修改/etc/rc.conf,增加一下字段:
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="adsl"
--------ln命令举例---------------
ln -s /myconfig/dynamic /var/named/etc/named
将/myconfig/dynamic目录挂接到/var/named/etc/named目录下
#-------安装proftpd
#cd /usr/ports/ftp/proftpd-mysql
#make install
安装的时候会要求选择proftpd要安装的模块,选择好mysql和quota,其他的根据情况选择
然后系统自动下载proftpd-1.3.0rc2.tar.bz2并完成编译和安装。
#cp /usr/local/etc/proftpd.conf /usr/local/etc/proftpd.conf.sample
#ee /usr/local/etc/proftpd.conf
----------------------------------------
#基本配置
ServerName "Michael's Ftp Site"
ServerType standalone
DefaultServer on
#设置用户登陆时不显示ftp服务器版本信息
ServerIdent off
#设置ftp服务使用的端口,可以修改
Port 21
#设置ftp目录的权限
Umask 022
#设置系统各种超时时间和重试次数
MaxLoginAttempts 3
TimeoutLogin 120
TimeoutIdle 600
TimeoutNoTransfer 900
TimeoutStalled 3600
#允许最大的同时连接用户数
MaxClients 10
#允许每个用户主机最大并发连接数
MaxClientsPerHost 3
AllowOverwrite no
AllowStoreRestart on
UseReverseDNS off
#如果shell为空时允许用户登录
RequireValidShell off
#将用户限制在自己的主目录下 ,这个设置很重要
DefaultRoot ~
#设置系统最大的进程数,防止dos攻击,默认是30
MaxInstances 10
#设置系统用于运行proftpd服务的用户和用户组(需要后面自己创建)
User FTPUSR
Group FTPGRP
#设置对全局的文件可以进行改写
AllowOverwrite on
#设置系统运行日志和文件传输日志
SystemLog /var/log/proftpd.syslog
TransferLog /var/log/proftpd.transferlog
######################## 下面是匿名登陆部分的设置 #################
#匿名用户登陆后访问的目录为 ftp用户的主目录
User ftp
Group ftpusers
#设置anonymous用户为系统实际用户ftp的别名
UserAlias anonymous ftp
#设置匿名用户同时在线最大用户数
#此用户数受限于前面的全局同时在线用户数
MaxClients 5
#设置welcome.msg文件作为用户登陆的提示信息文件
#.message文件作为用户每次进入的目录提示信息
DisplayLogin welcome.msg
DisplayFirstChdir .message
#设置一些特殊的权限,比如写文件和登陆限制等 (可以不用)
DenyAll
Order deny,allow
Deny from 61.101.201.0/32
Allow from all
######################## 完成匿名登陆的设置 #################
######################## 下面是磁盘限额Quota设置 ############
#启用磁盘限额
QuotaDirectoryTally on
SQLHomedirOnDemand on
#磁盘限额单位 b"|"Kb"|"Mb"|"Gb"
QuotaDisplayUnits "Mb"
QuotaEngine on
#磁盘限额日志记录
QuotaLog "/var/log/proftpd.quotalog"
#打开磁盘限额信息 "quote SITE QUOTA"命令
QuotaShowQuotas on
####################### 完成磁盘配额设置 ####################
####################### 下面是MySQL数据库部分设置 ###########
#数据库联接的信息
#FTP是数据库名,localhost是MySQL主机名,3306是mysql服务的端口号
#Michael是连接数据库的用户名,testpwd是密码(如果没有密码留空)
SQLConnectInfo FTP@localhost:3306 Michael testpwd
#数据库认证的类型
SQLAuthTypes Backend Plaintext
#指定用来做用户认证的表的有关信息。(将在后面创建)
SQLUserInfo FTPUSERS userid passwd uid gid homedir shell
SQLGroupInfo FTPGRPS groupname gid members
#数据库认证
SQLAuthenticate users groups usersetfast groupsetfast
#proftpd进行的mysql调用语句,别修改任何地方
SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail,files_in_avail, files_out_avail, files_xfer_avail FROM quotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM quotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" quotatallies
SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" quotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
----------------------------------------
完成proftpd.conf配置文件后,需要进行数据库表的配置,包括创建表和插入数据
1、登陆mysql或者使用phpmyadmin工具创建数据库 FTP
#mysqladmin create FTP
2、运行下面的sql语句创建表和插入必要数据
-- phpMyAdmin SQL Dump
-- version 2.6.4-pl2
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2005 年 11 月 03 日 14:23
-- 服务器版本: 4.1.14
-- PHP 版本: 4.4.0
--
-- 数据库: `FTP`
--
-- --------------------------------------------------------
--
-- 表的结构 `FTPGRPS`
--
CREATE TABLE `FTPGRPS` (
`groupname` text NOT NULL,
`gid` smallint(6) NOT NULL default '0',
`members` text NOT NULL
) ENGINE=MyISAM;;
--
-- 导出表中的数据 `FTPGRPS`
--
INSERT INTO `FTPGRPS` VALUES ('FTPGRP', 2001, 'FTPUSR');
INSERT INTO `FTPGRPS` VALUES ('ftpusers', 2002, 'ftp');
-- --------------------------------------------------------
--
-- 表的结构 `FTPUSERS`
--
CREATE TABLE `FTPUSERS` (
`userid` text NOT NULL,
`passwd` text NOT NULL,
`uid` int(11) NOT NULL default '0',
`gid` int(11) NOT NULL default '0',
`homedir` text,
`shell` text
) ENGINE=MyISAM;;
--
-- 导出表中的数据 `FTPUSERS`
--
INSERT INTO `FTPUSERS` VALUES ('Michael', 'testftp', 2001, 2001, '/var/ftp/incoming', '');
-- --------------------------------------------------------
--
-- 表的结构 `quotalimits`
--
CREATE TABLE `quotalimits` (
`name` varchar(30) default NULL,
`quota_type` enum('user','group','class','all') NOT NULL default 'user',
`per_session` enum('false','true') NOT NULL default 'false',
`limit_type` enum('soft','hard') NOT NULL default 'soft',
`bytes_in_avail` float NOT NULL default '0',
`bytes_out_avail` float NOT NULL default '0',
`bytes_xfer_avail` float NOT NULL default '0',
`files_in_avail` int(10) unsigned NOT NULL default '0',
`files_out_avail` int(10) unsigned NOT NULL default '0',
`files_xfer_avail` int(10) unsigned NOT NULL default '0'
) ENGINE=MyISAM;;
--
-- 导出表中的数据 `quotalimits`
--
-- 设置Michael用户,磁盘配额1G,可以上传下载流量2G,最多文件数10个
INSERT INTO `quotalimits` VALUES ('Michael', 'user', 'false', 'soft', 1.024e+09, 0, 2.048e+09, 10, 0, 0);
-- --------------------------------------------------------
--
-- 表的结构 `quotatallies`
--
CREATE TABLE `quotatallies` (
`name` varchar(30) NOT NULL default '',
`quota_type` enum('user','group','class','all') NOT NULL default 'user',
`bytes_in_used` float NOT NULL default '0',
`bytes_out_used` float NOT NULL default '0',
`bytes_xfer_used` float NOT NULL default '0',
`files_in_used` int(10) unsigned NOT NULL default '0',
`files_out_used` int(10) unsigned NOT NULL default '0',
`files_xfer_used` int(10) unsigned NOT NULL default '0'
) ENGINE=MyISAM;;
如果你想设置quota,只要在ftpquotalimits表里设置一下就行了,这个表里的各个参数分别代表:
代码:
quotalimits表
name: - 用户帐号
quota type: - user, group, class, all (we use user)
per_session: - true or false (we use true)
limit_type: - 硬限制 or 软限制 (我们一般用硬限制)
bytes_in_avail: - 允许上传的字节数
bytes_out_avail: - 允许下载的字节数
bytes_xfer_avail: - 允许传输的字节数(包括上传/下载)
files_in_avail: - 允许上传的文件数
files_out_avail: - 允许下载的文件数
files_xfer_avail: - 允许传输的文件数(包括上传/下载)
五、完成最后的用户、用户组和目录设置
1、创建proftpd服务运行的用户和用户组
#pw groupadd FTPGRP -g 2001
#pw adduser FTPUSR -u 2001 -g 2001 -d /var/ftp/incoming -s /sbin/nologin
2、创建匿名登陆用户映射的系统用户和用户组
#pw groupadd ftpusers -g 2002
#pw adduser ftp -u 2002 -g 2002 -d /var/ftp/incoming -s /sbin/nologin
六、运行测试配置系统服务
1、运行proftpd服务
#/usr/local/sbin/proftpd
2、测试
在任何一台可以访问服务器的机器上测试ftp连接,使用Michael用户和testftp口令登陆,然后运行quote SITE QUOTA命令查看设置的磁盘限额信息
然后测试使用anonymous匿名用户登陆测试
3、监控和调试proftpd服务
#/usr/local/sbin/proftpd proftpd -n -d 5 -c /usr/local/etc/proftpd.conf
这样在测试和连接ftp的时候,可以在主机上看到所有的proftpd运行信息
4、日志监控
可以使用下面的命令查看系统日志、传送日志等
#tail -f /var/log/proftpd.syslog
#tail -f /var/log/proftpd.transferlog
5、配置系统自启动proftpd服务
#vi /etc/rc.conf
加入下面一行
proftpd_enable=”YES”
这样系统启动的时候会调用/usr/local/etc/rc.d/proftpd.sh脚本启动proftpd服务
ok
大功告成,大家可以根据自己的需要修改上面任何一个部分的细节,最好在自己理解的基础上进行修改,整个过程包括proftpd的配置都很简单。有问题欢迎大家来和我讨论,经过Michael测试使用,发现proftpd的确是个不错的东东!
----------------------------------------------------------
安全配置:
# ee /etc/ssh/sshd_config
修改22端口为您记得住的端口,防止SSH扫描。
计算机启动时候发现文件系统失效,将以-y参数运行fsck
# ee /etc/rc.conf
fsck_y_enable="YES"
使用mod_dosevasive对抗DDos攻击可参考Michael`s blog
为什么登录SSH和FTP时有长时间的停顿?
DNS引起的。
在proftpd.conf里写入
UseReverseDNS off
IdentLookups off
在sshd_config里写入
UseDNS no
FreeBSD下用rsync对网站进行同步镜像备份
前言
rsync是Linux系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。rsync的最新版本可以从 http://rsync.samba.org/rsync/获得。它的特性如下:
1、可以镜像保存整个目录树和文件系统。
2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3、无须特殊权限即可安装。
4、优化的流程,文件传输效率高。
5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
本文介绍了如何使用rsync服务从Linux到Windows和linux进行远程备份
软件及平台
FreeBSD 5.2 (Server and Client)
Server IP:192.168.83.80 Hostname: freebsd-1
Client IP:192.168.83.81 Hostname: freebsd-2
apache_1.3.29
rsync-2.5.7
目的
备份Rsync Server(192.168.83.80)上的 /usr/local/apache2/htdocs 目录下所有内容,到Rsync Client(192.168.83.81)的/backup/www 下
安装及配置
一,Rsync Server
Step 1: 安装
freebsd-1#cd /usr/ports/net/rsync
freebsd-1#make install clean
Step 3: 配置rsyncd.conf
freebsd-1#vi /usr/local/etc/rsyncd.conf //加入以下内容
[www]
comment = web server backup
path = /usr/local/apache2/htdocs
auth users = tonny
uid = nobody
gid = nogroup
secrets file = /usr/local/etc/rsyncd.secrets
read only = no
Step 4: 配置rsyncd.secrets
freebsd-1#vi /usr/local/etc/rsyncd.secrets //加入以下内容
tonny:123456 // 认证所需的用户名/密码
freebsd-1#chmod 600 rsyncd.secrets
Step 5: 配置rc.conf
freebsd-1#vi /etc/rc.conf //加入以下内容
rsyncd_enable="YES"
Step 6: 启动 Rsync daemon模式
freebsd-1#vi /usr/local/etc/rc.d/rsyncd.sh //加入以下内容
command_args="-4 --daemon" <<<--- 启用ipv4 协议
freebsd-1#/usr/local/etc/rc.d/rsyncd.sh start
Step 7: 检查Rsync daemon启动状态
freebsd-1# sockstat | grep rsync
root rsync 440 3 dgram -> /var/run/log
root rsync 440 4 tcp4 *:873 *:*
二,Rsync Client
Step 1: 安装
freebsd-2#cd /usr/ports/net/rsync
freebsd-2#make install clean
Step 2: 建立备份目录
freebsd-2#cd /
freebsd-2#mkdir -p backup/www
Step 3: 配置rsyncd.secrets
freebsd-2#vi /usr/local/etc/rsyncd.secrets //加入以下内容
123456 //Rsync Server上的认证密码,不用输入用户名
freebsd-2#chmod 600 rsyncd.secrets
Step 4: 检查备份同步状态
freebsd-2#/usr/local/bin/rsync -avzP --delete
--password-file=/usr/local/etc/rsyncd.secrets tonny@192.168.83.80::www
/backup/www/
--->>> 将Rsync Server的Web页面,备份或同步到了Rsync Client的/backup/www下
Step 5: Auto Rsync Shell:
freebsd-2#cd /usr/local/etc/rc.d/
freebsd-2#chmod a-x rsyncd.sh
freebsd-2#vi rsync.sh //加入以下内容
#!/bin/sh
/usr/local/bin/rsync -avzP --delete
--password-file=/usr/local/etc/rsyncd.secrets tonny@192.168.83.80::www
/backup/www/
freebsd-2#chmod a+x rsync.sh
freebsd-2#crontab -e //加入以下内容(每天下午5点半自动备份同步)
30 17 * * * /usr/local/etc/rc.d/rsync.sh
三,高级应用(Rsync With SSH)
Rsync Server
freebsd-1#/usr/bin/ssh-keygen -d
Rsync Client
freebsd-2#/usr/bin/ssh-keygen -d
freebsd-2#scp ~/.ssh/id_dsa.pub 192.168.83.80:/root/.ssh/authorized_keys
freebsd-2#ssh-agent csh 或 (ssh-agent bash) --->>> #echo $SHELL
查看当前SHELL
freebsd-2#ssh-add id_dsa --->>> 输入 passphase
freebsd-2#/usr/local/bin/rsync -avzP --delete -e ssh 192.168.83.80:/usr/local/apache2/htdocs/ /backup/www
htdocs/不加斜线,会在备备份机上建立一个文件夹
PS: 参数说明
-a, --archive archive mode, equivalent to -rlptgoD
//档案模式
-v, --verbose
//详细模式
-z, --compress compress file data
//压缩文件
-P equivalent to --partial --progress
//显示进度
--delete
This tells rsync to delete any files on the receiving side
that
aren't on the sending side.
//保持远程机器的文件同步性
-e ssh use SSH connection
//使用SSH连接,保证数据安全
-u增量同步,即服务器端有新文件时客户端只同步新文件