感谢支持
我们一直在努力

红帽RHCE实验红宝石书(下)

注意:所有实验不涉及SElinux,请用命令关闭

1、squid代理服务设置

• yum install squid 安装squid软件

• chkconfig squid on 设置squid代理服务的开启

• service squid restart

• netstat -tpln | grep squid 查看3128端口的开启

• 修改/etc/squid/squid.conf

–http_port 3128 设置代理服务端口3128

–cache_mem 8MB 使用内存8MB缓冲

–cache_dir ufs /var/spool/squid 100 16 256

–上面的两条是默认,看看即可。

2、• 定义访问控制列表

• acl WORKINGTIME time MTWHF 9:00-17:50

–定义一个上班时间段time因素(周一到周五)的列表名字叫WORKINGTIME

• acl SALE_DEP src 192.168.0.0/255.255.255.0

–定义一个源src因素的列表名字叫SALE_DEP

• 定义在上班时间段允许销售部门的访问

–http_access allow WORKINGTIME SALE_DEP

• 设置浏览器的代理为这台服务器IP和端口3128

• 重新启动squid服务,接着测试网站,再修改时间date —set

“2009-04-12 17:51:00” 超出9:00-17:50段,再测试

3、vsftpd服务端设置

• yum install vsftpd 安装vsftpd软件包

• chkconfig vsftpd on 设置vsftpd服务的开启

• netstat -tpln | grep vsftpd 检测网络端口21

• lftp -u anonymous localhost 测试匿名帐户的登录

• 默认匿名帐户可以登录

• 修改/etc/vsftp/vsftp.conf

–anonymous_enable=yes 改为no,重启服务再做测试

• 普通用户上传测试

4、vsftpd解决匿名帐号上传实验

• 修改回anonymous_enable=yes,重启服务器再做测试,anonymous帐户不能上传文件到服务器

• lftp -u anonymous localhost

• put /etc/inittab 结果失败

• 在/etc/vsftpd/vsftpd.conf文件搜索anon,去掉下面的注释,重启服务,再做匿名上传测试

• anon_upload_enable=yes

• anon_mkdir_write_enable=yes

• 这时仍不能上传,setenforce 0先行屏蔽SELinux或者设置chcon -R -t public_content_rw_t/var/ftp/pub

• 最后将vsftp匿名登录共享的目录权限添加写入权限

• chmod a+wx /var/ftp/pub

–lftp -u user01 localhost

• put /etc/inittab 此文件将上传到用户user01的主目录中;ls /home/user01查看上传的文件

5、引导分区/boot被破坏之修复

• umount /boot 卸载boot目录下分区的挂载

• mkfs.ext3 /dev/sda1 我们格式化系统,模拟破坏

• mount -a 再根据/etc/fstab表中的内容自动挂载

• init 6 重启系统

• 这时的系统由于没有引导所需的核心文件,和初始化ramdisk,系统不能在grub环境中修复

• 重启系统,利用网络引导,在boot提示符下

• boot: linux rescue 将系统引导到救援模式

• 设置好语言,键盘布局后,系统扫描之后,提示我们使用

–chroot /mnt/sysimage

• 利用ftp服务器下载核心文件

• lftp 192.168.0.254

–cd pub/Server

–get kernel-2.6.18.xxx 下载对应的核心文件,并退出

• rpm -ivh —force kernel-2.6.18.xxx 强行将核心软件包再安装一次

• 在对grub修复

• grub-install /dev/sda

• 手工创建/boot/grub/grub.conf文件

• 参见grub修改

7、NFS网络文件系统设置

• vim /etc/exports 修改配置添加一些共享的文件夹

–/tmp 192.168.0.0/24(ro)

–/www 192.168.0.0/24(rw,root_squash)

• 可以写入的资源,但是root在网络文件夹创建的文件将变成nfsnobody帐户

–/www1 192.168.0.0/24(rw,no_root_squash)

• 可以写入的资源,但是root在网络文件夹创建的文件将仍然为root帐户

保存退出,重启服务

service nfs restart

• 在其他客户机上使用下面的命令做检测

–showmount -e servername 查看自己服务器的资源

• 在客户机上建立三个目录

–mkdir /mnt/ro; mkdir /mnt/rw1; mkdir /mnt/rw2

• 把网络资源挂载到三个目录上

– mount -t nfs servername:/tmp /mnt/ro

–测试往此目录写文件,测试失败/tmp属性为只读

– mount -t nfs servername:/www1 /mnt/rw1

–测试往此目录写文件,ls /mnt/rw1发现文件为nfsnobody用户,证明root_squash属性

– mount -t nfs servername:/www2 /mnt/rw2

–测试往此目录写文件,ls /mnt/rw1发现文件为root用户,证明non_root_squash属性

• 修改NFS服务对应的端口

• vim /etc/sysconfig/nfs 去掉下面的注释,修改端口

–MOUNTD_PORT=”4002″

STATD_PORT=”4003″

LOCKD_TCPPORT=”4004″

LOCKD_UDPPORT=”4004″plain

• 重启nfs服务,添加规则到iptables中

– iptables -I INPUT -p tcp —dport 4002:4004 -j ACCEPT

• 使用netstat -tpln 对端口的查看,看端口是否修改后有效

• rpcinfo -p localhost 对自己portmap服务资源做查看

• exportfs -v 再次查看自己共享出来目录夹

8、samba服务设置

• yum install samba* 安装samba软件包

• chkconfig smb on samba的服务名为smb

• rpm -ql samba | grep etc 查看samba的配置文件

• rpm -ql samba | grep bin 查看samba的执行命令

• service smb start先行启动服务

• netstat -tpln | grep smb 其端口为137,138,139,445

• 设置防火墙允许通过这些端口

–iptables -I INPUT -p tcp —dport 137:139 -j ACCEPT

–iptables -I INPUT -p tcp —dport 445 -j ACCEPT

• 修改/etc/samba/smb.conf

workgroup = MYGROUP

security = share 先修改为共享模式,此模式无需密码

[share1]

path = /sharefolder1 绝对路径,我们想共享出来的目录

writeable = yes 允许写入

public = yes 可以让guest帐户浏览到

• 保存退出

• testparm 对配置文件做测试

• service smb restart 重启服务

• 对之前共享安全模式的测试

• smbclient -L localhost 无需使用用户名查看网络资源

• mkdir /mnt/share; 建立一个目录夹

• mount -t cifs //localhost/share1 /mnt/share

• 对这个资源在本机测试挂载,并向其中写入文件,测试写入。

– echo “test writing file “ > /mnt/share/writeable

• 将/etc/samba/smb.conf文件改为 –security = user 基于用户的验证方式

• 保存配置,重启smb服务再使用smbclient -L localhost 查看。对原来的挂载将无法成功。现在需要建立用户。

• useradd smbuser01 ; smbpasswd -c smbuser01;

• 添加测试的帐户名,并将其对应为smb中的用户

• smbclient -L localhost -U smbuser01

• mount -o username=smbuser01 -t cifs

//localhost/share1 /mnt/share

• 测试用户验证模式,需要帐户名和密码

• 将/etc/samba/smb.conf文件改为

[share1]

path = /sharefolder1绝对路径,我们想共享出来的目录

writeable = no 测试只读属性

• 保存退出,service smb restart 重启服务

• 重新挂载测试只读的属性

• 在次修改添加

–[share1]

write list = smbuser02 对之前的只读属性添加一个可写入的帐户smbuser02

• smbpasswd smbuser02; mount -o smbuser02 ……..测试该帐户的写权限

• 修改/etc/samba/smb.conf

hosts allow = 192.168.0.10 192.168.1. 仅允许访问

samba的网段或主机。假设你的主机IP地址为

192.168.0.11将不能访问

保存退出, service smb restart

• smbclient -L 192.168.0.11 -U smbuser01 此时不能访问

• 改回来hosts allow,做开机的samba和文件系统的挂载

vim /etc/fstab 添加一行与samba服务器资源挂载的语句

//192.168.0.11/share1 /mnt/share cifs

defaults,username=smbuser01,password=xxx 0 0

mount -a; mount 查看启动的挂载的有效性

7、NIS服务端的设置

• yum install ypserv 服务器端的软件名为ypserv

• chkconfig ypserv on 开启ypserv的自动启动

• vim /etc/ypserv.conf 添加下面的一行设置(可选)

–* :* :* :none

– 所有主机:所有域:所有资源:无需安全

• service ypserv restart 启动服务

• 进入到/var/yp资源的目录,缺省没有域名和资源

• cd /var/yp; ls -l; domainname

• domainname sina 设置域名为sina

• make;ls /var/yp/sina 将看到生成的资源名

*.byname,*.byuid;*.bygid……

8、NIS验证和自动挂载

• authconfig-tui 设置NIS验证并设置域名为

notexample,和NIS服务器的地址,ypbind服务将启动并绑

定NIS域

• vim /etc/nsswitch.conf 修改资源文件获取的先后次序

passwd: nis files

shadow: nis files

group: nis files

• getent passwd | less 查看服务器上的用户资源

• getent group | less 查看服务器上的组资源

• 退出后以刚才看到的其中一个帐户guest2018登录,密码为RedHat

• 登录成功后发现不能进入到用户的主目录,由于该账户是在服务器上创建的,客户端上没有此目录,我们需要自动挂载

• showmount -e 192.168.0.254 查看服务器的NFS资源

• vim /etc/auto.master 添加自动挂载,让用户登录时自动

的在本地目录和服务器目录建立一个映射。

/home/guests /etc/auto.g

• 选择/home/guests为挂载点是因为

–getent passwd 中帐户的主目录是在这个目录之下

vim /etc/auto.g 最后修改我们自定义的挂载文件

* -rw,soft 192.168.0.254:/home/guests/&

• 这样设置将会实现,service autofs restart 自动挂载重启

• 本地/home/guests/guest2010将挂载到192.168.0.254下的/home/guests/guest2010 共享NFS资源下,同时可以对其写入;/home/guests/guest2018将挂载到192.168.0.254下的/home/guests/guest2018

• 之后测试ls /home/guests/guest2010;ls /home/guests/guest2011; mount 查看挂载的结果

• 最后我们重新登录一个帐户,可以做到从NIS服务器上的帐户验证,并自动的挂载了其用户主目录到本地,同时可以放其中写入文件

9、网络参数临时设置实验

• ip addr show eth0 查看接口地址

• ip link show eth0 | grep -i LOW 插拔网线

LOWER_UP 代表网络连线正常

• ip route add 0.0.0.0/0 via 192.168.0.254

• ip route get 10.0.0.1 查询去往10.0.0.1的路由如何传递

• ifconfig eth0:100 192.168.100.10/24 up

–配置一个子接口地址

–service network restart 新配置将失效

10、网络参数永久设置实验

• cp /etc/sysconfig/ifcfg-eth0 /etc/sysconfig/ifcfg-eth1

• vim /etc/sysconfig/ifcfg-eth1

DEVICE=eth0:100

IPADDR= 子接口不能自动获取IP

NETMASK=

• echo “192.168.200.0/24 via 192.168.0.254” >> /etc/sysconfig/network-script/route-eth0

• service network restart ; ifconfig; ip route show

检查新的配置

11、/etc/fstab实现开机资源挂载

• samba服务器资源,挂载共享资源名称

• //192.168.0.20/share1 /mnt/smb cifs defaults,username=user01,password =RedHat 0 0

• nfs资源,挂载给定导出的绝对路径

• 192.168.0.254:/home/guests /mnt/nfs nfs defaults,ro 0 0

• mount查看;umount /mnt/smb卸载已挂载的资源

• mount -a 测试资源是否挂载,mount查看

12、NETFILTER模块的防火墙的设置

• 下载startport.pl或者将一下代码复制到一个文本中,使用

perl执行, perl startport.pl 8888 &,客户端telnet

x.x.x.x 8888,并输入内容,可以在服务器端看到,用来模拟服务器的端口。

#!/usr/bin/perl
use strict;
use warnings;
use Socket;
defined(my $port = $ARGV[0]) || die “Error: Need set a port”;
my $proto = getprotobyname(“tcp”);
my $servaddr = sockaddr_in($port,INADDR_ANY);
socket SERVER, PF_INET, SOCK_STREAM, $proto
or die “Unable to create socket: $!”;
bind SERVER, $servaddr or die “Unable to bind: $!”;
listen SERVER, 10;
print “Server running on port $port…\n”;
while (accept CONNECTION ,SERVER){
select CONNECTION; $| = 1 ; select STDOUT;
print “Client connected at “, scalar(localtime), “\n”;
print CONNECTION “You are connected to port: $port”;
while(<CONNECTION>){
print “Client says: $_\n”;
}c
lose CONNECTION;
print “Client disconnection\n”;
}

• 为了方便重复的测试查看可以在/etc/profile中添加一个检测

指令的别名, 并执行指令source /etc/profile使其生效。

alias ship=”iptables —line-number -n -L”

• iptables -L —line-number -n #显示iptables中行号和数字化的端

口信息

• iptables -N RHCE_MYRULE #自定义一个iptables规则链表

• iptables -I RHCE_MYRULE -s 172.24.0.0/16 -p tcp —dport 22 -j ACCEPT #向自定义链表中添加一条规则

• iptables -I INPUT -j RHCE_MYRULE #将自定义链表插入到INPUT链表中。

• iptables -D INPUT 1 #删除INPUT链表中第一条规则

 

对TCP连接的状态位检测实现单向连接

iptables -I INPUT -m state —state NEW -s x.x.x.x/y -p tcp —dportssh或者ftp或者www的端口…… -j ACCEPT 

iptables -I INTPUT -m state —state ESTABLISHED,RELATED -j ACCEPT

iptables -I OUTPUT -m —state NEW -j REJECT

以上的例子允许指定的网络连接到本服务器的特定的服务(INPUT),包括随之产生的相关的端口以及后续的交互连接 

默认策略的修改 iptables -P REJECT

netfilter附属模块的实现 vim /etc/sysconfig/iptables-config

IPTABLES_MODULES=”ip_conntrack_ftp ip_conntrack_netbios”

设置允许的网段或主机访问到 vsftpd实例

Ⅰ.首先设置防火墙模块

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

Ⅱ.修改默认策略为拒绝所有

iptables -P INPUT DROP

Ⅲ.添加允许访问到你的主机的网段,新建立ftp连接到服务器

iptables -I INPUT -s 172.24.0.0/16 -p tcp —dport 21 -m state —state NEW -j ACCEPT

Ⅳ.添加允许已经建立的连接和原先的连接产生相关的连接,以及它们连接之后的通讯

iptables -I INPUT -p tcp -m state —state ESTABLISHED,RELATED -j ACCEPT

设置允许的网段或主机访问到 nfs实例

Ⅰ.首先见nfs的四个相关服务的端口连续化,将其设置为6001-6005,方便防火墙的设置,见之前NFS的设置

vim /etc/sysconfig/nfs 

Ⅱ.重启NFS服务器之后,我们使用netstat -tpln; netstat -upln观察所使用的端口,注意NFS依赖portmap服务,所以我们一共要设置 2049(nfs) 111(portmap)和之前连续的6001-6005的UDP/TCP端口

iptables -P INPUT DROP

iptables -I INPUT -m state —state NEW -s 172.24.0.0/16 -p tcp —dport 2049 -j ACCEPT

iptables -I INPUT -s 172.24.0.0/16 -p udp —dport 2049 -j ACCEPT

iptables -I INPUT -m state —state NEW -s 172.24.0.0/16 -p tcp —dport 111 -j ACCEPT

iptables -I INPUT -s 172.24.0.0/16 -p udp —dport 111 -j ACCEPT

iptables -I INPUT -m state —state NEW -s 172.24.0.0/16 -p tcp —dport 6001:6005 -j ACCEPT

iptables -I INPUT -s 172.24.0.0/16 -p udp —dport 6001:6005 -j ACCEPT

TCPWapper的服务访问控制 

yum install telnet-server安装要测试的服务包,还可以安装 tftp-server 

rpm -ql telnet-server列举安装后包文件存放的位置,其中主程序为/usr/sbin/ in.telnetd,控制文件放在了 /etc/xinetd.d目录夹之下。

chkconfig –list可以看到telnet服务受xinetd进程控制,它不是一个单独的服务,默认此服务关闭。

vim /etc/xinetd.d/telnet,将 disable=yes改为no,并加上一行 per_source=2,保存后重启 xinetd服务测试。  分别使用一台主机同时对此服务器并发连接三次。论证per_source控制并发连接数。  再次修改 /etc/xinetd.d/telnet,分别添加 only_from和 no_access = 172.24.0.1,测试在服务器配置文件中的访问控制

对所有服务器的访问控制可以通过 /etc/hosts.deny和hosts.allow设置,次序为 allow -> deny ->default。没有明文拒绝的服务都可以访问。  去除之前在服务器配置文件中的 only_from或

no_access语句,以免冲突。

修改/etc/hosts.deny文件,并分别对各个服务做测试

in.telnetd: 172.16.#拒绝172.16.0.0/16网段访问telnet服务

sshd: ALL EXCEPT example.com#拒绝除了来自example.com的域以外的主机访问sshd服务 vsftpd: 172.16.: spawn logger “the host %h try to access the vsftpd server”#spawn后面加shellell指令,当主机违背时触发后面的shell指令执行。此处是将事件记录到/var/log/message日志中。

赞(0) 打赏
转载请注明出处:服务器评测 » 红帽RHCE实验红宝石书(下)
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏