- 论坛徽章:
- 0
|
需要安装的软件:
apache2 php5-mysql libapache2-mod-php5 mysql-server libapache2-mod-auth-mysql
设置MYSQL的root密码
#mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('upwd');
创建MYSQL数据库
mysql> CREATE DATABASE database1;
创建MYSQL用户
mysql> GRANT ALL PRIVILEGES ON *.* TO 'u_username'@'localhost' IDENTIFIED BY 'upwd' WITH GRANT OPTION;
Apache的设置
#vi /etc/apache2/apache2/.conf
搜索每一个'User'和'Group'关键字并更改为当前用户和用户组,之后重新启动apache。
启动、重启Apache
启动 #/etc/init.d/apache2 start
重启 #/etc/init.d/apache2 restart
停止 #/etc/init.d/apache2 stop
.htaccess的目录密码保护
在需要密码保护的文家夹中,新建 。htaccess文件
输入一下内容
AuthUserFile /your/path/.htpasswd
AuthName "Authorization Required"
AuthType Basic
require valid-user
如果仅仅需要用密码来保护一个文件,那么.htaccess的内容就应如下
<Files "mypage.html">
Require valid-user
</Files>
然后在建立/your/path/.htpasswd,并包含用户名和密码。htpasswd命令的格式如下
htpasswd -c /path/to/your/.htpasswd user1
-c这个参数代表新建一个文件,如果您不是第一次使用,就应该去掉-c这个参数。如果这个用户已经存在了,那么就是会覆盖。 不过,您还是应该把这个文件存在一个尽可能安全的地方,它的权限属性应该尽可能的少。 仅仅需要网络服务能够读取它就已经足够了。
最后,我们在/etc/apache2/apache2.conf中加入以下几行
<Directory /your/path>
AllowOverride All
</Directory>
调整/your/path/.htpasswd
最后重启Apache
附:Apache服务
/etc/apache2/apache2.conf
将
AddDefaultCharset ISO-8859-1
改为
AddDefaultCharset zh_CN.UTF8 设置编码
增加安全模块,mod-security
#apt-get install libapache2-mod-security
激活模块
#ln -s /etc/apache2/mods-available/mod.security.load /etc/apache2/mods-enable/mod-security.load
#cp /usr/share/doc/libapache2-mod-security/examples/httpd2.conf.example-full /etc/apache2/mods-available/mod-security.conf
#cp /etc/apache2/mods-available/mod-security.conf /etc/apache2/mods-available/mod-security.conf.orig
#vi /etc/apache2/mods-available/mod-security.conf
============mod-security.conf内容============
#检测内容长度以避免堆溢出攻击
SecFilterForceByteRange 32 254 =>SecFilterForceByteRange 32 126
#debug设置
SecFilterDebugLevel 9 =>SecFilterDebugLevel 0
#设置缺省的动作
SecFilterDefaultAction "deny,log,status:499" =>SecFilterDefaultAction "deny,log,status:404"
#把设置传递给子目录
SecFilterInheritance Off
# Redirect user on filter match
# 当匹配sh的时候,重新定向到一个特殊的警告页面,该页面是自行编写的,写些警告的话让攻击者知难而退,该段先不要生效,等到相关配置配好之后再失效不迟。记住在配好之后要使之生效。
#SecFilter sh redirect:http://localhost/hack/warning.htm
# Prevent OS specific keywords
#过滤一些敏感的东西,我们使用*是为了攻击者使用/etc/./passwd来绕开检测
SecFilter /etc/passwd =>SecFilter /etc/*passwd
SecFilter /bin/*sh
# Very crude filters to prevent SQL injection attacks
# 防止SQL插入(SQL Injection)攻击
SecFilter "delete[[:space:]]+from"
SecFilter "insert[[:space:]]+into"
SecFilter "select.+from"
SecFilter "select[[:space:]]+from"
SecFilter "union[[:space:]]+from"
==== mod-security.conf 文件内容结束====
sudo ln -s /etc/apache2/mods-available/mod-security.conf /etc/apache2/mods-enabled/mod-security.conf
重启Apache2
附:Apache PHP配置
php配置文件 /etc/php5/apache2/php.ini
===========php.ini==============
memory_limit = 8M =>修改成你所需的内存大小
upload_max_filesize = 2M =>修改文件最大上传尺寸
...
extension=mysql.so 支持Mysql服务
extension=gd.so 支持gd函数
#打开安全模式,打开他的好处就是PHP文件只能访问所有者和PHP文件所有着一样的文件,即使在chroot环境下也无法访问jail 中属主不一样的文件,类似于php shell这样的后门就没用武之地了哦,phpshell是很流行的php后门,他可以执行系统命令,就象他的名字一样,和shell很接近。
safe_mode = On
#下面的设置就限制了fopen(), file()等函数可以操作的目录范围,避免了入侵者非法读取文件,一定要在/var/www后面加"/",否则/var/wwww下的文件也能被访问。该选项会禁止任何不在/var/www/目录下的PHP文件运行,包括任何以软链接方式链到/var/www/目录下的程序,如PhpMyAdmin 包,就在该选项设定后无法正常运行。
open_basedir = /var/www/
#禁止使用phpinfo和get_cfg_var函数,这样可以避免泄露服务信息,一般在在确认PHP能正常工作之后再使之关闭
disable_functions = phpinfo,get_cfg_var
#设置php程序错误日志
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_err.log
#如果php程序没有指明需要register_globals的话,最好把register_globals设置为Off,这样可以避免很多安全问题的。注意,如果你的程序是需要register_globals的话,可千万别关。Ubuntu默认是关闭的。
register_globals = Off
#禁止打开远程地址,记得最近出的php include的那个漏洞吗?就是在一个php程序中include了变量,那么入侵者就可以利用这个控制服务器在本地执行远程的一个php程序,例如phpshell,所以我们关闭这个。
allow_url_fopen = Off |
|