目录
一、配置OpenSSH服务端【☆】
1. ssh服务端配置 vim /etc/ssh/sshd_config
2.客户端连接验证
二、使用SSH客户端程序
1.ssh 远程登录
2.scp 远程复制
3.sftp 安全FTP
三、SSH的验证方式
1. 密钥对验证【☆】
2. 如何实现免密登录
【拓展】免交互创建密钥对和免交互上传密钥
四、TCP Wrappers 访问控制
1. TCP Wrappers保护机制两种实现方式
2.TCP Wrappers 的访问策略
3. 访问策略原则
4. 策略格式:<程序列表>:<客户端地址列表>
日常工作用远程连接两种方式,SSH和TELNET。SSH使用22号端口,进行密文传输,更安全。TELNET使用23号端口,使用明文传输,禁止使用root用户直接登录,仅仅做调试作用,基本不用。
SSH客户端典型代表:Moba、Putty、Xshell、CRT为国外的软件,会涉及到版权和国家信息安全
SSH服务端软件:软件包OpenSSH,服务名sshd。centOS7中默认安装并设置开机自启,Ubuntu需要下载后使用systemctl start sshd开启,systemctl enable sshd设置开机自启,ssh服务端配置文件/etc/ssh/sshd_config,客户端的配置文件ssh_config。
一、配置OpenSSH服务端【☆】
1. ssh服务端配置 vim /etc/ssh/sshd_config
Port 2345 #默认监听端口为 22,公网中把22号端口改掉更安全,实验使用22方便
- ListenAddress 192.168.170.10 #默认监听所有网卡地址0.0.0.0,可以改为特定网卡地址给安全网段更安全
- LoginGraceTime 2m #登录验证超时时间默认为 2 分钟
- PermitRootLogin no #禁止使用 root 用户登录
- MaxAuthTries 6 #最大重试次数为 6次
- PermitEmptyPasswords no #禁止空密码用户登录
- UseDNS no #禁用 DNS 反向解析,以加快远程连接速度
- AllowUsers zhangsan lisi wangwu@192.168.170.20 #白名单配置:表示只允许zhangsan、lisi用户从任何主机登录,且其中wangwu用户仅能够从IP为192.168.170.20的主机远程登录。多个用户以空格分隔
- DenyUsers zhangsan lisi wangwu@192.168.170.20 #黑名单配置:表示禁止zhangsan lis用户从任何主机登录,wangwu禁止从192.168.170.20主机登录(注意白名单和黑名单不同时存在)
【补充】大驼峰命名规则:一个配置项可能由多个单词命名规则,每个单词第一个字母大写;小驼峰为第一个单词首字母不大写,后面单词首字母大写。
配置完成后开启sshd服务,创建zhangsan lisi wangwu用户
2.客户端连接验证
二、使用SSH客户端程序
1.ssh 远程登录
ssh [-p 端口号] 用户名@目标主机IP #-p指定端口号,没有指定就是默认访问22号端口
ssh [-p 端口号] 用户名@目标主机IP 命令 #临时登录目标主机,操作一条命令后立即退出
注意:SSH首次连接服务器会在当前用户家目录生成 .ssh/knowmn_hosts,保存服务器地址和密钥信息,如果后期访问服务器提示密钥信息改变,则要注意,可能会是钓鱼服务器!
2.scp 远程复制
scp [-P 端口号] [-r] 本地文件/目录路径 用户名@目标主机IP:绝对路径
#从本机的复制上传目录/文件到目标主机scp [-P 端口号] [-r] 用户名@目标主机IP:/目录/文件 /本地路径
#从目标主机复制下载目录/文件到本地
3.sftp 安全FTP
sftp [-P 端口号] 用户名@目标主机IP
客户端可使用get上传、put下载、ls查看、cd切换目录
三、SSH的验证方式
sshd 服务支持两种验证方式:①密码验证:使用账号和密码验证登录; ②密钥对验证:使用客户端创建的密钥对进行验证。在/etc/ssh/sshd_config中,PasswdAuthentication yes表示开启密码验证,PubkeyAuthenication yes表示开启密钥对验证,.ssh/authorized_keys表示服务端的公钥默认保存路径为当前用户的家目录的.ssh目录中。
1. 密钥对验证【☆】
①确保服务端开启了密钥对验证(在/etc/ssh/sshd_config中,PasswdAuthentication yes默认开启);
②客户端创建密钥对,ssh-keygen [-t rsa指定加密方法为非对称方法](rsa/dsa/ecdsa 三种) ---> 默认目录回车 ---> 默认空密码回车,也可以设置密码 ---> /root/.ssh/id_rsa私钥文件是给自己自己使用的, /root/.ssh/id_rsa.pub公钥文件需要推送给服务端保存。
③上传公钥文件到服务端,ssh-copy-id -i id_rsa.pub root@192.168.170.10(目标主机 ip和端口号,-i指定公钥文件,如果只有一个公钥文件可以省略-i)
④客户端ssh远程登录,使用密钥对进行验证
ps:客户端用什么用户创建和推送公钥给服务端哪个用户,就只能登录服务端的那个用户
2. 如何实现免密登录
①创建密钥对的时候一路回车,不设置密码
②设置代理,但只能在当前会话中有效。
【拓展】免交互创建密钥对和免交互上传密钥
ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
sshpass -p 'xxxxxx' ssh-copy-id -o StrictHostKeyChecking=no root@目标IP
四、TCP Wrappers 访问控制
TCP Wrappers(TCP封套) 是一个简单的防火墙机制。用来将TCP服务程序“包裹”起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
大部分的Linux发行版本都有提供TCP Wrappers访问控制的功能,TCP Wrappers监听过滤发往各个端口的数据包,要么允许放通,要么拒绝访问丢弃数据包。
1. TCP Wrappers保护机制两种实现方式
①运行tcpd程序;②调用libwrap.so.*动态函数库,不需要运行tcpd,使用更广泛。 由于支持 TCP Wrappers 的服务必定包含 libwrap 这一个动态函数库,因此可以使用 ldd 来查看服务即可。
ldd $(which 程序名称) | grep libwrap
2.TCP Wrappers 的访问策略
TCP Wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。通过 /etc/hosts.allow,/etc/hosts.deny 这两个文件来管理的一个类似防火墙的机制,分别用来设置允许和拒绝的策略。
格式:<服务程序列表>:<客户端地址列表>
(1)服务程序列表
ALL:代表所有的服务。
单个服务程序:如“vsftpd”。
多个服务程序组成的列表:如“vsftpd,sshd”。
(2)客户端地址列表
ALL:代表任何客户端地址。
LOCAL:代表本机地址。
多个地址以逗号分隔
允许使用通配符 “*” 和 “?” ,前者代表任意长度字符,后者仅代表一个字符
网段地址,如 “192.168.80.” 或者 192.168.80.0/255.255.255.0 (掩码只支持 netmask 的地址显示方式)
区域地址,如 “.benet.com”匹配 benet.com 域中的所有主机。
3. 访问策略原则
先看 /etc/hosts.allow 是否有匹配的策略,有则直接允许访问;
再看 /etc/hosts.deny 是否有匹配的策略,有则拒绝访问;
如果以上两个文件都没有匹配的策略,则默认允许访问;
4. 策略格式:<程序列表>:<客户端地址列表>
sshd,vsftpd:192.168.80.13,192.168.80.14
ALL:ALL
sshd:192.168.80.*
sshd:192.168.80.0/255.255.255.128