飞道的博客

Linux系统安全及应用加固———最适合新手学,新手都能看懂!超详细的理论+超详细的实验!呕心沥血之作完成!

520人阅读  评论(0)

一、账号安全控制

1.1、账号安全基本措施

1.1.1、系统帐号清理

  • 将非登录用户的Shell设为/sbin/nologin
  • 锁定长期不使用的账号
  • 删除无用的账号
  • 锁定账号文件passwd、shadow
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow
[root@localhost ~]# Isattr /etc/passwd /etc/shadow
-------- /etc/passwd
-------- /etc/shadow

更改用户登录权限操作

1、进入vi /etc/passwd

2、在root用户选更改tx用户的登录权限 改成/sbin/nologin

3、然后tx用户退出登录在登陆时,已经登陆不上了

用passwd -l 锁定账户 ,登陆不上;passwd -u 解锁账户

用usermod -L 锁定账户 ;usermod -U 解锁账户

删除无用账户

useradd先创建一个模拟的无用账户;
userdel -r 删除无用账户

锁定文件

1、chattr +i /etc/passwd /etc/shadow
在vi编辑器里只能读,不能写

2、lsattr /etc/passwd /etc/shadow 查看文件状态

3、在vi编辑器里面操作是否可以读写,只读不写

解锁文件

1、chattr -i /etc/passwd /etc/shadow
在vi编辑器里可读可写了

2、lsattr /etc/passwd /etc/shadow 查看文件状态

1.1.2、密码安全控制

  • 设置密码有效期
  • 要求用户下次登录时修改密码
[root@localhost ~]# vi /etc/login.defs  适用于新建用户
PASS MAX DAYS 30
[root@localhost ~]# chage -M 30 lisi   ## 适用于已有用户
[root@localhost ~]# chage -d 0 zhangsan  ##强制在下次登录时更改密码

①新建用户更改密码有效期:

1、进入 vi /etc/login.defs

2、找到下面这句话 ,把数值改为30(就是有效期为30天)

3、新建tx1用户 ,给tx1设置密码


4、这时候 vi /etc/shadow 查看新建的 tx1 用户的密码有效期已经改好了

②已有用户更改密码有效期:

1、更改已有用户 tx 的密码有效期为30天

2、进入vi /etc/shadow 查看

3、发现已经改为 ,密码有效期改为30天了

③强制指定用户在下次登录时更改密码

1、这句代码的意思就是 强制指定tx用户下次登陆时更改密码

2、tx用户原来的更改密码有效期

3、tx用户改完之后的更改密码有效期

大家注意看,后面的时间参数是不一样的!!!

4、重新登陆的时候,按照图片输入要输入的密码就可以了

然后在回车重新登录的时候输入刚才的密码
下次登录改密码的时候要把密码弄复杂点
我弄的是 Tx!@#¥%……&W*
如果要取消强制登陆,直接进入vi编辑器直接更改成原来的参数

1.1.3、命令历史限制

  • 减少记录的命令条数
  • 注销时自动清空命令历史

修改历史命令数量的限制

方法一:

1、进入vi /etc/profile 里面直接改里面的参数,从而达到修改历史命令数量的限制

2、按 shift+:然后输入 /HIST 然后回车,会跳到这个地方,然后手动修改一下参数,修改成70条

3、刷新一下

4、重启一下

5、然后查看一下历史命令,修改成功

方法二:

1、进入vi /etc/profile 里面

2、在最后一行直接输入这句话,这次我们改成最多只能60条

3、这条命令刷新一下

4、重启虚拟机

5、查看历史命令,只有60条命令,试验成功

1.1.4、终端自动注销

  • 闲置600秒后自动注销
    注意,注销的时候必须是闲置的时候!!!不能动
[root@localhost ~]# vi /etc/profile
HISTSIZE=200
[root@localhost ~]# vi ~/.bash_ logout
history -C
clear

①针对所有用户的注销

1、进入vi编辑器后,在最后一行输入这句话,100秒后注销

2、退出编辑器,然后刷新下

3、账户注销了

②针对单个用户修改注销时间


1、修改时间为20S

2、刷新一下

3、账户注销了

二、系统引导和登录控制

2.1、使用su命令切换用户

2.1.1、用途和用法

■用途及用法

  • 用途: Substitute User, 切换用户
  • 格式: su - 目标用户

■密码验证

  • root→任意用户,不验证密码
  • 普通用户>其他用户,验证目标用户的密码

2.1.2、限制使用su命令的用户

■限制使用su命令的用户

  • 将允许使用su命令的用户加入wheel组,在wheel组内的用户才可以使用su切换用户命令
  • 启用pam_wheel认证模块

■查看su操作记录

  • 安全日志文件:/var/log/secure

限制使用su命令的用户实验

1、把 tx 用户加入 wheel 组

2、查看是否把 tx 用户放进 wheel 组

3、tx 用户在 wheel 组

4、进入 vi /etc/pam.d/su

5、把框出来的行前面的#号删掉

6、进入 vi /etc/login.defs

7、在末行输入这句话

8、查看一下 cat /etc/group ,tx 用户 在 wheel 组

9、这是我们登录 tx 用户然后切换为 root用户可以切换,因为已经把 tx 用户放入 wheel组了


10、但是 tx1 用户却不能切换为 root 用户,因为 tx1 用户没有放进 wheel 组

三、Liunx中的PAM安全认证

3.1、su命令的安全隐患

  • su命令的安全隐患
    默认情况下,任何用户都允许使用su命令,从而恶意用户有机会反复尝试其他用户(如root)的登录密码,带来安全风险
    为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换
    PAM(Pluggable Authentication Modules)可拔插式认证模块,它是一种高效而且灵活便利的用户级别的认证方式,也是当前Linux服务器普遍使用的认证方式

3.2、PAM认证原理

  • PAM认证一般遵循的顺序:Service(服务)>PAM(配置文件)>pam_*.so
    PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
    用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
    不同的应用程序所对应的PAM模块也是不同的
    .so 为结尾的就是模块文件

3.3、PAM认证的构成

  • 查看某个程序是否支持PAM认证,可以用ls命令进行查看/etc/pam.d,然后管道符号检索想要查询的程序;例如查看su是否支持PAM模块认证
    ls /etc/pam.d | grep su
    查看su的PAM配置文件:cat /etc/pam.d/su
    每一行都是独立的认证过程
    每一行可以区分为三个字段
    认证类型
    控制类型
    PAM模块及其参数

3.4、PAM安全认证流程

  • 控制类型也可以乘坐Control Flags,用于PAM验证类型的返回结果
    1.required验证失败时仍然继续,但返回Fail
    2.requisite验证失败则立即结束整个验证过程,返回fail(最重要的一步)
    3.sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
    4.optional不用于验证,只显示信息(通常用session类型)

四 、使用sudo机制提升权限

4.1、su命令的缺点

  • 默认情况下,任何用户都允许使用su命令,从而恶意用户有机会反复尝试其他用户(如root)的登录密码,带来安全风险

4.2、sudo命令的用途及用法

  • 用途:以其他用户身份(如root)执行授权的命令
  • 用法:sudo 授权命令

4.3、配置sudo授权

  • visudo命令 或者 vim /etc/sudoers
  • 记录格式: 用户 主机名列表 = 命令程序列表
root@localhost log]# visudo
......
用户	主机名列表 = 命令程序列表
%wheel	ALL = NOPASSWD:ALL
jerry	localhost = /sbin/ifconfig
syrianer	localhost = /sbin/*,!/sbin/ifconfig,!/sbin/route
'可以使用通配符号*和取反符号!'
Cmnd_Alias	PKGTOOLS = /bin/rpm,/usr/bin/yum
mike	localhost = PKGTOOLS

4.4、查看sudo操作记录

■查看sudo操作记录

  • 需启用Defaults logfile 配置
  • 默认日志文件: /var/log/sudo

■查询授权的sudo操作

  • sudo -|

使用sudo机制提升权限实验

1、先在tx用户上测试,先输入(ifconfig ens33:1 192.168.10.10)创建网卡;
发现是不允许操作的,因为没有权限

2、需要在root用户visudo 或者/etc/sudoers都可以进配置文件添加提权用户;

3、配置文件末行加入你想要提权的用户;(KGC是主机名)

tx KGC=/sbin/*,!/sbin/reboot (tx用户在KGC主机下执行/sbin下所有命令,除了reboot)

4、再去tx用户上再去(sudo ifconfig ens33:1 192.168.10.10)创建网卡那条命令,发现是可以做操作的权限已经有了


5、ifconfig 查看一下是不是创建成功

五、开关机安全控制

5.1、调整BIOS引导设置

  • 将第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘、U盘、网络)引导系统
  • 将安全级别设为isetup,并设置管理员密码
  • 备注:禁止从其他设备引导系统操作,感觉若是出现忘记root密码就可能无法从光驱去修改,所以还是谨慎操作

调整BIOS引导设置实操

虚拟机重启之后,按F2进入BIOS

设置进入BIOS的密码,设置完之后确认


设置开机就要输入密码

F10保存退出!

5.2、GRUB限制

  • 使用grub2-mkpasswd-pbkdf2生成密钥
  • 修改/etc/grub.d/00_header文件中,添加密码记录
  • 生成新的grub.cfg配置文件

5.3、终端登录安全控制

5.3.1、限制root只在安全终端登录

■限制root只在安全终端登录

  • 安全终端配置: /etc/securetty
[root@localhost ~]# vi letc/securetty
......
#tty5    ## 禁止root用户从终端tty5,tty6登录
#tty6

限制root只在安全终端登录实验:

1、先在虚拟机终端里面 init 3切换字符界面,然后登陆进去

2、who 查看一下当前用户登陆的终端

3、打开 vi /etc/securetty,在tty2前加上#号,然后wq保存退出


4、记住当前我们是在tty1终端里面,然后按ctrl+alt+F2切换成tty2终端。
进tty2终端后,正常输入root用户和密码,应该是进不去的。
因为刚才我们已经把终端tty2给关闭了。
意思就是禁止 root 用户从终端tty2进入

注意:如果我们此时在tty1终端,然后在进入vi /etc/securetty把tty1终端给关掉,是没有用的,因为我们当时已经在tty1终端里面了,所以是没有效果的。
ctrl+alt+F1—9 是切换终端用的(在字符界面使用)

5.3.2、禁止普通用户登录

■禁止普通用户登录

  • 建立/etc/nologin文件
  • 删除nologin文件或重启后即恢复正常
[root@localhost ~]# touch /etc/nologin    ## 禁止普通用户登录
[root@localhost ~]# rm -rf /etc/nologin    ## 取消上述登录限制

禁止普通用户登录实验:

当服务器正在进行备份或调试等维护工作时,可能不希望在有新的用户登陆系统。这时候,只需要间的建立 /etc/nologin文件即可。login程序会检查 /etc/nologin 文件是否存在,如果存再则拒绝普通用户登录系统(root用户不受限制)。这里我们做个实验验证一下。

1、先创建并进入touch /etc/nologin文件里面

2、这时候我们在登录普通用户试验一下看是否可以登录成功


3、登陆失败!
4、当我们在 vi /etc/nologin 里面输入别的字符,当其他用户(除root用户)在登陆自己的用户时就会显示我们刚才在 vi /etc/nologin里面输入的字符,我们这里验证一下。

①我们先进入 vi /etc/nologin ,在里面输入 Hello World,并 wq 保存退出


②当我们登录 tx 用户时,虽然登录不上,但是显示了刚才在 vi /etc/nologin里面输入的字符 Hello World

取消登录限制:

  1. rm -rf /etc/nologin 就是把这个文件删除

  1. 删除 /etc/nologin 文件之后,其他的用户又可以登录了

六、系统弱口令检测

6.1、Joth the Ripper,简称为JR

  • 款密码分析工具,支持字典式的暴力破解
  • 通过对shadow文件的口令分析,可以检测密码强度
  • 官方网站: http://www.openwall.com/john/

6.2、安装JR工具

  • 安装方法 make clean系统类型
  • 主程序文件为john

6.3、检测弱口令账号

  • 获得Linux/Unix服务器的shadow文件
  • 执行john程序,将shadow文件作为参数

6.4、密码文件的暴力破解

  • 准备好密码字典文件,默认为password.lst
  • 执行john程序,结合–wordlist=字典文件

6.5、弱口令自定义字典破解实验

1、把软件包放入 /opt目录里

2、进入 /opt目录


3、用tar软件包解压这个压缩包


4、进入 john-1.8.0/


5、ll 查看一下解压过后软件包的内容


6、回到上一层为了进入run/目录


7、进入run/并查看下里面有这个文件

8、把/etc/shadow复制到/root/shadow.lst(这时候没有shadow.lst)


9、进入 /root目录查看下shadow.lst文件是否创建成功

10、创建passwd.lst文件并打开,在里面输入root的密码是Tx123,然后随便输入几个其他的密码

11、进入 /opt目录看下文件是否依然还在


12、输入如下代码,就可以查出root用户的密码和tx用户的密码。

注意!!!
输入 vi john.opt会查看刚才root和tx用户密码的密文

这时候退出来在破解密码,就不能在进行破解了,提示已经破解过了

弱口令穷举破解实验:
1、进入之后,按 100dd,就会把下面的密文密码一次性清除了
2、这是已经把密文密码清除了


3、输入如下代码就可以进行暴力破解了

七、网络端口扫描

7.1、NMAP的扫描

  • nmap [扫描类型] [选项] <扫描目标…

7.2、NMAP的扫描

  • -sS、-sT、 -sF、 -sU、-sP、-PO

7.3、端口扫描实验

1、进行挂载
2、安装nmap扫描工具

3、查看本机开了多少端口(127.0.0.1是本机的回环口)


4、扫描本机的UDP端口

5、查看扫描20.0.0.0/24字段的FTP服务(21是FTP端口号)
6、查看扫描20.0.0.0/24段存活哪些主机(能ping通);-sP类似于ping检测,快速判断目标主机是否存活,不做其他扫描

7、查看20.0.0.0—200主机是否开启文件共享

今天博客的内容就到此结束啦,内容有点多,希望大家可以仔细观看,写的非常详细了,真是呕心沥血啊!希望大家可以给我这个新手来个一键三连!感谢各位铁汁了!


转载:https://blog.csdn.net/m0_46563938/article/details/107497220
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场