关于 Linux 运维中安全方面的一些笔记

网友投稿 936 2022-05-29

写在前面

笔记是报班整理的,适合温习,不适合新手。整理了一份,希望对小伙伴有帮助.

生活加油,天天开心!博文主要围绕以几个方面:

Linux基本防护:账户安全、文件系统安全、关闭不需要的服务

用户切换与提权Vsu和sudo,

sshdi访问控制

加密与解密/对称加密、非对称加密、信息摘要

AIDE入侵检测

端口扫描

一、Linux基本防护

##创建账户dachui [root@liruilong ~]# useradd dachui ####查看账户dachui的过期时间 [root@liruilong ~]# chage -l dachui 最近一次密码修改时间 :8月 18, 2020 密码过期时间 :从不 密码失效时间 :从不 帐户过期时间 :从不 ##永不过期 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :99999 在密码过期之前警告的天数 :7 ###-E 指定账户dachui的过期时间 [root@liruilong ~]# chage -E 2029-10-01 dachui [root@liruilong ~]# chage -l dachui 最近一次密码修改时间 :8月 18, 2020 密码过期时间 :从不 密码失效时间 :从不 帐户过期时间 :10月 01, 2029 ##过期时间指定 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :99999 在密码过期之前警告的天数 :7 ###-E 后跟数字-1,代表取消账户的过期时间设置 [root@liruilong ~]# chage -E -1 dachui [root@liruilong ~]# chage -l dachui 最近一次密码修改时间 :8月 18, 2020 密码过期时间 :从不 密码失效时间 :从不 帐户过期时间 :从不 ##账户永不过期 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :99999 在密码过期之前警告的天数 :7

设置强制要求用户修改密码 -d 0 案例

########设置强制要求用户修改密码 -d 0 案例 ##第一步:给用户dachui设置密码 [root@liruilong ~]# echo 123456 | passwd --stdin dachui 更改用户 dachui 的密码 。 passwd:所有的身份验证令牌已经成功更新。 ##第二步:使用dachui用户远程本机 [root@liruilong ~]# ssh dachui@127.0.0.1 ...... dachui@127.0.0.1 s password: #输入密码123456 [dachui@liruilong ~]$ #可以登录,ctrl + D 退出 ##第三步:管理员设置dachui用户必须修改密码,否则无法登录 [root@liruilong ~]# chage -d 0 dachui ##第四步:重新使用dachui用户远程本机,需要重新设置密码 #因为是普通用户,权限低,所以密码必须是8位以上,字母和数字(tarena123) [root@liruilong ~]# ssh dachui@127.0.0.1 dachui@127.0.0.1s password: #输入密码123456 You are required to change your password immediately (root enforced) Last failed login: Tue Aug 18 08:38:45 CST 2020 from localhost on ssh:notty There was 1 failed login attempt since the last successful login. Last login: Tue Aug 18 08:33:19 2020 from localhost WARNING: Your password has expired. You must change your password now and login again! Changing password for user dachui. Changing password for dachui. (current) UNIX password: #输入以前的密码123456 New password: #设置新的密码为123,太过简单无法通过 BAD PASSWORD: The password is too similar to the old one New password: #设置新的密码为654321,密码最少是8位 BAD PASSWORD: The password is shorter than 8 characters New password: #设置新的密码:tarena123 Retype new password: #重新输入新密码:tarena123 passwd: all authentication tokens updated successfully. Connection to 127.0.0.1 closed. #第五步:重新使用账户dachui远程本机 [root@liruilong ~]# ssh dachui@127.0.0.1 dachui@127.0.0.1s password: #输入密码:tarena123 Last login: Tue Aug 18 08:38:49 2020 from localhost [dachui@liruilong ~]$ #ctrl + D 登出

账号的锁定/解锁

使用passwd命令: -l 锁定、-u 解锁、-S 看状态

####-S(大写) 查看用户dachui密码的状态 [root@liruilong ~]# passwd -S dachui dachui PS 2020-08-18 0 99999 7 -1 (密码已设置,使用 SHA512 算法。) ###-l 锁定dachui账户 [root@liruilong ~]# passwd -l dachui 锁定用户 dachui 的密码 。 passwd: 操作成功 ####-S(大写) 查看用户dachui密码的状态,密码被锁定,无法登录使用 [root@liruilong ~]# passwd -S dachui dachui LK 2020-08-18 0 99999 7 -1 (密码已被锁定。) ###使用账户dachui远程本机,无法登录 [root@liruilong ~]# ssh dachui@127.0.0.1 dachui@127.0.0.1's password: #密码为: tarena123 Permission denied, please try again. dachui@127.0.0.1's password: ###-u 解锁dachui账户 [root@liruilong ~]# passwd -u dachui 解锁用户 dachui 的密码。 passwd: 操作成功 ###重新使用账户dachui远程本机,可以登录 [root@liruilong ~]# ssh dachui@127.0.0.1 dachui@127.0.0.1s password: #密码为: tarena123 Last failed login: Tue Aug 18 08:55:30 CST 2020 from localhost on ssh:notty There was 1 failed login attempt since the last successful login. Last login: Tue Aug 18 08:46:50 2020 from localhost [dachui@liruilong ~]$ #ctrl + D 退出登录 Connection to 127.0.0.1 closed. #####-S(大写) 重新查看用户dachui密码的状态,已解锁 [root@liruilong ~]# passwd -S dachui dachui PS 2020-08-18 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

强制定期修改密码

配置文件 /etc/login.defs

主要控制属性

#######此管理用户密码的操作,只会对后面创建的用户生效,以前的则不影响 [root@liruilong ~]# vim /etc/login.defs ...... 25 PASS_MAX_DAYS 60 #一个密码最长可以使用60天 26 PASS_MIN_DAYS 0 #一个密码最少要用多少天,否则无法修改,0不设置 27 PASS_MIN_LEN 5 #密码的最少长度为5 28 PASS_WARN_AGE 7 #密码过期的前7天,对用户发送警告信息 ...... #####对当前用户的密码进行管理,/etc/shadow 为用户密码的配置文件 ###用户密码的最长有效期为99999,可以直接修改配置文件对以前的用户进行密码管理 [root@liruilong ~]# cat /etc/shadow | head -3 root:$l2XJYza/aL1Ug4TakBxc4ED.pyWbBR5Yg3XVX/3lT3S0Efuh4eNxC83AdIlYDeEzcafsbV 8YkVo88T0W/vVDTxpYtiFceiUM9qQk0::0:99999:7::: bin:*:17632:0:99999:7::: daemon:*:17632:0:99999:7:::

伪装登录提示

这个 centos7 可能有点问题,可以写到 .bashrc 文件里:.bashrc文件通常也是通过某个bash启动文件来运行的。因为.bashrc文件会运行两次:一次是 当你登入bash shell时,另一次是当你启动一个bash shell时。如果你需要一个脚本在两个时刻都得 以运行,可以把这个脚本放进该文件中。

#####修改本地用户登录的提示信息 [root@liruilong ~]# vim /etc/issue Welcome to Tedu #####修改网络用户登录的提示信息,远程登录时显示,ssh默认关闭此功能 ##可以不修改 [root@liruilong ~]# vim /etc/issue.net Welcome to Ted

文件系统安全

锁定/解锁保护文件

文件属性控制

:chattr、lsattr

+、- 控制方式

属性i:

不可变 (immutable)

属性a:

仅可追加(append only)

######创建一个测试文件 [root@liruilong ~]# vim test.sh hello the world ni hao. #########文件如果有i的属性,则对于此文件,增删改查均无法操作 ##lsattr 查看文件的属性 [root@liruilong ~]# lsattr test.sh ---------------- test.sh ##chattr 给文件test.sh增加i的属性 [root@liruilong ~]# chattr +i test.sh ##查看文件test.sh属性 [root@liruilong ~]# lsattr test.sh ----i----------- test.sh ##测试,写入操作和删除操作都无法进行 [root@liruilong ~]# echo 123 > test.sh -bash: test.sh: 权限不够 [root@liruilong ~]# rm -rf test.sh rm: 无法删除"test.sh": 不允许的操作 ##取消文件test.sh的i的属性,通过lsattr查看 [root@liruilong ~]# chattr -i test.sh [root@liruilong ~]# lsattr test.sh ---------------- test.sh #########文件如果有a的属性,则对于此文件,只能执行追加的操作 ####对于日志文件执行a属性,防止内容被篡改 ##给文件test.sh增加一个a属性,lsattr查看 [root@liruilong ~]# chattr +a test.sh [root@liruilong ~]# lsattr test.sh -----a---------- test.sh ###测试,追加内容的操作可以进行,写入,删除失败 [root@liruilong ~]# echo 123 >> test.sh [root@liruilong ~]# echo 123 > test.sh -bash: test.sh: 不允许的操作 [root@liruilong ~]# rm -rf test.sh rm: 无法删除"test.sh": 不允许的操作 ##取消文件test.sh的a的属性,通过lsattr查看 [root@liruilong ~]# chattr -a test.sh [root@liruilong ~]# lsattr test.sh ---------------- test.sh

文件系统挂载熟悉

mount 挂载属性

noexec: 不可执行程序

noatime: 不更新文件的访问时间

noexec:

挂载设备时,添加此选项,则此设备中的所有程序均不可被执行(例如:病毒或木马)

noatime:

计算机中的文件都有访问时间(atime),修改时间(mtime);

挂载设备时,添加此选项,则所有文件的访问时间都不再被更新;

如果计算机中的a文件被用户访问,则a文件的atime就会被修改,对于web服务器而言,会有成千上万的

用户访问网页,则这个网页的atime就会被频繁修改,会消耗大量的CPU资源,需要在挂载的时候使用

#########boot分区挂载示例,其他挂载方法类似 [root@liruilong ~]# vim /etc/fstab UUID=c120742d-5bdf-48c3-b830-3bfb3e796009 /boot xfs defaults,noexec,noatime 0 0 ###-o remount 重新挂载,让配置生效 [root@liruilong ~]# mount -o remount /boot/ ###查看挂载的属性,/boot分区下,有了noexec,noatime [root@liruilong ~]# mount ...... /dev/sda1 on /boot type xfs (rw,noexec,noatime,attr2,inode64,noquota) ...... #####定义一个不断输出a的脚本,赋予x执行权限,却无法运行 [root@liruilong ~]# vim /boot/test.sh #!/bin/bash while : do echo a done ##必须是在/boot/目录下,执行脚本 [root@liruilong ~]# cd /boot [root@liruilong boot]# chmod +x test.sh [root@liruilong boot]# ./test.sh -bash: ./test.sh: 权限不够

程序和服务控制

禁用非必要的系统服务

: 使用systemctl、chkconfig (centos6使用) 工具

可选服务列表

(选择进行关闭)

#####停止服务,并设置为开机不会自动启动 [root@liruilong ~]# systemctl stop firewalld [root@liruilong ~]# systemctl disable firewalld

二、用户切换与提权

su切换用户身份

切换与提权的应用场景

切换用户身份,When?:SSH远程管理/运维测试

提升执行权限,when?:管理权限细分

su切换的基本用法:Substitube User,换人

快速切换为指定的其他用户

普通用户执行时,需验证目标用户的口令

root执行时,无需验证口令

命令格式

用法1:su [-] [目标用户]

用法2:su [-] -c “命令” [目标用户]

su操作示例

从普通用户切换为root,并登录新Shell环境,执行 su -,或者su - root,不指名目标用户时,默认视为root

#####创建新的用户jerry,并设置密码为123456 [root@liruilong ~]# useradd jerry [root@liruilong ~]# echo 123456 | passwd --stdin jerry 更改用户 jerry 的密码 。 passwd:所有的身份验证令牌已经成功更新。 ###从root用户切换到jerry用户 [root@liruilong ~]# su - jerry ###查看当前当前登录的用户身份为jerry,普通用户的权限很低 [jerry@liruilong ~]$ whoami jerry [jerry@liruilong ~]$ cat /etc/shadow cat: /etc/shadow: Permission denied [jerry@liruilong ~]$ ls /root/ ls: cannot open directory /root/: Permission denied [jerry@liruilong ~]$ exit #退出jerry用户登录状态 logout

#####创建新的用户tom,并设置密码为123456 [root@liruilong ~]# useradd tom [root@liruilong ~]# echo 123456 | passwd --stdin tom 更改用户 tom 的密码 。 passwd:所有的身份验证令牌已经成功更新。 ###从root用户切换到jerry用户,管理员切换成普通用户身份不需要密码 [root@liruilong ~]# su - jerry 上一次登录:二 8月 18 10:21:41 CST 2020pts/0 上 ###从jerry用户切换到tom用户,普通用户身份的切换需要输入密码 [jerry@liruilong ~]$ su - tom Password: #输入tom用户的密码 [tom@liruilong ~]$ exit #退出tom用户的登录 logout [jerry@liruilong ~]$ exit #退出jerry用户的登录 logout

###从root用户切换到jerry用户,管理员切换成普通用户身份不需要密码 [root@liruilong ~]# su - jerry 上一次登录:二 8月 18 10:23:02 CST 2020pts/0 上 ###su - 后面不跟用户,则默认是切换到root用户下 [jerry@liruilong ~]$ su - Password: #输入管理员root的密码 Last login: Tue Aug 18 10:23:53 CST 2020 on pts/0 [root@liruilong ~]# exit #退出,回到jerry用户下 [jerry@liruilong ~]$ exit #退出,回到最出的root解释器下

root以指定的普通用户身份执行任务:以用户tom的身份创建目录,以用户tom的身份执行管理员操作会出错

###-c 以普通用户jerry的身份执行一条命令 [root@liruilong ~]# su - jerry -c "touch /tmp/test.txt" ##查看文件的属性 [root@liruilong ~]# ll /tmp/test.txt -rw-rw-r-- 1 jerry jerry 0 8月 18 10:25 /tmp/test.txt ####错误,普通用户没有权利去重启sshd服务 [root@liruilong ~]# su - tom -c "systemctl restart sshd" Error creating textual authentication agent: ......

分析su切换的使用情况:安全日志 /var/log/secure,记录su验证、Shell开启与关闭

[root@liruilong ~]# tail -4 /var/log/secure Aug 18 10:25:03 localhost su: pam_unix(su-l:session): session opened for user jerry by root(uid=0) Aug 18 10:25:03 localhost su: pam_unix(su-l:session): session closed for user jerry Aug 18 10:40:50 localhost su: pam_unix(su-l:session): session opened for user tom by root(uid=0) Aug 18 10:40:51 localhost su: pam_unix(su-l:session): session closed for user tom

sudo 提升执行权限

sudo提权的基本用法

Super or another Do,超级执行:管理员预先为用户设置执行许可,被授权用户有权执行授权的命令,验证自己的口令

执行提权命令: 用法: sudo 提权命令

查看提权命令: 用法:sudo -l

配置sudo提权

修改方法

推荐:visudo

其他:vim /etc/sudoers ---> wq!(强制保存并退出)授权记录格式`

用户或组

#指定给特定用户授权或者组(多个用户属于一个组)

#指定给组授权时,组的前面必须加 %,例如:%wheel

主机列表

#允许哪些客户机可以通过这个用户登录本机去执行命令,例如:ALL(指所有客户机)

提权身份

#给第一列的用户赋予权限,例如:(root)

[NOPASSWD]:命令列表 #前半部分是不需要密码执行命令;后半部分是要执行的命令,且;命令要写绝

对路径

%wheel ALL=(root) ALL #给wheel组中的所有用户,赋予root的权限,让其可以在任何主机上以root的身份去执行任何命令

允许mike以root权限执行 /sbin/ 下的所有命令,但是,禁止修改eth0网卡的参数

/sbin/* #模糊匹配,/sbin/下的所有命令都可以用sudo提权使用 !/sbin/ifconfg etho #! 代表取反,该命令不能被sudo提权使用

####sudo 提权,让普通用户jerry可以执行systemctl restart sshd 命令 [root@liruilong ~]# id jerry uid=1002(jerry) gid=1002(jerry) 组=1002(jerry) ####通过which命令,获取systemctl的绝对路径 [jerry@liruilong ~]# which systemctl /bin/systemctl ###最后一行追加,允许jerry用户,可以以任何人的身份,从任何客户端,执行此命令 ##立刻生效 [root@liruilong ~]# visudo ...... jerry ALL=(ALL) /usr/bin/systemctl ######测试,验证 ##切换到jerry用户下 [root@liruilong ~]# su - jerry 上一次登录:二 8月 18 10:50:16 CST 2020pts/0 上 ####使用sudo提权命令,重启sshd服务 [jerry@liruilong ~]$ sudo systemctl restart sshd [sudo] password for jerry: ##jerry用户密码:123456 Sorry, try again. ###sudo -l 查看jerry用户可以执行的sudo提权命令 [jerry@liruilong ~]$ sudo -l ...... User jerry may run the following commands on liruilong: (ALL) /usr/bin/systemctl

wheel组的用户无需验证可执行所有命令

####通过which命令,获取parted分区命令的绝对路径 [root@liruilong ~]# which parted /usr/sbin/parted ###最后一行追加,允许tom用户,可以以任何人的身份,从任何客户端,无密码使用parted命令 ##立刻生效 [root@liruilong ~]# visudo ...... jerry ALL=(ALL) /usr/bin/systemctl tom ALL=(ALL) NOPASSWD:/usr/sbin/parted ######测试,验证 ##切换到tom用户下 [root@liruilong ~]# su - tom 上一次登录:二 8月 18 10:40:50 CST 2020pts/0 上 ##sudo提权后,tom用户下,查看磁盘/dev/sda的分区情况 [tom@liruilong ~]$ sudo parted /dev/sda print Model: VMware, VMware Virtual S (scsi) Disk /dev/sda: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 1075MB 1074MB primary xfs boot 2 1075MB 21.5GB 20.4GB primary lvm [tom@liruilong ~]$ exit #退出tom用户登录

分析sudo提权的使用情况: 修改全局配置,启动日志Defaults logfile="/var/log/sudo"

##########修改全局配置,启动的日志,该日志记录sudo提权的使用情况 ##最后一行添加:Defaults logfile="/var/log/sudo" [root@liruilong ~]# visudo ...... jerry ALL=(ALL) /usr/bin/systemctl tom ALL=(ALL) NOPASSWD:/usr/sbin/parted Defaults logfile="/var/log/sudo" ########验证日志信息,需先执行一次提权命令 [root@liruilong ~]# su - tom 上一次登录:二 8月 18 10:56:52 CST 2020pts/0 上 ##sudo提权后,tom用户下,查看磁盘/dev/sda的分区情况 [tom@liruilong ~]$ sudo parted /dev/sda print Model: VMware, VMware Virtual S (scsi) Disk /dev/sda: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 1075MB 1074MB primary xfs boot 2 1075MB 21.5GB 20.4GB primary lvm [tom@liruilong ~]$ exit #退出tom用户的登录状态 ######查看日志,看看sudo提权的使用信息 [root@liruilong ~]# cat /var/log/sudo Aug 18 13:02:12 : jerry : TTY=pts/0 ; PWD=/home/jerry ; USER=root ; COMMAND=/bin/systemctl restart sshd Aug 18 13:18:34 : tom : TTY=pts/0 ; PWD=/home/tom ; USER=root ; COMMAND=/sbin/parted /dev/sda print

三、sshd访问控制

SSH基本防护

SSH防护概述

存在的安全隐患

密码嗅探、键盘记录

暴力枚举账号、猜解密码

常见的防护措施

用户限制、黑白名单

更改验证方式(密码 --> 密钥对)

防火墙…

sshd基本安全配置

配置文件

/etc/ssh/sshd_config

Port 3389 //改用非标准端口

ListenAddress 192.168.168.174

PermitrootLogin //禁止root登录

#####修改ssh配置时,先备份sshd主配置文件 [root@liruilong ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak ####修改虚拟机ssh远程连接得端口为3389 [root@liruilong ~]# vim /etc/ssh/sshd_config 17 Port 3389 ##重启sshd服务 [root@liruilong ~]# systemctl restart sshd #xshell测试使用ssh远程时必须加端口号3389 [c:\~]$ ssh root@192.168.2.100 3389 ####用户只能通过192.168.2.100这个IP地址远程liruilong这台虚拟机 [root@liruilong ~]# vim /etc/ssh/sshd_config 20 ListenAddress 192.168.2.100 ##重启sshd服务,虚拟机新添加网卡配置其他IP地址测试 [root@liruilong ~]# systemctl restart sshd #xshell测试使用ssh远程时必须加端口号3389 [c:\~]$ ssh root@192.168.2.100 3389

#####禁止root远程登录虚拟机liruilong [root@liruilong ~]# vim /etc/ssh/sshd_config 38 PermitRootLogin no ##重启sshd服务,xshell使用root远程登录liruilong失败 [root@liruilong ~]# systemctl restart sshd #####xshell以普通用户jerry的身份可以登录liruilong虚拟机 ##使用su -切换成root身份,或者使用sudo提权命令 [c:\~]$ ssh jerry@192.168.2.100 3389 #密码123456 [tom@liruilong ~]$ [tom@liruilong ~]$ su - root #su - 切换root用户 密码: #输入root密码 [root@liruilong ~]#

配置文件

/etc/ssh/sshd_config

UseDNS no //不解析客户机地址

LoginGraceTime 1m //登录限时

MaxAuthTries 3//每连接最多认证次数

UseDNS no #不对客户机进行域名解析,访问网站的普通用户是没有域名的,不需要解析

LoginGraceTime 1m #用户在ssh远程服务器时,如果1分钟内用户没有输入用户名和密码,则断开连接

#########举例演示 ##登录限时修改为10s,真实环境需要长一点 [root@liruilong ~]# vim /etc/ssh/sshd_config 37 LoginGraceTime 10s 115 UseDNS no ##重启sshd服务 [root@liruilong ~]# systemctl restart sshd ###使用xshell远程连接时,不输入密码,等待10s中,会出现连接关闭的提示 [c:\~]$ ssh jerry@192.168.2.100 3389 Connection closing...Socket close.

MaxAuthTries 3 : #用户远程服务器时,密码错误,可以尝试多少次

#这里的3不是指的3次,是一个概数,需要不断尝试错误连接,来得出这里得数字 #########举例演示 ##修改连接认证次数为3 [root@liruilong ~]# vim /etc/ssh/sshd_config 40 MaxAuthTries 3 ##重启sshd服务 [root@liruilong ~]# systemctl restart sshd ##使用xshell远程连接,输入错误密码,输入两次就会出现连接端口的提示 [c:\~]$ ssh jerry@192.168.2.100 3389 Connection closing...Socket close.

ssh经常一段时间就断掉解决办法去掉注释,改成

vim /etc/ssh/sshd_config ClientAliveInterval 30 ClientAliveCountMax 86400

这两行的意思分别是

、客户端每隔多少秒向服务发送一个心跳数据

、客户端多少秒没有相应,服务器自动断掉连接

重启sshd服务

#service sshd restart

sshd黑/白名单配

配置文件 /etc/ssh/sshd_config

DenyUsers USER1 USER2 …

AllowUsers USER1@HOST USER2 …

DenyGroups GROUP1 GROUP2 …

AllowGroups GROUP1 GROUP2 …

#####设置黑白名单时,如果要允许或拒绝多个用户,用户之间以空格作为分隔符 DenyUsers #设置黑名单,拒绝某些用户登录本机 AllowUsers #设置白名单,允许某些用户登录本机 DenyGroups #设置黑名单,拒绝一个或多个用户组登录本机 AllowGroups #设置白名单,允许一个或多个用户组登录本机 AllowUsers USER1@HOST #设置白名单,允许用户USER1从HOST这台主机登录本机

应用示例:仅允许一部分用户(从指定地点)登入,其他任何用户均禁止登入

####使用xshell让用户jerry使用3389端口登录 [c:\~]$ ssh jerry@192.168.2.100 3389 [jerry@liruilong ~]$ su - root #切换为root身份 [jerry@liruilong ~]# #######设置白名单,仅允许tom可以ssh远程登录服务器,其他任何用户都无法登录 ##如果设置的是白名单,则不需要设置黑名单了,默认是拒绝其他用户远程登录 [root@liruilong ~]# vim /etc/ssh/sshd_config 42 AllowUsers tom ##重启sshd服务 [root@liruilong ~]# systemctl restart sshd ######xshell远程测试 ##jerry无法再登录了 [c:\~]$ ssh jerry@192.168.2.100 3389 #登录密码123456 ##tom用户可以远程登录 [c:\~]$ ssh tom@192.168.2.100 3389 #登录密码 123456 [tom@liruilong ~]$ ```bash #######设置黑名单,仅拒绝tom通过ssh远程登录服务器,其他用户都允许 [root@liruilong ~]# vim /etc/ssh/sshd_config 42 DenyUsers tom ##重启sshd服务 [root@liruilong ~]# systemctl restart sshd ######xshell远程测试 ##tom无法再登录了 [c:\~]$ ssh tom@192.168.2.100 3389 #登录密码123456 ##jerry用户可以远程登录 [c:\~]$ ssh jerry@192.168.2.100 3389 #登录密码 123456 [tom@liruilong ~]$

#######设置黑名单,拒绝用户tom从IP地址为192.168.2.1的主机,来远程服务器svr7 [root@svr7 ~]# vim /etc/ssh/sshd_config 42 DenyUsers tom@192.168.2.1 ##重启sshd服务 [root@svr7 ~]# systemctl restart sshd

SSH密钥对验证

sshd验证方式控制

口令验证

::检查登录用户的口令是否一致:密码验证:#当windows被攻击,系统被植入木马,容易被攻击者从键盘记录等方式中获取密码

密钥验证

:检查客户端私钥与服务器上的公钥是否匹配:密钥验证:#密钥验证的安全度很高;#不会有输入密码的过程,键盘工具方式无效;

PasswordAuthentication

yes #ssh支持密码验证

47 AuthorizedKeysFile .ssh/authorized_keys ##指定公钥的存放位置,在用户的家目录 下的.ssh目录中的authorized_keys文件中

密钥对验证的实现思路

第一步:客户机创建密钥对,私钥文件:id_rsa 公钥文件: id_rsa.pub;

第二步: 客户机上传公钥到服务器上用户的家目录下 ./ssh/authorized_keys文件;

ssh-copy-id 命令,会自动将公钥放到指定用户家目录的对应文件中

创建SSH密钥对:使用工具 ssh-keygen

关于 Linux 运维中安全方面的一些笔记

可以手动指定加密算法(-t rsa 或 -t dsa)

若不指定,默认采用RSA加密

######非交互的方式创建密钥对 [root@svr7 ~]# ssh-keygen -N '' -f /root/.ssh/id_rsa Generating public/private rsa key pair. Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:+pb7aZI5xtlulc1Z3MQjjsNGLu5mbCHxU5JfPtWOe+w root@svr7 The keys randomart image is: +---[RSA 2048]----+ | . | | . . .o| | = o .o+| | . + B o .=| | S * ++.= | | o = .oo= .| | ..+*o. .o | | .@*+. . o| | o*O+ oE| +----[SHA256]-----+ ###密钥对会生成在/root/.ssh/目录下 [root@svr7 ~]# ls /root/.ssh/ id_rsa id_rsa.pub known_hosts

部署SSH公钥

#方法一:将公钥通过ssh-copy-id放到192.168.2.200的服务器上 [root@svr7 ~]# ssh-copy-id root@192.168.2.200 #查看公钥文件的保存路径 [root@client ~]# ls /root/.ssh/ authorized_keys

四、加密与解密

加解密概述

加密目的及方式

确保数据的机密性对称加密:

加密/解密用同一个密钥

非对称加密:加密/解密用不同的密钥(公钥、私钥)

保护信息的完整性(常用于做数据完整性校验)

信息摘要:基于输入的信息生成长度较短、位数固定的散列值

常见的加密算法

对称加密

DES,Data Encryption Standard

AES,Advanced Encryption Standard

非对称加密

RSA,Rivest Shamirh Adleman

DSA,Digital Signature Algorithm

Hash散列技术,用于信息摘要

MD5, Message Digest Algorithm 5 : 根据输入的文本(长度不限) ,生成固定长度(比如128位)的摘要文本

SHA, Secure Hash Algorithm1 : 只要输入的文本不同,则生成的摘要文本也不一样

MD5完整性检验

使用md5sum校验工具

生成MD5校验值

与软件官方提供的校验值比对

GPG加解密厂具

GnuPG简介

GnuPG

,GNU Privacy Guard : http://www.gnupg.org/ 最流行的数据加密、数字签名工具软件

########查看gpg的版本,以及支持的算法 [root@node1 ~]# gpg --version gpg (GnuPG) 2.0.22 libgcrypt 1.5.3 Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Home: ~/.gnupg 支持的算法: 公钥:RSA, ?, ?, ELG, DSA 对称加密:IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 散列:MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 压缩:不压缩, ZIP, ZLIB, BZIP2

Linux 运维

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[华为云在线课程][Linux平台软件包安装与管理][第二章软件包和包管理器][学习笔记]
下一篇:redis——事务
相关文章