远程访问控制与rsync

一、ssh远程登录

  • SSH原理
    C/S架构,监听端口tcp协议22号端口,所有数据加密传输,登录时认证方式有密码和秘钥对,它是telnet的替代软件。

  • linux系统中的openssh软件提供ssh的服务,支持ssh协议(远程登录),sftp(安全ftp),scp(远程拷贝数据)

  • ssh在linux系统一般默认已经安装,可直接使用:

    • linux的ssh客户端程序用法

      • 远程登录:ssh 用户@服务端ip地址
      • 远程拷贝:
        scp 用户@服务端ip地址:目标目录/文件 本地目录
        scp 本地文件 用户@服务端ip地址:目标目录/文件
      • 远程ftp:
        sftp 用户@服务端ip地址
    • 注:若服务端更改了ssh协议的默认端口号,那么则使用ssh、scp命令式需要指定-p服务端的端口号

  • windows的客户端

    • xmanager:收费的ssh远程管理套件,提供xftp、ssh、远程linux桌面功能
    • CRT:提供远程ssh的管理
    • putty:远程登录工具
    • winscp:远程拷贝,linux和windows之间数据传输
  • 优化ssh的服务端配置

 vi /etc/ssh/sshd_config
    Port 22                         ##指明端口号
    ListenAddress 192.168.100.101       ##指定监听的ip地址
    PermitRootLogin no              ##禁用root登陆
    GSSAPIAuthentication no         ##禁用GSSAPI的认证,使用密钥或密码认证,加快登陆速度
    GSSAPICleanupCredentials no     ##同上
    UsePAM no                       ##禁用PAM认证,增加速度
    UseDNS no                       ##禁止将IP逆向解析为主机名,加快解析速度
    ClientAliveCountMax 3               ##探测3次客户端是否为空闲会话,↓3*10分钟后断开连接
    ClientAliveInterval 10                  ##空闲会话时长,每10分钟探测一次
    AllowUsers admin                    ##明确指定登陆用户,多个用户用空格隔开
    PubkeyAuthentication yes            ##使用公钥认证,推荐使用安全高效!
    PermitEmptyPasswords no             ##不允许空密码登录,这个太危险啦。
    PrintLastLog no             ##不打印最后登陆信息,减少恶意登陆者获取的信息量,防止被恶意利用。
    TCPKeepAlive yes                    ##保持长连接,加快连接速度,优化性能
  • ssh的秘钥对方式验证登录

    • 秘钥对必须在客户端上生成,拷贝共要到服务端对应的目录下。注:客户端用户必须要有私钥,服务端用户必须要有公钥。
    • 配置
    ssh-keygen-t rsa    #客户端创建秘钥对,一路回车,秘钥对存放在~/.ssh目录中,id_rsa为私钥,id_rsa.pub为公钥
    ssh-copy-id root@ip地址   #上传公钥到目标主机中(必须使用22号端口),且导入到目标主机的用户家目录中,~/.ssh/authorized_keys文件中,如若上传失败,使用scp进行拷贝并导入:scp .ssh/id_rsa.pub 用户@目标主机ip地址
    ssh root@ip地址   #验证不需要密码可直接进行登录
    注:同一台客户端实现无密码登录服务器的多个用户时,只需将公钥上传至服务端的多个用户的家目录下即可;

二、Tcpwrapper访问控制

  • 原理
    通过libwrapper.so或者tcpd程序来实现对一些缺乏自身安全机制的服务进行保护,通过/etc/hosts.deny或/etc/hosts.allow两个文件来进行控制;
  • 匹配流程
    先hosts.allow允许,后hosts.deny拒绝,如果没有明确拒绝,则允许;
  • 查看服务是否支持tcpwrapper
ldd $(which 服务主程序)|grep wrap    #若有输出则代表支持,无输出则不支持
  • 配置tcpwrapper
/etc/hosts.deny或/etc/hosts.allow的语法规则(允许优先)
程序: 客户端地址[选项]
程序:必须是支持tcpwrapper的程序,如sshd、vsftpd、telnet等,也可以使用ALL表示所有支持tcpwrapper的程序,多个服务以逗号隔开;
客户端地址:可以为ip、FQDN、域名、网段(192.168.)、ALL表示所有客户端地址,多个ip以逗号隔开、LOCAL代表本机地址;
常用的选项:spawn(调用其他命令);
  • 实例
vi /etc/hosts.deny
    sshd:192.168.100.1
    vsftpd:ALL : spawn echo "1" >> /var/log/telnet.log
vi /etc/hosts.allow
    vsftpd:all EXCEPT 192.168.100.102/255.255.255.0:deny

三、rsync远程同步

  • rsync(rsync快速异地备份工具)的功能
    支持增量备份:可在不同主机之间同步数据;同步过程可以保持权限,连接且压缩传输,适合做镜像服务器;

  • rsync的角色;

    • 发起端:使用rsync的主机;
    • 备份源:响应发起端的主机;
  • rsync同步方向:

    • 上行同步
      上传,数据在发起端,备份源提供目录,远程用户必须对备份源目录拥有写入权限,发起端登录的用户必须要对数据用户读取权限;
    • 下行同步
      下载,数据灾备份院上,发起端提供目录,发起端登陆的用户必须对目录用户写入权限,远程用户必须对备份源的数据有读取权限;
  • 语法

rsync 选项 原始位置 目标位置
    常用选项:-a 归档模式、保留文件权限、时间、链接、归属、特殊文件
             -v 输出详细信息
             -z 压缩传输
             -H 保持硬链接
             -r 递归模式,递归子文件及子文件夹
             --delete 删除目标目录有,原始位置没有的文件
    常用选项组合:-av  -avzH   --delete
  • 本地复制文件语法:rsync -av /源文件 /目标目录/
    注:当源文件为例/tmp时,那么将复制tmp整个目录及目录下的文件;
    当源文件为例/tmp/时,那么将复制tmp目录下的所有文件,不包含tmp目录本身;
    可同时复制多个文件,中间用空格隔开;

  • 清空本地目录语法

rsync -av --delete /空目录/ /目标目录/
注:删除目标目录有,空目录中没有的目标目录中的文件,空目录可以自己创建,则此就达到了删除的目的;
  • 远程复制文件语法
上行同步:rsync -avzH 本地数据 用户@备份源ip地址:备份目录
下行同步:rsync -avzH 用户@备份源ip地址:备份目录 本地备份目录

四、rsync和inotify实时同步

  • inotify作用:内核模块,监控文件和目录的变化,通过inotify-tools工具提供inotify-wait(持续监控)和inotify-watch(短期监控)两个模块进行监控;
  • 优化内核参数:
    max_queued_events #最大的时间列队
    max_user_instances #最大的实例
    max_user_watchs #最大的监控文件数量
  • 案例:上行同步

    • 安装inotify-tools,发起端192.168.100.101
    [root@localhost ~]# tar  zxvf  inotify-tools-*.tar.gz  -C  /usr/src/
    [root@localhost ~]# cd  /usr/src/inotify-tools-*/
    [root@localhost ~]# ./configure  &&make &&make  install
    [root@localhost ~]# ls  /usr/local/bin/inotify*
    • inotify的使用:发起端192.168.100.101
    [root@localhost ~]# vi  /etc/sysctl.conf
      fs.inotify.max_queued_events = 16384           ##监控事件队列数
      fs.inotify.max_user_instances = 1024           ##监控实例数
      fs.inotify.max_user_watches = 1048576          ##监控的文件数量
    [root@localhost ~]# sysctl  -p
    • 测试inotify命令;发起端192.168.100.101
    [root@localhost ~]# mkdir /root/data
    [root@localhost ~]# inotifywait -mrq  -e  modify,create,attrib,move,delete  /root/data 
    
    选项注解:-m持续监控,r递归目录,q简化输出,-e指定监控事件:modify修改、create创建、attrib权限修改、move移动、delete删除;在其他终端操作文件,查看变化
    • 编写脚本:发起端192.168.100.101
    [root@localhost ~]# vi  /root/rsync_inotify.sh              ##实时同步脚本
      #!/bin/bash
      RSYNC="rsync -avzH /root/data/ root@192.168.100.102:/tmp/ --delete"
      INT_CMD="inotifywait -mrq -e modify,create,move,delete,attrib /root/data/"
      $INT_CMD |while read DIRECOTRY EVENT FILE;do
      $RSYNC
      done
    [root@localhost ~]# chmod  +x  rsync_inotify.sh
    [root@localhost ~]# /root/rsync_inotify.sh  &  ##启动脚本
    • 生成密钥对;发起端192.168.100.101
    [root@localhost ~]# ssh-keygen -t rsa
    [root@localhost ~]# ssh-copy-id root@192.168.100.102
    • 测试验证,发起端创建测试文件。发起端192.168.100.101
    [root@localhost ~]# cd /root/data
    [root@localhost ~]# touch 1.txt
    • 备份源验证文件是否同步;备份端192.168.100.102
    [root@localhost ~]#  ls /tmp/

李泽信 发布于 2022-8-8 22:21

vsftpd文件传输

一、ftp协议及原理

  • ftp文件传输协议:是C/S结构应用,监听的控制端口是tcp协议的20、21号端口。
  • ftp的连接模式(传输模式):ftp连接的过程:先建立控制连接 --- 传输连接--- 传输数据

    • 主动模式:服务端21号端口主动发起控制连接,客户端使用大于1023号端口响应,建立连接后,使用20号端口传输数据,适用于客户端未开启防火墙的环境。
    • 被动模式:服务端21号端口被动等待数据连接,客户端使用大于1023号端口进行请求,建立连接后,使用服务器提供被动模式的非20号端口大于1023号端口进行传输数据,适用于客户端开启防火墙的环境。比较常用的模式。
    • ftp的传输方式:ftp客户端自动选择的,无需设置。

      • 文本模式:ASCII,没过信息交换标准码,用于文本传输。
      • 二进制模式:binary,传输效率高,常用来传输非文本文件,比较常用。
    • ftp的用户类型

      • 匿名用户:(anonymous/密码空、ftp/ftp);
      • 本地用户:本机的系统用户账号,除匿名用户外;
      • 虚拟用户:位于独立文件中的FTP用户账号,用过这种虚拟用户,未提供安全的服务,将ftp服务于linux系统的关联将至最低;
      • ftp服务端软件:IIS/Ser-U/vsftpd;

二、vsftpd的配置文件

  • 用户列表文件
    /etc/vsftpd/ftpusers(禁止登录ftp的用户、黑名单);
    /etc/vsftpd/user_list(如果主配置文件中设置了userlist_enable=YES,那么此文件方可生效,若userlist_deny=YES,则仅禁止此列表中用户登录;若userlist_dengy=NO,那么表示仅允许文件中的用户登录ftp)
  • 主配置文件:/etc/vsftpd/vsftpd.conf
    配置项:使用命令man 5 vsftpd.conf查看配置项帮助。

三、配置匿名ftp

系统类型 IP地址 主机名 所需软件
Centos7.8 192.168.100.101 localhost vsftpd
  • 安装vsftpd软件程序
[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
listen=YES      #开启监听
listen_ipv6=NO      #禁用ipv6监听
[root@localhost ~]# systemctl start vsftpd.service
[root@localhost ~]# netstat -utpln |grep 21
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      1384/vsftpd 
  • 测试验证

  • 服务端修改配置文件实现匿名认证

配置文件中不要加注释,容易报错起不来服务
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
:%g/^#/d    #删除多余注释行
anonymous_enable=YES            #允许匿名访问
local_enable=NO                 #不允许本地系统用户访问
write_enable=YES                #允许写入权限
local_umask=022             #本地用户上传文件的默认权限掩码
anon_umask=022                 #匿名用户上传文件的默认权限掩码
#新添加
anon_upload_enable=YES          #允许匿名用户上传文件
anon_mkdir_write_enable=YES     #允许匿名用户创建或上传目录
anon_other_write_enable=YES     #允许匿名用户有其他写入权限,比如重命名、删除、覆盖等
dirmessage_enable=YES           #允许显示用户切换目录时显示.message文件(如果存在的话)
xferlog_enable=YES              #启用xferlog日志,默认记录到/var/log/xferlog
connect_from_port_20=YES        #允许服务器主动模式
xferlog_std_format=YES          #允许标准xferlog日志模式
listen=YES                      #允许独立运行的ipv4方式监听服务
listen_ipv6=NO                  #拒绝独立运行的ipv6方式监听服务
pam_service_name=vsftpd         #设置用于用户认证的PAM文件位置,在/etc/pam.d目录中对应的文件名
userlist_enable=NO              #禁用user_list用户列表文件
tcp_wrappers=YES                #启用tcpwrapper主机访问控制

[root@localhost ~]# systemctl restart vsftpd.service
[root@localhost ~]# ls -ld /var/ftp/    #匿名认证的根目录权限不可以更改,必须为755
drwxr-xr-x 3 root root 17 8月   7 22:05 /var/ftp/
[root@localhost ~]# ls -ld /var/ftp/pub/
drwxr-xr-x 2 root root 6 8月   3 2017 /var/ftp/pub/
[root@localhost ~]# chmod 777 /var/ftp/pub/
[root@localhost ~]# mkdir /var/ftp/linux
[root@localhost ~]# chmod 777 /var/ftp/linu
  • 客户端测试

  • 服务端修改上传文件的反掩码,实现不同匿名账户无法互相下载文件

[root@localhost ~]# grep 022 /etc/vsftpd/vsftpd.conf 
anon_umask=022

  • 调整ftp服务器配置,实现本地用户认证共享;
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES        #开启本地认证
write_enable=YES
local_umask=077         #本地用户上传文件反掩码
local_root=/opt/www     #本地认证的根目录
chroot_local_user=YES   #将本地用户禁锢在根目录中
anon_umask=077
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES     #开启user_list文件
userlist_deny=YES       #指定user_list文件为黑名单,NO为白名单
one_process_model=NO    #关闭一个连接对应一个进程,减少服务器资源
tcp_wrappers=YES
  • 创建本地用户认证的ftp根目录;
[root@localhost ~]# mkdir /opt/www
[root@localhost ~]# chmod 777 /opt/www
[root@localhost ~]# touch /opt/www/test.txt
  • 创建本地用户u01和u02;
[root@localhost ~]# useradd u01
[root@localhost ~]# useradd u02
[root@localhost ~]# passwd u01
[root@localhost ~]# passwd u02
  • 客户端访问测试


李泽信 发布于 2022-8-7 21:47

samba文件共享服务

1.了解samba服务

  • 概念
    实现windows和linux系统之间smb协议的一款开源软件,是c/s架构。
  • SMB(服务消息块协议):是一种在局域网上共享文件和打印机的通信协议,提供不同系统之间共享文件或打印机。
  • NetBios(网络基本输入输出系统协议):负责数据传输过程中的主机解析。
  • CIFS(通用网络文件系统):CIFS是针对Microsoft Windows操作系统的本地网络文件系统。Linux系统可以挂在和访问CIFS文件共享,如同常见的网络文件系统一样。
  • samba的作用:共享文件和打印机,支持linux加入到windows的AD中;是想linux和windows之间的访问。
  • 实现原理:samba服务功能强大,这与其通信基于SMB协议有关。SMB不仅提供目录和打印机共享,还支持认证、权限设置。在早起,SMB运行于NBT协议(NetBIOS overTCP/IP)上,使用UDP协议的137、138及TCP 的445端口,后期SMB经过开发,可以直接运行于TCP/IP协议上,没有额外的NBT层,使用TCP的协议445端口。

2. smaba软件包的组成

  • samba软件组成:

    • samba-common(公共组件)
    • samba-client(客户端)
    • samba(主程序)
    • samba-winbind(允许unix系统利用windowAD的用户信息)
  • samba服务的程序组件

    • smb:提供共享访问,管理文件传输,端口tcp139号(smb协议)、tcp445号(cifs协议)
    • nmb:负责NetBIOS协议(负责跨平台实现共享)解析,端口UDP137、138
  • 理解samba的主配置文件/etc/samba/smb.conf
    主配置文件的格式:
    • 表示注释
    • ;表示配置的样例
    • [global]全局设置
    • [homes]家目录共享设置
    • [printers]打印机共享设置

3.搭建samba的匿名和认证的共享

  • 安装samba:推荐使用yum安装
  • 修改配置文件smb.conf主配置文件,根据需求进行修改;smbusers共享账号的别名文件;一个用户可以映射多个名称;
  • 管理samba用户:
pdbedit -a -u 用户    #添加系统用户到smb用户
pdbedit -x -u 用户    #删除系统用户在smb用户
pdbedit -L  #查看系统用户在smb用户
  • 启动服务
systemctl start smb.service     #启动共享
systemctl start nmb.service     #启动NetBIOS服务

4.samba服务的访问

  • smbclient:
yum -y install samba-client     #安装软件包
smbclient -L ip地址   -U 用户     #列出共享
smbclient -U 用户 //ip地址/共享名      #访问匿名共享时,不需要指定-U
  • mount
yum -y install cifs-utiles      #安装cifs工具
mount -o username=用户名 //ip/共享名 /挂载点     #访问认证共享
mount -o username=* //ip/共享名 /挂载点       #访问匿名共享
  • windows客户端共享的原理

    net share ##管理本地共享
    net use ##管理共享映射
    net use 共享路径 /delete ##删除共享缓存
    inetcpl.cpl ##打开inet选项,删除访问记录

5.搭建samba文件共享服务

smb共享实现linux和windows间共享

  • 安装samba软件
 [root@localhost ~]# yum -y install samba
 [root@localhost ~]# 
 [root@localhost ~]# vi /etc/samba/smb.conf     ##删除注释:%g /^#/d  删除空行:%g/^$/d  删除样例行:%g /^;/d  删除多余空行;修改如下:

[global]
    workgroup = MYGROUP     ##指定服务器所在的工作组
    server string = Samba Server Version %v     ##服务器的描述
    log file = /var/log/samba/log.%m        ##日志文件
    max log size = 50       ##最大日志大小
    security = user    ##用户认证的共享,将share改为user
    passdb backend = tdbsam     ##服务用户后台类型
    load printers = yes     ##是否共享打印机
    cups options = raw      ##设置共享打印机类型
[public]
    comment = Public Stuff      ##描述
    path = /opt/share       ##设置共享的路径
    public = no   ##共享非公开
    writable = no   ##默认不可以写
    valid users = u01, u02  ##允许访问的用户
    write list = u01  ##有写入权限的用户

[root@localhost ~]# testparm    ##测试配置是否有误

创建用户

[root@localhost ~]# useradd u01
[root@localhost ~]# useradd u02
[root@localhost ~]# pdbedit -a u01
new password:       #设置密码
[root@localhost ~]# pdbedit -a u02
[root@localhost ~]# pdbedit -L                  #查看smb用户
u01:1000:
u02:1001:

window主机测试
\ \192.168.100.101
登陆用户名密码测试读取写入权限
cmd中net use 查看保存的链接信息
net use * /del 删除保存的连接信息
再次访问\ \192.168.100.150测试另外用户

linux:客户机必须配置ip,能够与samba服务器处于同一网络

[root@localhost ~]#mount  -o  username=u01  //192.168.100.101/public  /mnt
[root@localhost ~]#cd /mnt
[root@localhost ~]#touch b.file
[root@localhost ~]#ls
第二种方式:
[root@localhost ~]#smbclient -U u02 //192.168.100.101/public

李泽信 发布于 2022-8-3 20:58

基础网络管理

一、查看基本网络参数

  • 查看网卡的IP地址、掩码地址、MAC地址及启用禁用网卡:
 ifconfig           #查看主机中已经启动的网卡信息
 ip a               #查看主机中所有的网卡信息
 ifup   网卡名     #开启此网卡
 ifdown 网卡名      #禁用此网卡
  • 查看主机的dns地址,作用:将域名和ip地址进行互相解析
cat /etc/resolv.conf
cat /etc/hosts
  • 测试网络
  ping -c 4 ip地址                ##允许主机ping此地址4个包
  traceroute ip地址           ##查看此数据包经过了哪些网络节点
  nslookup 域名或ip地址      ##解析域名或地址
  netstat -utpln                ##查看主机端口使用状态
  netstat -utplna               ##查看主机所有的连接信息
  lsof                      ##查看主机打开的所有文件信息
  lsof -i tcp                   ##查看主机的所有的tcp连接信息
  lsof -i tcp:22                    ##查看主机的所有的ssh服务相关连接信息
  lsof -u root                  ##查看该用户的所有进程
  lsof -p 进程号               ##查看该进程所打开的文件信息

李泽信 发布于 2022-7-21 21:14

个人资料

搜索

日历

时间进度

    今日剩余 59.6%
    本周剩余 37.1%
    本月剩余 22.0%
    本年剩余 52.2%

访问统计