当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > 架设某大型网站服务器之全部过程

Linux服务器
Linux上双网卡绑定方法(Suse9SP3)
Linux操作系统调优参数的意义
Linux下使用SSH客户端及其Sftp文件传送
教你恢复被误删除的Linux文件
SQL Server注入大全及防御
Linux无法解析域名的解决办法
Linux系统下安装和配置MyEclipse的方法
Ubuntu下VirtualBox 1.4.0设置文件共享
Windows与Linux系统共享StarDict字典文件
修改Linux下相关的登陆信息
Windows通过SecureCRT远程登录Linux主机
Linux操作系统如何修改SWAP交换区的大小
Linux操作系统下为Apache目录添加密码
Linux时间设置与同步(NTP)
Linux内核补丁AMD旁路转换缓冲(TLB)错误
Linux架设DHCP服务器的方法
Fedora 8下Apache配置与管理
Linux操作系统下用单网卡捆绑双IP的方法
Ubuntu Linux系统环境变量配置文件
SUSE Linux中将Tomcat作为Service运行

Linux服务器 中的 架设某大型网站服务器之全部过程


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 240 ::
收藏到网摘: n/a

网站服务器
主要任务:
根据开发设计需求架设大型的网站服务器

主要软件:
apache+jboss+oracle
简称:LAJO
apache+php+mysql
简称:LAMP
proftpd+mysql
简称:LPM
ssh+expect
iptables
bind
mail

具体要求:
海量用户访问
海量用户存储
(国内外互通)
南北互通.


需求分析:
1.保证高要求高质量高性能,需要选择系*nix操作平台(这里选择as4.3);
2.保证高访问量高数据处理,需要选数商业数据库(这里选择oracle9.2.0.4);
3.解决南北互通(包括国内外互通),需要架设基于bind-view功能的智能DNS服务器.
4.使用流行的B/S,C/S程序架构,需要选择了JBOSS服务器.
5.更好地处理静态页面效果,需要选择了Apache服务器.
6.根据程序注册用户与上传要求,需要架设ftp服务器.
7.时时自动化系统监控,需要架设LAPM服务器.(这里使用软件cacti).
8.公司与客户交流,需要架设邮件服务器.(这里使用postfix+extmail).
9.自动化文件数据处理与安全设置,需expect+ssh+iptables结合shell脚本.
10.海量,需要集群负载均衡与配备存储设备.

具体流程:
1.硬件采购.
这里略.

2.操作系统安装
安装redhatas4.3
系统空间划分(略)


安装开发环境,DNS,LAMP环境所需软件包.
并确认以下包已安装:
compat-db
compat-gcc
compat-gcc-32
compat-oracle-rhel4
compat-libcwait
compat-libgcc
compat-libstdc++-296
compat-libstdc++-33
gcc
gcc-c++
gnome-libs
gnome-libs-devel
libaio-devel
libaio
make
openmotif21
xorg-x11-deprecated-libs-devel
xorg-x11-deprecated-libs
sysstatdisk4
openmotif21disk3
libaiodisk3
libaio-develdisk3
freetype-develdisk3
fontconfig-develdisk3
xorg-x11-devel-disk3
xorg-x11-deprecated-libs-devel-disk3
glib-develdisk4
ORBit-develdisk4
gtk+-develdisk4
alsa-lib-develdisk3
audiofile-develdisk3
esound-devel-disk3
libjpeg-devel-disk3
libtiff-devel-disk3
libungif-devel-disk3
imlib-develdisk4
gnome-libs-develdisk4
expectdisk4

注意:我遇到的一个问题:全新的dell服务器1.5T,raid5,重没有安装过任何系统,硬盘也没有分区,直接用as4.3安装盘安装提示:内存错误,蓝屏,而安装失败。用了好几种linux系统盘(包括windows安装盘)都如此,(手里没有硬盘格式分区工具,没有测试是否可以硬盘分区。)官方发行版说不支持超过2G内存,于是安装系统时先卸下2G内存,待安装完毕在请求支持超过2G内存的内核安装后就可以支持4G内存了,倘如日后全新安装系统不使用hugemem而使用默认的smp内核也能识别4G内存,更不会出现蓝屏问题。关于之中奥妙,还没有仔细研究过。。。。
#rpm–ivhkernel-elhugemem….rpm

修改启动文件grub.conf确保新安装的内核为优先启动.
#cat/etc/grub.conf
////////////////////////////////////////////////////////////////////
#grub.confgeneratedbyanaconda
#
#Notethatyoudonothavetorerungrubaftermakingchangestothisfile
#NOTICE:Youhavea/bootpartition.Thismeansthat
#allkernelandinitrdpathsarerelativeto/boot/,eg.
#root(hd0,1)
#kernel/vmlinuz-versionroroot=/dev/sda8
#initrd/initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,1)/grub/splash.xpm.gz
hiddenmenu
titleRedHatEnterpriseLinuxAS(2.6.9-22.ELhugemem)
root(hd0,1)
kernel/vmlinuz-2.6.9-22.ELhugememroroot=LABEL=/rhgbquiet
initrd/initrd-2.6.9-22.ELhugemem.img
titleRedHatEnterpriseLinuxAS(2.6.9-22.ELsmp)
root(hd0,1)
kernel/vmlinuz-2.6.9-22.ELsmproroot=LABEL=/rhgbquiet
initrd/initrd-2.6.9-22.ELsmp.img
titleRedHatEnterpriseLinuxAS-up(2.6.9-22.EL)
root(hd0,1)
kernel/vmlinuz-2.6.9-22.ELroroot=LABEL=/rhgbquiet
initrd/initrd-2.6.9-22.EL.img
////////////////////////////////////////////////////////////////////////////////////////////////
如果hiddenmenu
下面的内容顺序不对,请修改default=x(x对应ELhugemem项)

重启并加载另外2G内存.
这样让系统支持4G内存的正常运行.

2)系统安装完毕请作连接:#ln–s/tmp/temp


3.配置DNS
由于要南北互通,开源得只有使用view的ACL访问控制列表文件来实现多线路的自动导向.
(当然也有其他的商业解决办法,比如智能路由与交换机的设置来实现,我们这里使用开源的而且容易实现与调整的解决软件bind)
关于view的ACL获得办法有很多途径,这里不一一商讨.
具体架设参考如下
默认安装的bind为9系列的,已经支持view,配置分为三步骤分别如下所示.
(1)修改named.conf
(2)创建与配置hosts
(3)域名解析
#vi/etc/named.conf
////////////////////////文件内容开始///////////////////
//
//named.confforRedHatcaching-nameserver
//

options{
directory"/var/named";
dump-file"/var/named/data/cache_dump.db";
statistics-file"/var/named/data/named_stats.txt";
/*
*Ifthereisafirewallbetweenyouandnameserversyouwant
*totalkto,youmightneedtouncommentthequery-source
*directivebelow.PreviousversionsofBINDalwaysasked
*questionsusingport53,butBIND8.1usesanunprivileged
*portbydefault.
*/
//query-sourceaddress*port53;
};

//
//acachingonlynameserverconfig
//
controls{
inet127.0.0.1allow{localhost;}keys{rndckey;};
};



include"/etc/rndc.key";

//modifybymingfu060404
acl"CNC"{
58.16.0.0/16;
58.17.0.0/17;
58.17.128.0/17;
58.18.0.0/16;
58.19.0.0/16;
58.20.0.0/16;
58.21.0.0/16;
58.22.0.0/15;
58.240.0.0/15;
58.242.0.0/15;
58.244.0.0/15;
58.246.0.0/15;
58.248.0.0/13;
60.0.0.0/13;
60.8.0.0/15;
60.10.0.0/16;
60.11.0.0/16;
60.12.0.0/16;
60.13.0.0/18;
60.13.128.0/17;
60.14.0.0/15;
60.16.0.0/13;
60.24.0.0/14;
60.30.0.0/16;
60.31.0.0/16;
60.208.0.0/13;
60.216.0.0/15;
60.218.0.0/15;
60.220.0.0/14;
61.48.0.0/13;
61.133.0.0/17;
61.134.96.0/19;
61.134.128.0/17;
61.135.0.0/16;
61.137.128.0/17;
61.138.0.0/17;
61.138.128.0/18;
61.139.128.0/18;
61.148.0.0/15;
61.156.0.0/16;
61.159.0.0/18;
61.161.0.0/18;
61.161.128.0/17;
61.162.0.0/16;
61.163.0.0/16;
61.167.0.0/16;
61.168.0.0/16;
61.176.0.0/16;
61.179.0.0/16;
61.181.0.0/16;
61.182.0.0/16;
61.189.0.0/17;
125.32.0.0/16;
125.40.0.0/13;
202.96.0.0/18;
202.96.64.0/21;
202.96.72.0/21;
202.97.128.0/18;
202.97.224.0/21;
202.97.240.0/20;
202.98.0.0/21;
202.98.8.0/21;
202.99.64.0/19;
202.99.96.0/21;
202.99.128.0/19;
202.99.160.0/21;
202.99.168.0/21;
202.99.176.0/20;
202.99.208.0/20;
202.99.224.0/21;
202.99.232.0/21;
202.99.240.0/20;
202.102.128.0/21;
202.102.224.0/21;
202.102.232.0/21;
202.106.0.0/16;
202.107.0.0/17;
202.108.0.0/16;
202.110.0.0/17;
202.111.128.0/18;
203.93.8.0/24;
203.93.192.0/18;
210.13.128.0/17;
210.14.160.0/19;
210.14.192.0/19;
210.15.32.0/19;
210.15.96.0/19;
210.15.128.0/18;
210.21.0.0/16;
210.52.128.0/17;
210.53.0.0/17;
210.53.128.0/17;
210.74.96.0/19;
210.74.128.0/19;
210.82.0.0/15;
218.8.0.0/14;
218.12.0.0/16;
218.21.128.0/17;
218.24.0.0/14;
218.56.0.0/14;
218.60.0.0/15;
218.67.128.0/17;
218.68.0.0/15;
218.104.0.0/14;
219.154.0.0/15;
219.156.0.0/15;
219.158.0.0/17;
219.158.128.0/17;
219.159.0.0/18;
220.252.0.0/16;
221.0.0.0/15;
221.2.0.0/16;
221.3.0.0/17;
221.3.128.0/17;
221.4.0.0/16;
221.5.0.0/17;
221.5.128.0/17;
221.6.0.0/16;
221.7.0.0/19;
221.7.32.0/19;
221.7.64.0/19;
221.7.96.0/19;
221.8.0.0/15;
221.10.0.0/16;
221.11.0.0/17;
221.11.128.0/18;
221.11.192.0/19;
221.12.0.0/17;
221.12.128.0/18;
221.13.0.0/18;
221.13.64.0/19;
221.13.96.0/19;
221.13.128.0/17;
221.14.0.0/15;
221.192.0.0/15;
221.194.0.0/16;
221.195.0.0/16;
221.196.0.0/15;
221.198.0.0/16;
221.199.0.0/19;
221.199.32.0/20;
221.199.128.0/18;
221.199.192.0/20;
221.200.0.0/14;
221.204.0.0/15;
221.206.0.0/16;
221.207.0.0/18;
221.207.64.0/18;
221.207.128.0/17;
221.208.0.0/14;
221.212.0.0/16;
221.213.0.0/16;
221.216.0.0/13;
222.128.0.0/14;
222.132.0.0/14;
222.136.0.0/13;
222.160.0.0/15;
222.162.0.0/16;
222.163.0.0/19;
222.163.32.0/19;
222.163.64.0/18;
222.163.128.0/17;
};

view"view_cnc"{
match-clients{CNC;};
zone"."{
typehint;
file"named.ca";
};

zone"0.0.127.IN-ADDR.ARPA"{
typemaster;
file"localhost.rev";
};

include"master/cnc.def";
};

view"view_any"{
match-clients{any;};
zone"."{
typehint;
file"named.ca";
};

zone"0.0.127.IN-ADDR.ARPA"{
typemaster;
file"localhost.rev";
};

include"master/telecom.def";
};
////////////////////////文件内容结束///////////////////

#mkdir/var/named/master
#mkdir/var/named/master/cnc
#mkdir/var/named/master/telecom
#touch/var/named/master/cnc.def
#touch/var/named/master/telecom.def

说明:关于如何进行域名解析配置:

@Zone区文件配置:
Master/Cnc.def网通
Master/Telecom.def电信
*.def文件里面为解析域名的zone配置区设置部分.

@Hosts区文件配置
Master/Cnc网通
Master/Telecom电信
下面以解析www.xxxx.com为例

#vi/var/named/master/cnc.def
////////////////////////文件内容开始///////////////////
zone"xxxx.com"{
typemaster;
file"master/cnc/xxxx.com";
};
////////////////////////文件内容结束///////////////////

#vi/var/named/master/telecom.def
////////////////////////文件内容开始///////////////////
zone"xxxx.com"{
typemaster;
file"master/telecom/xxxx.com";
};
////////////////////////文件内容结束///////////////////

#vi/var/named/master/cnc/xxxx.com
////////////////////////文件内容开始///////////////////
$TTL3600
$ORIGINxxxx.com.
@INSOAns.xxxx.com.root.ns.xxxx.com.(
2005121013;Serial
3600;Refresh(seconds)
900;Retry(seconds)
68400;Expire(seconds)
15);MinimumTTLforZone(seconds)
;
@INNSns.xxxx.com.
@INMXxxxx.com.
;;ipforcnc
@INAx.x.x.x(网通IP)
wwwINAx.x.x.x(网通IP)
////////////////////////文件内容结束///////////////////

#vi/var/named/master/telecom/xxxx.com
////////////////////////文件内容开始///////////////////
$TTL3600
$ORIGINxxxx.com.
@INSOAns.xxxx.com.root.ns.xxxx.com.(
2005121013;Serial
3600;Refresh(seconds)
900;Retry(seconds)
68400;Expire(seconds)
15);MinimumTTLforZone(seconds)
;
@INNSns.xxxx.com.
@INMXxxxx.com.
;;ipfortelecom
@INAx.x.x.x(电信IP)
wwwINAx.x.x.x(电信IP)

////////////////////////文件内容结束///////////////////

客服端测试:
nslookup--type=axxxx.comx.x.x.x(网通任意一个DNS服务器IP)

nslookup--type=axxxx.comx.x.x.x(电信任意一个DNS服务器IP)
看到的为配置文件中对应ip则解析配置正常.

注意:
上面的xxxxx.com需要修改DNS解析服务器为
ns.xxxxx.com
对应IP为:网通IP.

备注:
1).在这里做了网通与非网通的访问控制,用于实现南北互通,如要国内外互通,需要在列出一个相应的访问控制列表ACL就可以实现了.
2).关于使用tar包编译安装请参看:
http://www.mingfor.com/forum/showthread.php?tid=94


4.配置LAJO
软件:
Apache2.0.58
JBOSS.4.0.3SP1
Oracle9.2.0.4
Mod-jk1.12
配置:
1)apache+mod-jk
#tarzxvfhttpd-2.0.58.tar.gz
#cdhttpd-2.0.58
#./configure--enable-MODULE=shared--enable-so--with-mpm=worker
#make&&makeinstall
#tarzxvfjakarta-tomcat-connectors-1.2.14.1-src.tar.gz
#cd/home/software/jakarta-tomcat-connectors-1.2.14.1-src/jk/native
#./configure--with-apxs=/usr/local/apache2/bin/apxs
#make
#cp./apache-2.0/mod_jk.so/usr/local/apache2/modules

httpd.conf的修改
该文件的路径位于$APACHE-HOME/conf
上述编译过程中我们选用的worker模式,因此我们将修改worker模块的配置
<IfModuleworker.c>
StartServers4#最初建立进程的数量
ServerLimit24#进程建立的最大数量,硬限制
ThreadLimit128#每一进程能创建线程的最大数量,硬限制,该参数建议#和ThreadsPerChild一致,如果ThreadLimit>ThreadsPerChild的话,会造成不##必要的内存消耗。
MaxClients3072#同时可以得到处理的客户端的最大数量
MinSpareThreads100#所有进程中空闲线程的总数最小数值
MaxSpareThreads200#所有进程中空闲线程的总数最大数值
ThreadsPerChild128#每个子进程可以建立的固定数量的线程
MaxRequestsPerChild0#用于控制服务器建立和结束进程的频率,为0表示没有#限制,但在solarisOS下该值可能会出错,可以设置为1000或2000。根据系统#的并发负载吧。
</IfModule>
同时修改与新增httpd.conf如下内容:
Includeconf/mod_jk2.conf
Userxxxx
Group5dxc
DocumentRoot"/site"
<Directory"/site">
NameVirtualHostIP:80
<VirtualHostIP:80>
[email protected]
DocumentRoot/site
ServerNameIP
ErrorLoglogs/ip-error_log
CustomLoglogs/ip-access_logcommon
</VirtualHost>

<VirtualHostIP:82>
[email protected]
DocumentRoot/var/www/html
ServerNameadmin.xxxx.com
ErrorLoglogs/ip-error_log
CustomLoglogs/ip-access_logcommon
</VirtualHost>

#vi$APACHE-HOME/conf/mod_jk2.conf
////////////////////////文件内容开始///////////////////
LoadModulejk_modulemodules/mod_jk.so
JkWorkersFileconf/workers2.properties
JkLogFilelogs/mod_jk.log
#Setthejkloglevel[debug/error/info]
JkLogLevelinfo
#Selectthelogformat
JkLogStampFormat"[%a%b%d%H:%M:%S%Y]"
#JkOptionsindicatetosendSSLKEYSIZE,
JkOptions+ForwardKeySize+ForwardURICompat-ForwardDirectories
#JkRequestLogFormatsettherequestformat
JkRequestLogFormat"%w%V%T"
JkMount/*loadbalancer
#apachewillservethestaticpicture.
#以下命令意味着所有的图片与htm,css,js页面将由APACHE解析其它交由jboss处理
JkUnMount/*.jpgloadbalancer
JkUnMount/*.gifloadbalancer
JkUnMount/*.swfloadbalancer
JkUnMount/*.bmploadbalancer
JkUnMount/*.pngloadbalancer
JkUnMount/*.jsloadbalancer
JkUnMount/*.cssloadbalancer
JkUnMount/*.htmloadbalancer
////////////////////////文件内容结束///////////////////

#vi$APACHE-HOME/conf/uriworkermap.properties
////////////////////////文件内容开始///////////////////
/jmx-console=loadbalancer
/jmx-console/*=loadbalancer
/web-console=loadbalancer
/web-console/*=loadbalancer
////////////////////////文件内容结束///////////////////

#vi$APACHE-HOME/conf/uriworkermap.properties
////////////////////////文件内容开始///////////////////

worker.list=loadbalancer,status

worker.node1.port=8009
worker.node1.host=192.168.0.192(请填写服务器的IP)
worker.node1.type=ajp13
worder.node1.lbfactor=1
worker.node1.cachesize=10

worker.node2.port=8009
worker.node1.host=localhost
worker.node1.type=ajp13
worder.node1.lbfactor=1
worker.node1.cachesize=10

worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=1

worker.status.type=status
////////////////////////文件内容结束///////////////////
注意:如果需要负载:修改
worker.node2.port=8009
worker.node1.host=localhost
worker.node1.type=ajp13
worder.node1.lbfactor=1
worker.node1.cachesize=10
为:
worker.node2.port=8009
worker.node2.host=IP(进行负载的IP地址)
worker.node2.type=ajp13
worder.node2.lbfactor=1
worker.node2.cachesize=10

备注:如果要进行更多的负载….
修改:

worker.noden.port=8009
worker.noden.host=IP(进行负载的IP地址)
worker.noden.type=ajp13
worder.noden.lbfactor=1
worker.noden.cachesize=10

worker.loadbalancer.balance_workers=node1,node2,noden

2)jboss
jboss安装.
Jboss4.0.3sp1解压到/site/jboss目录下….
…./deploy/jbossweb-tomcat55.sar/server.xml中,找8080,修改为8088

Jdk环境变量设定:

Jdk安装:
#chmod755jdk-1_5_0_06-linux-i586.bin
#./jdk-1_5_0_06-linux-i586.bin
Java参数设置:
#ln–s/usr/local/jdk1.5.0_06/usr/local/jdk

如果你下载的是rpm包请如下操作
#./jdk-1_5_0_06-linux-i586.rpm.bin
#rpmjdk-1_5_0_06-linux-i586.rpm
#ln–s/usr/jdk1.5.0_06/usr/local/jdk


#vi/etc/profile.d/java.sh
////////////////////////文件内容///////////////////
JAVA_HOME=/usr/local/jdk
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$CATALINA_HOME/bin
exportJAVA_HOMEPATH
////////////////////////文件内容///////////////////

3)apache+jboos服务启动问题

apache+jboss整合配置已完毕.下面是启动这些服务了.

..用户与权限分配
groupadd–g5500xxxx
adduser-u5500-s/bin/false-d/bin/null-c"proftpduser"-gxxxxxxxx

修改/etc/passwd文件中的xxxx用户中的”/bin/false”为”/bin/bash”,以便于以后jboss使用.当然你也可以这样做:
adduser-u5500-s/bin/bash-d/bin/null-c"proftpduser"-gxxxxxxxx

chownxxxx/site/*–R
chgrpxxxx/site/*-R
chmod755/site/*-R

..服务启动
添加如下内容到/etc/rc.local
/usr/local/apache2/bin/apachectlstart
/etc/init.d/jbossstart
#vi/etc/init.d/jboss
////////////////////////文件内容开始///////////////////
#/etc/init.d/jboss
/etc/rc.d/init.d/functions
JBOSS_HOME=/site/jboss
exportJBOSS_HOME
JAVA_HOME=/usr/local/jdk
exportJAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
exportPATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
exportCLASSPATH
prog="jboss"
start()
{
#InputthejbosServicelogintojboss.log
echo"Jboss4.0.3SP1ServiceStarting........">>/var/log/xxxx/jboss.log
echo"-----------------------------------------------">>/var/log/xxxx/jboss.log
date"+%Y-%m-%d%A%T:JbossServicestart">>/var/log/xxxx/jboss.log
echo"-----------------------------------------------">>/var/log/xxxx/jboss.log
su-xxxx-c$JBOSS_HOME/bin/run.sh&>>/var/log/xxxx/jboss.log
touch/var/log/xxxx/jboss.log
}
#Functionstop,StoptheJbossServiceauto
#whentheLinuxHalt
stop()
{
#InputthejbossServicelogintojboss.log
echo"jbossServiceStopping........">>/var/log/xxxx/jboss.log
echo"-----------------------------------------------">>/var/log/xxxx/jboss.log
date"+%Y-%m-%d%A%T:jbossServiceStop">>/var/log/xxxx/jboss.log
echo"-----------------------------------------------">>/var/log/xxxx/jboss.log
su-xxxx-c“$JBOSS_HOME/bin/shutdown.sh–S”>>/var/log/xxxx/jboss.log
}
case$1in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
status)
status$prog
;;
*)
echo"PleaseInputstart|stop|restart|reload|status"
return1
esac
////////////////////////文件内容结束///////////////////

注意:
请赋予jboos的执行权限:chmod755/etc/init.d/jboss
请注意xxxx用户是没有设置密码的,确保使用xxxx用户是无法登录的,只有root可以切换到该用户环境中去的:#su–xxxx…..


4)oracle安装与启动
创建相关安装目录和环境变量
1,创建user/group;
#groupadddba
#groupaddoinstall
#useraddoracle-goinstall-Gdba
#passwdoracle
2,建立oracle安装文件夹;
#mkdir-p/opt/ora9/product/9.2.0.4
#mkdir/var/opt/oracle
#chmodoracle.dba/var/opt/oracle
#chown-Roracle.dba/opt/ora9
 
3,配置环境变量;
以root用户登录,设置root用户的环境打开.bash_profile文件,将如下内容加入:
exportORACLE_BASE=/opt/ora9
exportORACLE_HOME=/opt/ora9/product/9.2.0.4
exportPATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
exportORACLE_OWNER=oracle
exportORACLE_SID=oradb//此处为你的sid

 使用Oracle用户登陆:
 #su–oracle
 $vi.bash_profile
 以下是配置文件的内容
 #.bash_profile

 #Getthealiasesandfunctions
 if[-f~/.bashrc];then
.~/.bashrc
 fi

 #Userspecificenvironmentandstartupprograms

 PATH=$PATH:$HOME/bin
 exportORACLE_BASE=/opt/ora9
 exportORACLE_HOME=/opt/ora9/product/9.2.0.4
 exportPATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
 exportORACLE_OWNER=oracle
 exportORACLE_SID=oradb
 exportORACLE_TERM=xterm
 exportLD_ASSUME_KERNEL=2.4.19
 exportTHREADS_FLAG=native
 exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
 exportNLS_LANG=”American_america.utf8”
 exportORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
 exportPATH
 unsetUSERNAME
 4,设置系统参数;

#su–root切换到root用户
a)修改#vi/etc/sysctl.conf,以下是配置文件的内容:
#KernelsysctlconfigurationfileforRedHatLinux
#
#Forbinaryvalues,0isdisabled,1isenabled.Seesysctl(8)and
#sysctl.conf(5)formoredetails.

#ControlsIPpacketforwarding
net.ipv4.ip_forward=0

#Controlssourcerouteverification
net.ipv4.conf.default.rp_filter=1

#ControlstheSystemRequestdebuggingfunctionalityofthekernel
kernel.sysrq=0

#ControlswhethercoredumpswillappendthePIDtothecorefilename.
#Usefulfordebuggingmulti-threadedapplications.
kernel.core_uses_pid=1
kernel.shmmax=536870912
kernel.shmmni=4096
kernel.shmall=2097152
kernel.sem=25032000100128
fs.file-max=65536
net.ipv4.ip_local_port_range=102465000

修改后运行
#sysctl–p
命令使得内核改变立即生效;

注:
一般情况下可以设置最大共享内存为物理内存的一半,如果物理内存是2G,则可以设置最大共享内存为1073741824,如上;如物理内存是1G,则可以设置最大共享内存为512*1024*1024=536870912;以此类推。
建议永久地增加shmmax设置。
sem4个参数依次为SEMMSL(每个用户拥有信号量最大数);SEMMNS(系统信号量最大数);SEMOPM(每次semopm系统调用操作数);SEMMNI(系统辛苦量集数最大数).Shmmax最大共享内存,官方文档建议是内存的1/2,Shmmni最小共享内存4096KB.Shmall所有内存大小。

b)设置oracle对文件的要求:
编辑文件:#vi/etc/security/limits.conf加入以下语句:
oracle soft nofile65536
oracle hardnofile 65536
oracle soft nproc16384
oracle hardnproc16384

也可以写成:

* soft nofile65536
* hardnofile 65536
* soft nproc16384
*hardnproc16384

c)gcc降级
#mv/usr/bin/gcc/usr/bin/gcc34
#ln–s/usr/bin/gcc32/usr/bin/gcc
#mv/usr/bin/g++/usr/bin/g++34
#ln–s/usr/bin/g++32/usr/bin/g++

5,安装oracle补丁
#cd/opt
#lscompat*.rpm
compat-libcwait-2.0-2.i386.rpmcompat-oracle-rhel4-1.0-5.i386.rpm
#rpm-Uvhcompat*.rpm
Preparing...###########################################[100%]
1:compat-libcwait-2.0-2.i386.rpm#####################################[50%]
2:compat-oracle-rhel4-1.0-5.i386.rpm####################################[100%]

开始安装Oracle9i

1,解压下载的安装文件:
#zcatship_9204_linux_disk1.cpio.gz|cpio–idmv&&zcatship_9204_linux_disk2.cpio.gz|cpio–idmv&&zcatship_9204_linux_disk3.cpio.gz|cpio–idmv
解包和解压过程中,自动创建了3个包含安装文件的目录:
Disk1
Disk2
Disk3

.以oracle用户登录系统,进行Oracle的安装(注意请不要在root登录中切换到oracle,是以oracle登录到系统(图形界面)):
$cdDisk1
$./runInstaller过一会儿就会出现Oracle的安装界面
-WelcomeScreen:ClickNext
-InventoryLocation:ClickNext
-UnixGroupName:Use"oinstall"andclickNext

Whenaskedtorun/tmp/orainstRoot.sh,runitbeforeyouclickContinue
-Attheendoftheinstallation,exitrunInstaller.

2.一步一个脚印安装下去就行了!

3,安装完后打补丁:
切换到oracle:#su–oracle首先安装opatch.
$cd/opt
$unzipp2617419_210_GENERIC.zip
Archive:p2617419_210_GENERIC.zip
creating:OPatch/
creating:OPatch/docs/
inflating:Opatch/docs/FAQ
......
inflating:README.txt
$exportPATH=$PATH:/opt/OPatch:/sbin
(修改PATH时要要包括解压缩出来的Opatch和sbin目录)
$unzipp3238244_9204_LINUX.zip
$exportORACLE_BASE=/opt/ora9
$exportORACLE_HOME=/opt/ora9/product/9.2.0.4
$cd3238244
$opatchapply
出现success的提示就全部安装成功.

补丁打完后,还要relinked一个.mk文件
$cd$ORACLE_HOME/network/lib
$make-fins_oemagent.mkinstall
之后就可以启动Agent服务了.


4,最后执行$dbca建oracle数据库
注意:在SID处指定为oradb(与ORACLE_SID=oradb)中的值一致.
点击OK,然后退出即可,正常登陆并启动数据库的操作。
$lsnrctlstart
$sqlplus/nolog
SQL*Plus:Release9.2.0.4.0-ProductiononSatMar1222:58:532005
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.

SQL>connect/assysdba
Connected.

SQL>shutdownimmediate关闭数据库
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.

SQL>startup;启动数据库
ORACLEinstancestarted.
TotalSystemGlobalArea236000356bytes
FixedSize451684bytes
VariableSize201326592bytes
DatabaseBuffers33554432bytes
RedoBuffers667648bytes
Databasemounted.
Databaseopened.

5,oracle服务启动
以root身份进入,编写以下脚本:
vi/etc/init.d/oracle
////////////内容//////////////////
#!/bin/bash
#startandstoptheoracleinstance
#chkconfig–level5--addora9i
#chkconfig:3459119
#description:startstheoraclelistenerandinstance

exportORACLE_HOME="/opt/ora9/product/9.2.0.4"
exportPATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
exportORACLE_OWNER="oracle"
exportORACLE_SID=oradb

if[!-f$ORACLE_HOME/bin/dbstart-o!-d$ORACLE_HOME]
then
echo"oraclestartup:cannotstart"
exit1
fi

case"$1"in
start)
#startupthelistenerandinstance
echo-n"oraclestartup:"
su-$ORACLE_OWNER-c"$ORACLE_HOME/bin/lsnrctlstart"
su-$ORACLE_OWNER-c$ORACLE_HOME/bin/dbstart
touch/var/lock/subsys/oracle
echo"finished"
;;
stop)
#stoplistener,apacheanddatabase
echo-n"oracleshutdown:"
su-$ORACLE_OWNER-c"$ORACLE_HOME/bin/lsnrctlstop"
su-$ORACLE_OWNER-c$ORACLE_HOME/bin/dbshut
rm-f/var/lock/subsys/oracle
echo"finished"
;;
reload|restart)
$0stop
$0start
;;
*)
echo"Usage:ora9i[start|stop|reload|restart]"
exit1

esac
exit0
////////////内容//////////////////
给予执行权限,以root身份运行/etc/rc.d/init.d/oraclestart|stop来管理oracle的启动和停止了。如果要将这个脚本加入到系统中使其可开机运行(不过官方是不建议开机自动运行的,我本人也不建议这样做,你确实需要可以这么做),那么要运行以下命令:chkconfig--level35--addoracle
或者以root用户执行如下命令:
#chmoda+x/etc/rc.d/init.d/oracle
#cd/etc/rc.d/rc5.d
#ln-s/etc/rc.d/init.d/oracleS99ora9i
#cd/etc/rc.d/rc0.d
#ln-s/etc/rc.d/init.d/oracleK99ora9i
也可如下自启动oracle9i!
在/etc/rc.d/rc.local中加入如下:
su-oracle-c"/opt/ora9/oracle/product/9.2.0.4/bin/lsnrctlstart"
su-oracle-c"/opt/ora9/oracle/product/9.2.0.4/bin/dbstartstart"

注意:如果启动不理想,请编写shellscripts:
方法:以我个人习惯为例;;;;;;;;;;
#mkdir/usr/local/syscmf

#vi/usr/local/syscmf/oracle.sh
////////////////////////文件内容开始///////////////////

#!/bin/sh
#modifybymingfu060404
#oraclerunscripts
#runuserfororacle
lsnrctlstart
expect/usr/local/syscmf/oracle.exp

////////////////////////文件内容结束///////////////////
#vi/usr/local/syscmf/oracle.exp
////////////////////////文件内容开始///////////////////
#!/usr/local/bin/expect
#modifybymingfu060404
#oraclerunscripts
settimeout120
spawnsqlplus\/nolog
expect"SQL\>"
send"conn\/assysdba\r"
expect"SQL\>"
send"startup\r"
expect"SQL\>"
send"exit\r"

exit
////////////////////////文件内容结束///////////////////
#chownoracle/usr/local/syscmf/*
#chgrporacle/usr/local/syscmf./*
#chmod755/usr/local/syscmf/*

在/etc/rc.local中新增如下内容:
su–oracle/usr/local/syscmf/oracle.sh
删除原来的:
su-oracle-c"/opt/ora9/oracle/product/9.2.0.4/bin/lsnrctlstart"
su-oracle-c"/opt/ora9/oracle/product/9.2.0.4/bin/dbstartstart"

6,关于数据库删除重新安装的问题:
把ORACLE安装目录删除及/etc/ora*.*删除就行了
#rm–f/etc/ora*.*


7,关于在LINUX中运行管理软件$oemapp
#su–oracle
$oemappconsole

8,中文显示不正常解决办法
Oracle目前缺省安装的字符集是WE8MSWIN1252,不是中文字符集,并且不能通过直接运行alterdatabasecharactersetZHS16GBK;来修改,因为ZHS16GBK不是缺省字符集的超集。过去流传很广的直接修改sys用户下的PROPS$表的方法,也会给字符集的变更留下很多潜在的问题.

linux下进行如下的操作来修改字符集:
sqlplus/nolog

sql>conn/assysdba

sql>shutdownimmediate

sql>startupmount

sql>altersystemenablerestrictedsession;

sql>altersystemsetJOB_QUEUE_PROCESSES=0;

sql>altersystemsetAQ_TM_PROCESSES=0;

sql>alterdatabaseopen;

sql>alterdatabasecharactersetinternal_useZHS16GBK;

sql>shutdownimmediate

sql>startup

这样字符集的修改就完成了(如果你在安装时选择了中文字符集,这里就不用修改了)

LAJO服务环境配置完毕.

5.配置LAMP
系统自带安装http+php+mysql软件包,进行配置如下:

Apache配置
修改/etc/httpd/conf/httpd.conf内容如下:
Listen82
ServerName127.0.0.1:82
DocumentRoot"/var/www/html"
<Directory"/var/www/html">

注意:系统已经有两个httpd服务进程.
用户分别是:xxxxapache
请确保
/usr/local/apache2/bin/apachectlstart
/etc/init.d/httpdstart
此两个服务自启动.

Mysql设置

Mysql>createftpdb;

Mysql>grantallprivilegesonftpdb.*toftpuser@localhostidentifiedby“xxxx”;

Mysql>grantallprivilegeson*.*toroot@’%’identifiedby“xxxx”;

Mysql>flushprivileges;

Mysql>exit
请确保
/etc/init.d/mysqldstart
此服务自启动.

LAMP服务环境配置完毕.

7.配置FTP
配合工程实施与建立ftp帐号相关联,方便维护与管理,我这里选择了Proftpd与数据库结合的方式来实现的.

创建Ftpdb结构:

Mysql>useftpdb;

Mysql>CREATETABLE`ftpgroup`(
`groupname`varchar(16)NOTNULLdefault'',
`gid`smallint(6)NOTNULLdefault'5500',
`members`varchar(16)NOTNULLdefault'',
KEY`groupname`(`groupname`)
);

Mysql>CREATETABLE`ftpquotalimits`(
`name`varchar(30)defaultNULL,
`quota_type`enum('user','group','class','all')NOTNULLdefault'user',
`per_session`enum('false','true')NOTNULLdefault'false',
`limit_type`enum('soft','hard')NOTNULLdefault'soft',
`bytes_in_avail`floatNOTNULLdefault'0',
`bytes_out_avail`floatNOTNULLdefault'0',
`bytes_xfer_avail`floatNOTNULLdefault'0',
`files_in_avail`int(10)unsignedNOTNULLdefault'0',
`files_out_avail`int(10)unsignedNOTNULLdefault'0',
`files_xfer_avail`int(10)unsignedNOTNULLdefault'0'
);

Mysql>CREATETABLE`ftpquotatallies`(
`name`varchar(30)NOTNULLdefault'',
`quota_type`enum('user','group','class','all')NOTNULLdefault'user',
`bytes_in_used`floatNOTNULLdefault'0',
`bytes_out_used`floatNOTNULLdefault'0',
`bytes_xfer_used`floatNOTNULLdefault'0',
`files_in_used`int(10)unsignedNOTNULLdefault'0',
`files_out_used`int(10)unsignedNOTNULLdefault'0',
`files_xfer_used`int(10)unsignedNOTNULLdefault'0'
);

Mysql>CREATETABLE`ftpuser`(
`id`int(10)unsignedNOTNULLauto_increment,
`userid`varchar(32)NOTNULLdefault'',
`passwd`varchar(32)NOTNULLdefault'',
`uid`smallint(6)NOTNULLdefault'5500',
`gid`smallint(6)NOTNULLdefault'5500',
`homedir`varchar(255)NOTNULLdefault'',
`shell`varchar(16)NOTNULLdefault'/sbin/nologin',
`count`int(11)NOTNULLdefault'0',
`accessed`datetimeNOTNULLdefault'0000-00-0000:00:00',
`modified`datetimeNOTNULLdefault'0000-00-0000:00:00',
PRIMARYKEY(`id`)
);

Mysql>INSERTINTO`ftpgroup`(`groupname`,`gid`,`members`)VALUES("5dxc","5500","xxxx");

Mysql>INSERTINTO`ftpquotalimits`(`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`)VALUES("test","user","false","soft","1.024e+06","0","0","0","0","0");

Mysql>INSERTINTO`ftpquotatallies`(`name`,`quota_type`,`bytes_in_used`,`bytes_out_used`,`bytes_xfer_used`,`files_in_used`,`files_out_used`,`files_xfer_used`)VALUES("test","user","809781","0","809781","0","0","0");

Mysql>INSERTINTO`ftpuser`(`id`,`userid`,`passwd`,`uid`,`gid`,`homedir`,`shell`,`count`,`accessed`,`modified`)VALUES("1","test","test","5500","5500","/site","/sbin/nologin","0","0000-00-0000:00:00","0000-00-0000:00:00");

配置proftp:
#tarxzvfproftpd-1.3.0rc5.tar.gz
#cdproftpd-1.3.0rc5
#./configure--prefix=/usr/local/proftpd--with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql:mod_ratio--with-includes=/usr/include/mysql--with-libraries=/usr/lib/mysql

#make&&makeinstall

#mv/etc/local/proftpd/etc/proftpd.conf/etc/local/proftpd/etc/proftpd.confbak

#vi/etc/local/proftpd/etc/proftpd.conf
////////////////////////文件内容///////////////////
#ThisisabasicProFTPDconfigurationfile(renameitto
#'proftpd.conf'foractualuse.Itestablishesasingleserver
#andasingleanonymouslogin.Itassumesthatyouhaveauser/group
#"nobody"and"ftp"fornormaloperationandanon.

#ServerName"ProFTPDDefaultInstallation"
ServerName"Mingfu'sftp"
ServerTypestandalone
DefaultServeron

#Port21isthestandardFTPport.
Port21

#Umask022isagoodstandardumasktopreventnewdirsandfiles
#frombeinggroupandworldwritable.
Umask022

#TopreventDoSattacks,setthemaximumnumberofchildprocesses
#to30.Ifyouneedtoallowmorethan30concurrentconnections
#atonce,simplyincreasethisvalue.NotethatthisONLYworks
#instandalonemode,ininetdmodeyoushoulduseaninetdserver
#thatallowsyoutolimitmaximumnumberofprocessesperservice
#(suchasxinetd).
MaxInstances100
MaxLoginAttempts3

#Settheuserandgroupunderwhichtheserverwillrun.
Usernobody
Groupnobody


#TocauseeveryFTPusertobe"jailed"(chrooted)intotheirhome
#directory,uncommentthisline.
#DefaultRoot~
DefaultRoot~

#puttheproftpdlogfilesin/var/log/ftp.syslog
#SystemLog/var/log/ftp.syslog
SystemLog/var/log/xxxx/ftp.syslog

#TransferLoglogfiles
TransferLog/var/log/xxxx/ftp.transferlog

MaxHostsPerUser1"Sorry,youmaynotconnectmorethanonetime1."
MaxClientsPerUser13"Onlyonesuchuseratatime2."
MaxClientsPerHost20"Sorry,youmaynotconnectmorethanonetime3."

#setuptheRestart
AllowRetrieveRestarton
RootLoginoff
RequireValidShelloff
TimeoutStalled600
MaxClients2000
AllowForeignAddresson
AllowStoreRestarton
ServerIdentoff
DefaultRoot~xxxx

#Slowlogins
UseReverseDNSoff
IdentLookupsoff
#IdentLookupsandtcpwrappers***


#Normally,wewantfilestobeoverwriteable.
AllowOverwriteon

TimeoutIdle600

SQLAuthTypesBackendPlaintext

SQLAuthenticateusers*groups*

#databasename@hostdatabase_useruser_password
#SQLConnectInfoftpdb@localhostproftpdpassword
SQLConnectInfoftpdb@localhostftpuserxxxx
SQLUserInfoftpuseruseridpasswduidgidhomedirshell
SQLGroupInfoftpgroupgroupnamegidmembers
SQLHomedirOnDemandon

#Updatecounteverytimeuserlogsin
SQLLogPASSupdatecount
SQLNamedQueryupdatecountUPDATE"count=count+1,accessed=now()WHEREuserid='%u'"ftpuser
#Updatemodifiedeverytimeuseruploadsordeletesafile
SQLLogSTOR,DELEmodified
SQLNamedQuerymodifiedUPDATE"modified=now()WHEREuserid='%u'"ftpuser

QuotaEngineon
QuotaDirectoryTallyon
QuotaDisplayUnitskb
QuotaShowQuotason
QuotaLog"/var/log/quota"

SQLNamedQueryget-quota-limitSELECT"name,quota_type,per_session,limit_type,bytes_in_avail,bytes_out_avail,bytes_xfer_avail,files_in_avail,files_out_avail,files_xfer_availFROMftpquotalimitsWHEREname='%{0}'ANDquota_type='%{1}'"

SQLNamedQueryget-quota-tallySELECT"name,quota_type,bytes_in_used,bytes_out_used,bytes_xfer_used,files_in_used,files_out_used,files_xfer_usedFROMftpquotatalliesWHEREname='%{0}'ANDquota_type='%{1}'"

SQLNamedQueryupdate-quota-tallyUPDATE"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}WHEREname='%{6}'ANDquota_type='%{7}'"ftpquotatallies

SQLNamedQueryinsert-quota-tallyINSERT"%{0},%{1},%{2},%{3},%{4},%{5},%{6},%{7}"ftpquotatallies

QuotaLimitTablesql:/get-quota-limit
QuotaTallyTablesql:/get-quota-tally/update-quota-tally/insert-quota-tally

////////////////////////文件内容///////////////////

在/etc/rc.local文件中新增
/usr/local/proftpd/sbin/proftpd&

LPM配置完毕.
注意:以后添加ftp帐号只需操作ftpuser表添加相应字段.用户磁盘限额操作ftpquotalimits表添加相应字段.
Mysql管理win工具推荐:mysql-front
其中远程连接帐号:
User:root
Host:IP
Pswd:xxxx
(与grantallprivilegeson*.*toroot@’%’identifiedby“xxxx”;
中设置的密码一致).

架设也可参考如下连接:
http://www.mingfor.com/forum/showthread.php?tid=28


8.配置MAIL
配合jboss工程程序实施与建立MAIL帐号相关联,方便维护与管理,我这里选择了邮件服务器与数据库结合的方式来实现的.
具体架设参考邮件发送程序,然后来配置邮件服务器,邮件系统的用户帐号不准创建真实的系统帐号,所有的帐号均建在mysql数据库中.

具体架设过程略。

架设可参考如下连接:
http://www.mingfor.com/forum/showthread.php?tid=19
http://www.extmail.org

9.安全策略
下面是一个简易有效的防火墙设置,只要没有固定IP来入侵,服务器均可正常访问.
因此服务器上线后需要提取服务器通信状态信息.这里服务器已进配置好LAMP环境,因此系统监控请安装CACTI(http://www.cacti.net)软件来监控.
关于它的安装方法比较简单,这里不一一说明了.

还要时时将#netstat–na|grepSYN的结果中连续15个相同的伪连接给DJOP出系统通信间道.
当有这样的入侵连接时….
#iptables–A…………..djop(注意请不要将这个写入到iptables文件中)

下面是iptables文件的所有内容:
#cat/etc/sysconfig/iptables
////////////////////文件内容////////////////////
#Firewallconfigurationwrittenbysystem-config-securitylevel
#Manualcustomizationofthisfileisnotrecommended.
*filter
:INPUTACCEPT[0:0]
:FORWARDACCEPT[0:0]
:OUTPUTACCEPT[0:0]
:RH-Firewall-1-INPUT-[0:0]
-AINPUT-jRH-Firewall-1-INPUT
-AFORWARD-jRH-Firewall-1-INPUT
-ARH-Firewall-1-INPUT-ilo-jACCEPT
-ARH-Firewall-1-INPUT-picmp--icmp-typeany-jACCEPT
-ARH-Firewall-1-INPUT-p50-jACCEPT
-ARH-Firewall-1-INPUT-p51-jACCEPT
-ARH-Firewall-1-INPUT-pudp--dport5353-d224.0.0.251-jACCEPT
-ARH-Firewall-1-INPUT-pudp-mudp--dport631-jACCEPT
-ARH-Firewall-1-INPUT-pudp-s0/0-d0/0--dport177-jACCEPT

#modifybymingfu060404
#Pleasedonotmodifythecontentbelow

#ACKFINSYN
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsSYN,FINSYN,FIN-jDROP

#portscan
#NMAPFIN/URG/PSH
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsALLFIN,URG,PSH-jDROP

#XmasTree
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsALLALL-jDROP

#AnotherXmasTree
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsALLSYN,RST,ACK,FIN,URG-jDROP

#NullScan(possibly)
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsALLNONE-jDROP

#SYN/RST
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsSYN,RSTSYN,RST-jDROP

#SYN/FIN--Scan(possibly)
-ARH-Firewall-1-INPUT-ieth0-ptcp--tcp-flagsSYN,FINSYN,FIN-jDROP

#!--syn
-ARH-Firewall-1-INPUT-ptcp!--syn-mstate--stateNEW-jDROP

#Dos
-ARH-Firewall-1-INPUT-ptcp--dport80-mlimit--limit10/second--limit-burst300-jACCEPT

#syncflood

-Nsynfoold
-Asynfoold-ptcp--syn-mlimit--limit1/s-jRETURN
-Asynfoold-ptcp-jREJECT--reject-withtcp-reset
-ARH-Firewall-1-INPUT-ptcp-mstate--stateNEW-jsynfoold

-Nping
-Aping-picmp--icmp-typeecho-request-mlimit--limit1/second-jRETURN
-Aping-picmp-jREJECT
-IRH-Firewall-1-INPUT-picmp--icmp-typeecho-request-mstate--stateNEW-jping

#-ARH-Firewall-1-INPUT-picmp--icmp-type8-s0/0-jDROP
#-ARH-Firewall-1-INPUT-picmp--icmp-type0-s0/0-jACCEPT
#-ARH-Firewall-1-INPUT-picmp--icmp-type0-slocalip-jDROP
#-ARH-Firewall-1-INPUT-picmp--icmp-type8-slocalip-jDROP

#allports

-ARH-Firewall-1-INPUT-ieth0-mstate--stateESTABLISHED,RELATED-jACCEPT
#FTP
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport20-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport21-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport32800:34000-jACCEPT
#MAIL
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport25-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport113-jACCEPT
#SSH
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport22-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport922-jACCEPT
#WEB
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport80-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport82-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport8088-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport8080-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport443-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport4443-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport7777-jACCEPT
#DNS
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport53-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mudp-pudp--dport53-jACCEPT
#DATABASE
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport3306-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport1521-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport8009-jACCEPT
#VNC
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW-mtcp-ptcp--dport5801:-jACCEPT
#ICMP
-ARH-Firewall-1-INPUT-ieth0-jREJECT--reject-withicmp-host-prohibited

-ARH-Firewall-1-INPUT-ieth0-mstate--stateRELATED,ESTABLISHED-jACCEPT
-ARH-Firewall-1-INPUT-ieth0-mstate--stateNEW,INVALID-jDROP

COMMIT
////////////////////文件内容////////////////////

在/etc/rc.local中新增如下内容:
////////////////////文件内容////////////////////
echo1>/proc/sys/net/ipv4/icmp_echo_ignore_all

echo1>/proc/sys/net/ipv4/tcp_syncookies

echo"1">/proc/sys/net/ipv4/tcp_syn_retries

echo"1">/proc/sys/net/ipv4/tcp_synack_retries

echo8192>/proc/sys/net/ipv4/tcp_max_syn_backlog
////////////////////文件内容////////////////////
其中8192=1024*4*2.更多详情请查阅/proc相关文献介绍

关于获取netstat–na|grepSYN_RECV与TIME_WAIT的脚本:这里我无法写下来。只是原理和主要的代码告诉大家:
使用netstat来统计重复的连线IP,将这些来自同一IP的连线统计一下,
如果超过一个设定值(您自己选择的!),那麽该IP就会被iptables机制挡掉了!
利用shellscript结合iptables来完成(其中用到的linux命令主要有:netstatawkcutsort)。。。
shell脚本中部分主要代码:
///////////////////////////////////////
basedir="/usr/local/syscmf"
#===PartA,abouttheTIMEWAITsignle===#
netstat-an|grep80|grepTIME|awk'{print$5}'|cut-d':'-f1|sort|uniq-c|\
awk'{if($1>=12)print$2}'>$basedir/netstata
sleep14s
netstat-an|grep80|grepTIME|awk'{print$5}'|cut-d':'-f1|sort|uniq-c|\
awk'{if($1>=12)print$2}'>$basedir/netstatb
sleep14s
netstat-an|grep80|grepTIME|awk'{print$5}'|cut-d':'-f1|sort|uniq-c|\
awk'{if($1>=12)print$2}'>$basedir/netstatc
cat$basedir/netstat1$basedir/netstat2$basedir/netstat3|sort|uniq-c|\
awk'{if($1==3)print$2}'>$basedir/netstat-wait.now
denyip_netstat=`cat$basedir/netstat-wait.now`
#===PartB,abouttheSYNRECVsignle===#
netstat-an|grep80|grepSYN|awk'{print$5}'|cut-d':'-f1|sort|uniq-c|\
awk'{if($1>=12)print$2}'>$basedir/netstat1
sleep12s
netstat-an|grep80|grepSYN|awk'{print$5}'|cut-d':'-f1|sort|uniq-c|\
awk'{if($1>=12)print$2}'>$basedir/netstat2
sleep12s
netstat-an|grep80|grepSYN|awk'{print$5}'|cut-d':'-f1|sort|uniq-c|\
awk'{if($1>=12)print$2}'>$basedir/netstat3
cat$basedir/netstat1$basedir/netstat2$basedir/netstat3|sort|uniq-c|\
awk'{if($1==3)print$2}'>$basedir/netstat-syn.now
denyip_netstat=`cat$basedir/netstat-syn.now`
///////////////////////////////////////

关于防止别人来猜测ssh用户登录的密码,修改默认的ssh端口22为922(与防火墙中规则指定的922相一致.)修改方法如下:

#vi/etc/ssh/sshd_config
修改:
#Port22
为:
Port922

注意:修改后的ssh连接方法:sshuser@ip–p922
如果你不想指定-p参数,请修改
/etc/ssh/ssh_config的
#Port22
为:
Port922

建议将提供服务的服务器中的ssh服务端与客服端的ssh通信端口都修改……

10.测试上线

所有的配置完毕,重启服务器.测试好准备上线.

注意:以下服务不能重复多次启动,必须服务在停止的情况下才能启动,否则会出现启动错误.
#su-oracleusr/local/syscmf/oracle.sh
#/etc/rc.d/init.d/jbossstart
关于这两个服务的启动用户与权限:
1.Oracle:
用户:oracle(可以进行系统登录)
切忌有关oracle的操作请在oracle用户环境中进行操作.你实在要在root用户中操作,请不要忘了#su–oracle–c“lsncrctlstart”……..

a.Oracle服务停止:

$sqlplus/nolog

SQL>conn/assysdba

SQL>shutdownimmediate

SQL>exit

$lsnrctlstop

b.Oracle服务启动:
$lsnrctlstart

$sqlplus/nolog

SQL>conn/assysdba

SQL>startup

c.Oracle服务强制启动:
在oracle服务已进启动的情况下也可启动oracle服务.
$sqlplus/nolog

SQL>conn/assysdba

SQL>startupforce

如果你要利用我写的expect自动输入脚本来启动,你需要修改,在里面加入条件判断结构.


2.Jboss:
用户:xxxx(不可以进行系统登录)
切忌有关jboss的操作请在jboss用户环境中进行操作.你实在要在root用户中操作,请不要忘了
#su–xxxx/site/jboss/bin/run.sh

或者
#/etc/init.d/jbossstart

a.xxxx用户环境下:
无法登录如何使用呢?
远程文本界面启动法:
以root登录系统:切换root可以登录到xxxx用户环境来进入xxxx.
#su–xxxx

Jboos启动
$/site/jboss/bin/run.sh

Jboss停止
$/site/jboss/bin/shutdown.sh–S

远程图形界面法:
关于开启远程图形界面登录的问题:
只允许oracle用户可以远程图形界面登录,为了便于操作oracle.
下面是开启改功能的过程:
#su–oracle

$vncserver
Password:********
Password:********

$exit

$ps–ef|grepvnc

将看到的vnc进程kill-9.

$vi.vnc/xstartup

修改:
twm&

gnome-session&

$vncserver

注意:只允许开启一个vnc服务进程…..对应的端口为5801
在已进有vncserver启动的情况下不要在次启动vncserver服务.否则它将在增加一个vnc服务进程…….
http://ip:5801
输入密码即可远程图形登录系统了.

由于是oracle登录到系统的….要启动jboss.需要如下操作:
$su–
Password:********

#su–xxxx

Jboos启动
$/site/jboss/bin/run.sh

Jboss停止
$/site/jboss/bin/shutdown.sh–S

b.root用户环境下:

Jboos启动
#su–xxxx/site/jboss/bin/run.sh

或者
#servicejbossstart

或者
#/etc/init.d/jbossstart

Jboss停止
#su–xxxx/site/jboss/bin/shutdown.sh–S

或者
#servicejbossstop

或者
#/etc/init.d/jbossstop

关于(系统,软件)日志分析,根据自己的使用习惯搭建…..

关于系统用户创建问题,由于系统里面创建的xxxx用户指定了-u=5500.所以在以后创建的系统帐户id=550X,这样会存在安全隐患,所以在创建用户时请指定id=50x(x=5开始.):例如创建user:
#groupadd–g505user
#adduser–u505–guseruser
注意所有的系统帐号id请不要超过5500.

上一页[1][2][3][4][5][6][7][8][9]