说明:
1、以下每个服务要求服务器重启后依然有效;
2、yum服务通过http://172.16.0.1/yum提供;
3、要求selinux处于permissive状态;
4、本地网络为172.16.X.0/24,测试网络为192.168.0.0/24;
5、每位同学的IP地址为172.16.X.1, 子网掩码为255.255.0.0,网关为172.16.0.1,DNS服务器为172.16.0.1,主机名为stuX.example.com,其中X为你的座位号;
 
 
1、主机名称解析服务器配置,要求:#dig -t NS . > named.ca
 
1)建立DNS服务器,负责解析的域为magedu.com;
2)要求将MX记录指向mail.magedu.com,且对应A记录为本机IP;
3)要求将NS记录指向ns.magedu.com,且对应A记录为本机IP;
4)建立www1,www2,proxy等A记录指向本机IP;为mail主机建立别名记录pop3和imaps;
5)为所有A记录建立PTR记录;
6)magedu.com区域仅允许172.16.0.0/16网络中的主机做区域传送;对应的反向区域不允许任何主机做区域传送;
7)为正向区域建立子域委派,两个子域为tech.magedu.com和fin.magedu.com,子域服务器地址为172.16.x.5;(仅给出实现授权的记录即可)
8)将example.com域的所有请求转发至172.16.0.1进行解析;
9)此DNS服务拒绝192.168.1.0/24网络内的任何主机使用;
   yum -y install bind
   主配置文件:
vim /etc/named.conf
      acl Q
      options {
              directory "/var/named";
       };
       zone "." IN {
               type hint;
               file "named.ca";
       };
       zone "localhost" IN {
                type master;
                file "localhost.zone";
       };
       zone "0.0.127.in-addr.arpa" IN {
                 type master;
                 file "named.local";
       };
       zone "magedu.com" IN {
                  type master;
                  file "magedu.com.zone";
                  allow-transfer { 172.16.0.0/16;};
       };
       zone "16.172.in-addr.arpa" IN {
                   type master;
                   file "172.16.zone";
                   allow-transfer { none; };
       };
       zone "example.com" IN {
                  type forward;
                  forwarders {'172.16.0.1;};
                  forward only;
       };
 
    区域配置文件:
    cd  /var/named
     dig -t NS . > named.ca
     vim localhost.zone
     $TTL   600
     @            IN          SOA             localhost.        admin.local. (
                            01
                            2H
                            20M
                            7D
                            1D )
     localhost.   IN        NS             localhost.
     localhost.   IN         A             127.0.0.1
     vim named.local
     $TTL   600
     @            IN          SOA             localhost.        admin.local. (
                            01
                            2H
                            20M
                            7D
                            1D )
     @            IN        NS             localhost.
     1            IN        PTR            127.0.0.1
     vim magedu.com.zone
      $TTL   600
     @            IN          SOA             localhost.        admin.local. (
                            01
                            2H
                            20M
                            7D
                            1D )
                IN   NS     ns
                IN   MX 10  mail
tech.magedu.com IN   NS     ns.tech.magedu.com
fin.magedu.com  IN   NS     ns.fin.magedu.com
ns.tech.magedu.com   IN  A  172.16.5.1
ns.fin.magedu.com    IN  A  172.16.5.1   
ns              IN   A      172.16.5.1
mail            IN   A      172.16.5.1
www1            IN   A      172.16.5.1
www2            IN   A      172.16.5.1
proxy           IN   A      172.16.5.1
pop3            IN   CNAME  mail
imaps           IN   CNAME  mail
        vim 172.16.zone
         $TTL   600
     @            IN          SOA             localhost.        admin.local. (
                            01
                            2H
                            20M
                            7D
                            1D )
                  IN    NS  ns.magedu.com
     1            IN    NS  mail.magedu.com.
     1            IN    PTR ns.magedu.com
     1            IN    PTR www1.magedu.com
     1            IN    PTR www2.magedu.com
     1            IN    PTR proxy.magedu.com
     
#iptables -A INPUT -d 192.168.1.0/24 -p udp --dport 53 -j REJECT
#iptables -A INPUT -d 192.168.1.0/24 -p tdp --dport 53 -j REJECT
 
2、对本机的sshd服务做访问控制,要求:
1)仅允许172.16.0.0/16网段的主机访问;
         vim /etc/hosts.allow
              sshd:172.16.
         vim /etc/hosts.deny
              sshd:ALL
2)仅通过ssh协议的v2版提供服务;Protocol 2
   vim /etc/ssh/sshd_config
               Protocol 2     //默认开户
      3)仅允许root用户、develop组和dba组中的用户访问;
           vim /etc/ssh/sshd_config
               allowusers root
        allowgroups develop dba
3、建立httpd服务器,要求:
1)提供两个基于名称的虚拟主机:
(a)www1.magedu.com,页面文件目录为/var/www/html/www1;错误日志为/var/log/httpd/www1.err,访问日志为/var/log/httpd/www1.access;
(b)www2.magedu.com,页面文件目录为/var/www/html/www2;错误日志为/var/log/httpd/www2.err,访问日志为/var/log/httpd/www2.access;
(c)为两个虚拟主机建立各自的主页文件index.html,内容分别为其对应的主机名;
2)www1主机仅允许172.16.0.0/16网络中的客户机访问;www2主机可以被所有主机访问;
 
编译安装httpd
# yum groupinstall -y "Development Libraries" "Development Tools" "X Software Development"
 
# yum install -y pcre pcre-devel
 
# rpm -Uvh apr-1.4.6-1.i386.rpm
 
# rpm -Uvh apr-devel-1.4.6-1.i386.rpm
 
# rpm -Uvh apr-util-1.4.1-1.i386.rpm
 
# rpm -Uvh apr-util-devel-1.4.1-1.i386.rpm
 
# yum install -y pcre pcre-devel
 
如果没有以上版本的apr和apr-util软件包的rpm版,也可以使用源码包编译安装
 
安装的时候指定--prefix路径,然后在编译apache的时候,使用--apr=/path/to/apr  --apr-util=/path/to/apr-util
  
# tar xf httpd-2.4.1.tar.bz2
 
# cd httpd-2.4.1
 
# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd/ --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib
 
# make
 
# make install
 
#  mkdir -pv /var/www/html/www1
#  mkdir -pv /var/www/html/www2
# echo "<h1><center>www1.magedu.com</center></h1>" >          /var/www/html/www1/index.html
# echo "<h1><center>www2.magedu.com</center></h1>" > /var/www/html/www2/index.html
# vim /etc/httpd/httpd.conf
把Include /etc/httpd/extra/httpd-vhosts.conf 前面的#号去掉
# Virtual hosts
Include /etc/httpd/extra/httpd-vhosts.conf
 
# vi /etc/httpd/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin admin@magedu.com
DocumentRoot "/var/www/html/www1"
ServerName www1.magedu.com
ErrorLog "/var/log/httpd/www1.err"
CustomLog "/var/log/httpd/www1.access" common
  <Directory "/var/www/html/www1">
Order allow,deny
Allow from 172.16.0.0/16
Deny from all
  </Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin@magedu.com
DocumentRoot "/var/www/html/www2"
ServerName www2.magedu.com
ErrorLog "/var/log/httpd/www2.err"
CustomLog "/var/log/httpd/www2.access" common
 </VirtualHost>
 
4、建立nginx服务器,要求:
1)通过8080端口提供服务;
2)提供两个基于名称的虚拟主机(都通过8080端口提供服务):
(a)www1.magedu.com:8080,页面文件目录为/www/html/www1;错误日志为/var/log/nginx/www1.err,访问日志为/var/log/nginx/www1.access;
(b)www2.magedu.com:8080,页面文件目录为/www/html/www2;错误日志为/var/log/nginx/www2.err,访问日志为/var/log/nginx/www2.access;
3)www2主机仅允许172.16.0.0/16网络中的主机访问;
4)为nginx提供sysv服务控制脚本;
5)本机的8080端口仅允许已经建立的连接请求出站,仅允许新请求和已建立连接的请求入站;
编译安装nginx:
首先下载nginx-1.0.13到本地,而后执行如下命令进行编译安装过程:
在编译过程之前首先建立用户及用户组:
# groupadd -r nginx
# useradd -r -g nginx -s /bin/false -M nginx
# tar xf nginx-1.0.13.tar.gz
# cd nginx-1.0.13
# ./configure \
  --prefix=/usr \                               #指定其安装路径
  --sbin-path=/usr/sbin/nginx \                   #指定其脚本路径
  --conf-path=/etc/nginx/nginx.conf \              #指定其配置文件路径
  --error-log-path=/var/log/nginx/error.log \          #错误日志存放路径
  --http-log-path=/var/log/nginx/access.log \            #访问日志的路径
  --pid-path=/var/run/nginx/nginx.pid  \                #进程的pid文件
  --lock-path=/var/lock/nginx.lock \                    #锁文件所在位置
  --user=nginx \                                  #进程运行用户
  --group=nginx \                                #进程运行组
  --with-http_ssl_module \                          #支持ssl模块(https加密)
  --with-http_flv_module \                          #支持流媒体模块
  --with-http_stub_status_module \                    #支持输出数据信息
  --with-http_gzip_static_module \                     #可使用静态gzip压缩
  --http-client-body-temp-path=/var/tmp/nginx/client/ \     #请求内容的暂时存放位置
  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \          #代理服务器的暂时存放位置
  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \           #fastcgi的存放位置
  --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \           #uwsgi的存放位置
  --http-scgi-temp-path=/var/tmp/nginx/scgi \              #简单cgi的存放位置
  --with-pcre                                         #支持pcre
make & make install
 
/usr/sbin/nginx启动nginx
 
1、 提供SysV服务脚本/etc/rc.d/init.d/nginx此处脚本内容编辑如下:
vim /etc/rc.d/init.d/nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15 
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
 
nginx="/usr/sbin/nginx"
prog=$(basename $nginx)
 
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
 
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
 
lockfile=/var/lock/subsys/nginx
 
make_dirs() {
   # make required directories
   user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   options=`$nginx -V 2>&1 | grep 'configure arguments:'`
   for opt in $options; do
       if [ `echo $opt | grep '.*-temp-path'` ]; then
           value=`echo $opt | cut -d "=" -f 2`
           if [ ! -d "$value" ]; then
               # echo "creating" $value
               mkdir -p $value && chown -R $user $value
           fi
       fi
   done
}
 
start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
 
stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
 
restart() {
    configtest || return $?
    stop
    sleep 1
    start
}
 
reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}
 
force_reload() {
    restart
}
 
configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}
 
rh_status() {
    status $prog
}
 
rh_status_q() {
    rh_status >/dev/null 2>&1
}
 
case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac
 
chmod +x /etc/rc.d/init.d/nginx增加配置文件的执行权限
 
加入服务列表:
chckconfig –add nginx 吧nginx 
chkconfig nginx on 设置开机自动启动
netstat –tnlp查看nginx是否已经启动
 
至此nginx源码编译完成
vim /etc/nginx/nginx.conf
 server {
        listen       8080;
        server_name  www1.magedu.com;
        access_log   /var/log/nginx/www1.magedu.com_error_log;
        error_log /var/log/nginx/www1.magedu.com_access_log;
 
        location / {
            root   /www/html/www1;
            index  index.html index.htm;
        }
 
  server {
          listen      8080;
          server_name  www2.magedu.com;
          access_log /var/log/nginx/www2.access ;
          error_log /var/log/nginx/www2.err;
          location / {
          root /www/html/www2;
          index index.html index.htm;
          allow 172.16.0.0/16;
   deny all;
 
       }
    }
iptables -A INPUT -p tcp --dport 8080 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 8080 -m state --state ESTABLISHED -j ACCEPT
 
5、为第3题中的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;
(1)要求使用证书认证,证书中要求使用的国家(CN)、州(Henan)、城市(Zhengzhou)和组织(linux);
(2)设置部门为TECH,主机名为www2.magedu.com,邮件为admin@magedu.com;
(3)此服务禁止来自于192.168.0.0/24网络中的主机访问;
vim /etc/pki/tls/openssl.cnf
   修改  dir    =  /etc/pki/CA
cd /etc/pki/CA
#(umask 077; openssl genrsa 2048 > private/cakey.pem)  此处存放CA的密钥 private/cakey.pem是固定写法
#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650   自己作为CA服务器 申请发证并签证cacert.pem是固定写法
#mkdir cdrts crl newcerts
#touch index.txt serial
#echo 01 > serial
#echo 01 > crlnumber
 
#cd /etc/httpd/
#mkdir ssl
#cd ssl
#(umask 077; openssl genrsa 1024 > httpd.key)    生成私钥文件
#openssl req -new -key httpd.key -out httpd.csr   提起公钥www2.magedu.com
#openssl ca -in httpd.csr -out httpd.crt 请求CA颁发证书
 
vim /etc/httpd/conf
把Include /etc/httpd/extra/httpd-ssl.conf前的#去掉
 
加载ssl所需要的模块,打开第88行和第128行的注释
 
  LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
  LoadModule ssl_module modules/mod_ssl.so
 
vim /etc/httpd/extra/httpd-ssl.conf
</VirtualHost_default_:443>
 
# General setup for the the virtual host
DocumentRoot "/var/www/html/www2
ServerName www2.magedu.com:443
ServerAdmin admin@magedu.com
ErrorLog "/var/log/httpd/error_log"
TransferLog "/var/log/httpd/access_log"
<Directory /var/www/html/www2>
    Order deny,allow
    Deny from 192.168.0.0/24
</Directory>
 
打开以下注释:
SSLCertificateFile "/etc/httpd/ssl/httpd.crt"
SSLCertificateKeyFile "/etc/httpd/ssl/httpd.key"
 
另外:yum install mod_ssl
   vim /etc/httpd/conf.d/ssl.conf
     DocumentRoot "/var/www/html/www1"
     ServerName www2.magedu.com
     SSLCertificateFile /etc/httpd/conf/ssl/httpd.crt
     SSLCertificateKeyFile /etc/httpd/conf/ssl/httpd.key
6、为第3题中的第1个虚拟主机提供php+mysql的服务,要求:
(1)通过在原有主页中添加phpinfo()测试页表明启用php成功;
(2)将mysql的root用户密码设置为"123456"(引号中的内容);
(3)通过http://www1.magedu.com/pma提供本机mysql服务的web管理接口;
 安装mysql-5.5.19
1、准备数据存放的文件系统
 
新建一个逻辑卷,并将其挂载至特定目录即可,过程:
fdisk /dev/sda 建一个分区,大概2G 即可,类型要是8e的。如 /dev/sda5
     # pvcreate /dev/sda5先创建物理卷
     # vgcreate myvg /dev/sda5再创建物理卷组
     # lvcreate -L 1G -n lv1 /dev/myvg   创建逻辑卷并指定大小为1G,名字为lv1 
     # mke2fs -j /dev/myvg/lv1格式化
其逻辑卷的挂载目录为/mydata,则# mkdir /mydata 
                                       # mount /dev/myvg/lv1 /mydata 如果想开机自启动,则可在/etc/fstab内添加内容。 
而后需要创建/mydata/data目录做为mysql数据的存放目录。
    # mkdir /mydata/data
 
 
这里假设其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录。
 
2、新建用户以安全方式运行进程:
 
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
# chown -R mysql:mysql /mydata/data
 
3、安装并初始化mysql-5.5.19
 
首先下载平台对应的mysql版本至本地,这里是32位平台,因此,选择的为mysql-5.5.19-linux2.6-i686.tar.gz, 
 
# tar xf mysql-5.5.19-linux2.6-i686.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mysql-5.5.19-linux2.6-i686  mysql
# cd mysql 
 
# chown -R mysql:mysql  .
# ./scripts/mysql_install_db --user=mysql --datadir=/mydata/data
# chown -R root  .
 
4、为mysql提供主配置文件:
 
# cd /usr/local/mysql
# cp support-files/my-large.cnf  /etc/my.cnf
vim /etc/my.cnf
修改此文件中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行:
thread_concurrency = 2
 
另外还需要添加如下行指定mysql数据文件的存放位置:
datadir = /mydata/data
 
5、为mysql提供sysv服务脚本:
 
# cd /usr/local/mysql
# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld
并查看是否有执行权限,若无 则加上执行权限
service mysqld start
 
添加至服务列表:
# chkconfig --add mysqld
# chkconfig mysqld on
 
而后就可以启动服务测试使用了(service mysql start)。
 
为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:
6、输出mysql的man手册至man命令的查找路径:
 
编辑/etc/man.config,添加如下行即可:
MANPATH  /usr/local/mysql/man
 
7、输出mysql的头文件至系统头文件路径/usr/include:
这可以通过简单的创建链接实现:
# ln -sv /usr/local/mysql/include  /usr/include/mysql
 
8、输出mysql的库文件给系统库查找路径:
 
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
 
而后让系统重新载入系统库:
# ldconfig
若无mysql库文件则:
vim /etc/ld.so.conf.d/mysql.conf
添加/usr/local/mysql/bin
则再次重新载入系统库即可
 
9、修改PATH环境变量,让系统可以直接使用mysql的相关命令。
步骤如下
Vim /etc/profile
增加:PATH=$PATP:/usr/local/mysql/bin
至此mysql源码编译安装完成
mysql
>use mysql
> update user set password=password('123456') where user='root' and host='127.0.0.1';
 
 
编译安装php
 tar xf php-5.3.10.tar.bz2
# cd php-5.3.10
# ./configure --prefix=/usr/local/php4httpd --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt
 
说明:如果前面第1步解决依赖关系时安装mcrypt相关的两个rpm包,此./configure命令还可以带上--with-mcrypt选项以让php支持mycrpt扩展。
 
# make
# make test
# make intall
 
为php提供配置文件:
# cp php.ini-production /usr/local/php/lib/php.ini
 
3、 编辑apache配置文件httpd.conf,以apache支持php
 
 # vim /etc/httpd/httpd.conf
 1、添加如下二行
   AddType application/x-httpd-php  .php
   AddType application/x-httpd-php-source  .phps
 
 2、定位至DirectoryIndex index.html 
   修改为:
    DirectoryIndex  index.php  index.html
 cd /var/www/html/www1
 mv index.html index.php
 vim index.php
 <?php
   phpinfo();
 ?>
 而后重新启动httpd,或让其重新载入配置文件即可测试php是否已经可以正常使用。
 
下载phpMyAdmin-2.11.10-all-languages.tar.gz
tar xvf phpMyAdmin-2.11.10-all-languages.tar.gz 
cd phpMyAdmin-2.11.10
mv * ../pma
cd ../pma
cp config.sample.inc.php config.inc.php
vim config.inc.php  在$cfg['blowfish_secret'] = 'huewfeondhzn'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
然后重新启动服务: service httpd restart
在浏览器输入网址: http://www1.magedu.com/pma
 
7、架设FTP服务器,要求:
(1)可以让匿名用户访问;
  yum install vsftpd
  chkconfig --add vsftpd
  chkconfig vsftpd on
   service vsftpd on
   vim /etc/vsftpd/vsftpd.conf
      anonymous_enable=YES
(2)通过基于mysql的虚拟用户为ftpuser1和ftpuser2提供文件共享服务;且ftpuser1可以上传文件、创建目录、删除文件和下载文件,但ftpuser2只能下载文件;
下载pam_mysql-0.7RC1.tar.gz
# tar zxvf  pam_mysql-0.7RC1.tar.gz
# cd  pam_mysql-0.7RC1
# ./configure --with-mysql=/usr/local/mysql --with-openssl
# make
# make install
mydql -p
 
mysql> create database vsftpd;
 
mysql> grant select on vsftpd.* to vsftpd@localhost identified by '123456';
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by '123456';
 
mysql> use vsftpd
mysql> create table users (
    -> id int AUTO_INCREMENT NOT NULL PRIMARY KEY,
    -> name char(20) NOT NULL UNIQUE KEY,
    -> password char(48) NOT NULL
    -> );
DESC users; 可查看users表都有什么内容
mysql> insert into users(name,password) values('ftpuser1',password('ftpuser1'));
mysql> insert into users(name,password) values('ftpuser2',password('ftpuser2'));
mysql> select * from users\G;
auth required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users  usercolumn=name passwdcolumn=password crypt=2
account required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users  usercolumn=name passwdcolumn=password crypt=2
3.修改vsftpd的配置文件,使其适应mysql认证
 
建立虚拟用户映射的系统用户及对应的目录
#useradd -s /sbin/nologin -d /var/ftpuser ftpuser
#chmod go+rx /var/ftpuser
 
请确保/etc/vsftpd/vsftpd.conf中已经启用了以下选项
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
chroot_local_user=YES
 
为/etc/vsftpd/vsftpd.conf添加以下选项
guest_enable=YES
guest_username=ftpuser
 
修改/etc/vsfptd/vsftpd.conf中的pam_service_name=vsftpd为如下内容:
pam_service_name=vsftpd.my
 
 
添加一行: user_config_dir=/etc/vsftpd/virusers
 mkdir /etc/vsftpd/virusers
 cd /etc/vsftpd/virusers
 vim ftpuser1 
 anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
vim ftpuser2
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
 
(3)FTP服务仅允许172.16.0.0/16中的主机访问,且每秒钟接受的新请求的个数不能超过10个;
#iptables -A INPUT -s 172.16.0.0/16 -p tcp --dport 21 -m state --state NEW -m limit --limit 10/second -j ACCEPT
(4)开启ftp服务的传输日志,日志文件为/var/log/vsftpd.log;
vim /etc/vsftpd.conf
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
8、设置/data目录通过nfs共享,但仅允许172.16.0.0/16网段的主机访问;
#service nfs start
#vim /etc/exports
  /data     172.16.0.0/16
9、为第4题中的第1个虚拟主机提供php+mysql的服务,要求:
(1)通过在原有主页中添加phpinfo()测试页表明启用php成功;
(2)mysql服务器使用跟第6题中的同一个mysql,而php则需要编译安装最新版本;
(3)通过http://www1.magedu.com:8080/wp提供wordpress博客系统;
mysql 已安装
编译安装php
 tar xf php-5.3.10.tar.bz2
# cd php-5.3.10
# ./configure --prefix=/usr/local/php4nginx --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt
 
说明:如果前面第1步解决依赖关系时安装mcrypt相关的两个rpm包,此./configure命令还可以带上--with-mcrypt选项以让php支持mycrpt扩展。
 
# make
# make test
# make intall
 
为php提供配置文件:
# cp php.ini-production /usr/local/php/lib/php.ini
 
3、 编辑apache配置文件httpd.conf,以apache支持php
 
 # vim /etc/httpd/httpd.conf
 1、添加如下二行
   AddType application/x-httpd-php  .php
   AddType application/x-httpd-php-source  .phps
 
 2、定位至DirectoryIndex index.html 
   修改为:
    DirectoryIndex  index.php  index.html
 cd /var/www/html/www1
 mv index.html index.php
 vim index.php
 <?php
   phpinfo();
 ?>
 而后重新启动httpd,或让其重新载入配置文件即可测试php是否已经可以正常使用。
get wordpress-3.0.4-zh_CN.zip
mv wordpress-3.0.4-zh_CN.zip /var/www/html/www1/
cd /var/www/html/www1/
unzip wordpress-3.0.4-zh_CN.zip 
mv wordpress ./
cp wp-config-sample.php wp-config.php
vim wp-config.php
define('DB_NAME','wordpress');
define('DB_USER','wp';
define('DB_PASSWORD','123456');
define('DB_HOST','localhost')
mysql
CREAT DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO wp@localhost IDENTIFIED BY '123456'
FLUSH PRIVILEGES;
 
 
10、通过PAM完成以下功能:
(1)禁止root用户在tty6终端登录;
# vi /etc/pam.d/system-auth
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
# vi /etc/securetty 
删除tty6
 
(2)设置ubuntu用户登录系统后所能够打开的文件个数硬限制为200,软限制为120;
# vim /etc/security/limits.conf 
ubuntu          soft    nofile          120
ubuntu          hard    nofile          200
(3)设置develop组中的用户登录系统后所能够运行的进程数的硬限制为300,软限制为200;
# vi /etc/security/limits.conf 
@develop        soft    nproc           200
@develop        hard    nproc           300
 
11、设置telnet服务,要求:
(1)仅允许来自于192.168.0.0/24中的主机访问此服务;
(2)每个IP所能够发起的并发连接请求最多为6个;
(3)此服务所接受的最大并发连接数为20,达到20时则暂停提供服务10秒钟;
# yum install telnet-server
# vim /etc/xinetd.d/telnet
service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = yes
        only_from       = 192.168.0.0/24
        per_source      = 6
        instances       = 20
        cps             = 20 10
}
 
 
12、设定本机对ping请求的响应:
(1)本机仅接受来自于172.16.0.0/16网络的ping请求,且请求频度每秒不能超过10个;
iptables -A INPUT -s 172.16.0.0/16  -p icmp --icmp-type 8 -m limt --limit 6/second --limit-burst 10 -j ACCEPT
(2)本机可以向其它任意主机发起Ping请求;
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
13、为第4题中的nginx服务的第二个虚拟机建立访问控制,要求:
1)为此虚拟主机提供基本认证功能,并为其提供两个虚拟用户webuser1和webuser2,密码均为redhat,要求允许此两用户在提供密码的情况下访问此站点;
# /usr/local/apache/bin/htpasswd -cm /etc/nginx/.htpasswd webuser1
 
# /usr/local/apache/bin/htpasswd -m /etc/nginx/.htpasswd webuser2
  
# vi  /usr/local/nginx/conf/nginx.conf
 server {
         listen 8080;
         server_name www2.magedu.com;
         root /www/html/www2/;
         index index.html;
         access_log /var/log/nginx/www2.access;
         error_log /var/log/nginx/www2.err;
         auth_basic      "Hi Buddy.";
         auth_basic_user_file    "/etc/nginx/.htpasswd";
    location / {
         allow 172.16.0.0/16;
         deny all;
    }
  } 
  
至此,已完成所有题目,如有错误之处还望指出。