美文网首页
第十二周作业

第十二周作业

作者: 卫清华 | 来源:发表于2019-04-22 10:16 被阅读0次

1、搭建vsftpd,并实现虚拟用户

root用户登录

# yum  install  vsftpd -y

安装完后可以使用以下命令来启停vsftpd服务

# service  vsftpd  start

# service vsftpd  stop

# service vsftpd  restart

它的配置文件目录为/etc/vsftpd/,该目录下有主配置文件vsftpd.conf,接下就以实现虚拟用户功能来配置一下vsftpd

虚拟用户就是系统当中不存在的实体用户,它只能访问和使用ftp资源,但不允许访问系统的其他资源。虚拟用户的认证使用口令库文件

(1)编写虚拟用户的账户和密码数据库文件

编写一文本文件,奇数行为账户,偶数行为密码。

# vi  /etc/vsftpd/vusers.list

用户名1

密码1

用户名2

密码2

……

安装db4工具来把文本文件转换成二进制数据库文件

# yum install   db4-utils   -y

#  db_load  -T  -t  hash   -f   vusers.list    vusers.db

#   chmod 600  /etc/vsftpd/vusers.*

(2)创建ftp根目录和虚拟用户映射的系统用户

# mkdir  /var/ftproot

#  useradd -d /var/ftproot  -s  /sbin/nologin   virtual

#  chmod   755    /var/ftproot

(3)创建支持虚拟用户的PAM认证文件

#  vi   /etc/pam.d/vsftpd

auth  required   pam_userdb.so db=/etc/vsftpd/vusers

account  required  pam_userdb.so db=/etc/vsftpd/vusers

这里指向数据库文件名时,不要加后缀

(4)修改主配置文件

#  vi   /etc/vsftpd/vsftpd.conf

anonymous_enable=NO   #禁用匿名用户

local_enable=YES    #启用本地用户

write_enable=YES    #本地用户可以可写

anon_umask=022      #匿名用户创建文件的掩码权限

chroot_local_user=YES    #禁锢本地用户不能超出其家目录

guest_enable=YES     # 启用guest用户

guest_username=virtual    #虚拟用户映射的系统用户名

pam_service_name=vsftpd   #虚拟用户的pam文件名,不需要路径

(5)创建虚拟用户配置文件

#  mkdir   /etc/vsftpd/vusers_dir    创建虚拟用户配置文件目录

在主配置文件中开启虚拟用户,并指定虚拟用户配置文件目录

#  vi   /etc/vsftpd/vsftpd.conf

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/vusers_dir

在虚拟用户配置文件目录中为个别用户创建独立的配置文件

# vi /etc/vsftpd/vusers_dir/user1

anon_upload_enable=YES

anon_mkdir_enable=YES

(6)重启vsftpd来重新加载

#  service  vsftpd restart

(7)测试过程

发现报错

226 transfer done but failed to open directory

需要把selinux关掉。

#  vi /etc/selinux/config

SELINUX=disabled

重启# reboot

发现报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()

如果启用chroot,必须保证ftp根目录不可写,这样对于ftp根直接为网站根目录的用户不方便

#  chmod  a-x  /var/ftproot

然后如果需要在ftp根目录下创建目录或文件。请自行创建。

2、简述iptales四表五链及详细介绍iptables命令使用方法。

Linux系统上的防火墙是由iptables/netfilter组成,其中iptables是规则的制定工具,工作在用户空间,它制定的规则送到内核空间,netfilter在内核协议框架中定义了5个位置通过钩子函数对进出的数据包进行过滤。

iptables四表为filter ,  nat ,mangle ,  raw 。默认表是flter,表的处理优先级为:raw ,mangle,nat,filter。

filter:一般的过滤功能;

nat: 用于nat功能(地址转换、映射、端口映射等)

mangle:用于对特定数据包的修改(使用情况少)

raw:  一般是为了不再让iptables做数据包的链接跟踪处理,从而提高性能。

五个链分别是:

INPUT: 通过路由表判断后目的地是本机,然后进入本机内部资源

OUTPUT: 由本机产生的数据向外部转发

FORWARD:通过路由表判断后目的地不是本机,然后通过路由转发到其他地方

PREROUTING:流入的数据包进入路由表之前

POSTROUTING:传出的数据包到达网卡出口前

四个表对应的链分别为:

filter: INPUT  ,   OUTPUT  ,   FORWARD

nat:   PREROUTING  ,  POSTROUTING   FORWARD

mangle: INPUT  OUTPUT  PREROUTING  ,  POSTROUTING   FORWARD

raw:  PREROUTING  OUTPUT

iptables的语法格式:

iptables   [-t  TABLE ]  COMMAND   CHAIN   [-m matchname [per-match-options]]   -j   targetname  [per-target-options]

-t  TABLE:  默认为filter  ,可以是filter ,nat  ,mangle, raw

COMMAND有以下几种:

(1)查看:-L   list列出指定链上所有的规则,有以下几条子选项

-n  :   numberic 以数字格式显示地址与端口号,例如任意地址不加-n显示为anywhere 加-n显示为0.0.0.0/0

-v  :    verbose显示详细信息 , -vv  -vvv显示的信息更为详细

-x:     显示计数器结果的精确值,不加的话显示四舍五入的值,但是更有可读性

--line-numbers:   显示规则的序号

(2)链管理:

-N: new,定义一台新的自定义规则链

-X:delete  删除一条自定义规则链(仅能删除自定义的 引用计数为0的  空的 链)

-E:  重命名自定义链(仅能重命名引用计数为0的自定义链)

-P:policy  设置默认策略,对于filter表中的链来说,以三种策略:ACCEPT  /   DROP  /   REJECT

(3)规则管理

-A: append  在最后一条规则之后,追加规则

-I:   insert   插入规则,要指定位置,不指定位置则在第一条前插入规则

-D:  delete  删除规则,指定规则序号或规则本身来进行删除

-R:  replace  替换规则,替换指定链上的指定规则

-F:  flush   清空指定链上的规则

-Z:  zero   计数器置零,每条规则对匹配的报文个数和报文的大小之和进行统计。

CHAIN 就是链,参考之前的链与表的关系

匹配条件:

基本匹配条件:无需加载任何模块,由iptables/netfilter来提供

[!]  -s:   检查报文中的源IP地址是否符合对应IP或网络地址范围 ,前加“!"表示条件取反(下同)

如:0.0.0.0/0表示所有地址,其他地址网段可以用CIDR方式书写

[!]  -d:   检查报文中的目标IP地址是否符合对应IP或网络地址范围

[!]  -p:  网络协议,常见的有tcp  /  udp   /icmp

[!] -i   :数据报文流入的接口(即哪张网卡),只能应用于 INPUT   PREROUTING  ,   FORWARD  链

[!]  -o  :数据报文流出的接口(即哪张网卡),只能应用于OUTPUT    POSTROUTING   FORWARD链

扩展匹配条件:

隐式扩展:使用-p指定了协议后,隐式包含了一些扩展选项

tcp协议:

[!]  --source-port  或  --sport  port[:port]   匹配报文的源端口,可以是端口范围两个port之间用“:”隔开

[!]  --destination-port  或  --dport  port[:port]   匹配报文的目标端口,可以是端口范围

[!]  --tcp-flags  检查的标志位列表  必须为1的标志位列表   用于匹配报文的标志位,如果标志位出现在第一列表中,而没有出现在第二列表中,则必须为0。第二列表是第一列表的子集。

[!]  --syn   用于匹配第一次握手,相当于"--tcp-flags  SYN,ACK,FIN,RST  SYN"

udp协议:

[!]  --source-port  或  --sport  port[:port]   匹配报文的源端口,可以是端口范围两个port之间用“:”隔开

[!]  --destination-port  或  --dport  port[:port]   匹配报文的目标端口,可以是端口范围

icmp协议:

[!]  --icmp-type  {type[/code]| typename}

echo-request  :   8

echo-replay    :   0

显式扩展:使用-m来指明要调用的扩展模块, -m  模块名  模块对应选项,常用的模块名举例如下:

multiport:

以离散方式来指定端口号列表

[!]  --source-port  或  --sport  port,port,port ....指定多个源端口

[!]  --destination-port  或  --dport   port,port,port ..指定多个目标端口

iprange:指定IP地址范围

[!}  --src-range   fromIP[-toIP]  来源IP范围

[!}  --dst-range   fromIP[-toIP]  目标IP范围

time:  指定日期时间范围

--timestart  hh:mm[:ss]    开始时间

--timestop   hh:mm[:ss]    结束时间

[!]  --weekdays day,day..... 周几

[!]  --monthdays   day,day,.... 每月内的几日

--datestart   YYYY[-MM[-DD[Thh[:mm[:ss]]]]]    开始日期和时间

--datestop   YYYY[-MM[-DD[Thh[:mm[:ss]]]]]     结束日期和时间

--kerneltz   使用内核配置的时区,而不是默认的UTC

string: 匹配报文中的字符串

--algo {bm|kmp}    必选项   指定匹配字符串的算法

[!]  --string  模式字符串

[!]  --hex-string  16进制编码的模式字符串

--from  offset   指定开始检查的位置

--to   offset      指定结束检查的位置

connlimit :单IP的并发连接数限制

--connlimit-upto  n  连接数小于等于n

--connlimit-above  n    连接数大于等于n

limit  :使用令牌桶过滤器,指定令牌生成速率

--limit-burst  n   令牌桶的大小

--limit  n[/second|/minute|/hour|/day]   限制每秒多少个包(每分钟/小时/天多少个包)

state:  连接追踪记录,在并发访问量大的主机不要开启

追踪到的连接:/proc/net/nf_conntrack

调整可记录的连接数量最大值:/proc/sys/net/nf_conntrack_max

超时时长:/proc/sys/net/netfilter/* timeout *

[!]  --state  状态

这里的状态可以为以下几种:

NEW:新连接请求

ESTABLISHED:已建立的连接

INVALID:未识别的连接

RELATED:相关联连接,附属于某个已存在连接的新请求

UNTRACKED:未追踪的连接

-j targetname    跳转的目标或处理动作:

基本处理动作:

ACCEPT:接受

DROP:  丢弃

扩展处理动作:

REJECT:拒绝

--reject-with type 定义拒绝类型

LOG   日志记录,默认保存在/var/log/messages文件中,

--log-level   日志级别

--log-prefix   日志前缀

RETURN

从自定义链返回原链继续检查规则

自定义链名作为目标

自定义链中的规则如果都不匹配时,再返回原链继续检查原链上的规则

其它命令

iptables-save  > filename   保存iptables内容到某一文件中

iptables-restore

-n  不清除原有规则

-t  :仅检查分析生成的规则集是否有语法错误

相关文章

  • 廖科才201430102104

    第八周作业 第二次作业 第三次作业 第四次作业,第十二周作业 第五次作业,第十三周作业 第六次作业,第十四周作业 ...

  • wordpress、php-admin

    (第十二周作业) 1、编译安装搭建wordpressCentos 7.2编译安装LAMP实现WordPress个人...

  • 【第十二周作业】

    上周读了一篇有关整容的文章,这个在几年前还需要遮遮掩掩的词,在今天的朋友圈变成了另外一种炫耀的资本。 记得以前,如...

  • 第十二周作业

    1、编写脚本/root/bin/checkip.sh,每5分钟检查一次,如果发现通过ssh登录失败 次数超过10次...

  • 第十二周作业

    1、搭建vsftpd,并实现虚拟用户 root用户登录 #yum install vsftpd -y 安装完后可以...

  • 第十二周作业

    1、编写脚本,支持让用户自主选择,使用mysqldump还是xtraback全量备份。2、配置Mysql主从同步3...

  • 第十二周理财作业

    春节期间主要阅读的是三公子的书, 工作前5年,决定你一生的财富。 因为各种原因之前没有读,我已经工作8年了,并且此...

  • 2020.06.30 第十二周作业

    第十二周作业,怎么评价一种体验 美食家可是难倒我了,我不是吃货,对于美食没有什么共鸣; 但作为普通人,我理解体验就...

  • 2018-04-03

    值周工作安排(第十二周)

  • 2018-02-22

    第十二,十三,十四次作业

网友评论

      本文标题:第十二周作业

      本文链接:https://www.haomeiwen.com/subject/towegqtx.html