说明:
1、以下每个服务要求服务器重启后依然有效;
2、yum服务通过http://172.16.0.1/yum提供;
3、要求selinux处于enforcing状态;
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为你的座位号;
# cd /etc/yum.repos.d/
# vim rhce.repo
[base]
naem=Server
baseurl=http://172.16.0.1/yum/Server
gpgcheck=0
----------------------------
验证本地网络,IP......
# ifconfig
# route -n @@ 查看网关(Gateway)
# cat /etc/resolve.conf @@查看DNS服务器
-------------------------------------------------------
1、主机名称解析服务器配置,要求:
1)建立DNS服务器,负责解析的域为ilinux.org;
2)要求将MX记录指向mail.ilinux.org,且对应A记录为本机IP;
3)要求将NS记录指向ns.ilinux.org,且对应A记录为本机IP;
4)建立www1,www2,proxy等A记录;为mail主机建立别名记录pop3和imaps;
5)为所有A记录建立PTR记录;
6)ilinux.org区域不允许任何主机做区域传送;对应的反向区域仅允许172.16.0.0/16网络中的主机做区域传送;
7)为正向区域建立子域委派,子域为tech.ilinux.org,子域服务器地址为172.16.x.5;(仅给出实现授权的记录即可)
8)将example.com域的所有请求转发至172.16.0.1进行解析;
9)此DNS服务拒绝192.168.0.0/24网络内的任何主机使用;
# yum install bind caching-nameserver @@能够建立一个纯缓存的DNS服务器
# ls /etc |grep named @@安装完上述软件包,它会自动生成两个文件
# cd /etc
# mv named.caching-nameserver.conf named.conf
# vim !$
---------------------------------------
# vim named.conf
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 "ilinux.org" IN {
type master;
file "ilinux.org.zone";
allow-transfer { none; };
};
zone "16.172.in-addr.arpa" IN {
type master;
file "172.16.zone";
allow-transfer { 172.16.0.0/16; };
};
zone "example.com" IN {
type forward;
forwarders { 172.16.0.1; };
};
-------------------------------------
# cd /var/named
# ll
# vim ilinux.org.zone
$TTL 600
$ORIGIN ilnux.org.
@ IN SOA ns.ilinux.org. admin.ilinux.org. (
2011083001
1H
10M
7D
600 )
IN NS ns.ilinux.org.
IN MX 10 mail.ilinux.org.
ns IN A 172.16.100.1
mail IN A 172.16.100.1
www1 IN A 172.16.100.1
www2 IN A 172.16.100.1
proxy IN A 172.16.100.1
pop3 IN CNAME mail
imaps IN CNAME mail
tech.ilinux.org. IN NS ns.tech.ilinux.org.
ns.tech.linux.org. IN A 172.16.100.5
--------------------------------------
# vim 172.16.zone
$ TTL 600
@ IN SOA ns.iliniux.org. admin.ilinux.org. (
2011083001
1H
10M
7D
600 )
IN NS ns.ilinux.org.
1.100 IN PTR ns.ilinux.org.
1.100 IN PTR mail.ilinux.org.
1.100 IN PTR www1.ilinux.org.
1.100 IN PTR www2.ilinux.org.
1.100 IN PTR proxy.ilinux.org.
--------------------------------------------
# named-checkconf @@语法检测
# named-checkzone "ilinux.org" ilinux.org.zone @@域检测
# named-checkzone "16.172.in-addr.arpa" 172.16.zone
--------------------------------------------
查看一下我们定义的两个文件的权限:
# ll
# chmod --reference=named.ca 172.16.zone ilinux.org.zone @@改其权限和文件named.ca文件一样
# chgrp --reference=named.ca 172.16.zone ilinux.org.zone @@修改其属组
---------------------------------------------
# service named start
# netstat -tunl @@看一下53号端口是否启动
---------------------------------------------
验证下解析:
dig -t -A www1.ilinux.org @172.16.100.1 @@指向自己
--------------------------------------------
# vim /etc/resolv.conf @@修改DNS服务器
nameserver 172.16.100.1
--------------------------------------------
拒绝192.168.0.0/24网络内的任何主机使用
@@用REJECT 直接返回拒绝信息的,DROP没有
# cd
# iptables -A INPUT -s 192.168.0.0/24 -d 172.16.100.1 -p udp --dport 53 -j REJECT @@明确拒绝
# iptables -A INPUT -s 192.168.0.0/24 -d 172.16.100.1 -p tcp --dport 53 -j REJECT
# service iptables save @@保存下iptables的规则
# iptables -L -n
---------------------------------------------
2、对本机的sshd服务做访问控制,要求仅允许172.16.0.0/16网段的主机访问,并且仅通过ssh协议的v2版提供服务;
# vim /etc/ssh/sshd_config @@默认情况下就是v2版本
# iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.1 -p tcp --dport 22 -j ACCEPT
# iptables -A INPUT -d 172.16.100.1 -p tcp --dport 22 -j REJECT
# iptables -L -n
---------------------------------------------------------------------
或者:
# vim /etc/hosts.allow
sshd: 172.16.0.0/255.255.0.0
# vim /etc/hosts.deny
sshd: ALL
----------------------------------------------------------------------------------------
3、建立samba共享,共享目录为/data,要求:
1)共享名为shared,工作组为ilinux,可以被浏览;
2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;
3)添加samba用户gentoo,centos和ubuntu,密码均为“redhat”;
4)此samba共享shared仅允许develop组具有写权限,其他用户只能以只读方式访问;
5)此samba共享服务仅允许来自于172.16.0.0/16网络的主机访问;
-------------------------------------------------------------------------
# yum install -y samba
# mkdir /data
# vim /etc/samba/smb.conf
workgroup = ilinux @@修改工作组名称
hosts allow = 127. 172.16. @@启用此选项,且设置仅允许172.16.0.0/16网段主机访问
@@在最后添加共享
[shared]
comment = shared
path = /data
browseable = yes
public = yes @@等价于:guest ok = yes
write list = +develop
---------------------------------------
# testparm @@做用法检测
---------------------------------------
# groupadd develop
# useradd -G develop gentoo
# echo "gentoo" | passwd --stdin gentoo
# useradd -G develop centos
# echo "centos" | passwd --stdin centos
# useradd ubuntu
# passwd ubuntu
---------------------------------------
# smbpasswd -a gentoo /centos/ubuntu
redhat
redhat
---------------------------------------
# vim /etc/samba/smb.conf @@有关于SELINUX的提示
# chcon -t samba_share_t /data/
---------------------------------------
# service smb start
# chkconfig smb on @@开机自动启动
在另一个客户端验证samba服务
# smbclient -L 172.16.100.1 -U gentoo
# smbclient //172.16.100.1/shared -U gentoo
lcd /etc
put fstab @@被拒绝
exit
@@此时gentoo用户还没有上传文件的权限
-----------------------------------------
在172.16.100.1上设置/data目录的权限
# setfacl -m g:develop:rwx /data/
此时再另一台主机上
# smbclient //172.16.100.1/shared -U gentoo
lcd /etc
put fstab @@可以上传了
exit
验证下ubuntu用户是否可以上传文件,我们规定的是它没有上传的权限
# smbclient //172.16.100.1/shared -U ubuntu
lcd /etc
put inittab @@上传失败
exit
4、设置/data目录通过nfs共享,但仅允许172.16.0.0/16网段的主机访问;为了避免端口冲突,要求nfsd的几个辅助进程使用固定端口提供服务;
# vim /etc/exports
/data 172.16.0.0/16(ro)
--------------------------------------
# vim /etc/sysconfig/nfs
启动那六个默认的端口实现固定端口提供服务
# service nfs start
# rpcinfo -p localhost @@验证一下那几个端口是否启动
# chkconfig nfs on
---------------------------------------------------------------------------------------------
5、建立http服务器,要求:
1)提供两个基于名称的虚拟主机:
(a)www1.ilinux.org,页面文件目录为/var/www/html/www1;错误日志为/var/log/httpd/www1.err,访问日志为/var/log/httpd/www1.access;
(b)www2.ilinux.org,页面文件目录为/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主机可以被所有主机访问;
# yum install httpd
# mkdir -p /var/www/html/www1
# mkdir -p /var/www/html/www2
--------------------------------
等价于:# mkdir /var/www/html/www{1,2}
那四个关于日志的文件不用建立,自己自动创建。
# echo "www1.ilinux.org" > /var/www/html/www1/index.html
# echo "www2.ilinux.org" > /var/www/html/www2/index.html
# chcon -R --reference=/var/www/html /var/www/html/www1 @@不用管的,自己的权限和/var/www/html是相同的
# chcon -R --reference=/var/www/html /var/www/html/www2
# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html" ##取消中心主机,这行前加上#号
#NameVirtualHost *:80 ##此行前的#取消掉,启用虚拟主机选项
最后添加:
<VirtualHost *:80> ##注意*前有空格
ServerName www1.ilinux.org
DocumentRoot /var/www/html/www1
ErrorLog /var/log/httpd/www1.err
CustomLog /var/log/httpd/www1.access common ##要指出访问日志的级别
<Directory "/var/www/html/www1">
Options FollowSymLinks
AllowOverride None
Order Allow,Deny
Allow from 172.16.0.0/16
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www2.ilinux.org
DocumentRoot /var/www/html/www2
ErrorLog /var/log/httpd/www2.err
CustomLog /var/log/httpd/www2.access common
<Directory "/var/www/html/www2">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from ALL
</Directory>
</VirtualHost>
--------------------------------------
# service httpd configtest @@检测语法
# service httpd start
# chkconfig httpd on
----------------------------------------
可以在浏览器中验证一下httpd的服务
http://172.16.100.1
# cd /var/log/httpd
# ls @@查看一下那几个日志文件是否存在,自动生成的
-----------------------------------------------------------------------
6、建立MTA(可以按需要使用sendmail或者postfix),要求:
(1)可以接受本地和远程邮件,但要拒绝来自于192.168.0.0/24网络的所有邮件;能够为来自于172.16.0.0/16网络的主机上的用户中继邮件(但不包括172.16.x.10这台主机);
(2)为此MTA启用SASL认证功能,认证通过的用户可以通过此服务器中继邮件,但拒绝ubuntu用户发送邮件;
(3)设置别名,要求所有发往ubuntu用户的邮件都被转发给gentoo;所有发往customers的邮件同时发给gentoo和centos;
-------------------------------------------------------------------
# /etc/init.d/sendmail stop
# chkconfig sendmail off
# yum install postfix
# rpm -e sendmail
# /etc/init.d/postfix start
因为Linux系统至少需要一个MTA来让系统内部的账号传送邮件,所以必须先安装了postfix后才可以删除sendmail。顺序不要搞错
-----------------------------------------------
# vim /etc/postfix/main.cf
myhostname = mail.ilinux.org
mydomain = ilinux.org
myorigin = $mydomain
inet_interfaces = all @@启用此选项,接受本地和远程邮件,关闭另一个inet_interfaces
mydestination = $myhostname, localhost.$mydomain, localhost, mail.$mydomain, $mydomain
mynetworks_style = host
mynetworks = 127.0.0.0/8, 172.16.0.0/16 @@ hash:/etc/postfix/access @@可以给谁中继的
--------------------
最后添加:实现SASL认证的功能:
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,
reject_unauth_destination
smtpd_client_restrictions = hash:/etc/postfix/client
smtpd_sender_restrictions = hash:/etc/postfix/sender
smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!
或者:
*********************************************************************************************
# cd /etc/postfix
# vim client
172.16.100.10 REJECT
# postmap client
# vim sender
ubuntu@ REJECT
# postmap sender
**************************************************************************************
# vim /etc/aliases
ubuntu: gentoo
customers: gentoo, centos
# newaliases @@重新生成这个文件
**************************************************************************************
# iptables -A INPUT -s 192.168.0.0/24 -d 172.16.100.1 -p tcp --dport 25 -j REJECT
# service iptables save
**************************************************************************************
# service postfix restart
# netstat -tnlp @@查看一下tcp25
# hostname mail.ilinux.org
# telnet mail.ilinux.org 25
mail from:[email protected]
RCPT TO:[email protected] @@会出现Access denied
quit
# echo "To Ubuntu" | mail -s "to ubuntu" [email protected]
# tail /var/log/maillog
# su - ubuntu
# mail @@收邮件,会发现 No mail for ubuntu
exit
# su -gentoo
# mail
**********************************************************************
# service saslauthd start
# chkconfig saslauthd on
# vim /usr/lib/sasl2/smtpd.conf
# vim /etc/sysconfig/saslauthd
MECH=shadow
# service saslauthd restart
# testsaslauthd -u gentoo -p gentoo
# ps auxZ | grep dovecot
---------------------------------------------
验证pop3的收信
# telnet pop3.ilinux.org 110
USER gentoo
PASS gentoo
LIST
RETR 1 @@可以看到第一封邮件的内容
quit
**********************************************************************************************
7、设置pop3服务器,要求来自172.16.0.0/16网络中的用户可以通过pop3服务收取自己的邮件,但来自于192.168.0.0/24中的用户不能通过此pop3收取邮件;
---------------------------------------------
# yum install dovecot
# vim /etc/dovecot.conf
protocols = pop3
# service dovecot start
# chkconfig dovecot on
-----------------------------------------------
# iptables -A INPUT -s 192.168.0.0/24 -d 172.16.100.1 -p tcp --dport 110 -j RECEJT
# service dovecot save
# service dovecot restart
-----------------------------------------------
# telnet pop3.ilinux.org 110
USER [email protected]
PASS gentoo
8、架设FTP服务器,要求:
(1)可以让匿名用户访问;
(2)gentoo可以通过ftp服务访问自己的家目录,且能够上传文件;
(3)FTP服务仅允许172.16.0.0/16中的主机访问;
#yum install vsftpd
#vim /etc/hosts.allow
vsftpd:172.16.0.0/255.255.0.0
#vim /etc/hosts.deny
vsftpd:ALL
#service vsftpd start
#chkconfig vsftpd on
-------------------------------------------------
另一台主机访问验证:
# lftp -u gentoo 172.16.100.1
ls
@@会发现用户是没法访问自己的家目录的
--------------------------------------------------
设置让用户可以访问自己的家目录:
# getsebool -a |grep ftp @@会发现ftp_home_dir --> off 自己是默认没法访问家目录的
# setsebool -P ftp_home_dir=1 @@这样就可以实现terra用户能够通过ftp服务访问自己的家目录了。
------------------------------------------
在此登录别的主机:验证
# lftp -u gentoo 172.16.100.1
lcd /etc
put fstab
bye
*********************************************************************************************************
9、启用imaps服务,要求:
(1)仅接受来自于172.16.0.0/16网络中主机上的用户访问;
(2)要求使用证书认证,证书中要求使用的国家(CN)、州(Henan)、城市(Zhengzhou)和组织(ilinux);
(3)设置部门为TECH,主机名为imaps.ilinux.org,邮件为[email protected];
*********************************************************************************************************
# cd /etc/pki/tls/certs
# ls
# make dovecot.pem @@证书和私钥都有了,都在这个文件中。 此种方法是没有CA的
# vim /etc/dovecot.conf
ssl_cert_file = /etc/pki/tls/certs/dovecot.pem
ssl_key_file = /etc/pki/tls/certs/dovecot.pem @@启用并修改这两项
protocols = pop3 imaps @@将imaps 协议加进来
# service dovecot restart
# netstat -tnlp @@查看tcp993端口
----------------------------------------------------------------
验证:
# mutt -f imaps://imaps.ilinux.org
输入 o @@表示接受
gentoo
gentoo
----------------------------------------------------------------
# iptables -A INPUT -s 172.16.0.0/16 -d 172.16.0.0/16 -d 172.16.100.1 -p tcp --dport 993 -j ACCEPT
# iptables -A INPUT -d 172.16.100.1 -p tcp --dport 993 -j REJECT
# service iptables save
******************************************************************************************
#iptables -A input -s ! 172.16.0.0/16 -d 172.16.11.1 -p tcp --dport 993 -j ACCEPT
#cd /etc/pki/CA
#mkdir certs newcerts crl
#touch index.txt
#echo 01 > serial
#vim /etc/pki/tls/openssl.cnf
#(umask 066;openssl genrsa 1024 > cakey.pem)
#openssl req -new -x509 -key cakey.pem -out cacert.pem -days 3650
#mkdir -p /etc/dovecot
#cd !$
#mkdir ssl
#(umask 066;openssl genrsa 1024 > dovecot.key)
#openssl req -new -key dovecot.key -out dovecot.csr -days 3650
#openssl ca -in dovecot.csr -out dovecot.crt -days 3650
#vim /etc/dovecot.conf
修改证书,私钥
启用:protocols
10、为第5题中的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;
(1)要求使用证书认证,证书中要求使用的国家(CN)、州(Henan)、城市(Zhengzhou)和组织(linux);
(2)设置部门为TECH,主机名为www2.ilinux.org,邮件为[email protected];
(3)此服务禁止来自于192.168.0.0/24网络中的主机访问;
# cd
# yum install mod_ssl @@安装ssl的模块
# cd /etc/pki/tls/certs
# make httpd.pem
# vim /etc/httpd/conf.d/ssl.conf
DocumentRoot "/var/www/html/www2"
ServerName www2.ilinux.org:443
SSLCertificateFile /etc/pki/tls/certs/httpd.pem
SSLCertificateKeyFile /etc/pki/tls/certs/httpd.pem
-------------------------------------------------------
# service httpd restart
# netstat -tnlp @@查看有没有443的端口
-------------------------------------------------------
验证:
https://172.16.100.1
-------------------------------------------------------
# iptables -A INPUT -s 192.168.0.0/24 -d 172.16.100.1 -p tcp --dport 443 -j REJECT
# service iptables save
# chkconfig httpd on
****************************************************************************************
11、为第5题中的第1个虚拟主机提供php+mysql的服务,要求:
(1)通过在原有主页中添加phpinfo()测试页表明启用php成功;
(2)将mysql的root用户密码设置为"123456"(引号中的内容);
(3)通过http://www1.ilinux.org/phpmyadmin提供本机mysql服务的web管理接口;
#yum install php php-mysql php-mbstring mysql-server
#cd /var/www/html/www1
#vim index.html
添加:<?php
phpinfo();
?>
#mv index.html index.php
#service httpd restart
----------------------------------------------------
# service mysqld start
# chkconfig mysqld on
#mysql
mysql>set password for root@localhost=password('123456');
mysql>set password for [email protected]=password('123456');
mysql>FLUSH PRIVILEGES;
---------------------------------------------------------
验证:此时需要指定用户,密码
# mysql -uroot -p
_______________________________________________________________________
# tar xf phpMyAdmin-2.11.10-all-languages.tar.gz -C /var/www/html/
# cd /var/www/html
# mv phpMyAdmin-2.11.10-all-languages phpmyadmin
# vim /etc/httpd/conf/httpd.conf
在<VirtualHost *:80>中定义,添加
Alias /phpmyadmin "/var/www/html/phpmyadmin"
# service httpd restart
# cd phpmyadmin
# cp config.sample.inc.php config.inc.php
# vim !$
修改第17行:$cfg['blowfish_secret'] = '';
在单引号内输入任意字符。
---------------------------------------------
http://172.16.100.1/phpmyadmin
@@验证
********************************************************************************************
#tar xf phpMyAdmin-2.11.10-all-languages.tar.gz -C /var/www/html/www1/
#cd !$
#mv phpMyAdmin-2.11.10-all-languages phpmyadmin
#cd phpmyadmin
#ls
#cp config.sample.inc.php config.inc.php
#vim config.inc.php
修改第17行:$cfg['blowfish_secret'] = '';
在单引号内输入任意字符。
#service httpd restart
--------------------------
*** 注意:当你把phpMyAdmin解压到其他目录,而后又将phpMyAdmin移动或复制到/var/www/html/www1下并改名。而不是直接指定到解压目录时。此时你就得修改phpmyadmin下文件的类型了。使用chcon做修改。
#cd /var/www/html/www1
#chcon -R -t httpd_sys_content_t phpmyadmin
12、为http服务提供第3个虚拟主机,要求:
1)www3.ilinux.org,页面文件目录为/var/www/html/www3;错误日志为/var/log/httpd/www3.err,访问日志为/var/log/httpd/www3.access;
2)为此虚拟主机提供基本认证功能,并为其提供两个虚拟用户webuser1和webuser2,密码均为redhat,要求允许此两用户在提供密码的情况下访问此站点;
#vim /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
DocumentRoot /var/www/html/www3
ServerName www3.ilinux.org
ErrorLog /var/log/httpd/www3.err
CustomLog /var/log/httpd/www3.access combined
<Directory /var/www/html/www3>
AllowOverride AuthConfig
AuthName "Auth"
AuthType basic
AuthUserFile /etc/httpd/conf/.webusers
Require valid-user
</Directory>
</VirtualHost>
#cd /etc/httpd/conf
#htpasswd -c -m .webusers webuser1
#htpasswd -m .webusers webusers2