SSH 为 secure shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为创建在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登陆会话和其余网络服务提供安全性的协议。利用 SSH 协议能够有效防止远程管理过程当中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其余操做平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎全部UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其余平台,均可运行SSH。git
1.首先咱们开启两台Linux系统,一台做为服务端,一台做为客户端。咱们先用vim编辑器对ssh服务端配置文件“/etc/ssh/sshd_config”进行编辑。shell
Port 22 监听端口,默认监听22端口 #AddressFamily any IPV4和IPV6协议家族用哪一个,any表示两者均有 #ListenAddress 0.0.0.0 指明监控的地址,0.0.0.0表示本机的全部地址 #ListenAddress :: 指明监听的IPV6的全部地址格式
#LoginGraceTime 2m 会话时间,默认2分钟则自动断开链接 #PermitRootLogin yes 是否容许管理员直接登陆,'yes'表示容许 #StrictModes yes 是否让sshd去检查用户主目录或相关文件的权限数据 MaxAuthTries 6 最大认证尝试次数,最多能够尝试6次输入密码。 #MaxSessions 10 容许的最大会话数 (将“#”删除便可开启相应功能)
2.配置完毕记得重启服务才会生效,咱们用客户端尝试链接一下服务端。vim
咱们直接输入用来的登陆的用户root(注意是服务端用户)和服务端IP地址便可,而后输入用户密码便可登陆。我以前登录过,若是没有登录过,系统会问你是否想链接,你只需输入“yes”便可。
若是客户端的用户名和服务端的用户名相同,登陆时能够省略用户名。
SSH服务的默认端口是22,若是你不设置端口的话,登陆请求会自动送到远程主机的22端口。若是咱们在配置文件里修改了端口号,咱们可使用 -p 选项来指定端口号。例如端口改成了123:安全
3.咱们知道root用户是系统的管理员,若是别人可以随意登陆确定是不安全的。因此咱们能够经过修改配置文件,不让别人经过root用户登陆。修改完记得重启服务。bash
咱们再次用root用户登陆,输入密码后显示权限拒绝,而换成zhangsan用户又能够登陆了。
4.虽然咱们限制了使用root用户登陆,可是当咱们用zhangsan用户登陆了,用“su”命令任然能够切换到root用户。网络
因此咱们能够开启“su”命令的PAM安全认证功能,咱们只要将容许用“su”命令的用户添加到“wheel”组便可。app
能够看到用户“jiang”在“wheel”组中,用户“zhangsan”不在。咱们再用“zhangsan”用户切换root用户已经显示权限拒绝,而在“wheel”组用户“jiang”任然能够切换root用户。ssh
5.前面我将最大认证尝试次数6次数开启了,咱们能够测试一下是否成功。
能够看到当咱们尝试了6次,就自动被断开链接了。可是咱们得用“-o NumberOfPasswordPrompts=8”选项才能测试成功,若是直接输入,仍是默认3次就会断开链接。编辑器
6.咱们还能够经过在服务端配置文件里添加黑白名单来限制登陆的用户和IP地址。ide
黑白名单不能同时存在,通常企业中多用白名单,下面以白名单为例演示。
首先咱们在配置文件中添加白名单,限制zhangsan用户只能在ip为192.168.52.132的主机上进行登陆,lisi用户能够在任意主机上进行登陆。配置完成要重启服务。
咱们在ip为192.168.52.132的主机上登陆时,能够看到因为设置了白名单,用户“jiang”不在名单里全部已经不能登陆了,而zhangsan与lisi用户任然能够登陆。
咱们在ip为192.168.52.128的主机上登陆时,只有lisi用户能够登陆,zhangsan用户不能登陆,由于咱们限制了zhangsan用户只能在ip为192.168.52.132的主机上进行登陆。
1.咱们将以前设置的白名单删除,容许root用户登陆改成“yes”,并重启服务。
2.首先在client主机的“/opt/”目录,新建一个文件“ssh_client.txt”和一个目录“ssh”,而后用scp命令将它们都复制到server主机的“/opt/”目录下。
3.再在client主机的“/opt/”目录下,建立一个文件“test01”,而后在“server”主机用scp命令将文件复制过来。
4.咱们将以前在两台主机“/opt/”目录下新建的目录和文件删除,分别在server与client的“/opt/”目录下建立两个文件demo0一、demo02。
5.咱们在client主机用sftp命令也能够登陆server主机进行文件的上传和下载。上传用“put”命令,下载用“get”命令,同时咱们还能够用cd命令进行目录的切换。
6.能够看到咱们能够用cd命令随意切换目录,这样很不安全,因此咱们能够经过对ssh服务端配置文件进行修改,将sftp命令链接后限制在咱们指定的目录里。
首先用vim编辑器对文件“/etc/ssh/sshd_config”进行编辑,将“Subsystem sftp /usr/libexec/openssh/sftp-server”注释掉。而后添加下面的命令:
Subsystem sftp internal-sftp Match User zhangsan ChrootDirectory /home/zhangsan X11Forwarding no ForceCommand internal-sftp AllowTcpForwarding no (配置完别忘了重启服务)
而后咱们进入“/home/”目录,将咱们指定的目录“zhangsan”的权限设为“755”,属主、属组均改成root。
咱们再“/home/zhangsan/”目录下,新建5个空文件。
咱们再次用client主机,经过sftp链接server主机,能够看到咱们直接就登陆到“zhangsan/目”录中了。当咱们想切换到别的目录时,都不能成功。
1.将以前的限制sftp登陆切换目录的配置修改回来,开启密钥对登陆功能(删除#便可),并重启服务。
2.首先用“ssh-keygen -t ecdsa”命令生成密钥对,将密钥文件存在“/home/zhangsan/.ssh/”目录中。
3.用命令“ssh-copy-id -i id_ecdsa.pub zhangsan@192.168.52.131”将目录“/home/zhangsan/.ssh/”下的公钥文件“id_ecdsa.pub”导入到server主机。
4.当咱们再次用ssh命令登陆时,这是只要输入以前的密钥便可。
5.可是咱们每次登陆都得输入密钥会很麻烦,此时咱们只要用bash代理,添加密钥便可,咱们下次登陆就不用输入密钥了。
控制策略的配置文件:
- /etc/hosts.allow(白名单文件)
- /etc/hosts.deny(黑名单文件)
策略的应用顺序:
- 先检查hosts.allow文件,找到匹配则直接容许访问,再也不检查hosts.deny文件;
- 若hosts.allow文件中没有,再检测hosts.deny文件,找到则拒绝访问;
- 若两个文件中均无匹配策略,则默认容许访问。
1.先用vim编辑器对文件“/etc/hosts.allow”进行编辑,添加一个白名单ip192.168.52.132。
2.再用vim编辑器对文件“/etc/hosts.deny”进行编辑,将全部ip设为黑名单。
3.下面咱们用ip为192.168.52.132的主机client和ip为192.168.52.128的主机client02分别进行登陆,只有白名单里的client主机能够登陆。
4.将白名单中的client主机ip删除,加入到黑名单中,再用client主机去登陆,结果不能登陆。