CentOS文件传输共享安装和配置--vsftp,samba


CentOS是linux中搭建服务器比较推崇的系统,其是来自于Red Hat Enterprise Linux依照开源规定生成的,去除了那些非开源的软件,可以说是对稳定性和成本考虑的较好的选择。

虽然安全性对于服务器来说是至关重要的,但是在下面我们的学习阶段,我们仅以好用为主要指标,穿插的会说明哪些地方我们在真正运行时要考虑的安全问题。

安装完系统,首先关闭SELinux,其是增强安全性的一项功能,会对初学者在学习过程中带来不必要的麻烦,等后面入门了再慢慢研究也不迟。

设定文件为:/etc/syscofig/selinux ,将SELINUX=enforcing改为SELINUX=disabled。

一、网络配置

网卡配置文件位置:/etc/sysconfig/network-scripts

普通网卡:ifcfg-eth0

无线网卡:ifcfg-wlan0

配置方法,分静态IP和动态IP

自动获取(DHCP):

DEVICE=eth0
TYPE=Ethernet
HWaddr 08:00:27:70:2A:32 //MAC地址
UUID=273e13cd-70cf-4a90-b3b0-f515c79ec09b
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
静态IP:
DEVICE=eth0
HWADDR=08:00:27:70:2A:32
ONBOOT=yes
IPADDR=192.168.1.106 //静态IP地址
BOOTPROTO=static //与dhcp相对,获取协议,另设为none也行。
NETMASK=255.255.255.0
TYPE=Ethernet
GATEWAY=192.168.1.1
DNS1=x.x.x.x   //根据实际改
IPV6INIT=no //静态IPV6
DNS的配置文件为:/etc/resolv.conf  

网络服务管理命令:service network {start|stop|status|restart|reload|force-reload}

当然如果觉得文件配置不容易操作的话,也可以安装GUI的软件:

sudo yum -y install setuptool ntsysv system-config-firewall-tui system-config-network-tui

运行setup开始图形话配置。

PS:

1、 禁用ping命令,即ICMP协议:echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all 启用改为0.

2、单一网卡添加另一IP:ifconfig eth0:0 192.168.1.106 up //第三个IP为eth0:1

删除:ip addr delete 192.168.1.106 dev eth0 //此法是动态添加,重启网卡,配置失效

查看ip:ip addr show或ifconfig

静态方法就是新建/etc/sysconfig/network-scripts/ifcfg-eth0:0

配置文件内容和ifcfg-eth0相仅,仅IPADDR处绑定的IP不同

3、双网卡,到这里应该知道,第二块网卡叫eth1,配置文件为ifcfg-eth1,内容同eth0

如果想用双网卡组建负载均衡的配置,则通过ifcfg-bond0来设置

//ifcfg-eth0
DEVICE=eth0  //eth1配置文件设为eth1
ONBOOT=yes
BOOTPROTO=none //static 也行
USERCTL=no
MASTER=bond0 //配置交给bond0统一设置
SLAVE=yes
//bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.1.105
BOOTPROTO=none
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=x.x.x.x
// /etc/modprobe.conf
alias bond0 bonding
options bond0 miimon=100 mode=1
//miimon表示每100ms时间检查网络一次
//mode 有0:balance-rr 负载均衡
1:active-backup 仅网卡工作,断线自动切换
2:balance-xor 容错
3:broadcast 所有网卡接收数据包
4、禁用IP6 (求大规模使用,禁用可提高网络效率):

修改 /etc/modprobe.d/dist.conf

添加:alias net-pf-10 off
alias ipv6 off

reboot

二、FTP

接下来是文件共享与传输的内容,首先就是vftpd的安装和配置

vsftpd(Very Secure FTP Daemon)

rpm -qa | grep vsftpd 查看安装与否

安装方法 :yum install vsftpd -y

PS:这里补充一句,Cetos的防火墙是通过iptables来配置的,可以管理开启哪些端口,

开启的查看命令是netstat -ntlp | grep xxx(可以是端口号也可以是程序名)

想偷懒service iptables stop关闭

加一条配置也简单:/etc/sysconfig/iptables

加上两条:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

service iptables restart

监听是开始了,下面就开始设置vsftpd 了

给出我的配置文件:

anonymous_enable=YES//允许匿名登录,即不需要密码,其共享的文件是/var/ftp/pub
local_enable=YES // 允许用户账号登录,即共享的就是/home/用户文件夹
chroot_local_user=YES//禁止用户切换目录,否则一个账号可访问其它用户目录
listen=YES
pam_service_name=vsftpd
userlist_enable=YES  //黑名单设置,文件为/etc/vsftpd/user_list里
tcp_wrappers=YES //YES表示限制IP,设置分别在两个文件中,/etc/hosts.deny和/etc/host.allow中
local_max_rate=300000 限制上传下载速度为300k
user_config_dir=/etc/vsftpd/limit
//这个可以配置专门用户的上传下载速度,只要,在limit新建以用户名的文件,加上一句local_max_rate=500000。对该用户特殊对待。
idle_session_timeout=30 //30秒没任何操作,自动断线。
说明一句,这里的注释应为#号,这里是为了让内容紧凑些,所以不要复制粘贴,理解意思最好。

还有几条配置补充一下,

pasv_enable=no //设置主要模式还是被动模式,如果是被动模式,看ftp客户端是什么形式。不过好像在浏览器里用ftp访问,还是要主动模式,但大部分客户端还是被动模式。

listen_port=xx//修改监听端口,注意防火墙处也要改

max_per_ip=3 //限制最多3个ip连接,其它等待

chroot_list_enables=YES //限制特定用户不可以切换目录,配置文件在/etc/vsftpd/chroot_list,与chroot_local_user所以用户不可以切换目录只能一个有效

SSL/TLS加密传输,个人觉得一般不必要。

需安装openssl,方法不多说,rpm -qa查一下,没装的yum install

这里要简单介绍一下ssl,什么是ssl(security socket layer)安全传输层,是位于HTTP和TCP协议中间的一层协议,至于为什么要加这层协议,是因为HTTP是明文传输的,意味着如果数据包被截,信息直接泄漏,所以加了这么一层加密层。

证书(Certification Authority):CA是证书的签发机构。其为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。它负责产生、分配并管理所有参与网上交易的个体所需的数字证书,因此是安全电子交易的核心环节。(from wiki)

公钥/私钥:说白了一个是加密密钥,一个是解密密钥,即公钥公开,用于加密,而想解析这个信息只能通过私钥,这也称为非对称加密。

一般公钥是附带于数字证书(ca),而根据数字签名验证该证书是否是当前server所执有。

其主要的原理就是通过证书和密钥来完成,其过程如下

首先,Client向Server发送连接请求(https),Server接受信息并返回自己的证书并附带公钥。

Client验证证书是否是ca所颁发,然后利用公钥加密自己的会话密钥信息,返回给Server

Server接收后用自己的私钥来解密,得到并生成会话密钥。然后双方利用协商出的密钥加密通信。

创建CA证书(未验证):

cd /etc/pki/tls/certs

sudo openssl req -x509 -nodes -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem

根据提示,填写国家,公司,主机名,邮件等信息,会在当前 文件夹下生成 vsftpd.pem

sudo chmod 600 vsftpd.pem

在vsftpd.conf中添加下列几行

rsa_cert_file=/etc/ki/tls/certs/vsftpd.pem

ssl_enable=YES

force_local_data_ssl=YES
force_local_logins_ssl=YES

结束后service vsftpd restart

service vsftpd {start|stop|restart|reload}

浏览器中想访问:ftp:user:password@ip

三、samba文件服务器

samba是一个用于windows和linux之间共享文件的,像建网上邻居,传传文档,电影还是不错的,还能共享打印机。

安装samba (rpm -qa|grep samba yum -y install samba samba-client)

新建共享目录:

mkdir share

chown nobody:nobody share 共享权限

samba配置文件:/etc/samba/smb.conf

   security = share //share表示匿名登录,即不需要账号密码登录,默认是user表示需要账号密码登录。
passdb backend = tdbsam //如果上面是user,则需要,如果是share则注释,加#
     workgroup = WORKGROUP //表示用户组,像windows中的用户组,一般改为这个
        server string = Samba Server Version %v //当你连接时显示的信息
        netbios name = MyServer表示在windows上显示的名称,否则显示ip。
[share]
comment=share folder//说明
path= /home/share //共享文件夹路径
read only=no //可读可写
guest ok=yes //支持访客
browseable=yes //可以浏览
public=yes //如果是share,则加上这条,如果是user模式,则把这条注释。
#valid user=@aa //如果是user,且仅允许某些用户访问,则加上这条。
至于[printers] 共享打印,默认就行。

service smb start //起动守护进程,核心服务

service nmb start //像域名解析

打开防火墙(137,1398,139,445端口)

测试:testparm

\

在windows上输入//IP就行,或在资源管理器-网络中会出现连接。

至于在linux上访问可以通过smbclient

smbclient -L //IP 显示存在在线主机

smbclient //IP 如果是share,会出现输入密码,按回车即可

smbclient //IP -U username%passwd //如果是user模式,输入用户密码登录

其它的看smbclient --help查看

对于user模式,samba v3版本后,采用数据库代替

对于user模式,samba v3版本后,采用tdbsam数据库代替文件管理用户,密码。

命令:pdbedit -L(Lw/Lv) 列出用户列表

pdbedit -a xx 添加xx用户 //先在系统里通过ueradd 添加用户,且在home内有用户的主目录。

pdbedit -x xx 删除xx用户

pdbedit -c "[D]" -u xx 暂时停用xx用户

pdbedit -c "[]" -u xx 恢复xx用户

对于Linux中的用户,如果想将网络共享文件夹挂载至某一目录下,命令是

sudo mount -t cifs //IP/share /mnt/

想图形化管理的话可以试一试,SWAT-Samba WEB管理工具。

PS:部分内容引自《CentOS 6.x系统管理实战宝典》

相关内容