linux系统安全和应用
一.账号安全控制
1.基本安全措施
(1)系统账号清理
1)将非登录用户的shell设置为/sbin/nologin
2)锁定长期不适用的账号
3)删除无用的账号
4)锁定账号文件passwd,shadow
chattr命令
chatter命令对文件操作
+i 锁定文件 root也写不了
-i 解锁文件
+a 加上可追加内容的权限
不能编辑的情况可以用echo进行追加
lsattr 查看底层的文件权限 ll查不了
i 仅可读
a 可读可追加内容,其他都不可以
[root@localhost ~]# chattr +i /etc/shadow
[root@localhost ~]# lsattr /etc/shadow
----i----------- /etc/shadow
[root@localhost ~]# ll /etc/shadow
----------. 1 root root 1560 5月 16 21:23 /etc/shadow
[root@localhost ~]# chattr -i /etc/shadow
[root@localhost ~]# lsattr /etc/shadow
---------------- /etc/shadow
[root@localhost ~]# touch 252
[root@localhost ~]# chattr +a 252
[root@localhost ~]# lsattr 252
-----a---------- 252
[root@localhost ~]# vim 252//+a无法编辑,只能追加
[root@localhost ~]# echo 123123 >>252
[root@localhost ~]# cat 252
123123
(2)密码安全控制
1)设置密码有效期
2)要求用户下次登录时需要登录密码
配置文件/etc/login.defs
决定shadow的密码配置信息,针对新用户
vim /etc/login.defs
打开查看
参数信息说明
PASS_ MAX_DAYS 99999:#密码最大有效期
PASS_ MIN_DAYS 0:#两次修改密码的最小间隔时间
PASS_ MIN_LEN 5:#密码最小长度>对于root无效
PASS_WARN_AGE 7:#密码过期前多少天开始提示
UID_ MIN 1000:#用户ID的最小值
UID_MAX 60000:#用户ID的最大值
GID_MIN 1000 :#组ID的最小值
GID_ MAX 60000:#组ID的最大值
#USERDEL_CMD /usr/sbin/userdel_local:#当删除用户的时候执行的脚本
CREATE_ HOME yes:#使用useradd的时候是够创建用户目录
USERGROUPS_ ENAB yes:#指定删除用户的时候是否同时删除用户组,准备地说,这里指的是删除用户的初始组
UMASK 077:用户主目录的权限默认设置为077 (文件目录默认为022,注释里面有这方面介绍)
MAIL_DIR /var/spool/mail:#创建用户时,要在目录/var/spoo/mail中创建一 个用户mail文件
ENCRYPT_ METHOD SHA512:#指定用户密码采用的加密规则,默认采用SHA512,这是新的密码加密模式,原先的Linux只能用DES或MD5加密
su_ WHEEL_ONLY yes:只允许wheel组用户可以使用su
chage命令
选项说明
-l 用户名:当前系统中用户的密码有效期
-h:chage命令的帮助信息
-d 日期 用户名:将最近一次密码设置时间设为最近日期
-d 0 用户名:设置用户下次登录必须更改密码
-E 日期 用户名:指定账号过期的时间
-M 天数 用户:多少天之后必须更改密码
-m:将两次改变密码之间相距的最小天数设为“最小天数”
-I:过期INACTIVE天数后,设定密码为失效状态
-R:chroot到的目录
-W:将过期警告天数设为“警告天数”
[root@localhost ~]# chage -l
用法:chage [选项] 登录
选项:
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, --expiredate 过期日期 将帐户过期时间设为“过期日期”
-h, --help 显示此帮助信息并推出
-I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态
-l, --list 显示帐户年龄信息
-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
-M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”
-R, --root CHROOT_DIR chroot 到的目录
-W, --warndays 警告天数 将过期警告天数设为“警告天数”
[root@localhost ~]# chage -l lc
最近一次密码修改时间 :5月 06, 2021
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
[root@localhost ~]# chage -d 0 lc
[root@localhost ~]# chage -l lc
最近一次密码修改时间 :密码必须更改
密码过期时间 :密码必须更改
密码失效时间 :密码必须更改
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
(3)命令历史注销清除
1)命令历史限制
减少记录的命令历史条数
注销时自动清空历史命令
2)终端自动注销
3)history命令
history查看历史命令,默认缓存1000条
[root@localhost ~]# ls -a
. 123 22 33 anaconda-ks.cfg .bash_logout bb .cshrc .ICEauthority .local tom .xauthj7f0LU .xauthz8KrPF 视频 下载
.. 145 252 a b .bash_profile .cache .dbus initial-setup-ks.cfg qq .viminfo .xauthkVBbmK 公共 图片 音乐
11 195 .252.swp aa .bash_history .bashrc .config .esd_auth .lesshst .tcshrc .xauth3IOfDf .Xauthority 模板 文档 桌面
history -c 清楚历史命令
source 立即执行
vim .bash_profile
设置限制多少秒后自动注销
root登录系统,history把命令记录在缓存中
执行logout登出之后,产生隐藏文件.bash_history
把history所有命令写入.bash_history,以便于下一次的查看
若删除.bash_history隐藏文件,因为history存的命令在缓存内,所有仍可以查看所有写出的命令
如果要彻底删除
先删除隐藏文件.bash_history
再history -c:清除命令
2.用户切换与提取su和sudo
su
su - 用户名
切换用户
root用户切换到其他用户不需要验证密码
普通用户切换到其他用户需要验证密码
查看当前系统变量
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
su lc 表面是lc 实际还是root
[root@localhost ~]# su lc
[lc@localhost root]$ pwd
/root
[lc@localhost root]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
su 直接进入root
sudo
sudo
配置文件 /etc/sudoers
vim 进入 配置
写入允许用户tom执行useradd命令
正常是使用visudo进行配置
visudo
说明:多个命令用逗号分隔
将用户加入wheel组也可以获得root权限
sudo -l 查看用户获得root的哪些权限
3.PAM安全认证
PAM是一种高效而且灵活便利的用户级别的认证方式,
也是linux系统普遍的使用的认证方式。
ls /etc/pam.d
查看su是否支持pam认证
ls /etc/pam.d | grep su
设置用户不能su 到root
需要配合2个文件
su的pam配置文件 /etc/pam.d/su
①vim /tec/pam.d/su
第一列 认证类型
第二列 控制类型
第三列 pam的认证模块
如果有第四列 是参数
操作方法
第五行启用 不要注释
②vim /etc/login.defs
自定义最后一行加入表示开启
不在wheel组的用户不能用su登录切换到root
设置后验证不能切换到root
修改root不能远程登录
vim /etc/ssh/sshd_config
去掉注释 修改端口号
去掉注释 修改yes为no
查看有没有远程服务
[root@localhost ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since 日 2021-05-16 22:24:37 CST; 17h ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 7000 (sshd)
Tasks: 1
CGroup: /system.slice/sshd.service
└─7000 /usr/sbin/sshd -D
5月 16 22:24:37 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
5月 16 22:24:37 localhost.localdomain sshd[7000]: Server listening on 0.0.0.0 port 22.
5月 16 22:24:37 localhost.localdomain sshd[7000]: Server listening on :: port 22.
5月 16 22:24:37 localhost.localdomain systemd[1]: Started OpenSSH server daemon.
5月 16 22:25:09 localhost.localdomain sshd[16849]: Accepted password for root from 192.168.206.1 port 51650 ssh2
5月 17 14:02:10 localhost.localdomain sshd[20973]: Accepted password for root from 192.168.206.1 port 52882 ssh2
5月 17 14:13:45 localhost.localdomain sshd[21228]: Accepted password for root from 192.168.206.1 port 52960 ssh2
重启远程服务
[root@localhost ~]# systemctl restart sshd
PAM安全认证流程
四个过程
程序开始
验证开始
验证结束
程序后续动作
认证流程的四个状态
required:验证失败也继续下一步,走完四个流程–>验证结束
requisite:验证失败直接–>验证结束
sufficient:验证失败也继续下一步,走完流程
optional:不论失败成功,已经是最后一个流程,–>验证结束
二.系统引导和安全控制
1.开关机安全控制
调整BIOS引导设置
将第一引导设备设为当前系统所在硬盘
禁止从其他设备(光盘、U盘、网络)引导系统·
将安全级别设为setup,并设置管理员密码
GRUB限制
使用grub2-mkpasswd-pbkdf2生成密钥
修改/etc/grub.d/00_header文件中,添加密码记录
生成新的grub.cfg配置文件
2.终端及登录控制
安全终端配置文件
/etc/securetty
终端tty1-6,终端切换
禁止终端tty2登录root
vim /etc/securetty
tty2前面加注释#或者dd删除
登录用户使用tty2的终端就无法登录用户了
登录后显示内容,删除后恢复
三.端口扫描工具NMAP
namp端口扫描工具
扫描查看主机存活 -P
P只做ping的操作
-n 不进行域名解析 扫描速度相对快点
-P0 三次握手之前不进行ping的操作
-A 详细全面
-T完整的3次握手 tcp
-U udp
-p 指定端口扫描