Alex的博客

由于博客程序改版,且org域名无法备案。 故此博客不再更新,以转为新 站博文家。 https://www.32e.top



centos lamp+vsftpd

yum -y install httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-mcrypt php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc mysql-connector-odbc mysql-devel libdbi-dbd-mysql libjpeg*

 

yum -y update

yum -y install httpd php vsftpd mysql-server

 
/sbin/service mysqld restart

chkconfig --levels 235 mysqld on

/etc/init.d/mysqld start

mysqladmin -u root password 123456

service mysqld restart

mysql -u root -p123456

CREATE DATABASE vsftpd;

GRANT SELECT ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY  'vsftpdpassword';

FLUSH PRIVILEGES;

USE vsftpd;

CREATE TABLE `accounts` (
 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
 `username` VARCHAR( 30 ) NOT NULL ,
 `pass` VARCHAR( 50 ) NOT NULL ,
 UNIQUE (`username`)
 ) ENGINE = MYISAM ;

exit;

useradd -G users -s /bin/false -d /var/www vsftpd   //创建用户并设置家目录,主要这个家目录一定要是你的ftp管理目录,否则会无法访问一般是网站根目录

cp  /etc/vsftpd/vsftpd.conf   /etc/vsftpd/vsftpd.conf.bak

 


# 拒绝 ANONYMOUS 用户
anonymous_enable=NO
# 允许拥有写入权限(0755)的本地用户
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
# 如果你想记录 vsftpd 的动静,请除去 log_ftp_protocol 的注释
# log_ftp_protocol=YES
connect_from_port_20=YES
# 如果你没有采用以上的 log_ftp_protocol 行,请除去 xferlog_file 及
# xferlog_std_format 的注释 ?? 它们是互相排除的
# 当 xferlog_enable=YES 及 xferlog_std_format=YES 时所采用的文件名称
# 警告 ?? 更改这个文件名影响 /etc/logrotate.d/vsftpd.log
xferlog_file=/var/log/xferlog
#
# xferlog_std_format 切换记录是放进 vsftpd_log_file 还是 xferlog_file 文件内。
# NO 写入 vsftpd_log_file,YES 写入 xferlog_file
 xferlog_std_format=YES
#
# 你可以更改工作阶段闲置时限的缺省值(以秒计算)。
#idle_session_timeout=600
#
# 你可以更改连接时限的缺省值(以秒计算)。
#data_connection_timeout=120
#
# 请为指定一个在系统上是完全被隔离、没有特权、及可供 ftp 服务器使用的用户。
nopriv_user=vsftpd
chroot_local_user=YES
listen=YES
# 在这里我们采用 vsftpd 的凭证模块来检查用户名称及口令
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
# 在这里 vsftpd 会允许 vsftpd 这个用户登录 /home/vsftpd/$USER 这个目录
guest_enable=YES
guest_username=vsftpd
local_root=/var/www/$USER
user_sub_token=$USER
virtual_use_local_privs=YES

#允许被动模式
pasv_enable=YES
#允许主动模式
port_enable=yes
#命令通道端口,默认为21
listen_port=1921
#被动模式最低端口
pasv_min_port=9881  
#被动模式最高端口
pasv_max_port=9990

ftpd_banner="凸=(-_-)=凸"

use_localtime=YES

 

 

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

cat /dev/null > /etc/pam.d/vsftpd

vi /etc/pam.d/vsftpd

 

#%PAM-1.0
 session       optional        pam_keyinit.so       force revoke
 auth required pam_mysql.so user=vsftpd passwd=vsftpdpassword  host=localhost db=vsftpd table=accounts usercolumn=username   passwdcolumn=pass crypt=3
 account required pam_mysql.so user=vsftpd passwd=vsftpdpassword  host=localhost db=vsftpd table=accounts usercolumn=username  passwdcolumn=pass crypt=3

 

yum -y install pam_mysql
运行上面的以后下面括号里面的内容可以不操作

(

wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/pam_mysql-0.7-0.5.rc1.el5.kb.2.i386.rpm

64

wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/pam_mysql-0.7-0.5.rc1.el5.kb.2.x86_64.rpm

rpm -Uvh pam_mysql-0.7-0.5.rc1.el5.kb.2.i386.rpm

如果提示没有 libmysqlclient.so.16

那么就下载安装MySQL-shared-compat-5.1.73-1.rhel5.i386.rpm

wget http://cdn.mysql.com/Downloads/MySQL-5.1/MySQL-shared-compat-5.1.73-1.rhel5.i386.rpm

64

wget http://cdn.mysql.com/Downloads/MySQL-5.1/MySQL-shared-compat-5.1.73-1.rhel5.x86_64.rpm


rpm -ivh MySQL-shared-compat-5.1.73-1.rhel5.i386.rpm

然后

yum -y install pam_mysql-0.7-0.5.rc1.el5.kb.2.i386.rpm

)


ls -al /lib/security/pam_m*


-rwxr-xr-x 1 root root  8024 Sep  4 00:51 /lib/security/pam_mail.so
-rwxr-xr-x 1 root root 15848 Sep  4 00:51 /lib/security/pam_mkhomedir.so
-rwxr-xr-x 1 root root  3892 Sep  4 00:51 /lib/security/pam_motd.so
-rwxr-xr-x 1 root root 36920 Feb 28  2008 /lib/security/pam_mysql.so

mysql -u root -pqinxia

USE vsftpd;

INSERT INTO accounts (username, pass) VALUES('test1', md5('password1'));

select * from accounts;
 +----+-----------+----------------------------------+
 | id | username  | pass                             |
 +----+-----------+----------------------------------+
 |  1 | qinxia    | 5ebe2294ecd0e0f08eab7690d2a6ee69 |
 +----+-----------+----------------------------------+
 1 rows in set (0.00 sec)

mkdir /var/www/test1

chown vsftpd:users /var/www/test1 设置目录所有者

chmod -R 777 /var/www/test1   设置目录权限

/sbin/service vsftpd restart


/sbin/iptables -I INPUT -P tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -P tcp --dport 80 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart

selinux设置

getsebool -a |grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_tftp_anon_write --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off
tftpd_disable_trans --> off

 

我们只要打开ftp_home_dir的值开启为on

setsebool -P ftp_home_dir 1

为了避免麻烦,我直接把allow_ftpd_full_access也一同开启:

setsebool -P allow_ftpd_full_access 1

 


setenforce 0

cp /etc/sysconfig/iptables-config /etc/sysconfig/iptables-config.free

vi /etc/sysconfig/iptables-config    添加ip_conntrack_ftp 模块

添加下面一行

IPTABLES_MODULES="ip_conntrack_ftp" 

iptables -A INPUT -p tcp --dport 20 -j ACCEPT

-A INPUT -p tcp -m multiport --dport 5021,9981:9990 -j ACCEPT 

 

services iptables restart


yum -y install httpd php php-mysql
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak

vi /etc/httpd/conf/httpd.conf

/Directory

修改为

<Directory  /var/www/html>
    php_admin_value open_basedir  /var/www/html :/tmp   (添加)

</Directory>
 

/ErrorDocument 403

去掉#号修改为:

 ErrorDocument 403 www.btfw.org/error.html

然后创建一个error.html的报错页面 

可以防止403错误泄露服务器版本和apache版本

添加 ServerName localhost:80     可以防止警告(Could not reliably determine the server's fully qualified domain name) 


/NameVirtualHost

NameVirtualHost 192.168.1.1:80     (做虚拟主机这里一定要有就是本机ip 否者无法访问处第一个站之外的其他站)

<VirtualHost www.ghnet.tk>

<Directory  /var/www/html/down>
    php_admin_value open_basedir  /var/www/html/down    (限制只允许访问自己的家目录,不能访问家目录以上的目录)
</Directory>

ServerName www.ghnet.tk:80

 ServerAlias ghnet.tk:80

DocumentRoot /var/www/qinxia

DirectoryIndex index.html index.htm index.php

ErrorLog "logs/dummy-host.www.freewind.com-error.log"
CustomLog "logs/dummy-host.www.freewind.com-access.log" common

</VirtualHost>


<VirtualHost 192.168.1.1:80>

ServerName www.wg0802bbs.tk

DocumentRoot /var/www/muma

DirectoryIndex DarkTeam.htm index.html index.htm

</VirtualHost>

 

vi /etc/php.ini

/display_errors =
display_errors = Off    #关闭php报错提示

#AddDefaultCharset utf-8  //网站支持多种编码格式
service httpd restart

chkconfig --levels 235 httpd on
chkconfig --levels 235 vsftpd on

 

/var/lib/mysql/  数据库目录

 

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;

root远程登陆

 

 

 

启用vsftpd日志及其解读(转贴)

在vsftpd.conf中有如下内容定义了日志的记录方式:

# 表明FTP服务器记录上传下载的情况
xferlog_enable=YES
# 表明将记录的上传下载情况写在xferlog_file所指定的文件中, 即xferlog_file选项指定的文件中
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
# 启用双份日志。在用xferlog文件记录服务器上传下载情况的同时,
# vsftpd_log_file所指定的文件,即/var/log/vsftpd.log也将用来 记录服务器的传输情况
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log

vsftpd的两个日志文件分析如下:

/var/log/xferlog 

记录内容举例

Thu Sep 6 09:07:48 2007 7 192.168.57.1 4323279   /home/student/phpMyadmin-2.11.0-all-languages.tar.gz  b -i r student ftp 0 * c 

/var/log/vsftpd.log 

记录内容举例

Tue Sep 11 14:59:03 2007 [pid 3460]    CONNECT: Client "127.0.0.1"
Tue Sep 11 14:59:24 2007 [pid 3459] [ftp] OK LOGIN;Client "127.0.0.1" ,anon   password ”?"  

 /var/log/xferlog日志文件中数据的分析和参数说明 

FTP数字代码的意义

110 重新启动标记应答。
120 服务在多久时间内ready。
125 数据链路端口开启,准备传送。
150 文件状态正常,开启数据连接端口。
200 命令执行成功。
202 命令执行失败。
211 系统状态或是系统求助响应。
212 目录的状态。
213 文件的状态。
214 求助的讯息。
215 名称系统类型。
220 新的联机服务ready。
221 服务的控制连接端口关闭,可以注销。
225 数据连结开启,但无传输动作。
226 关闭数据连接端口,请求的文件操作成功。
227 进入passive mode。
230 使用者登入。
250 请求的文件操作完成。
257 显示目前的路径名称。
331 用户名称正确,需要密码。
332 登入时需要账号信息。
350 请求的操作需要进一部的命令。
421 无法提供服务,关闭控制连结。
425 无法开启数据链路。
426 关闭联机,终止传输。
450 请求的操作未执行。
451 命令终止:有本地的错误。
452 未执行命令:磁盘空间不足。
500 格式错误,无法识别命令。
501 参数语法错误。
502 命令执行失败。
503 命令顺序错误。
504 命令所接的参数不正确。
530 未登入。
532 储存文件需要账户登入。
550 未执行请求的操作。
551 请求的命令终止,类型未知。
552 请求的文件终止,储存位溢出。  
553 未执行请求的的命令,名称不正确。

浏览2957  评论0  Alex于 2011-10-2 18:07
发言