作业(练习)内容:

----------------------------------------------------------------------------------------------------

一、iptables类作业

前提:INPUT和OUTPUT默认策略为DROP;


1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机;


filter表的INPUTOUPUT默认策略设为DROP

# iptables -t filter -P OUTPUT DROP

# iptables -t filter -P INPUT DROP


限制本机的Web服务器在周一不允许访问:

# iptables -t filter -I INPUT -d 172.16.2.24 -p tcp --dport 80 -m time ! --weekdays Mon -j ACCEPT


在客户机验证:

linux运维实战练习-2015年11月8日-11月17日课程_iptables



修改系统时间,再次验证:

[root@rhel6 ~]# date 111711282015

Tue Nov 17 11:28:00 CST 2015

[root@rhel6 ~]#


linux运维实战练习-2015年11月8日-11月17日课程_iptables_02


新请求的速率不能超过100个每秒:

# iptables -t filter -R INPUT 1 -d 172.16.2.24 -p tcp --dport 80 -m connlimit ! --connlimit-above 100 -m time ! --weekdays Mon -j ACCEPT


web服务器包含了admin字符串的页面不允许访问;

# iptables -t filter -I OUTPUT 1 -s 172.16.2.24 -p tcp --sport 80 -m string --string "admin" --algo kmp -j REJECT



查看当前链上所有规则:

# iptables -L -n

Chain INPUT (policy DROP)

target     prot opt source               destination        

ACCEPT     tcp  --  0.0.0.0/0            172.16.2.24         tcp dpt:80 #conn/32 <= 100 TIME on Tue,Wed,Thu,Fri,Sat,Sun

ACCEPT     all  --  0.0.0.0/0            172.16.2.24         state RELATED,ESTABLISHED


Chain FORWARD (policy ACCEPT)

target     prot opt source               destination        


Chain OUTPUT (policy DROP)

target     prot opt source               destination        

REJECT     tcp  --  172.16.2.24          0.0.0.0/0           tcp spt:80 STRING match "admin" ALGO name kmp TO 65535 reject-with icmp-port-unreachable

ACCEPT     all  --  172.16.2.24          0.0.0.0/0           state ESTABLISHED




2、在工作时间,即周一到周五的8:30-18:00,开放本机的ftp服务给172.16.2.0网络中的主机访问;数据下载请求的次数每分钟不得超过5个;

# iptables -I INPUT 3 -s 172.16.2.0/24 -d 172.16.2.24 -p tcp --dport 21 -m limit --limit 5/minute -m time --timestart 08:30 --timestop 18:00 ! --weekdays 6,7 -j ACCEPT



3、开放本机的ssh服务给172.16.2.1-172.16.2.100中的主机,新请求建立的速率一分钟不得超过2个;仅允许响应报文通过其服务端口离开本机;

# iptables -I INPUT 4 -d 172.16.2.24 -p tcp --dport 22 -m iprange --src-range 172.16.2.1-172.16.2.100 -m limit --limit 2/minute -j ACCEPT



4、拒绝TCP标志位全部为1及全部为0的报文访问本机;

# iptables -I INPUT 1 -p tcp --tcp-flags ALL ALL -j DROP

# iptables -I INPUT 2 -p tcp --tcp-flags ALL NONE -j DROP


5、允许本机ping别的主机;但不开放别的主机ping本机;

# iptables -A OUTPUT -s 172.16.2.24 -p icmp --icmp-type 8 -jACCEPT

# iptables -A INPUT -d 172.16.2.24 -p icmp --icmp-type 0 -jACCEPT


linux运维实战练习-2015年11月8日-11月17日课程_iptables_03


linux运维实战练习-2015年11月8日-11月17日课程_iptables_04

 

查看当前链上所有规则:

# iptables -L -n

Chain INPUT (policy DROP)

target     prot optsource               destination        

DROP       tcp --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x3F/0x3F

DROP       tcp --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x3F/0x00

ACCEPT     tcp  -- 0.0.0.0/0           172.16.2.24         tcp spt:53

ACCEPT     udp  -- 0.0.0.0/0           172.16.2.24         udp spt:53

ACCEPT     tcp --  172.16.2.0/24        172.16.2.24         tcp dpt:21 limit: avg 5/min burst 5TIME from 08:30:00 to 18:00:00 on Mon,Tue,Wed,Thu,Fri

ACCEPT     tcp --  0.0.0.0/0            172.16.2.24         tcp dpt:22 source IP range172.16.2.1-172.16.2.100 limit: avg 2/min burst 5

ACCEPT     tcp --  0.0.0.0/0            172.16.2.24         tcp dpt:80 #conn/32 <= 100 TIME onTue,Wed,Thu,Fri,Sat,Sun

ACCEPT     all  -- 0.0.0.0/0           172.16.2.24         stateRELATED,ESTABLISHED

ACCEPT     icmp -- 0.0.0.0/0           172.16.2.24         icmp type 0

 

Chain FORWARD (policy ACCEPT)

target     prot optsource               destination        

 

Chain OUTPUT (policy DROP)

target     prot optsource               destination        

ACCEPT     tcp  -- 172.16.2.24         0.0.0.0/0           tcp dpt:53

ACCEPT     udp  -- 172.16.2.24         0.0.0.0/0           udp dpt:53

REJECT     tcp --  172.16.2.24          0.0.0.0/0           tcp spt:80 STRING match"admin" ALGO name kmp TO 65535 reject-with icmp-port-unreachable

ACCEPT     tcp  -- 172.16.2.24         0.0.0.0/0           tcp dpt:80state NEW

ACCEPT     all  -- 172.16.2.24         0.0.0.0/0           stateESTABLISHED

ACCEPT     icmp -- 172.16.2.24         0.0.0.0/0           icmp type 8

 

 


二、控制vsftpd仅允许172.16.0.0/255.255.0.0网络中的主机访问,但172.16.100.3除外;对所被被拒绝的访问尝试都记录在/var/log/tcp_wrapper.log日志文件中;

# vim /etc/hosts.all

添加一行:

vsftpd: 172.16. EXCEPT 172.16.100.3

 

# vim /etc/hosts.deny

添加一行:

vsftpd: ALL : spawn /bin/echo `date` login attempt from %c to%s, %d >> /var/log/tcp_wrapper.log

 

 


三、脚本编程类(数组练习)

    1、写一个脚本:定义一个数组,数组元素为/var/log目录下所有以.log结尾的文件的名字;显示每个文件的行数;

# vim count.sh

#!//bash

 

declare -a logs

 

logs=(/var/log/*.log)

for i in `seq 0 $[${#logs[*]}-1]`;

    do wc -l${logs[$i]}

done

 

# bash count.sh

86 /var/log/anaconda.ifcfg.log

287 /var/log/anaconda.log

428 /var/log/anaconda.program.log

2020 /var/log/anaconda.storage.log

608 /var/log/anaconda.yum.log

37 /var/log/boot.log

1721 /var/log/dracut.log

 

 

    2、写一个脚本,生成10个随机数,并按从小到大进行排序;

for i in `seq 1 10`;do echo $RANDOM ;done | sort -n

 

 

    3、写一个脚本,能从所有同学中随机挑选一个同学回答问题;进一步地:可接受一个参数,做为要挑选的同学的个数;

 

 

 

四、sudo练习

    1、授权centos用户可以运行fdisk命令完成磁盘管理,以及使用mkfs或mke2fs实现文件系统管理;

    2、授权gentoo用户可以运行逻辑卷管理的相关命令

 

#使用visudo 编辑sudo的配置文件,添加以下几行:

centos ALL=(root) /sbin/fdisk, /sbin/mkfs, /sbin/mke2fs

 

Cmnd_Alias LVGCOMMANDS= /sbin/pvs, /sbin/vgs, /sbin/lvs,/sbin/pvscan, /sbin/vgscan, /sbin/lvscan, /sbin/pvcreate, /sbin/vgcreate,/sbin/lvcreate


gentoo ALL=(root) LVGCOMMANDS

 

验证:

[root@client1 ~]# su - centos

[centos@client1 ~]$ sudo -l


User centos may run the following commands on this host:

    (root) /sbin/fdisk, (root) /sbin/mkfs,(root) /sbin/mke2fs

 

[centos@client1 ~]$

[centos@client1 ~]$ su - gentoo

Password:

[gentoo@client1 ~]$

[gentoo@client1 ~]$ sudo -l


User gentoo may run the following commands on this host:

    (root) /sbin/pvs, /sbin/vgs, /sbin/lvs,/sbin/pvscan, /sbin/vgscan, /sbin/lvscan,

    /sbin/pvcreate, /sbin/vgcreate,/sbin/lvcreate

 

 

  五、vsftpd及pam类

    1、实现基于虚拟用户认证的vsftpd功能;

    2、虚拟用户的账号及密码信息存储在mysql当中。

 

请查阅另一篇博文:

vsftpd Server