chattr +i 文件名 锁定文件
chattr -i 文件名 解锁文件
lsattr 文件名 查看文件状态
chage 用户名 修改信息
vim /etc/login.defs 适用于新建用户
chage -M 30 lisi 适用于已有用户
chage -d 0 zhangsan 强制在下次登录时更改密码
减少记录的命令条数
注销时自动清空命令历史
闲置10秒后自动注销
#设置超时时间
vim /etc/profile //对所有用户生效
export TMOUT=10 //10秒不做编辑自动退出终端
. .bashrc //刷新
echo $TMOUT
vim .bashrc //只对自己生效
. /etc/profile . = source //相当于刷新
echo 123123 |passwd --stdin lisi这种改密码方式会将密码暴露在history里面
#例子
vim .bash_logout 在退出当前终端的时候执行里面的命令
history -c history -c和clear并不能清空history里面的内容,所有的命令都是存在.bash_history clear 文件中的,直接清空.bash_history文件
vim .bash_history
echo " " > /root/.bash_history 临时清空
#例子
pstree -p |grep bash //过滤bash
bash
pstree -p |grep bash //又开了一个新的bash
两个bash硬盘资源共享,内存资源不共享,进程是相互隔离的,如果用命令修改第一个bash,只对打一个bash生效,对第二个bash是不生效的
a=10
echo $a //定义变量a=10
exit //退出
pstree -p |grep bash //重新过滤bash
echo $a //a是空的
echo $HISTSIZE //变量默认值1000
HISTSIZE=10
echo $HISTSIZE //修改变量值为10
bash
pstree -p |grep bash //再过滤一个bash
echo $HISTSIZE //变量为10
因为$HISTSIZE是系统变量,所以是通用的,export是自定义变量,不能通用,export全局生效
env //系统自带变量,是通用的
su -目标用户 完全切换
或
su 目标用户 不完全切换,会残留上一个用户的一些设置
密码验证
vim /etc/pam.d/su
2 # auth sufficient pam_ rootok.so
6 #auth required pam_ wheel.so use_ _uid
a)以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。
b)两行都注释也是允许所有用户都能使用su命令,但root'下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码。)
c)如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令
d)如果注释第一行,开启第二行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令。
su命令的安全隐患
PAM可插拔式认证模块
1.rpm -qi pam
#查看当前系统pam
Name : pam
Version : 1.1.8
Release : 18.el7
Architecture: x86_64
Install Date: 2023年07月27日 星期四 17时26分12秒
Group : System Environment/Base
Size : 2625254
2.rpm -ql pam
#查看模块
/etc/pam.d
/etc/pam.d/config-util
/etc/pam.d/fingerprint-auth
/etc/pam.d/other
/etc/pam.d/password-auth
/etc/pam.d/postlogin
/etc/pam.d/smartcard-auth
/etc/pam.d/system-auth
3.ls /usr/lib64/security/*.so|wc -l
#60个模块是二进制文件,不会直接修改
60
4.ls /etc/security/
#和上面的模块配合使用,有些比较简单的模块没有配置文件
access.conf console.perms limits.d opasswd time.conf
chroot.conf console.perms.d namespace.conf pam_env.conf
console.apps group.conf namespace.d pwquality.conf
console.handlers limits.conf namespace.init sepermit.conf
我们会去修改配置文件
/etc/security
/etc/pam.d/*
5.cd /etc/pam.d/
#这里的文件是应用程序怎么调用模块的
atd gdm-pin postlogin-ac su
chfn gdm-smartcard ppp sudo
chsh ksu remote sudo-i
config-util liveinst runuser su-l
crond login runuser-l system-auth
cups other setup system-auth-ac
fingerprint-auth passwd smartcard-auth systemd-user
fingerprint-auth-ac password-auth smartcard-auth-ac vlock
gdm-autologin password-auth-ac smtp vmtoolsd
gdm-fingerprint pluto smtp.postfix xserver
gdm-launch-environment polkit-1 sshd
gdm-password postlogin sssd-shadowutils
6.cat /etc/pam.d/sshd
#文件类型
#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
# Used with polkit to reauthorize users in remote sessions
-auth optional pam_reauthorize.so prepare
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
# Used with polkit to reauthorize users in remote sessions
-session optional pam_reauthorize.so prepare
一般遵循的顺序
Service(服务)—>PAM(配置文件)—>pam_*.so
首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下)进行安全认证
用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
不同的应用程序所对应的PAM模块是不同的
用户来访问我
首先确定你的service类型(用户名 密码 密钥 短信验证码)
根据配置文件确定是否放行
如果调用的相关的模块
#配置文件:
主配置:/etc/security 只有功能强大的pam模块才会有主配置文件
次配置文件: /etc/pam.d 虽然他是次配置但是他优先生效
模块文件: /usr/lib64/security/
我怎么知道 怎么配置 模块的配置文件和模块的功能?
man 8 模块名
type control module-path arguments
type:指模块类型,即功能
control :PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现
module-path: 用来指明本模块对应的程序文件的路径名
Arguments: 用来传递给该模块的参数
type(模块类型) | 功能 |
---|---|
Auth | 账号的认证和授权 用户名和密码 |
Account | 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录) |
Password | 用户修改密码时密码复杂度检查机制等功能 |
Session | 用户会话期间的控制,如:最多打开的文件数,最多的进程数等 |
-type | 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用 |
control(控制位) | 功能 |
---|---|
required | 一票否决,表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕,再将失败结果返回给应用程序,即为必要条件 |
requisite | 一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件 |
sufficient | 一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件,优先于前面的 |
equired和requisiteoptional | 表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略include: 调用其他的配置文件中定义的配置 |
optional | 可选项 |
PAM模块 | 功能 |
---|---|
认证管理 | 接受用户名和密码,进而对该用户的密码进行认证 |
帐户管理 | 检查帐户是否被允许登录系统,帐号是否已经过期,帐号的登录是否有时间段的限制等 |
密码管理 | 主要是用来修改用户的密码 |
会话管理 | 主要是提供对会话的管理和记账。 控制类型也可以称做 Control Flags,用于 PAM 验证类型的返回结果 |
控制类用于PAM验证类型的返回结果
1)required 验证失败时仍然继续,但返回 Fail
2)requisite 验证失败则立即结束整个验证过程,返回 Fail
3)sufficient 验证成功则立即返回,不再继续,否则忽略结果并继续
4)optional 不用于验证,只是显示信息(通常用于 session 类型)
功能:检查有效shell
帮助:man pam_shells
案例:不允许使用/bin/csh的用户本地登录
模块: pam_shells.so 只允许规定的shell类型通过,是在/etc/shells 文件中存在的类型通过
#例子
cd /etc/pam.d
ls
vim su
auth required pam_shells.so //在第一行加入
useradd -s /bin/csh lisi //添加用户lisi,并指定shell类型为/bin/csh
passwd lisi
su lisi //切换用户lisi,可登录
vim /etc/shells
去掉 /bin/csh
su lisi //不可登录
功能:只允许root用户在/etc/securetty列出的安全终端上登陆
vim /etc/securetty //允许什么样的东西登录到系统当中来
systemctl start telnet.socket //开启服务
yum install telnet-server.x86_64 -y
telnet 192.168.91.101 //远程登录协议,在2服务器连1服务器,默认不让登录root用户
登录zhangsan用户
ip a
su root
不建议使用telnet,是明文的,建议使用ssh,ssh是密文,并且有压缩功能
功能:如果/etc/nologin文件存在,将导致非root用户不能登陆,当该用户登陆时,会显示/etc/nologin文件内容,并拒绝登陆
功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间
ulimit -a
yum install httpd-tools -y
ab -c1025 -n 2000 http://192.168.91.100/ //-c1025同一时间并发1025个 -n代表总共2000次
ab 测试网站的并发
systemctl status httpd -y
ulimit -n 10000 // #修改最大值 临时修改,只对当前窗口有效
必须要先告知超级用户的密码
用途:以其他用户身份(如root)执行授权的命令
sudo 授权命令
sudo,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具
visudo或者vi /etc/sudoers
记录格式
用户 主机名列表=命令程序列表
root ALL=(ALL) ALL(全部命令)
对哪个用户进行设置 代表ip地址或主机名 可以执行什么命令
#例子
su lisi
mount /dev/sr0 /mnt //挂载光盘 ,lisi用户没有权限,操作失败
visudo //在visudo里添加lisi用户
lisi ALL=(ALL) /usr/bin/mount /dev/cdrom /mnt/
which mount //查看绝对路径
sudo mount /dev/cdrom /mnt/ //在lisi用户下挂载
visudo
lisi ALL=(ALL) /usr/bin/mount /dev/cdrom /mnt/, /usr/bin/umount //解挂载,
可以跟多个命令
sudo umount /mnt/
#启用sudo操作日志
visudo
Defaults logfile = "/var/log/sudo"
tail -f /var/log/sudo
sudo -l
#在总文件里面改,容易影响全部,这时候可以建一个子配置文件
vim /etc/sudoers.d/test //建一个子文件test
kkk ALL= NOPASSWD:ALL //允许kkk使用所有命令
useradd kkk
passwd kkk
su kkk
sudo mount /dev/sr0 /opt
#检测192.168.80.0/24网段有哪些存活主机
nmap -n -sP 192.168.80.0/24
-n:禁用反向DNS解析(以加快扫描速度) ip转换成 域名 12222 2www.baidu.com
-sP: ICMP 扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
服务 | 端口号 |
---|---|
HTTP | 80 |
HTTPS | 443 |
Telnet | 23 |
FTP | 21 |
SSH(安全登录)、SCP(文件传输)、端口重定向 | 22 |
SMTP | 25 |
POP3 | 110 |
WebLogic | 7001 |
TOMCAT | 8080 |
WIN2003远程登录 | 3389 |
Oracle数据库 | 1521 |
MS SQL* SEVER数据库sever | 1433 |