12.Linux网络文件共享服务及iptables入门

1、搭建vsftpd,并实现虚拟用户
在这里我们创建基于MYSQL验证的vsftpd虚拟用户
1.安装必要的包组mariadb-devel pam-devel vsftpd ,因为centos7:无对应rpm包,需手动编译安装 pam_mysql-0.7RC1.tar.gz

[root@localhost pub]#yum -y install mariadb-devel  pam-devel vsftpd pam_mysql 
[root@localhost pub]#yum -y groupinstall "Development Tools" 
[root@localhost pub]# tar xvf pam_mysql-0.7RC1.tar.gz 
[root@localhost pub]#   cd pam_mysql-0.7RC1/
[root@localhost pub]# ./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr -with-pam=/usr 
[root@localhost pub]# make && make install 
[root@localhost pub]#systemctl start mariadb.service 
[root@localhost pub]#systemctl start vsftpd.service 

2.创建数据库用户

MariaDB [(none)]>  GRANT all ON vsftpd.* TO   vsftpd@localhost IDENTIFIED BY 'magedu';        
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]>  GRANT all ON vsftpd.* TO   vsftpd@127.0.0.1 IDENTIFIED BY 'magedu';          
Query OK, 0 rows affected (0.02 sec)

3.建立用户表

MariaDB [(none)]> USE vsftpd; 
MariaDB [vsftpd]>  CREATE TABLE users ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(50) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL );
MariaDB [vsftpd]> DESC users; 
+----------+----------+------+-----+---------+----------------+
| Field    | Type     | Null | Key | Default | Extra          |
+----------+----------+------+-----+---------+----------------+
| id       | int(11)  | NO   | PRI | NULL    | auto_increment |
| name     | char(50) | NO   |     | NULL    |                |
| password | char(48) | NO   |     | NULL    |                |
+----------+----------+------+-----+---------+----------------+

4.测试连接,添加认证用户

[root@localhost /]# mysql -uvsftpd -hlocalhost  -pmagedu  
 MariaDB [vsftpd]> INSERT INTO users(name,password) values('wang',password('magedu'));
MariaDB [vsftpd]> INSERT INTO users(name,password) values('mage',password('magedu'));  

5.建立认证配置文件

[root@localhost /]# vi /etc/pam.d/vsftpd.mysql 
auth required pam_mysql.so user=vsftpd passwd=magedu host=localhost db=vsftpd table=users usercolumn=n
ame passwdcolumn=password crypt=2   
account required pam_mysql.so user=vsftpd passwd=magedu host=localhost db=vsftpd table=users usercolum
n=name passwdcolumn=password crypt=2

6.建立虚拟用户映射的系统用户及对应的目录

[root@localhost /]# useradd -s /sbin/nologin -d /var/ftproot vuser 
[root@localhost var]# chmod a-w /var/ftproot/

7.修改配置文件,加入下面两项

[root@localhost var]# vi /etc/vsftpd/vsftpd.conf 
guest_enable=YES 
guest_username=vuser 

8.使认证用户拥有不同的权限


配置vsftpd为虚拟用户使用配置文件目录  
vim /etc/vsftpd/vsftpd.conf  
user_config_dir=/etc/vsftpd/vusers_config  

创建所需要目录,并为虚拟用户提供配置文件  
mkdir /etc/vsftpd/vusers_config/  
cd /etc/vsftpd/vusers_config/  
touch wang mage 

配置文内容为
anon_upload_enable={YES|NO} 
anon_mkdir_write_enable={YES|NO}  
anon_other_write_enable={YES|NO}  
local_root=/var/ftproot

9.测试登录成功


[root@localhost var]# ftp 192.168.164.146
Connected to 192.168.164.146 (192.168.164.146).
220 (vsFTPd 3.0.2)
Name (192.168.164.146:root): wang
331 Please specify the password.
Password:
230 Login successful.

[root@localhost vusers_config]# ftp 192.168.164.146
Connected to 192.168.164.146 (192.168.164.146).
220 (vsFTPd 3.0.2)
Name (192.168.164.146:root): mage
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

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

  • iptales是Linux内核自带的一个防火墙工具,是一个包过滤的防火墙,通过它用户可以自行设置过滤规则,工作于主机或网络边缘,对于进出本主机或本网络的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理的组件;
  • iptables可以实现主机防火墙及网络防火墙
  • iptables的组成:四表五链
表名含义
filter表:过滤规则表,根据预定义的规则过滤符合条件的数据包
nat表:network address translation 地址转换规则表
mangle:修改数据标记位规则表 ,拆解报文,做出修改
raw:关闭NAT表上启用的连接跟踪机制,加快封包穿越防火墙速度
security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现
  • 五链:
链名Value
INPUT输入
OUTPUT输出
FORWARD转发
PREROUTING预处理,在input之前
POSTROUTING路由选择
  • 表与链的对应关系:
表明(功能)链名
raw:PREROUTING, OUTPUT
mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat:PREROUTING,[INPUT,]OUTPUT,POSTROUTING
filter:INPUT,FORWARD,OUTPUT

内核中数据包的传输过程 :

  • 当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的 IP判断是否需要转送出去
  • 如果数据包就是进入本机的,数据包就会沿着图向下移动,到达INPUT链。数据包 到达INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些 数据包经过OUTPUT链,然后到达POSTROUTING链输出
  • 如果数据包是要转发出去的,且内核允许转发,数据包就会向右移动,经过 FORWARD链,然后到达POSTROUTING链输出

IP tables使用规则:

  • 规则组成:根据规则匹配条件来尝试匹配报文,一旦匹配成功,就由规则定义的处理动作作出处理;
匹配条件:基本匹配条件:内建
扩展匹配条件:由扩展模块定义;
处理动作:基本处理动作:内建
扩展处理动作:由扩展模块定义;
自定义处理机制:自定义链
  • iptables的链:内置链和自定义链
    内置链:对应于hook function,5个链
    自定义链接:用于内置链的扩展和补充,可实现更灵活的规则管理机制;

  • 链:链上的规则次序,即为检查的次序;因此,隐含一定的应用法则:
    (1) 同类规则(访问同一应用),匹配范围小的放上面;
    (2) 不同类的规则(访问不同应用),匹配到报文频率较大的放在上面;
    (3) 将那些可由一条规则描述的多个规则合并起来;
    (4) 设置默认策略;

iptables命令:

  • 规则格式:iptables [-t table] COMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]
参数含义
-t table:指定表名,可以是raw, mangle, nat, 默认是[filter]
  • COMMAND :链管理;规则管理,查看
    链管理
参数含义
-N:new,自定义一条新的规则链;
-X: delete删除自定义的规则链;注意:仅能删除 用户自定义的 引用计数为0的空的链;
-P:Policy设置默认策略;对filter表中的链而言,其默认策略有:
ACCEPT:接受
DROP:丢弃
REJECT:拒绝
-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除;

规则管理:

参数含义
-A:append追加
-I:insert,插入,要指明位置,省略时表示第一条;
-D:delete,删除;(1) 指明规则序号;(2) 指明规则本身;
-R:replace,替换指定链上的指定规则;
-F:flush,清空指定的规则链;
-Z:zero,置零;iptables的每条规则都有两个计数器: (1) 匹配到的报文的个数;(2) 匹配到的所有报文的大小之和;

查看:

参数含义
-L:list,列出指定鏈上的所有规则;
-n:numberic,以数字格式显示地址和端口号;
-v:verbose,详细信息;-vv, -vvv
-x:exactly,显示计数器结果的精确值;
–line-numbers:显示规则的序号;
  • chain:指定链名PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

[-m matchname [per-match-options]]
匹配条件:

  • 基本匹配条件:无需加载任何模块,由iptables/netfilter自行提供;
参数含义
-s, --source address[/mask][,…]:检查报文中的源IP地址是否符合此处指定的地址或范围;
-d, --destination address[/mask][,…]:检查报文中的目标IP地址是否符合此处指定的地址或范围;所有地址:0.0.0.0/0
-p, --protocol protocolprotocol: tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh or “all”{tcp
-i, --in-interface name:数据报文流入的接口;只能应用于数据报文流入的环节,只能应用于PREROUTING,INPUT和FORWARD链;
-o, --out-interface name:数据报文流出的接口;只能应用于数据报文流出的环节,只能应用于FORWARD、OUTPUT和POSTROUTING链;
  • 扩展匹配条件
    隐式扩展:在使用-p选项指明了特定的协议时,无需再同时使用-m选项指明扩展模块的扩展机制;
参数含义
–source-port, --sport port[:port]:匹配报文的源端口;可以是端口范围;
–destination-port,–dport port[:port]:匹配报文的目标端口;可以是端口范围;
–tcp-flags mask comp例如 SYN,ACK,FIN,RSTSYN,例如:“–tcp-flags SYN,ACK,FIN,RST SYN”表示,要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0;
–syn:用于匹配第一次握手,相当于”–tcp-flags SYN,ACK,FIN,RST SYN“;
–icmp-type {type[/code]或typename}可以是8或0类型,8指发送报文,0指接收报文

显式扩展:必须使用-m选项指明要调用的扩展模块的扩展机制;

参数含义
multiport以离散或连续的 方式定义多端口匹配条件,最多15个;例 iptables -I INPUT -d 172.16.0.7 -p tcp -m multiport --dports 22,80,139,445,3306 -j ACCEPT
iprange以连续地址块的方式来指明多IP地址匹配条件;例iptables -I INPUT -d 172.16.0.7 -p tcp -m multiport --dports 22,80,139,445,3306 -m iprange --src-range 172.16.0.61-172.16.0.70 -j REJECT
time以某一时间段作为参数,可以是禁止或允许
string匹配字符串,例 iptables -I OUTPUT -m string --algo bm --string “gay” -j REJECT
connlimit最大并发数控制,–connlimit-upto n(上限)–connlimit-above n(下限),例iptables -I INPUT -d 172.16.0.7 -p tcp --syn --dport 22 -m connlimit --connlimit-above 2 -j REJECT
limit速率限制,限制本机某tcp服务接收新请求的速率:–syn, -m limit
state状态匹配,NEW: 新连接请求;ESTABLISHED:已建立的连接;INVALID:无法识别的连接;
RELATED:相关联的连接,当前连接是一个新请求,但附属于某个已存在的连接;UNTRACKED:未追踪的连接;

-j targetname [per-target-options]

  • 处理动作:
参数含义
-j targetname [per-target-options]ACCEPT,允许
DROP,丢弃,不回复应答报文
REJECT,拒绝,要回复应答报文
LOG。写入到日志中
RETURN:返回调用者;
自定义链做为target:
  • 保存和载入规则:
    保存:iptables-save > /PATH/TO/SOME_RULE_FILE
    重载:iptabls-restore < /PATH/FROM/SOME_RULE_FILE
    -n, --noflush:不清除原有规则
    -t, --test:仅分析生成规则集,但不提交
  • SNAT:改源地址,主要用于隐藏源主机,便于内网访问公网
  • DNAT:改目的地址,隐藏目的主机,用于外网访问内网
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值