Linux的远程桌面管理,密钥登陆,SSH协议,四层防御系统实验详解

Linux的远程桌面管理,密钥登陆,SSH协议,四层防御系统

一.引子

别看上面写了这么多内容,其实都是串起来的,就是看下通过SSH(Secure Shell)协议远程连接到底要经过些什么流程,有什么办法可以更安全,有什么办法可以阻止SSH远程连接。接下来就是理论加实验的结合了,笔者在这里总结的内容仅供大家参考。

传统的网络传输协议,如ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到"中间人"(man-in-the-middle)这种方式的攻击。所谓"中间人"的攻击方式, 就是"中间人"冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被"中间人"一转手做了手脚之后,就会出现很严重的问题。通过使用SSH,可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。我们上一篇写道的arp欺骗实验就是一个非常鲜明的例子。

使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、PoP、甚至为PPP提供一个安全的"通道"。若对君有益,感谢三连。

二.liunx远程管理方式(基于linux)

1. 图形化管理:
工具:KVM虚拟机

协议:VNC协议

实验:图形化界面进行远程管理实验

1)init5 进入图形化
2) 安装图形化软件:yum -y install vnc-server
3) 初始化密码:执行命令vncservice,并输入密码
4) 编辑修改vnc启动图形界面配置:vim /root/.vnc/xstar.up进入后gnome-session &(注释最后两行添加gnome-session)
5) 修改编辑主配置文件:vim /etc/sysconfig/vncservers(解除注释)
a. VNCSERVERS=”1:root 2:root”
b. VNCSERVERARCS[2]-”geometry 800x600 -nolisten tcp -localhost”
6) 重启服务生效:service vncserver restart
7) 查看vnc端口状态:nestat -antp | grep 5901
8) windows连接图形化远程控制
9) 安装vnc客户端
10) 指定服务器ip及端口:192.168.26.11:5901
11) 输入密码
12) touch huliqiangdaociyiyou
13) 命令行查看文件

2 命令行管理:
① 终端远程连接控制:openssh(开源免费):基于ssh协议的服务器

三.SSH登陆方式(基于linux系统实验)

不是说SSH就是绝对安全的,因为它本身提供两种级别的验证方法:

第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人攻击”这种方式的攻击。

第二种级别(基于密钥的安全验证):你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公钥,然后把它和你发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私钥在本地解密再把它发送给服务器完成登录。与第一种级别相比,第二种级别不仅加密所有传输的数据,也不需要在网络上传送口令,因此安全性更高,可以有效防止中间人攻击。

密钥登陆实验

a) 客户端用户root创建密钥对:
i. 私钥文件:id_rsa
ii. 公钥文件:id_rsa.pub

b) 上传公钥文件:rd rsa.pub

c) 导入公钥文件;
i. 公钥文件:~/ssh/authorized keys

d) 私有密钥对验证方式;以服务端的用户root的身份进行登陆验证

e) 实验:11免密码登陆12
i) 11创建密钥对:ssh-keygen -t rsa
ii) 11cd .ssh/查看文件
iii) 11上传公钥文件:scp id_rsa.pub [email protected]:/root/
iv) 12ls查看
v) 12mv id_rsa.pub .ssh/authorized_keys
vi) 11登陆12:肢解登陆成功:ssh [email protected]
vii) 桌面密钥登陆
viii) 12将id_rsa放到桌面上:sz id_rsa.pub
ix) 更换登陆方式:密钥认证登陆
x) 进入配置文件:vim /etc/ssh/sshd_config
xi) 密码认证改为no:PasswordAuthentication no
xii) 重启服务:service sshd restart
xiii) 换虚拟机重新登陆
ii. 在11上使用密钥登陆12,13
i) 11ssh-keygen -t rsa
ii) cd .ssh/ & ls
iii) ssh-copy-id root 192.168.26.12(指纹):自动将文件拷贝到12
iv) ssh [email protected](免密登陆成功)
v) 重复前两步免密登陆13

四.SSH协议(ssh远程连接,scp上传下载,sftp远程登陆)

1.目的: 为客户机提供安全的shell环境,用于远程管理

2.默认端口:tcp22

3.Openssh服务详解

  • a. 服务名称:sshd

  • b. 服务主程序:/usr/sbin/sshd

  • c. 服务端主程序:/usr/bin/ssh

  • d. 服务端配置文件:/etc/ssh/sshd_config
    a) vilm /etc/ssh/sshd_config
    b) port 22端口修改:取消注释,修改端口为1111,重启进程(service sshd restart)
    c) 使用finalshell进行连接原有进程不会消失,新进程无法连接(修改连接端口号才能登陆)
    d) 配置文件中监听哪个IP可以通过ssh访问:改为ListenADDress 192.168.26.11,重启服务生效(只能通过192.168.26.11登陆)
    e) 开启子接口:ifconfig eth0:0 192.168.26.111 netmask 255.255.255.0
    f) 登陆192.168.26.11可以登陆,无法通过192.168.26.111登陆
    g) 修改配置文件:ListenADDress 0.0.0.0:监听所有IP,重启服务
    h) 两个IP地址都可以登陆
    i) PermitRootLogin yes :是否允许root登陆
    j) MaxSessions 10:最大窗口数目
    k) MAXAuthTries 2:重试密码次数
    l) PubkeyAuthentication yes:是否开启密钥认证
    m) 密钥认证存放路径:.ssd/authorized_keys
    n) PasswordAuthentication yes:是否开启密码认证
    o) UseDNS no :关闭反向解析自身域名,提升效率

  • e. 客户端配置文件:/etc/ssh/ssh_config

  • f. openssh功能模块
    a) ssh命令----远程安全登陆
    i. 格式:ssh user@host
    ii. 查看指纹:ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
    i) -p指定端口

  • 实验搭建

实验1:上传下载文件
1.12登陆11 ssh [email protected] -p 1111(有指纹)
2.12netstat -antp
3.11查看本机指纹:ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
4.12ifconfig
5.cat .ssh/known_hosts 查看指纹保存文件
6.11抓取12的包:tcpdump -nA port 1111 & > /root/1.text
7.12登陆11 ssh 192.168.22.11 -p1111(有指纹)
8.11查看1.text,无法查询到数据,数据已加密
b) scp命令----远程安全复制
i. 格式(下载):scp user@host:file1 file2
ii. 格式(上传):scp file1 user@host:file2
i) -P (大写)指定端口

实验2:推送目录
1.11scp 本机文件 [email protected]:推送目录(用户对目标推送地址有权限) scp 1.txt [email protected]:/root/
2.11推送目录:scp -r 本机目录 [email protected]:推送目录(用户对目标推送地址有权限)scp -r /etc/passwd [email protected]:/root/
3.11下载文件:scp [email protected]:下载目录 本地保存目录
c) sftp命令----远程安全的ftp服务器
i. sftp user@host
i) -port=端口

实验3:sftp远程连接操作
1.11sftp [email protected] 登陆12
2.ls 默认登陆到用户的家目录下
3.cd /var & touch huliqiangdaociyiyou
4. 下载文件:get huliqiangdaociyiyou
5.上传文件:put
6.exit:退出
② xshell:基于ssh协议的客户端工具

五.四层防御系统:(Iptables tcpwrapper selinux acl)

(1) Tcp wrappers:相对安全简单的防护机制,对于基于TCP协议的某些应用程序进行访问控制(工作在kernel和user空间之间)

(2) 查看哪些可以被Tcp wrappers 管理
① 命令:ldd /usr/sbin/sshd | grep libwrap

(3) 访问控制设置配置文件
① /etc/hosts.allow /etc/hosts.deny

  1. 实验:192.168.26.12不能访问11 sshd
    a. 11vim /etc/hosts.deny
    b. 11最后一行写入:sshd:192.168.26.12
    c. 11无需重启
    d. 12ssh [email protected]不成功
    e. 13ssh [email protected]成功

(4) Tcp wrappers 默认策略(无需重启即可生效)

① 如果文件为空 ,代表全部允许

② hosts.allow代表允许访问,host.deny代表不允许访问

  1. 如果冲突呢?allow优先,如果匹配allow文件,就跳出匹配
  2. 限制单个主机
    a. host.deny中最后一行写入:12sshd:192.168.26.11
    a) 抓包:11
  3. 如何控制一个网段
    a. host.deny中最后一行写入:sshd:192.168.26.0/255.255.255.0(不支持子网掩码写24格式)或sshd:192.168.26.(简写)
  4. 如何控制一个域名
    a. sshd:www.hongfu.com

实验

b) vim /etc/hosts
c) 添加:192.168.26.12 www.hongfu.com
d) vim /etc/hosts.deny
e) 添加:sshd:www.hongfu.com
f) ping www.hongfu.com

  1. 限制所有地址:sshd:ALL
  2. 排除:sshd:ALL EXCPET 192.168.26.12
  3. ALL:所有 LOCALk(本机) KNOWN(本机能解析的域名)UNKNOW(本机不能解析的域名)
  4. 注意:TCP Wrappwes 支持使用通配符*?,但是不能和.开始和结束使用
    a. 如:..com 192.168.
  5. 配置文件生效过程:
    a. /etc/host.allow里有对应信息则该配置文件里的主机允许访问
    b. /etc/host.deny里有对应信息则该配置文件里的主机不允许访问
    c. TCP Wrapper是优先查找/etc/host.allow.后查找/etc/host.deny
    d. 如果两个文件信息有冲突,同一个主机出现在两个配置文件里,则/etc/host.allow生效
    e. 如果一个主机都没有出现在两个配置文件里,则默认允许访问

SSH远程连接对我们数据的传输是非常方便的,还有一个原因是因为我们通ssh端连接工具管理服务器非常方便。一般我们都使用xshell等连接工具远程连接虚拟机。浏览不易,感谢三连

猜你喜欢

转载自blog.csdn.net/weixin_47678667/article/details/109034849