≡ 典典 - 单机游戏攻略 ≡'s Archiver

admin 发表于 2006-10-20 20:03

系统安全防火墙IPFW 实例 +SSH + Mysql 优化MY.CNF

[url=http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/firewalls-ipfw.html]http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/firewalls-ipfw.html[/url]
6G"OA1l,R3_0~8f4K;U ~
pkR"ln do 启用防火墙~:X([ b$M l

{;I+Yh,K xFHz # ee /etc/rc.conf[code]firewall_enable="YES"&W)?| x E{8]
firewall_type="open"\0SqMj6A?)b
firewall_script="/etc/ipfw.rules"
(p0r0Q @U firewall_logging="YES"[/code]# ee /etc/sysctl.conf[code]net.inet.ip.fw.verbose=1){/F#gE j|-{
net.inet.ip.fw.verbose_limit=5[/code]编辑防火墙规则[code]# ee /etc/ipfw.rules[/code][code]# 具体语法请参考http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/firewalls-ipfw.html
Mo#?t4o2|{ [ #
'S8A ng{ ##################.s j\\sO5j/R
#启动时重载规则列表#
(hku px Q ##################
[ SM9I1_*lb? ipfw -q -f flush#yY#ad"it"o],n
#? NR,L+@$h @]
############# ? S,`{T%w
#设置命令前缀#hWz/T/i A$~0C&lo
#############
nxR D X cmd="ipfw -q add"r9B(s7ZP(K
#
~Q$d"td #############
%pV S#G;j_ #设置DNS地址#kq2~*c%JH'P;}\x
#############$jxV5q!n5R%W
dns="192.168.163.2"
P}3_0{4sD,l g7H #
(? T0P vK4E ################
T0Vlw vX #公网网卡界面名称#b-A*Un(l"_r3T
################Q;A'\-@H9c([t
pif="lnc0"7Q#d JuX| s.Q H
#e0I(C\/J9o c2N
################
)S/Urg~&V #不限制loopback##jEs&F4n
################tD?+M1Q
$cmd 00100 allow all from any to any via lo0
ru}E6e8\AX%b #
rQ GTl&|,F7A ###############w(D:T%Y0p B'@
#允许自定义规则#
sd~ w2|&T:D;M ###############2})DE)teH5B8Ta
$cmd 00200 check-state
%|*FV.},^t1Mm #
:OU\d%n'm ###############*nG"~[ _Y:f
#允许与DNS通讯# L&?%J5Z"jFz
############### s ]CO`!{ G#O
$cmd 00300 allow tcp from any to $dns 53 out via $pif setup keep-state$e@ K9| wN
$cmd 00400 allow udp from any to $dns 53 out via $pif keep-state
Xw9eB? #"`t.U aCk
#####################################################
z&nG|#HnH[ ?[ { #允许http连接(limit src-addr意为限制同一地址连接数量)#
0}$Mm-H0P*j cLf #####################################################_Z [b3W vi
$cmd 00500 allow tcp from any to any 80 out via $pif setup keep-state
%^0g)T(JJH3t $cmd 00600 allow tcp from any to me 80 in via $pif setup limit src-addr 10
:s)B s3ca # nd3bzR!_ w
######################################################MU8hd9Z C$gBz
#允许https连接(limit src-addr意为限制同一地址连接数量)#
9c^A5q[t~ ######################################################;b@G;kI2J!_\'\
$cmd 00700 allow tcp from any to any 443 out via $pif setup keep-statevJOEw}d0_
$cmd 00800 allow tcp from any to me 443 in via $pif setup limit src-addr 10
H2kevW #
)UGAVox #######################################################QUij'i?
#允许收发电子邮件(limit src-addr意为限制同一地址连接数量)#-qE]a"N%{-gG;EI
#######################################################
]7D7Rj(ef)Mm)M $cmd 00900 allow tcp from any to any 25 out via $pif setup keep-state
l{%l-N.pew-B^ #$cmd 01000 allow tcp from any to me 25 in via $pif setup limit src-addr 1
"c,rL'F1up/r} ~yk #0[3o4^2@ h}9Dx
$cmd 01100 allow tcp from any to any 110 out via $pif setup keep-state/GP'a$I M
#$cmd 01100 allow tcp from any to me 110 in via $pif setup limit src-addr 1XEw a7E:`/z
# x6g` f?
#########################
`7[X5aFx$v,In #允许CVSP和PORT安装/更新#8R XE [u@ d~v
#########################%kH`(i} ^z.Zeg|T
$cmd 01200 allow tcp from any to any via $pif setup keep-state uid rootB2a#E2V7{.a|6l)wme"X
#
.s4B,uI:C;Q"@ar ##########3ou1?V~
#允许ping#
/y1B-D;Pp6F6K GJH4| ##########
qJ/m9U\ V9Eu $cmd 01300 allow icmp from any to any out via $pif keep-state
.Sp A!y(ZJ&F0o #$cmd 01300 allow icmp from any to any in via $pif keep-state
4m,K.l3M#GzI #
m |E2f~&L-KxE ####################################################1c,yU4]Oo"{9}
#允许FTP连接(limit src-addr意为限制同一地址连接数量)#o%vB)cj,O4ux8m
####################################################o E-jxp#T$|N
$cmd 01400 allow tcp from any to any 21 out via $pif setup keep-state6io(U$h4[%q"q9^0so
$cmd 01500 allow tcp from any to any 21 in via $pif setup limit src-addr 2
}v#D d"` #0p V!|*mR@-Ep
########################################################M*sKDw;^;M QX)_ u
#允许SSH远程连接(limit src-addr意为限制同一地址连接数量)#
P w? xZ4e9ZsJ ########################################################/mPL.T\k:\0?
$cmd 01600 allow tcp from any to any 22 out via $pif setup keep-state4|}}$mBshE5z.{
$cmd 01700 allow tcp from any to any 22 in via $pif setup limit src-addr 25|&iqK` H
#
O*|8_4i @'W'K ######################
\)EF5E3?}vH #禁止此规则以外的所有连接# ] O2m${D-k
######################
+dmyp*it $cmd 60000 deny log all from any to any[/code]优化mysql
F.ESBO8Ty2DUh 9s%POOM E2nC Z
# ee /etc/my.cnf[code][mysqld]z,RVO7T&FL
skip-networking/N(t4sm-b+xu x,}A
skip-innodb,_)emO6@5CM
skip-bdb
M%F4IIl)K2bHb skip-name-resolve
1m]e ^}} [ skip-locking
S8d&TZ9?2G/p?Hyp #log-bin
0p']Hl"P\^ V # 以下选项基于2G内存:dX5~ Bk\ A0G
key_buffer=512M
K3ayi'Lq'x/c]%y max_allowed_packet=4M
O/]9Vo3].XM~1A table_cache=1024fIn)sD{
thread_cache=64#O@5R"}#o d w
join_buffer_size=32M` ~9MLog
sort_buffer=32M5Wb2d/Cx)L6r
record_buffer=32M
H,tq/?Rj max_connections=512
"s.dgZ M wait_timeout=120
L:m,v){bg/DjI interactive_timeout=120
+q4i.M A/bcI"i max_connect_errors=30000 G@2u ^&_j
long_query_time=1
"y[C p9MD max_heap_table_size=256M
}1l#jQS tmp_table_size=128M
6JX H JnJ!_ z G thread_concurrency=8
b:P0D*Icd?0^9Z*N myisam_sort_buffer_size=128M[/code]配置php
1w AA:cL|v
r.X:@H I+W ; 基于安全考虑,禁用某些功能,根据自己情况修改 Ym;@["b{
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
qB [,y-p B$Du;XU B
^8q3]G1M y`6t 配置apache[code]DocumentRoot "/usr/www"        # 网站主目录T k-Rr)Bg pq[
<Directory "/usr/www">        # 网站主目录3T Wx'wcM5V8w
Options FollowSymLinksr]PkD
<IfModule dir_module>:x)oSRK[)j
DirectoryIndex index.html index.php index.htmG.U:NMf*p3Z
</IfModule>
M&fs,Bf0oC'S*l <IfModule mime_module>r/X S8~Qe]H6n4^P
AddType application/x-gzip .gz .tgz
uM9N%d|+s AddType application/x-httpd-php .php
d9z7M6M2k.J%j G AddType application/x-httpd-php-source .phps
u c,@5z c^9Y K7|0i </IfModule>
x#hf%Ch-pl C AddDefaultCharset GB2312 QNjVc*V&tU3Jw
ServerTokens Prod wW(l)g2g(A T.L
ServerSignature Email0s LS lF;BT*m*zr
<IfModule prefork.c>        # 优化针对BSD的网络支持8E,haY1`
StartServers 10$\(oQO|]
MinSpareServers 10o a | X ~+Z s
MaxSpareServers 15:u@(K!xJ/H$_)X
ServerLimit 2000$AObC7\KWh2g
MaxClients 1500
dL|6} {"Cc"P&z MaxRequestsPerChild 10000
ebm:\oq&Z*~ </IfModule>[/code]设置远程登录安全*`XXMwui
# ee /etc/ssh/sshd_config[code]port 22        //可以改成不常用端口,并在防火墙设置中作相应修改 Mn0P [.Hk
protocol 1
J-]#U4}2Jr hostkey /etc/ssh/ssh_host_key
ss2gR1X)K2|%sH PermitRootLogin no3}%Z nG*q@5Lj
RSAAuthentication yesrk\9G}jY
PubkeyAuthentication yes
&W(Z5F$@?!b a m AuthorizedKeyFiles .ssh/authorized_keys
-y h+A#q?'i7x PasswordAuthentication no[/code]# ssh-keygen -b 1024 -t rsa1+v(h4Qn dn3j M V
4q `+N}`2I5k7v{s
[color=red]一路回车默认[/color]
*hi2@_%f'CW
*N0T(HM,n,GCY # cp /root/.ssh/identity.pub /usr/www        # 复制到一个可以用ftp下载的地方
Aozm%[[{d&p%e"T1G
D [5}2]p F6T4]P6CE7e/I 用ftp下载identity.pub,保存到本地;7`xI` y
在本地启动putty.exe(免费软件);1a&XV}'F
在session设置中填好IP和端口;\,fRwm_udO
在connection-SSH-Auth中,Browse下载的identity.pub;0_'['o7p-M9e
勾选Attempt TIS or CryptoCard auth(SSH-1);
3cZHE0bfG7B 点击open连接; u EGv]0mFR
按照提示输入用户名、密码 3{S/SnI8i9N#{;p

kzp Ch D8`8AS [color=sandybrown]其他安全设置 - 关闭一些不安全的服务[/color]
|#p6@/f*^WS1M/I
3tnBIj#V5c+l # ee /etc/rc.conf[code]sendmail_enable="NONE"6?3AM M\f
nfs_server_enable="NO"
#I:^pl0eq E8_}#B |&P nfs_client_enable="NO"
])\F+{0?7j D*[4C portmap_enable="NO")[ s%h&lz4];h
syslogd_enable="YES"3R3WM^KDY
syslogd_flags="-ss"
kSzh3Rm'Ff icmp_drop_redirect="YES"
1~-N-O ?'`"B log_in_vain="YES"x S0i1f!O
inetd_enable=”NO”                # 如果pure-ftpd以Inetd方式运行,需设置为YES[/code]禁止一般用户查看系统日志
!z j1A1FU
Ma9Jf[1P-i\ # chmod g-w,o-r /var/log/*
)aI\'^Xk+] # chmod 600 /etc/syslog.confw*jDp6L-k^F5@
# chmod 600 /etc/newsyslog.conf'pr-A:`FO#tp1TH

pE7u W{V@ 对bin和sbin进行安全保护
[EGE+PO5` *vo0S4Xj7l5@
# chflags schg /bin/*d3a3v,| EV!u
# chflags schg /sbin/*
}4VIF9A 2RvQ Yk
禁止一般用户使用crontab
T0mi]}{ # ee /var/cron/allow
+jo t/L g-W c \z root [8CTi3Gz8~1v
# chmod 600 /var/cron/allow:U.i s/f U-Z3o!Q
,C&i4xC{)x l"_2^
安装旧版软件
#hv+P3Pz4ik\ 5N~2s w(`R
默认情况下,通过ports编译安装的都是软件的最新版本,在某些情况下需要自定义安装特定的旧版本(传说中的稳定版),这个时候需要特殊处理?P bY2?
8Xu/Q,m^i4yk3l
首先要知道准备安装的port属于哪个类别,比如常见的Mysql4.0.26属于databases,php4.4.0属于lang等等……我们这里以php4为例
0eQkfoA:Xg-j
5M(fzX]1P v 然后,[url=http://www.freebsd.org/cgi/cvsweb.cgi/ports/]http://www.freebsd.org/cgi/cvsweb.cgi/ports/[/url]查看相应软件的发布日期,php4.4.1最后的发布日期为2005年12月9日pU(yz5o)M*SPP
0]0m!f L%|
根据相应版本的发布日期(通常以公布日期稍延后一点,但一定要在下一个版本日期之前)修改cvsup文件
Xf%~#l.H1^d K L1V#ZK*Vf]
h Ni-P:rfQ dK
# ee /usr/share/examples/cvsup/ports-supfile[code]*default date=2005.12.10.00.00.00        #格式:年/月/日/时/分/秒)qF,Y jDZ
#ports-all                                                                #不用将所有port都回滚
B#wj}.U J c ports-lang                                                                # 只回滚相应的软件类别[/code]然后将ports回滚到那个时候
l5d|J'w P_-wY/]s+Y5q
# cvsup –L 2 –h cvsup3.tw.freebsd.org /usr/share/examples/cvsup/ports-supfileo8Y)e TK[V-_+[%x p

c$kQ%u*|3}$g 最后就可以安装了
0H&t!V ScZ|%b
dPH \{p0E:?1M;u9C # cd /usr/lang/php4 oH(` f@!Ad\
# make install clean'lY,OS@"IE Oe
?4JXJG
[size=3]FreeBSD目录架构
#Rp7]mjUfc
!Rh`@}~{:E [/size][size=2]/ 文件系统的根目录。
8[X0bc in#g(W]Ky /bin/ 在单个用户和多用户环境下的基本工具目录。
ge,mpo#?iJR0Bm /boot/ 在操作系统在启动加载期间所用的程序和配置。
3{\3I,J+g9`6B /boot/defaults/ 默认每步引导启动的配置内容,请查阅loader.conf(5)。 e7{^s P7E0@
/dev/ 设备节点,请查阅 intro(4)。
\1}K [M-[Z8H /etc/ 系统启动的配置和脚本。 B.J6@)D(x5~$^X2J|
/etc/defaults/ 系统默认的启动配置和脚本,请参考 rc(8) 。 ,Ud2A2kU/w
/etc/mail/ 关系到邮件系统运作的配置, 请参考 sendmail(8)。 :x^ZB!o)G.B;W
/etc/namedb/ named 配置文件,请参考 named(8)。
bT$|kjd Bq /etc/periodic/ 每天、每星期和每月周期性地运行的脚本, 请通过 cron(8)查阅 periodic(8)。 `}1i!A*Cm
/etc/ppp/ ppp配置文件,请查阅ppp(8)。
z[:\&l~&l /mnt/ 由管理员习惯使用挂接点的临时空目录。
4J} ?F6p~8J1m /proc/ 运行中的文件系统,请参阅 procfs(5) 和 mount_procfs(8)。
Dl O0t'Ef /rescue/ 用于紧急恢复的一组静态联编的程序; 参见 rescue(8)。
#Qht#ka6oh.k*i /root/ root用户的Home(主)目录。 M/Iod3J7c/M6[{z
/sbin/ 在单个用户和多用户环境下的存放系统程序和管理所需的基本实用目录。
Fb;G"v)\.`iVP /stand/ 独立的程序环境。 :Ni-n ?7M X}
/tmp/ 临时文件。 /tmp 目录中的内容,一般不会在系统重新启动之后保留。 通常会将基于内存的文件系统挂在 /tmp 上。 这一工作可以用一系列 tmpmfs 相关的 rc.conf(5) 变量来自动完成。 (或者, 也可以在 /etc/fstab 增加对应项; 参见 mdmfs(8))。
8k^^ X ^c7JS /usr/ 存放大多数用户的应用软件。 8CZ"S#[,Tk+m+^
/usr/bin/ 存放实用命令,程序设计工具,和应用软件。
)~T(G xI3B8P /usr/include/ 存放标准 C include 文件. t7o7T6jty/Us
/usr/lib/ 存放库文件。 0p W#}M/WnJ
/usr/libdata/ 存放各种实用工具的数据文件。 Rd+Ws_4|]BD
/usr/libexec/ 存放系统实用或后台程序 (从另外的程序启动执行)。
Fl kQ iH[Jl7BE+A&e /usr/local/ 存放本地执行文件, 库文件等等, 同时也是 FreeBSD ports 安装的默认安装目录。 /usr/local 在 /usr 中的目录布局大体相同,请查阅 hier(7)。 但 man 目录例外, 它们是直接放在 /usr/local 而不是 /usr/local/share 下的, 而 ports 说明文档在 share/doc/port。 +N psV!S8Qt
/usr/obj/ 通过联编 /usr/src 得到的目标文件。
-P%b,GqIeu$ZG /usr/ports 存放 FreeBSD 的 Ports Collection (可选)。 B&UW+Bm8_m.M m
/usr/sbin/ 存放系统后台程序 和 系统工具 (由用户执行)。 ;q&UV'B bF
/usr/share/ 存放架构独立的文件。
DS%b hz!w @5gl /usr/src/ 存放 BSD 或者本地源码文件。 V,` x tk
/usr/X11R6/ 存放 X11R6 可执行文件、 库文件、 配置文件等的目录(可选)。
p EN)UiQ9_,jW /var/ 多用途日志、 临时或短期存放的, 以及打印假脱机系统文件。有时会将基于内存的文件系统挂在 /var 上。 这一工作可以通过在 rc.conf(5) 中设置一系列 varmfs 变量 (或在 /etc/fstab 中加入一行配置; 参见 mdmfs(8)) 来完成。 .E2U(Ty$t8J)Ml
/var/log/ 存放各种的系统记录文件。 K/hp(~/Q:H;[
/var/mail/ 存放用户mailbox(一种邮件存放格式)文件。
\)k-`+r0N /var/spool/ 各种打印机和邮件系统spooling(回环)的目录。
hj~ cr5KP /var/tmp/ 临时文件。 这些文件在系统重新启动时通常会保留, 除非 /var 是一个内存中的文件系统。
4]4QB&D,i /var/yp NIS 映射。
@:DfzY /etc 一般的系统配置信息。这儿的数据是与特定系统相关的。
UyX%i*A8j bS&_'F6}S /etc/defaults 系统配置文件的默认版本。 R9W3phwKq"X2f
/etc/mail 额外的 sendmail(8) 配置信息,其他 MTA 配置文件。
qI7WyGw4I7s[1v /etc/ppp 用于用户级和内核级 ppp 程序的配置。 {]}1PG3S5^
/etc/namedb named(8) 数据的默认位置。通常 named.conf 和区域文件存放在这里。
8H#k:KQ2d4w /usr/local/etc 被安装的应用程序配置文件。可以参考每个应用程序的子目录。
Cx M^3A_4G /usr/local/etc/rc.d 被安装程序的 启动/停止 脚本。
%A$mp_ u'e%k /var/db 特定系统自动产生的数据库文件,像 package 数据库,位置数据库等等。WkO|"V$A z
"V:^A&iHQ I8wl
[/size][size=3]FreeBSD配置文件说明[/size] n/KJS#n.qT uj.W

$] G5B4z"@p{x0S*f [size=2]/etc/resolv.conf3[|(F uyW
指示了 FreeBSD 如何访问域名系统(DNS)。
Tzj9u;m0\+xVtg nameserver 按顺序要查询的名字服务器的 IP 地址,最多三个。
)m9}$kV(Kmx&k1XaN*Ov search 搜索机器名的列表。这通常由本地机器名的域决定。
,e2e.o)^+f9h2[)GW domain 本地域名。 mo'U0Tx/gAD

9T B_v2mNS'sx;GP /etc/hosts5DG7}[+x/I W2lBR5_
是 Internet 早期使用的一个简单文本数据库。它结合 DNS 和 NIS 提供名字到 IP 地址的映射。
*A T g cq y?#I-m/z-m;Z2Y
syslog.conf
u%h^8i*c.o 是 syslogd(8) 程序的配置文件。 它指出了的 syslog 哪种信息类型被存储在特定的日志文件中。
`JeJm+VY|0a] f1w6r$n?J}'H
newsyslog.conf
P9S X$n8m/i8z\ J(fr 是一个通常用 cron(8) 计划运行的 newsyslog(8) 程序的配置文件。指出了什么时候日志文件需要打包或者重新整理。指出了哪个日志文件要被管理,要保留多少和它们什么时候被创建。日志文件可以在它们达到一定大小或者在特定的日期被重新整理。
q8lHW K`+U,E9B
(nq!s4AN7u0s sysctl.conf
^FG Ku gV;w 看起来很像 rc.conf。它用 variable=value 的形式来设定值。指定的值在系统进入多用户模式之后被设定。并不是所有的变量都可以在这个模式下设定。1Oz)P/N h#p Fs6F;GM

#sP%A?"r [(r [color=red]***********************************************************************[/color]g7t%ZV8C]{+Z ^:t8s

M9e s"O5o 至此,关于用FreeBSD组架的web服务器基本上就可以告一段落了。 X#[&\V |9u
Tr O zq
关于本文中提到的[/size]:yO.{} ?w
[size=2][/size];_ {:SH$g C6Aa
# mount /cdrom

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.