注意:所有实验不涉及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日志中。