网络基础
一、Linux网络配置基础
TCP/IP是Internet网络的标准协议,也是全球使用最广泛、最重要的一种网络通信协议。目前无论是UNLX系统还是Windows系统都全面支持TCP/IP。
接入TCP/IP网络的计算机一般都需要进行网络配置,可能需要配置的参数包括主机名、IP地址、子网掩码、网关地址和DNS服务器地址等。
(一)TCP/IP参考模型
TCP/IP参考模型包括网络接口层、网络层、传输层和应用层。
1.网络接口层
TCP/IP参考模型最底层是网络接口层,塔包括那些能使TCP/IP与物理网络进行通信的协议。TCP/IP标准并没有定义具体的网络接口协议,而是旨在提供灵活性,以适应各种网络类型。网络类型通常有以太网、令牌环网、帧中继网和ATM网络。以太网是目前使用最广泛的局域网技术,属于基带总线局域网,核心技术采用CSMA/CD(Carrier Sense Multiple Access with Collision Detection)通信控制机制。CSMA/CD是一种算法,主要用于传输以及解码格式化的数据包,包括检测节点地址并监控传输错误
。
2.网络层
网络层所执行的功能是消息寻址以及把逻辑地址和名称转换成物理地址。通过判定从原计算机到目标计算机的路由,该层还控制子网的操作。在网络层中,含有4个重要协议:互联网协议(Internet Pretocol,IP)、互联网控制报文协议(Internet Control Message Protocol,ICMP)、地址转换协议(Address Resolution Protocol,ARP)和反向地址转换协议(Reverse Address Resolution Protocol,RARP)。
IP
:负责通过网络交换数据包,同时也负责主机间数据包的路由和主机寻址。ICMP
:传送各种信息,包括与包交付有关的错误报告。ARP
:通过目标设备的IP地址,查询目标设备的硬件MAC地址。RARP
:声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个地址。
3.传输层
在TCP/IP模型中,传输层的主要功能是提供从一个应用程序到另一个应用程序的通信,常称为端对端通信。现在的操作系统都支持多用户和多任务操作,一台计算机可以运行多个应用程序,因此所谓端对端的通信实际上是指从源进程发出数据到目标进程的通信过程。传输层包括2个主要协议:传输控制协议TCP和数据报协议UDP,分别支持两种数据传送方式。
- 传输控制协议
TCP
:面向对象链接的通信提供可靠的数据传送。用于大量数据的传输或主机之间的扩展对话,通常要求可靠的传送。 - 用户数据报协议
UDP
: 在发送数据前不要求建立链接,目的是提供高效的离散数据报传送,但是不能保证传送被完成。
4.应用层
应用层位于TCP/IP模型的最高层。最常用的协议包括:文件传输协议FTP、远程登录Telnet、域名服务DNS、简单邮件传输SMTP和超文本传输协议HTTP等。
FTP
:用于实现主机之间的文件传输功能。HTTP
:用于实现互联网中的WWW服务。SMTP
:用于实现互联网中的电子邮件传送功能。DNS
:用于实现主机名与IP地址间的转换。SMB
:用于实现Windows主机与Linux主机间的文件共享。Telnet
:用于实现远程登陆功能。DHCP
:用于实现动态分配IP配置信息。
(二)网络配置参数
1.主机名
主机名用于标识网络中的计算机,通常主机名在网络中是唯一的。如果某一主机在DNS服务器上进行过域名注册,那么其主机名和域名通常也是相同的。
2.IP地址和子网掩码
TCP/IP网络中一台计算机要与网络中的其他计算机进行通信,就必须至少拥有一个唯一的IP地址,否则在信息传送过程中无法识别信息的接收方和发送方。IP地址一定设置在主机的网卡上,网卡的IP地址等同于主机的IP地址。
IP地址采用“x.x.x.x”格式表示,每个x部分的取值范围在0~255.传统上将IP地址分为A、B、C、D、E五类。
IP地址分类:
在所有的IP地址中,以“127”开头的IP地址不可用于指定主机的IP地址,它被称为回送地址,供计算机在各个网络进程之间进行通讯时使用。同一网络中每一台主机的IP地址必须不同,否则会造成IP地址的冲突。
在配置IP地址的同时还必须配置子网掩码。为了保证网络的安全和减轻网络管理的负担,有时会把一个网络分成多个部分,而分出的部分就是子网,与之对应的子网掩码用来区分不同的子网,其表现形式与IP地址一样。在一般网络应用中,通常不进行子网划分,采取默认的子网掩码。
3.网关地址
设置主机的IP地址和子网掩码后,该主机就可以使用IP地址与同一网段的其他主机进行通信了,但是不能与不同网段的主机进行通信。即使两个网段连接在一台交换机上,TCP/IP也会根据子网掩码判定主机处在不同的网络。要实现这两个网络之间的通信,必须通过网关来实现
。假设: 有网络A和网络B,网络A的IP地址范围为192.168.0.1~192.168.0.254,子网掩码为255.255.255.0。当网络A中的主机向网络B中的主机发送数据包时,网络A中的主机会把数据包转发给网络A的网关,在由该网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。为了实现与不同网段的主机进行通信,必须设置网关地址,该网关地址一定是同网段主机的IP地址。
4.DNS服务器地址
直接使用IP地址就可以访问网络中的主机,但是用数字表示的IP地址难以记忆,通常人们使用域名来访问网络中的主机。为了能够使用域名,需要为计算机指定至少一个DNS服务器,由这个DNS服务器来完成域名解析的工作。域名解析包括两个方面:正想解析
和反向解析
。
(三)Linux网络服务器对应端口
采用TCP/IP的服务可为客户机提供各种网络服务,如WWW服务,FTP服务。为区别不同类型的网络连接,TCP/IP利用端口号来进行区别。TCP/IP的端口范围为:0-65536,其中:0~255称为“知名端口”,该类端口保留给常用服务程序使用;256~1024是用于UNIX/Linux专用服务;1024以上的端口为动态端口,动态端口不是预先分配的,必要时才将它分配给进程。
常用的网络服务和端口:
二、以太网的TCP/IP设置
(一)Linux网络接口
1.lo接口
lo接口表示本地回送接口,用于网络测试以及本地主机各网络进程之间的通信。无论什么应用程序,只要使用回送地址(127.0.0.1)发送数据都不会进行任何真实的网络传输。Linux系统默认包含会送接口。
2.eth*接口
eth接口表示网卡设备接口,并附加数字来反映物理网卡的序号。如第一块网卡称为eth0,第二块网卡称为eth1,并依次类推。
3.ppp接口
Ppp接口表示ppp设备接口,并附加数字来反映ppp设备的序号。第一个ppp接口称为ppp0,第二个ppp接口称为ppp1,并依此类推。采用ISDN或ADSL等方式接入Internet时使用ppp接口。
(二)Linux网络相关配置文件
/etc目录中包含一系列与网络配置相关的文件和目录。
1./etc/sysconfig/network文件
Network文件用来设置主机基本的网络信息。其内容如下:
NETWORKING=yes/no //启动系统时是否启用网络服务
HOSTNAME-abc.com //设置主机名
GATEWAY=192.168.0.1 //设定默认网关
GATEWAYDEV=eth0 //设定网关接口
FORWARD_IPV4=yes/no //是否启用IP转发功能
2./etc/hosts文件
Hosts文件可以保留主机域名与IP地址的对应关系。在计算机网络的发展初期,系统可以利用hosts文件查询域名所对应的IP地址。随着Internet的迅速发展,现在一般通过DNS服务器来查询域名所对应的IP地址。但是hosts文件让然被保留下来,用于经常访问的主机域名和IP地址,可以提高访问的速度。
3./etc/sysconfig/network-scripts/ifcfg-eth0文件
此文件用于配置以太网接口中第一块网卡的IP信息。其内容如下:
ONBOOT=yes //启动是是否激活网卡
DEVICE=eth0 //设置接口名称
BOOTPROTO=none|static|dhcp|bootp //设定网卡启动协议
IPADDR=193.168.3.24 //设置主机IP
NETMASK=255.255.255.0 //设定子网掩码
BROADCAST=192.168.2.255 //设定广播码
NETWORK=192.168.3.0 //设置网络号
GATEWAY=192.168.3.1 //设定网关
TYPE=Ethernet //设定网络类型
4./etc/resolv.Conf文件
此文件列出了客户机所使用的DNS服务器的相关信息。内容如下:
domainname linux.com //设定主机所在的网络域名,可以不设置
serch linux.com //设定DNS服务器的域名搜索列表
nameserver 192.168.0.10 //设定DNS服务器的IP地址
注意:最多只能设置3个DNS服务器地址,并且每个DNS服务器的记录自成一行。当主机需要进行域名解析时,首先查询第一个DNS服务器,如果无法成功则像第二个DNS服务器查询。
案例分析1:在配置文件中配置本系统的主机信息、IP地址等信息,配置都可以让该系统正常登陆互联网。
1)设置主机信息/etc/sysconfig/network文件:
NETWORKING=yes/no
HOSTNAME-abc.com
GATEWAY=192.168.0.1
GATEWAYDEV=eth0
FORWARD_IPV4=yes/no
2)用vi编辑器打开/etc/sysconfig/network-scripts/ifcfg-eth0,并设置:
Vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
DEVICE=eth0
BOOTPROTO=none|static|dhcp|bootp
IPADDR=193.168.1.24
NETMASK=255.255.255.0
BROADCAST=192.168.1.255
NETWORK=192.168.1.0
GATEWAY=192.168.1.1
TYPE=Ethernet
3)设置DNS信息:
domainname linux.com
serch linux.com
nameserver 192.168.0.10
4)修改完保存退出,重新启动网络配置即可
etc/rc.d/init.d/network restart
或者
servise httpd start/restart
案例分析2:设定主机存在eth0设备,它的IP地址是192.168.3.24,要求给eth0再绑定IP地址192.168.3.44
1)输入以下命令:
cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-eth0:0 //取值从0开始
2)输入以下命令:
Vi ifcfg-eth0:0
修改后的内容如下:
ONBOOT=yes //启动时是否激活网卡
BOOTPROTO=none //设置网卡启动协议
DEVICE=eth0:0 //设置接口名称
IPADDR=192.168.3.44 //设定主机IP地址
NETMASK=255.25.255.0 //设定子网掩码
NETWORK=192.168.3.0 //设定网络号
BROADCAST=192.168.3.255 //设定广播码
GATEWAY=192.168.3.1 //设定网关
3)输入以下内容:
vi ifcfg-eth0
修改后的内容:
ONBOOT=yes
BOOTPROTO=none
DEVICE=eth0
IPADDR=192.168.3.24
NETMASK=255.25.255.0
NETWORK=192.168.3.0
BROADCAST=192.168.3.255
GATEWAY=192.168.3.1
5.服务的启动方式
1)服务的分类
独立服务:每项服务只监听该服务指定的端口,服务的启动脚本存放在/etc/rc.d/init.d/
超级服务:超级服务有xinetd管理,服务的配置文件存放在/etc/xinetd.d/目录中。
2)服务的启动、关闭与重启
方法一:
/etc/rc.d/init.d/脚本 <start|restart|stop>
或
/etc/init.d/脚本名 <start|restart|stop>
其中/etc/rc.d/init.d/network用法为:
/etc/rc.d/init.d/network <start|stop|restart|reload|status>
例如:
/etc/rc.d/init.d/network restart
/etc/rc.d/init.d/network start
设置网络参数: [ 确定 ]
弹出环回接口: [ 确定 ]
弹出界面rth0: [ 确定 ]
又如:
/etc/rc.d/init.d/network stop
/etc/rc.d/init.d/network stop
正在关闭接口eth0: [ 确定 ]
关闭环回接口: [ 确定 ]
方法二:
service 服务名
例如:
Service httpd start|stop
Service httpd start
启动httpd: [ 确定 ]
Service httpd stop
停止httpd: [ 确定 ]
例子3:对本机内的一个网卡eth0再绑定一个IP地址
根据一块网卡绑定两个IP地址的方法,修改IP地址,保存退出vi编辑器,然后重新启动网络服务使更改生效
/etv/rc.d/init.d/network restart 或者 service httpd start|restart
三、常用的网络配置命令
ifconfig命令
功能:显示网络接口的配置信息、激活/禁用某个网络接口、配置网络接口IP地址。
ifconfig 【接口名】 IP地址 netmask 子网掩码 [up/down]
示例:ifconfig
//查看当前网络接口配置情况ifconfig eth0
//查看eth0网络接口配置情况ifconfig eth0 down
//停用网卡eth0ifconfig 192.168.0.10 netmask 255.255.255.0
//将网卡的IP地址设置为192.168.0.10,子网掩码设置为255.255.255.0
ifup命令
功能:激活/启用网络接口
ifup【设备名】
ifdown命令
功能:禁用或停止网络接口
ifdown【设备名】
ping命令
功能:向目标主机发送ICMP数据包,检测IP连通性。
ping【参数】 IP地址/主机名
参数:
-c n
:指定得到n个应答后中断操作
示例:测试与地址192.168.0.1的主机联通情况
Ping 192.168.0.1
Ping -c 3 192.168.0.1 //应答3次后中断
traceroute命令
功能:跟踪路由
示例:测试与www.sina.com的路由连通情况
tracerout www.sina.com
hostname命令
功能:显示或修改主机名
hostname 【主机名】
示例:
hostname //显示主机名
Hostname hhhh //主机名更换为hhhh
route命令
功能:显示路由表、添加路由、删除路由和添加/删除默认网关。
route
Route add -net 网络地址 netmask 子网掩码 dev 网卡设备名
Route del -net 网络地址 netmask 子网掩码
Route add default gw 网关IP地址 dev 网卡设备名
Route del default gw 网关IP地址 dev 网卡设备名
FTP服务器
FTP是互联网中一种应用非常广泛的服务,用户可以通过其服务获取需要的文档、资料、音频和视频等。从互联网出现的开始,它一直就是用户使用频率最高的应用服务器之一。
FTP服务器简介
虽然用户可以采用多种方式来发送文件,但是FTP凭借其简单高效的特性,仍然是跨平台直接传送文件的主要方式。FTP是FTP/IP的一种具体应用,其工作在OSI模型的第七层,TCP模型的第四层上,即应用层。FTP使用TCP传输而不是UDP传输,这样客户在和服务器建立连接之前就要经过一个广为熟知的“三次握手过程”,它的意义在于客户与服务器之间的连接是可靠的,而且是面向连接。
FTP的主要作用:
- 从客户向服务器发送一个文件
- 从服务器向客户发送一个文件
- 从服务器向客户发送文件或目录列表
与大多数Internet服务器一样,FTP也采用客户机/服务器模式。用户利用FTP客户机程序连接到远程主机上的FTP服务器程序,然后向服务器程序发送命令,服务器程序执行用户所发出的命令,并将执行结果返回到客户机。
在此过程中,FTP服务器与FTP客户机之间建立两个连接:控制连接
和数据连接
。控制连接用于传送FTP命令以及相应结果,而数据连接负责传送文件。通常FTP服务器的守候进程总是监听21端口,等待控制连接建立请求。控制连接建立后,FTP服务器通过一定的方式验证用户的身份,然后才会建立数据连接。
目前Linux系统中常用的FTP服务器有两种:vsftpd、wu-ftpd。它们都是基于GPL
协议开发的。
Vsftpd服务器
Vsftpd是一个基于GPL发布的类UNIX操作系统上运行的服务器,该服务器提供默认的FTP服务器。该服务器支持很多其他传统FTP服务器不支持的特性,具有以下特点:
- 非常高的安全性
- 带宽限制功能
- 良好的扩展性
- 支持船舰虚拟用户
- 支持IPV6
- 支持虚拟IP
- 高速、稳定
安装vsftpd
1.源代码安装
得到源代码并解压tar包后,进入新的目录并运行make:
tar xavf vsftpd-2.0.5.tar.gz
cd vsftpd-2.0.5
make
在这之前应该查看用户nobody和目录/usr/share/empty是否存在,如果不存在的化就新建这个用户和目录。如果允许匿名访问,用ftp和目录var/ftp也需要建立:
make /var/ftp
useradd -d /var/ftp ftp
由于安全原因,目录/var/ftp不应该属于用户ftp,也不应该有写权限。如果用户已存在,用下面两个命令可以改变目录的所有者并去掉其他用户的写权限:
chown root.root /var/ftp
chmod og-w /var/ftp
具备了所有条件后开始安装:
make install
2.启动和关闭vsftpd
启动vsftpd可采用3中方式:inetd、xinetd和Stand alone(独立)工作模式,由于目前使用的xinetd扩展了inetd,它比inetd更加高效和使用,下面介绍xinetd以及standalone两种启动方式。
(1)xinetd方式启动
使用该启动方式,在/etc/xinetd d/vsftpd配置文件当中,应当将“listen=yes”设为“listen=yes”,并且将“tcp_wrapper=yes”设为“tcp_wrapper=no”,并且使用如下命令将vsftpd的文档目录复制到/etc/xinetd.d目录下:
cp /usr/share/doc/vsftpd-1.1.3/vsftpd.xinetd /etc/xinetd.d/vsftpd
vi /etc/xinetd.d/vsftpd
cat /etc/xinetd.d/vsftpd
现在就可以启动vsftpd了:
server vsftpd stop //停止独立运行vsftpd
关闭vsftpd: [确定]
server xinetd restart //重新启动xinetd守候进程
停止xinetd: [确定]
启动xinetd: [确定]
提示:如果想在系统启动时就运行该服务,那么要使用setup命令,在“system service”选项中,选中vsftpd守候进程即可。
(2) 独立工作模式启动
vsftpd也可以在独立的工作模式下工作,这样,使用vi编辑器需要再次打开/etc/vsftpd/vsftpd.conf文件做如下修改:“listen=yes”:
service vsftpd start
(3) 简单测试FTP服务器
登陆IP地址为192.168.0.10的FTP服务器,使用匿名用户名“anonyous”,输入密码,超级用户直接回车即可,就能实现成功登陆Bye退出FTP服务器。:
ftp 192.168.0.10
anonymous
并且浏览了服务器上的文件夹。Vsftpd提供了很多特性和很高的安全性。一个显著的例子就是vsftpd是在chroot模式下工作的,chroot模式就是登陆的主目录,在使用过程中,用户被限制不能访问除那个目录之外的任何程序文件,这样就使得系统中潜在的攻击者和其他用户的目录空间被严格分割开来,从而就不能破坏提供的FTP服务器,即便出现攻击事件,也极大地缩小了受损的空间和程序文件的范围,从而提高安全性。
(4) 关闭vsftpd服务器
Service vsftpd stop
不自启动:使用setup命令,在“systernm service”的选项中,取消选中的vsftpd守候进程即可。
3.FTP客户端的操作
FTP客户端使用如下命令来连接FTP服务器:
ftp 服务器IP地址/名称
连接服务器成功后,使用下述命令格式来进行FTP操作:
ftp>ftp 子命令
常用的子命令有:
?|help
://显示ftp内部命令的帮助信息![命令]
://在本机中执行shell命令后回到ftp环境中。lcd[dir]
://将本地工作目录切到dirclose
://中断与远程服务器的FTP对话。asc
://使用ascii类型传输方式bin
://使用二进制文件传输方式cd dir-name
://进入远程主机目录pwd
://显示远程主机的当前工作目录mkdir dir-name
://在远程主机中建立目录ls [dir-name/file-name]
://显示远程目录中的内容get 远程文件名 [本地文件名]
://下载远程主机的文件mget 文件名 文件名 ...(或者是目录名)
://下载远程主机上的多个文件。put 本地文件
://将本地文件传送到远程FTP服务器。mput 本地文件 本地文件...
://将多个本地文件传送到远程的FTP服务器- r
ename 旧文件名 新文件名
://更改远程主机文件名。 deletde 文件名
://删除远程主机中的指定文件mdeletd 文件名
://删除远程FTP服务器中的多个文件rmdir dir-name
://删除远程FTP服务器中的指定目录quit/bye
://退出FTP会话
vsftpd服务器的配置
1.安装的相关文件
与 FTP服务相关的文件有如下几个:
/etc/vsftpd/vsftpd.conf ://主配置文件
/etc/vsftpd.ftpusers : //指定哪些用户不能访问FTP服务器
/etc/vsftpd.user_list ://文件中指定的用户是否可以访问FTP服务器由vsftpd.conf文件中的userlist_deny的取值来决定。(userlist_deny=yes时不能访问FTP服务器;userlist_deny=no时,仅仅允许/etc/vsftpd.user_list中指定的用户访问FTP服务器)
/etc/vsftpd.ftpusers : //设置不允许登陆的用户名单
/etc/vsftpd.user_list : //设置方法同于/etc/vsftpd.ftpusers,根据vsftpd.conf中userlist_deny的值决定这个文件的意义
2.配置vsftpd.ftpusers文件
Vsftpd.ftpusers文件是用来确定哪些用户不能使用FTP服务器。用户可以根据实际情况添加或删除其中的某些用户,默认情况下该文件的内用:
cat /etc/vsftpd.ftpusers
3.配置vsftpd.user_list文件
cat /etc/vsftpd.user_list
如果需要限制指定的本地用户不能访问FTP服务器,那么按照以下方法修改/etc/vsftpd/vsftpd.conf照顾配置文件中的相关信息:
Userlist_enable=yes
Userlist_deny=yes
Userlist_flie=/etc/vsftpd.ftpusers
同样的,如果需要限制指定的本地用户可以访问,而其他的本地用户不可以访问,那么可以参照如下设置来修改主题配置文件:
Userlist_enable=yes
Userlist_deny=no
Userlist_flie=/etc/vsftpd.ftpusers
配置vsftpd.conf文件
配置文件路径为 /etc/vsftpd/vsftpd.conf。修改:
Vi /etc/vsftpd/vsftpd.conf
默认文件内容:
Anonymous_enable=YES //允许匿名用户登录
Local_enable=YES //允许本地用户登录
write_enable=YES //允许本地用户上传
Local_mask=022 //设置本地用户的文件生成掩码为022,默认值为077
dirmessage_enable=YES //设置切换到目录时显示.message隐含文件的内容
xferlog_enable=YES //激活上传和下载日志
connect_from_port_20=YES //设置是否允许启用FTP数据端口20建立连接
Pam_service_name=vsftpd //设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d
userlist_enable=YES //允许vsftpd.user_list文件中的用户访问服务器
userlist_deny=YES //拒绝vsftpd.user_list文件中的用户访问服务器
listen=YES //设置工作模式是否使用独占启动方式
Tcp_wrappers=YES //设置是否使用tcp_wrappers作为主机访问控制方式
1.匿名用户使用vsftpd服务器
根据vsft服务器的默认设置,匿名用户可以下载/var/ftp目录中的所有文件,但不能上传文件。在vsftp.conf文件的“write_enable=yes”设置语句存在的前提下,取消以下命令行前的’#‘可以增加匿名用户权限。
Anon_upload_enable=yes //允许匿名用户上传文件
Anon_mkdir_write_enable=yes //允许匿名用户创建文件
案例分析1:配置vsftpd服务器,要求只允许匿名用户登陆,本地用户不允许登陆。匿名用户可以在/var/ftp/pub目录中新建目录/上传和下载文件。
`
**
1)编辑vsftpd.conf文件
Anonymous_enable=YES
Local_enable=no
write_enable=YES
anon_upload_enable=YES
Anon_mkdir_write_enable=yes
connect_from_port_20=YES
listen=YES
tcp_wrappers=YES
2)修改/var/ftp/pub目录权限,允许属主、同组及其他用户写入文件
ca /var/ftp
ls -l
chmod 777 pub
ls -l
3)重新启动vsftpd服务器
Services vsftpd restart
2.限制本地用户
Vsftpd服务器提供多种方式来限制某些本地用户登陆服务器
1)直接编辑ftpusers文件,将禁止登陆的用户名写入ftpusers文件。
2)直接编辑user_list文件,将禁止登陆的用户名写入user_list文件,此时vsftpd.conf文件应该设置“userlist_enable=yes”和“userlist_deny=yes”语句,则user_list文件指定的用户不能访问FTP服务器。
3)直接编辑user_list文件,将允许登陆的用户名写入user_list文件,此时vsftpd.conf文件中设置“userlist_enable=yes”和“userlist_deny=no”语句,这只允许user_list文件中指定的用户访问FTP服务器。
提示:如果某用户同时出现在user_list文件和ftpusers文件中,那么该用户将不允许登陆。这是因为vsftpd总是先执行user_list文件,在执行ftpusers文件。
案例分析2:配置vsftpd服务器,要求只允许xh本地登录。
1)编辑vsftpd.conf文件,修改配置文件选项如下:
Anonymous_enable=no
Local_enbale=yes
Write_enable=yes
Connect_from_port_20=yes
Userlist_enable=yes
Userlist_deny=no
Listen=yes
Tcp_wrappers=yes
2)编辑user_list文件,使其一定包含xh
User_list文件中保留用户列表,其是否生效取决于vsftpd.conf文件中的“userlist_enable”参数。当“userlist_deny=no”,表示只有在user_list文件中存在的用户才有权访问vsftpd服务器;如果“userlist_deny=yes”,表示user_list文件中的存在的用户无权访问vsftpd服务器,甚至连密码都不能输入。Vsftpd.conf文件中默认“userlist_deny=yes”:
Vi user_list
Xh
3)重新启动vsftpd服务。
Services vsftpd restart
4)连接FTP服务器,以xh用户的身份登陆,可以船舰目录和上传下载文件。
3.禁止切换到其他目录
根据vsftpd服务器的默认设置,本地用户可以浏览其主目录之外的其他目录,并在权限许可的范围内允许上传和下载。这样的默认设置不太安全,通过设置chroot相关参数,可禁止用户切换到主目录以外的其他目录。
1)设置所有的本地用户都不可切换到主目录之外的其他目录。只需向vsftpd.conf文件添加“chroot_local_user=yes”配置语句
2)设置指定的本地用户都不可以切换到主目录之外的其他目录。
编辑vsftpd.conf文件,取消以下配置语句前的“#”符号,指定/etc/vsftpd/chroot_list文件中的用户不能切换到主目录之外的目录:
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd/chroot_list
并且检查vsftpd.conf文件中是否存在“chroot_local_user=yes”配置语句,如果存在那么就要将其修改为“chroot_local_user=no”或者在此配置语句前添加的“#”号。
案例分析3:
1)允许匿名用户登陆和本地用户登录
2)禁止匿名用户上传
3)允许本地用户上传和下载
4)进行一定的设置,能以本地用户uscr来登陆到FTP服务器上,并能上传与下载文件,熟悉子命令的应用。
如果用户user不存在,则需要创建用户user并设置口令,命令如下:
Useradd user
Passwd user
编辑vsftpd.conf文件:
Vi /etc/vsftpd/vsftpd.conf
使其一定包含以下语句:
Anonymous_enable=YES
Local_enable=YES
anon_upload_enable=no
anon_mkdir_write_enable=no
write_enable=YES
Local_mask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
Pam_service_name=vsftpd
userlist_enable=YES //允许vsftpd.user_list文件中的用户访问服务器
userlist_deny=YES //拒绝vsftpd.user_list文件中的用户访问服务器
listen=YES //设置工作模式是否使用独占启动方式
Tcp_wrappers=YES //设置是否使用tcp_wrappers作为主机访问控制方式
将用户user添加到user_list文件中:
Vi user_list
User
重新启动FTP服务器:
Service vsftpd restart
5)在windows操作系统中登陆,把linux下的文件下载在windows文件夹中,同时把windows文件夹中的文件上传到linux相应的目录中。ftp服务器地址为:169.254.138.246.
vsftpd高级配置
1.启动ASCII传输方式
在配置文件中使用以下语句:
Ascii_upload_enble=yes
Ascii_download_enble=yes
2.设置连接服务器后的欢迎信息
Ftpd_banner=welcome to ftp service
Banner_file=/var/vsftpd_banner_file
3.配置基本的性能和安全选项
Idle_session-timeout=60 //设置用户绘画的空闲中断时间
Data_connection_timeout=120 //设置空闲的数据连接的中断时间
Accept_timeout=60
Connect_timeout=60 //设置客户端空闲时自动中断和激活连接时间
Max_clients=200 //指明服务器总的客户并发连接数为200
Max_per_ip=3 //指明每个客户机的最大连接数为3
local_max_rate50000(50kbytes/sec)
Anon_max_rate=30000 //设置本地用户和匿名用户的最大传输速率限制
Pasv_min_port=50000
Pasv_max_port=60000 //设置客户端连接时的端口范围。默认0
4.设置本地用户能否chroot
设置用户登陆能否切换到个人目录以外的目录
1)设置所有的本地用户可以chroot:
Chroot_local_user=yes
2)设置指定用户能够chroot:
Chroot_local_user=no
Chroot_list_enable=yes
Chroot_list_file=/etc/vsftpd.chroot_list //只有/etc/vsftpd.chroot-list中的指定的用户才能执行
5.配置基于本地用户的访问控制
1)限制指定的本地用户不能访问,其他本地用户可以访问:
Userlist_enable=no
Userlist_deny=yes
Userlist_file=/etc/vsftpd.user_list //使文件/etc/vsftpd.user_list中指定的本地用户不能访问,而其他的本地用户可以访问。
2)限制指定的本地用户可以访问,其他本地用户不能访问:
Userlist_enable=yes
Userlist_deny=no
Userlist_file=/etc/vsftpd.user_list
6.配置基于主机的访问控制
设置hosts.allow文件:
vi /etc/hosts.allow
vsftpd:192.168.5.128:DENY
vsftpd在独占启动方式下支持tcp_wrappers主机访问控制方式,tcp_wrappers的主要配置文件是/etc/hosts.allow(允许)和/etc/hosts.deny(不允许),它们的格式都是:
守候进程名:主机表:ALLOW / DENY
或
守候进程名:主机表
如果只允许指定的主机访问服务器,可以使用下面的命令:
Only_from<主机表>
列如:only_from 192.168.6.0
//只允许该网段内的主机访问
如果要指定不能访问的主机,则可以使用命令:No_access <主机表>
7.配置访问时间限制
cp /user/share/doc/vsftpd-1.1.3/vsftpd.xinetd /etc/inetd.d/vsftpd
Vi /etc/xinetd.d/vsftpd
修改为“disable=no”
添加配置访问的时间限制(与vsftpd.conf中listen=no相对应):Access_time=hour:min-hour:min
例如:Access_time=8:30-11:30 13:00-18:00
//表示只在这个两个时间段才能访问的
8.限制文件的传输速度
编辑vsftpd.conf文件可设置不同类型用户传输时的最大速度,单位为字节/秒
(1) anon_max_rate参数
向vsftpd.conf文件中添加“anon_max_rate=20000”配置语句,那么匿名用户所能使用的最大传输速度约为20KB/s
(2) local_max_rate参数
向vsftpd.conf文件中添加“local_max_rate=50000”配置语句,那么本地用户所能使用的最大传输速度约为50KB/s.
Samba服务器
当局域网中存在多种操作系统,Samba服务器可以实现不同类型计算机之间文件的打印和共享。
一、Samba简介
SMB(Server Message Block,服务信息块)协议是一个高层协议,它提供了再网络上的不同计算机之间共享文件、打印机和通信资料的手段。
Samba是一组使Linux支持SMB协议的软件,基于GPL原则发行,源代码完全公开。Samba的核心是两个守候进程smbd和nmbd。
- Smbd:负责建立对话、验证用户、提供文件和打印机共享服务
- Nmbd:负责实现网络浏览。
为了将Linux作为客户机集成到Windows环境中,Samba提供了2个工具:nmblookup工具用于NetBIOS名称解析和测试,smbclient工具提供对SMB文件和打印服务的访问。
(一)Samba的工作原理
Samba的工作原理是让Windows操作系统网上邻居的通信协议——NETBIOS(Network Basic Input/Output System)和SMB这两个协议在TCP/IP通信协议上运行,并且使用Windows上的NETBEUI协议让Linux可以在网上邻居中被看到。
(二)Samba服务器功能
共享目录、目录权限、共享打印机、打印机权限
二、Samba服务器的安装和配置
(一)Samba服务器的安装
1.验证samba是否已经安装
rpm -qa | grep samba
如果出现以下信息则已安装:Samba-common-2.2.7a-7.9.0
Samba-client-2.2.7a-7.9.0
Samba-2.2.7a-7.9.0
2.安装samba
Samba有三个安装文件Samba-common-2.2.7a-7.9.0、Samba-client-2.2.7a-7.9.0、Samba-2.2.7a-7.9.0。自行网上下,然后进入这三个文件的目录输入指令:
rpm -ivh Samba-common-2.2.7a-7.9.0 //安装samba的公用软件包
rpm -ivh Samba-client-2.2.7a-7.9.0 //安装samba的客户端程序
rpm -ivh Samba-2.2.7a-7.9.0 //安装samba的服务器程序
和samba服务相关的文件有:samba的核心配置文件/etc/samba/smb.conf、Samba的启动脚本/etc/rc.d/init.d/smb、存放Samba用户口令的文件/etc/samba/smdpasswd和添加samba用户的配置文件/usr/bin/smbadduser。
(二)Samba服务器的配置
安装后还需要进一步的配置samba服务器,正确设置防火墙。默认情况下防火墙不允许windows客户端访问samba服务器,必须打开相应的服务。
1.smb.conf文件
Samba服务器全部配置信息均保存在/etc/samba/smb.conf文件中。文件采用分节的结构,一般由三个标准节和若干个用户自定义的共享节组成。利用文本编辑器可以编辑和查看smb.conf文件。
1)基本全局参数
Netbios name=? //设置samba的netBIOS的名字
Workgroup=? //设置samba要加入的工作组
Host allow=?<192.168.5. /192.168.5.164>
Host deny=?<192.168.5. /192.168.5.164> //允许/禁止访问的子网或主机
Dead time=? //指定在客户机误操作多少分钟后服务器自动中断连接
Max open files=? //定义一客户机最多能打开的文件数目
2)共享资源参数
Comment=? //指定对共享文件的描述
Path=? //指定共享服务器的路径
3)访问控制参数
Writable=yes //指定共享的路径是否可写
Browsable=yes //指定共享的路径是否可浏览
Available=yes //指定共享资源是否可用
Read only=yes //指定共享的路径是否为只读
Read list=yes,@group //指定只读访问用户列表
Write list=user,@group //设置读写访问用户列表
Valid users=user,@group //制定允许使用服务的用户列表
Invalid users=user,@group //指定不吞徐使用服务的用户列表
Public=yes/no //设置共享资源是否允许所有用户访问,除guest用户以外
Guest ok=yes/no //设置是否允许guest用户访问共享资源
Guest only=yes/no //设置共享目录只允许guest用户访问
Smb.conf文件的默认设定值如下:
[global]
Workgroup=mygroup
Serverstring==samba server
Security=user
Load printers=yes
Log file=/var/log/samba/m.log
[homes]
Comment=home directory
Browserable=no
Writable=yes
[printers]
Comment=All printers
Path=/var/spool/samba
Browserable=no
Guest ok=no
4)Samba的安全等级参数
Security=?
其中可选择的等级参数如下:
- Share(共享级访问):当客户端连接到samba服务器后,不需要输入samba用户名和口令就可以访问samba中共享的资源,这种方式方便但不安全。
- User(用户级):这是samba服务器默认的安全级别。Samba服务器负责检查samba用户名和口令,验证成功后才能访问相应的共享目录。
- Domain(域):samba服务器本身不验证samba用户和口令,而由windows域控制服务器负责。此时必须指定域控制服务器的netbios名称。
- Server(服务器):samba服务器不验证samba用户名和口令,而将输入的用户名和口令传给另一个samba服务器来验证。此时必须指定负责验证的那个samba服务器的名称。
2.启动samba服务
1)检查配置文件正确性
Testparm
2)启动服务
Server smb start/restart
案例分析1:架设共享级别的samba服务器,对所有windows计算机用户均可读/share目录,当前工作组为workgroup。
配置步骤如下:
1)修改Linux配置文件。利用文本编辑工具对/etc/samba/smb.conf进行编辑。
vi /etc/samba/smb.conf
[global]
Workgroup=workgroup //设置工作组
Security=share //设置安全级别为共享
[share]
Path=/tmp/share //共享/share下的文件
Public=yes //设置目录允许所有人公用
Writable //目录可写入
Guest ok=ok //guest用户可以访问
2)利用testparm命令测试配置的正确性
Testparm //测试配置文件的正确性
Testparm命令执行后如果显示“Loaded services file OK”信息,那摩说明samba服务器的配置文件完全正确,否则将提出错误信息,此时如果按【Enter】键将显示详细的配置内容如下:
[global]
Workgroup=workgroup
Security=share
[share]
Path=/tmp/share
Public=yes
Writable
Guest ok=ok
提示:testparm命令显示的配置内容跟smb.conf文件不一定完全相同,但功能一定相同
3)重新启动服务器
service smb restart
启动SMB服务 [确定]
启动NMB服务 [确定]
此时所有用户不需要口令,都可以访问/tmp目录,并具有读写权限。
案例分析2:架设用户级别的samba服务器,其中tom用户可以访问其个人目录文件,当前工作组为workgroup。
1)把tom用户设置为samba用户,并输入口令。
smbpasswd -a tom
2)利用文本编辑器修改smb.conf文件
vi /etc/samba/smb.conf
[global]
Workgroup=workgroup //设置工作组
Security=share //设置安全级别为共享
[homes]
Browseable=no
Writable=yes //目录可写入
3)利用testparm命令测试文件配置的正确性
testparm //测试配置文件的正确性
Testparm命令执行后如果显示“Loaded services file OK”信息,那摩说明samba服务器的配置文件完全正确,否则将提出错误信息,此时如果按【Enter】键将显示详细的配置内容如下:
[global]
Workgroup=workgroup
Security=share
[homes]
Browseable=no
Writable=yes
4)重新启动服务器
service smb restart
关闭SMB服务 [确定]
关闭NMB服务 [确定]
启动SMB服务 [确定]
启动NMB服务 [确定]
案例分析3:架设用户级别的samba服务器,其中jack和helen用户可以访问其个人主目录和/var/samba/tmp目录,而其他的普通用户只能访问其个人主目录。
1)假设工作组为workgroup。利用smbpasswd命令将Linux系统中所有普通用户都设置为samba用户。
2)利用文本编辑器修改smb.conf文件
vi /etc/samba/smb.conf
[global]
Workgroup=workgroup //设置工作组
Security=user //设置安全级别为共享
[homes]
Comment=Home directory
Browseable=no
Writable=yes //目录可写入
[tmp]
Path=/var/samba/tmp //共享/tmp下的文件
Writable=yes
Valid users=Helen Jack
3)利用testparm命令测试配置文件是否正确
testparm
5)重新启动samba服务器
(三)与samba服务器相关的shell指令
除了之前介绍的testparm命令和smbpasswd命令之外,还包括smbclient、smbstatus命令等。
1.smbclient命令
功能:查看或访问samba共享文件
smbclient 【-L IP地址】【共享资源路径】【-U 用户名】
示例:
某samba服务器的IP地址为202.127.250.51,查看其提供的共享资源。smbclient -L 202.127.250.51
示例:
访问IP地址为192.168.0.10的计算机提供的共享目录/docssmbclient //192.168.0.10/docs
Password:
Domain=[WORKGROUP]OS=[Unix] server=[Samba2.2.7a]
Smb: \>
执行命令“ smbclient //192.168.0.10/docs”后,需要输入口令,验证成功后会进入smbclient环境,出现“Smb: >”提示符等待输入命令。输入“?”将显示所有可使用的命令。在samba交互界面下的操作命令有:
!
:执行本地路径ls
:显示文件列表get
:下载单个文件put
:上传单个文件mget
:批量下载文件(支持通配符)mput
:批量上传文件(支持通配符)mkdir
:建立目录rmdir
:删除目录rm
:删除文件
2.smbstatus命令
功能:查看samba共享资源的使用情况
smbstatus
3.建立Samba用户
当samba服务器的安全级别为用户时,用户访问samba服务器时必须提供其samba用户名和口令。只有Linux系统本身的用户才能成为samba用户,必须要设置其samba口令。Samba用户账号信息默认保存与/etc/samba/smbpassed文件中。
1)smbadduser命令
功能:将Linux用户设置为samba用户
smbadduser 用户名:用户名
示例:Useradd u1
//建立系统用户Passwd u1
//设置密码Smbadduser u1:u1
//建立samba用户
2)smbpasswd命令
功能:将Linux用户设置为samba用户
smbpasswd【选项】【用户名】
选项:
-a <用户名>
: 增加samba用户-d <用户名>
: 暂时锁定指定的samba用户-e <用户名>
: 解锁指定的samba用户-n <用户名>
: 设置指定的samba用户无密码-x <用户名>
: 删除samba用户
示例:
将名字jerry的Linux用户设置为samba用户smbpasswd -a jerry
超级用户在shell命令提示符后输入“smbpasswd -a 用户名”格式的命令后,必须根据屏幕提示两次输入指定samba用户的口令。系统将指定samba用户的找好信息保存于/etc/samba/smbpasswd文件中。Smbpasswd文件默认不存在。
示例:
修改samba用户jerry的口令:smbpasswd jerry