搭建所有服务的套路

  • 关闭防火墙和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