1.CentOS 6.2编译安装Nginx1.0.14+MySQL5.5.22+PHP5.3.10步骤分享
2.linuxå建ç®å½å½ä»¤linuxå建å½ä»¤
3.什么是源码缓冲区溢出
CentOS 6.2编译安装Nginx1.0.14+MySQL5.5.22+PHP5.3.10步骤分享
说明:操作系统:CentOS 6.2 位
准备篇:
一、配置好IP、源码DNS 、源码网关,源码确保使用远程连接工具能够连接服务器
二、源码配置防火墙,源码java访问网页源码开启端口、源码端口
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport -j ACCEPT(允许端口通过防火墙)
-A INPUT -m state --state NEW -m tcp -p tcp --dport -j ACCEPT(允许端口通过防火墙)
特别提示:很多网友把这两条规则添加到防火墙配置的源码最后一行,导致防火墙启动失败,源码正确的源码应该是添加到默认的端口这条规则的下面
添加好之后防火墙规则如下所示:
#########################################################
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
#########################################################
/etc/init.d/iptables restart #最后重启防火墙使配置生效
三、关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq 保存,源码关闭
shutdown -r now #重启系统
四 、源码系统约定
软件源代码包存放位置:/usr/local/src
源码包编译安装位置:/usr/local/软件名字
五、源码下载软件包
1、源码下载nginx(目前稳定版)
.php.net/distributions/php-5.3..tar.gz
5、源码下载cmake(MySQL编译工具)
f /etc/my.cnf #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)
vi /etc/my.cnf #编辑配置文件,源码编辑器在 [mysqld] 部分增加
datadir = /data/mysql #添加MySQL数据库路径
./scripts/mysql_install_db --user=mysql #生成mysql系统数据库
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld #把Mysql加入系统启动
chmod /etc/init.d/mysqld #增加执行权限
chkconfig mysqld on #加入开机启动
vi /etc/rc.d/init.d/mysqld #编辑
basedir = /usr/local/mysql #MySQL程序安装路径
datadir = /data/mysql #MySQl数据库存放目录
service mysqld start #启动
vi /etc/profile #把mysql服务加入系统环境变量:在最后添加下面这一行
export PATH=$PATH:/usr/local/mysql/bin
下面这两行把myslq的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时可以不用指定mysql的库文件地址。
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
shutdown -r now #需要重启系统,等待系统重新启动之后继续在终端命令行下面操作
mysql_secure_installation #设置Mysql密码
根据提示按Y 回车输入2次密码
或者直接修改密码/usr/local/mysql/bin/mysqladmin -u root -p password "" #修改密码
service mysqld restart #重启
到此,mysql安装完成!
五、安装 nginx
groupadd www #添加www组
useradd -g www www -s /bin/false #创建nginx运行账户www并加入到www组,不允许www用户直接登录系统cd /usr/local/src
tar zxvf nginx-1.0..tar.gz
cd nginx-1.0.
./configure --prefix=/usr/local/nginx --user=www --group=www --with-tl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl #配置
make #编译
make install #安装
cp php.ini-production /usr/local/php5/etc/php.ini #复制php配置文件到安装目录
rm -rf /etc/php.ini #删除系统自带配置文件
ln -s /usr/local/php5/etc/php.ini /etc/php.ini #添加软链接
cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf #拷贝模板文件为php-fpm配置文件
vi /usr/local/php5/etc/php-fpm.conf #编辑
user = www #设置php-fpm运行账号为www
group = www #设置php-fpm运行组为www
pid = run/php-fpm.pid #取消前面的分号
设置 php-fpm开机启动
cp /usr/local/src/php-5.3./sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm #拷贝php-fpm到启动目录
chmod +x /etc/rc.d/init.d/php-fpm #添加执行权限
chkconfig php-fpm on #设置开机启动
vi /usr/local/php5/etc/php.ini #编辑配置文件
找到:;open_basedir =
修改为:open_basedir = .:/tmp/ #防止php木马跨站,重要!源码编程器!
找到:disable_functions =
修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
找到:;date.timezone =
修改为:date.timezone = PRC #设置时区
找到:expose_php = On
修改为:expose_php = OFF #禁止显示php版本的信息
找到:display_errors = On
修改为:display_errors = OFF #关闭错误提示
七、配置nginx支持php
vi /usr/local/nginx/conf/nginx.conf
修改/usr/local/nginx/conf/nginx.conf 配置文件,需做如下修改
user www www; #首行user去掉注释,修改Nginx运行组为www www;必须与/usr/local/php5/etc/php-fpm.conf中的user,group配置相同,否则php运行出错
index index.php index.html index.htm; #添加index.php
# pass the PHP scripts to FastCGI server listening on .0.0.1:
#
location ~ /.php$ {
root html;
fastcgi_pass .0.0.1:;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#取消FastCGI server部分location的指标源码注释,并要注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径
/etc/init.d/nginx restart #重启nginx
八、配置php支持Zend Guard
安装Zend Guard
cd /usr/local/src
mkdir /usr/local/zend #建立Zend安装目录
tar xvfz ZendGuardLoader-php-5.3-linux-glibc-i.tar.gz #解压安装文件
cp ZendGuardLoader-php-5.3-linux-glibc-i/php-5.3.x/ZendGuardLoader.so /usr/local/zend/ #拷贝文件到安装目录
vi /usr/local/php5/etc/php.ini #编辑文件
在最后位置添加以下内容
[Zend Guard]
zend_extension=/usr/local/zend/ZendGuardLoader.so
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path=
测试篇
cd /usr/local/nginx/html/ #进入nginx默认网站根目录
rm -rf /usr/local/nginx/html/* #删除默认测试页
vi index.php #新建index.php文件
?php
phpinfo();
?
:wq! #保存
chown www.www /usr/local/nginx/html/ -R #设置目录所有者
chmod /usr/local/nginx/html/ -R #设置目录权限
shutdown -r now #重启
在客户端浏览器输入服务器IP地址,可以看到相关的配置信息!
service nginx restart #重启nginx
service mysqld restart #重启mysql
/usr/local/php5/sbin/php-fpm #启动php-fpm
/etc/rc.d/init.d/php-fpm restart #重启php-fpm
/etc/rc.d/init.d/php-fpm stop #停止php-fpm
/etc/rc.d/init.d/php-fpm start #启动php-fpm
#############################################################################
备注:
nginx默认站点目录是:/usr/local/nginx/html/
权限设置:chown www.www /usr/local/nginx/html/ -R
MySQL数据库目录是:/data/mysql
权限设置:chown mysql.mysql -R /data/mysql
到此,CentOS 6.2下 Nginx1.0.+MySQL5.5.+PHP5.3.+Zend Guard Loader基本运行环境搭建完成!
linuxå建ç®å½å½ä»¤linuxå建å½ä»¤
linuxå½ä»¤å¦ä½æ°å»ºä¸ä¸ªæ件ï¼1ãç»ç«¯ä¸é®å ¥ï¼touchå æ件åï¼è¿æ ·å°±å建äºä¸ä¸ªæ件ã
2ãç¨lså½ä»¤å³å¯æ¥çååå建çæ件ã
3ãç¶åå°±å¯ä»¥éæç¼è¾è¿ä¸ªæ件äºã
æ©å±èµæ
1ãLinux常ç¨çå½ä»¤ï¼archæ¾ç¤ºæºå¨çå¤çå¨æ¶æï¼uname-ræ¾ç¤ºæ£å¨ä½¿ç¨çå æ ¸çæ¬ã
linuxä¿®æ¹å½ä»¤ï¼
chmod
u+s
ifconfig
ç»å½ä»¤æ·»å ä¸ä¸ªsetuidæéå°±å¯ä»¥ï¼è¿æ ·æ§è¡å½ä»¤æ¶ï¼æ®éç¨æ·å°±æäºrootã
å¨linuxä¸ï¼ä¸ç®¡æ¯rootç¨æ·è¿æ¯æ®éç¨æ·ï¼é½å¯ä»¥ä½¿ç¨âpasswordâå½ä»¤æ¥æ´æ¹èªèº«çå¯ç ãä½æ¯ï¼linuxä¸çå¯ç é常æ¯ä¿åå¨â/etc/paswdâåâ/etc/shadowâæ件ä¸ï¼è¿ä¸¤ä¸ªæ件对系ç»å®å ¨è³å ³éè¦ï¼å æ¤åªærootç¨æ·æè½å¯¹å ¶æ§è¡è¯»åæä½ã以管çåç身份ç»éç³»ç»ï¼å¨linxuæ示符ä¸æ§è¡âls
/etc/passwd
/etc/shadowâå½ä»¤ï¼å¨è¿åä¿¡æ¯ä¸å¯ä»¥çå°æ®éç¨æ·å¯¹ä¸è¿°è¿ä¸¤ä¸ªæ件并没æåæéï¼å æ¤ä»æ件å±æ§çè§åº¦çï¼æ®éç¨æ·å¨æ´æ¹èªèº«å¯ç æ¶ï¼æ¯æ æ³å°å¯ç ä¿¡æ¯åå ¥å°ä¸è¿°æ件ä¸çï¼åªä¹ç¨æ·æ¯ææ ·æåçæ´æ¹å¯ç çå¢ï¼å®é ä¸ï¼é®é¢çå ³é®ä¸å¨äºå¯ç æ件æ¬èº«ï¼èå¨äºå¯ç æ´æ¹å½ä»¤âpasswdâãå¨æ示符ä¸æ§è¡å½ä»¤âls
/usr/bin/passwdâ,å¨è¿åä¿¡æ¯ä¸çæ件ææè æ§è¡æéä½ä¸æ¾ç¤ºâsâåæ ·ï¼è¡¨ç¤ºâpasswdâå½ä»¤å ·æsetuidæéï¼å ¶ææè 为rootï¼è¿æ ·æ®éç¨æ·å¨æ§è¡âpasswdâå½ä»¤æ¶ï¼å®é ä¸ä»¥ææç¨æ·rootç身份æ¥æ§è¡çï¼å¹¶å ·æäºç¸åºçæéï¼ä»èå°æ°çå¯ç åå ¥å°â/etc/passwdâåâ/etc/shadowâæ件ä¸ï¼å½å½ä»¤æ§è¡å®æ¯ï¼è¯¥ç¨æ·ç身份ç«å³æ¶å¤±ãå¦ä½è®¾ç½®setuidæéå¢ï¼ä½¿ç¨âchmodâå½ä»¤å³å¯ä¸ºæå®æ件设置setuidæéï¼ä¾å¦âchmod
4xxx
filenameâå½ä»¤ï¼åæ¶setuidæéçå½ä»¤ä¸ºâchmod
xxx
filenameâã类似çï¼æ§è¡âchmod
2xxx
filenameâå½ä»¤å¯ä»¥è®¾ç½®setuidæéï¼ä½¿ç¨âchmod
xxx
filenameâå½ä»¤å³å¯åæ¶setgidæéï¼å¦ææ§è¡âchmod
6xxx
filenameâå½ä»¤ï¼å³å¯åæ¶ä¸ºæå®æ件设置setuidåsetgidï¼æ§è¡å½ä»¤âchmod
0xxx
filenameâï¼å³å¯åæ¶åæ¶æå®æ件çsetuidåsetgidæéãä¾å¦ä»¥rootç¨æ·ç»éç³»ç»ï¼æ§è¡âchmod
/usr/bin/passwdâå½ä»¤ï¼å°±å¯ä»¥åæ¶âpasswdâå½ä»¤çsetuidæéï¼è¿æ ·æ®éç¨æ·å°±æ æ³ä¿®æ¹èªå·±çå¯ç äºã
linuxä¸makeå½ä»¤æä¹ç¨ï¼
ç¨æ³ï¼
1ãmakeï¼
è¿ä¸æ¥å°±æ¯ç¼è¯ï¼å¤§å¤æ°çæºä»£ç å é½ç»è¿è¿ä¸æ¥è¿è¡ç¼è¯ï¼å½ç¶æäºperlæpythonç¼åç软件éè¦è°ç¨perlæpythonæ¥è¿è¡ç¼è¯ï¼ã
å¦æå¨makeè¿ç¨ä¸åºç°errorï¼å°±è¦è®°ä¸é误代ç ï¼æ³¨æä¸ä» ä» æ¯æåä¸è¡ï¼ï¼ç¶åå¯ä»¥åå¼åè æ交bugreportï¼ä¸è¬å¨INSTALLéææ交å°åï¼ãæè ç³»ç»å°äºä¸äºä¾èµåºçï¼è¿äºéè¦èªå·±ä»ç»ç 究é误代ç ã
makeçä½ç¨æ¯å¼å§è¿è¡æºä»£ç ç¼è¯ï¼ä»¥åä¸äºåè½çæä¾ï¼è¿äºåè½ç±ä»çMakefile设置æ件æä¾ç¸å ³çåè½ã
æ¯å¦makeinstallä¸è¬è¡¨ç¤ºè¿è¡å®è£ ï¼makeuninstallæ¯å¸è½½ï¼ä¸å åæ°å°±æ¯é»è®¤çè¿è¡æºä»£ç ç¼è¯ã
makeæ¯Linuxå¼åå¥ä»¶éé¢èªå¨åç¼è¯çä¸ä¸ªæ§å¶ç¨åºï¼ä»éè¿åå©Makefileéé¢ç¼åçç¼è¯è§èè¿è¡èªå¨åçè°ç¨gccãld以åè¿è¡æäºéè¦çç¨åºè¿è¡ç¼è¯çç¨åºã
ä¸è¬æ åµä¸ï¼ä»æ使ç¨çMakefileæ§å¶ä»£ç ï¼ç±configureè¿ä¸ªè®¾ç½®èæ¬æ ¹æ®ç»å®çåæ°åç³»ç»ç¯å¢çæã
linuxéå建ä¸ä¸ªææ¬æ件çå½ä»¤æ¯ä»ä¹ï¼
touchfilenameå°±å建äºä¸ä¸ªæ件å为filenameç空ææ¬æ件linuxä¸çé»è®¤çæä»¶æ ¼å¼é½æ¯çº¯ææ¬,ä¸ç¨èèåç¼çé®é¢
linuxå¯å¨å½ä»¤ï¼
ä¸ï¼å¯å¨Nginxæå¡--å¨sbinç®å½ä¸
å¯å¨å½ä»¤:./nginx
å ³éå½ä»¤:./nginx-sstopå./nginx-squit
å·æ°é ç½®æ件:./nginx-sreload(æ¯æ¬¡å¯¹Nginxçé ç½®æ件nginx.confä¿®æ¹åï¼é½è¦è¿è¡éæ°å è½½é ç½®æ件)
äºï¼è¿ç¨
æ¥çè¿ç¨ps-ef|grep-ixxxx-i大æ¦æ¯ignoreæ¯å¿½ç¥çææè¿éæ¯å¿½ç¥å¤§å°åã
ææ»è¿ç¨kill-9xxxx
ä¸ï¼é²ç«å¢
å¼å¯é²ç«å¢serviceiptablesstart
å ³éé²ç«å¢serviceiptablesstop
æ¥çé²ç«å¢çç¶æserviceiptablesstatus
æ°¸ä¹ å ³éé²ç«å¢chkconfigiptablesoff
åï¼å¯å¨zookeeperæå¡--å¨zookeeperçbinç®å½ä¸
å¼å¯zookeeperæå¡ï¼./zkServer.shstart
æ¥çzookeeperç¶æ./zkServer.shstatus
äºï¼å¯å¨Redisæå¡--å¨redisçbinç®å½ä¸
以åå°çæ¹å¼å¯å¨ï¼./redis-server../redis.conf(åé¢ççredis.confè·¯å¾è¦æ ¹æ®æ¯ä¸ªäººé ç½®æ件åæ¾çä½ç½®æ¥å)
è¿å ¥rediså½ä»¤æå¡ï¼./redis-cli
è¾å ¥ï¼pingå¦æè¿åpongå表示è¿æ¥æåï¼
å .å¯å¨tomcatæå¡
Linuxä¸tomcatæå¡çå¯å¨ãå ³éä¸é误è·è¸ªï¼ä½¿ç¨PuTTyè¿ç¨è¿æ¥å°æå¡å¨ä»¥åï¼é常éè¿ä»¥ä¸å ç§æ¹å¼å¯å¨å ³étomcatæå¡ï¼
åæ¢å°tomcat主ç®å½ä¸çbinç®å½ï¼cdusr/local/tomcat/binï¼
1ï¼å¯å¨tomcatæå¡
æ¹å¼ä¸ï¼ç´æ¥å¯å¨./startup.sh
æ¹å¼äºï¼ä½ä¸ºæå¡å¯å¨nohup./startup.sh
æ¹å¼ä¸ï¼æ§å¶å°å¨æè¾åºæ¹å¼å¯å¨./catalina.shrunå¨æå°æ¾ç¤ºtomcatåå°çæ§å¶å°è¾åºä¿¡æ¯,Ctrl+Cåéåºå¹¶å ³éæå¡
解éï¼
éè¿æ¹å¼ä¸ãæ¹å¼ä¸å¯å¨çtomcatæ个å¼ç«¯ï¼å½å®¢æ·ç«¯è¿æ¥æå¼çæ¶åï¼tomcatæå¡ä¹ä¼ç«å³åæ¢ï¼éè¿æ¹å¼äºå¯ä»¥ä½ä¸ºlinuxæå¡ä¸ç´è¿è¡
éè¿æ¹å¼ä¸ãæ¹å¼äºæ¹å¼å¯å¨çtomcatï¼å ¶æ¥å¿ä¼åå°ç¸åºçæ¥å¿æ件ä¸ï¼èä¸è½å¨æå°æ¥çtomcatæ§å¶å°çè¾åºä¿¡æ¯ä¸é误æ åµï¼éè¿æ¹å¼ä¸å¯ä»¥ä»¥æ§å¶å°æ¨¡å¼å¯å¨tomcatæå¡ï¼
ç´æ¥çå°ç¨åºè¿è¡æ¶åå°çæ§å¶å°è¾åºä¿¡æ¯ï¼ä¸å¿ æ¯æ¬¡é½è¦å¾éº»ç¦çæå¼catalina.outæ¥å¿æ件è¿è¡æ¥çï¼è¿æ ·ä¾¿äºè·è¸ªæ¥é åå°è¾åºä¿¡æ¯ãtomcatæ§å¶å°ä¿¡æ¯å æ¬log4jåSystem.out.println()çè¾åºçä¿¡æ¯ã
2ï¼å ³étomcatæå¡
./shutdown.sh
ä¸>å¯å¨æ°æ®åº:
servicemysqldstartå¯å¨
servicemysqldrestartéå¯
什么是缓冲区溢出
缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是 程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间想匹配,这就为缓冲区溢出埋下隐患.
操作系统所使用的缓冲区又被称为堆栈. 在各个操作进程之间,指令会被临时储存在堆栈当中,堆栈也会出现缓冲区溢出.
缓冲区溢出有时又称为堆栈溢出攻击,是过去的十多年里,网络安全漏洞常用的一种形式并且易于扩充。相比于其他因素,源码缓冲区溢出是网络受到攻击的主要原因。
例如:计算机在内存中存储了所有的东西,包括程序、数据和。如果计算机要求用户输入8位字符密码却接收到了位字符的密码,多出来的字符可以写在内存中的其他地方。但事实并不是这样。这就是个小错误。
_______________________________________________________
缓冲区溢出的处理
由于缓冲区溢出是一个编程问题,所以只能通过修复被破坏的程序的代码而解决问题。如果你没有源代码,从上面“堆栈溢出攻击”的原理可以看出,要防止此类攻击,我们可以:
1、开放程序时仔细检查溢出情况,不允许数据溢出缓冲区。由于编程和编程语言的原因,这非常困难,而且不适合大量已经在使用的程序;
2、使用检查堆栈溢出的编译器或者在程序中加入某些记号,以便程序运行时确认禁止黑客有意造成的溢出。问题是无法针对已有程序,对新程序来讲,需要修改编译器;
3、经常检查你的操作系统和应用程序提供商的站点,一旦发现他们提供的补丁程序,就马上下载并且应用在系统上,这是最好的方法。但是系统管理员总要比攻击者慢一步,如果这个有问题的软件是可选的,甚至是临时的,把它从你的系统中删除。举另外一个例子,你屋子里的门和窗户越少,入侵者进入的方式就越少。