搭建所有服务的套路
关闭防火墙和selinux(实验环境都先关闭掉)
配置yum源(公网源或者本地源)
软件安装和检查
了解并修改配置文件
启动服务检查运行状态并设置开机自启动
搭建SSH服务
这部分内容可以参考于超老师前面讲解的系统初始化篇操作即可
(一)关闭防火墙和selinux
# 关闭firewalld防火墙
# 临时关闭
systemctl stop firewalld
# 关闭开机自启动
systemctl disable firewalld
# 关闭selinux
# 临时关闭
setenforce 0
# 修改配置文件 永久关闭
vim /etc/selinux/config
SELINUX=disabled
(二)配置yum源
注意:一般情况下使用网络源即可。
如果没有网络的情况下,才需要配置本地源
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# yum clean all
# yum makecache
这个yum源配置
(三)软件安装
①确认是否安装openssh
由于每一台机器都是默认安装了sshd服务的,这里你可以采用期中综合架构里的任何一台机器测试。
[root@web-7 ~]#rpm -qa |grep openssh
openssh-server-7.4p1-16.el7.x86_64
openssh-clients-7.4p1-16.el7.x86_64
openssh-7.4p1-16.el7.x86_64
没有就需要安装
[root@web-7 ~]#yum install openssh-server openssh -y
②查看openssh-server软件包的文件列表
[root@web-7 ~]# rpm -ql openssh-server
# 配置文件
/etc/ssh/sshd_config
/etc/sysconfig/sshd
# 服务管理脚本
/usr/lib/systemd/system/sshd.service => systemctl start sshd
# 文件共享服务 提供文件上传下载的服务
/usr/libexec/openssh/sftp-server
# 二进制文件程序文件
/usr/sbin/sshd
# 公钥生成工具
/usr/sbin/sshd-keygen
# man手册
/usr/share/man/man5/sshd_config.5.gz
/usr/share/man/man8/sftp-server.8.gz
/usr/share/man/man8/sshd.8.gz
③查看openssh-clients软件包的文件列表
rpm -ql openssh-clients
# 客户端配置文件
/etc/ssh/ssh_config
# 远程copy命令 服务器间进行文件传输
/usr/bin/scp
# sftp客户端 上传下载文件操作
/usr/bin/sftp
/usr/bin/slogin
/usr/bin/ssh
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-copy-id
/usr/bin/ssh-keyscan
# 客户端man手册
/usr/share/man/man1/scp.1.gz
/usr/share/man/man1/sftp.1.gz
/usr/share/man/man1/slogin.1.gz
/usr/share/man/man1/ssh-add.1.gz
/usr/share/man/man1/ssh-agent.1.gz
/usr/share/man/man1/ssh-copy-id.1.gz
/usr/share/man/man1/ssh-keyscan.1.gz
/usr/share/man/man1/ssh.1.gz
/usr/share/man/man5/ssh_config.5.gz
/usr/share/man/man8/ssh-pkcs11-helper.8.gz
(四)ssh基本安全配置
提升服务器ssh安全,就是来修改该配置文件了,先来看简单的配置;
往下继续看,于超老师还准备了ssh优化篇;
man 5 sshd_config
[root@web-7 ~]#cat /etc/ssh/sshd_config
1.禁用root用户登录、降低权限(只能通过普通用户登录,提前创建好可登录的普通普通户)
[root@web-7 ~]#useradd yang01
2.修改端口,禁用root用户登录
需要修改的配置文件如下
[root@web-7 ~]#grep -Ei '^(Permit|Port)' /etc/ssh/sshd_config
Port 22422
#PermitRootLogin yes
PermitRootLogin no
3.重启sshd服务
systemctl restart sshd
4.查看端口是否已经修改
netstat -tunlp | grep sshd
pwgen随机密码生成工具
别忘记创建一个用于登录的普通用户,密码随机生成
1.安装
yum install -y pwgen
2.命令参数,生成不同的密码规则
pwgen支持的选项。
-c或-大写字母
在密码中至少包含一个大写字母
-A或--不大写
不在密码中包含大写字母
-n 或 --数字
在密码中至少包含一个数字
-0 或 --no-numerals
不在密码中包含数字
-y或--符号
在密码中至少包括一个特殊符号
-r <chars> 或 --remove-chars=<chars>(删除字符
从生成密码的字符集中删除字符
-s 或 --secure
生成完全随机的密码
-B 或--模棱两可
不要在密码中包含模棱两可的字符
-h 或 --help
打印一个帮助信息
-H 或 --sha1=path/to/file[#seed] 。
使用指定文件的sha1哈希值作为(不那么)随机生成器
-C
以列形式打印生成的密码
-1
不在列中打印生成的密码
-v或--不使用元音
不要使用任何元音,以避免意外的讨厌的字。
3.生成 完全随机、携带数字的密码并存到random-pw.txt
[root@web-7 ~]#pwgen -sn |head -1 > random-pw.txt
T0AR1i2c
4.设置密码
[root@web-7 ~]#echo T0AR1i2c | passwd --stdin yuchao01
随机生成指定风格的密码
打印,包含大写字母、数字、不包含特殊歧义、完全随机、且一行一个密码、密码长度为8、生成5个密码。
[root@web-7 ~]#pwgen -cnBs1 8 5
KaKWvp9F
4HHvsWWR
NpKWn3pN
LuqzuAh9
bR7Xg9Hs
改了配置文件就得重启
(五)服务管理
# 重启服务
systemctl restart sshd
# 查看状态
systemctl status sshd
# 进程查看方式
ps aux |grep sshd
# 端口查看方式
netstat -lntp|grep sshd
# 开启自启动
systemctl enable sshd
(六)登录测试
无法登录
[C:\~]$ ssh root@10.0.0.7 22422
可以登录
[C:\~]$
[C:\~]$ ssh yang01@10.0.0.7 22422
Connecting to 10.0.0.7:22422...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
WARNING! The remote SSH server rejected X11 forwarding request.
[yang01@web-7 ~]$
[yang01@web-7 ~]$echo "hello word"
hello word
(七)恢复默认配置
练习结束,为了方便,可以再改回来。
允许root登录
默认22端口
sed改回去
permitRootLogin
port
先看看参数
sed多次处理
看到该参数
sed -e '/^permitRootLogin/Ip' -e '/^port/Ip' /etc/ssh/sshd_config -n
Port 22
PermitRootLogin yes
整行内容替换,写入文件内容
sed -i.ori -e '/^permitRootLogin/Ic PermitRootLogin yes' -e '/^port/Ic Port 22' /etc/ssh/sshd_config
替换方案
sed -i.bak -e 's#PermitRootLogin no#PermitRootLogin yes#' -e 's#Port 22422#Port 22#' /etc/ssh/sshd_config
sshd服务部署小结
掌握ssh认证方式
ssh通信加密方式原理、流程。
密码认证模式
禁止root登录服务器,增强服务器安全性
更改ssh服务默认端口,增强服务器安全性
密码生成工具,生成随机密码,增强安全性。
熟练使用ssh客户端工具,xshell、ssh命令、secureCRT等
密码登录涉及的配置文件
1.客户端的~/.ssh/known_hosts 记录了目标机器,基于ecdsa算法的公钥
2.记录了linux机器的ssh相关文件目录
[root@rsync-41 ~]#ll /etc/ssh/ |awk '{print $NF}'
moduli
ssh_config
sshd_config
ssh_host_ecdsa_key # 提供ssh密码认证的私钥
ssh_host_ecdsa_key.pub # 用于生成指纹的,提供ssh密码认证的公钥
ssh_host_ed25519_key
ssh_host_ed25519_key.pub
ssh_host_rsa_key
ssh_host_rsa_key.pub