目录
1.在/etc/pam.d/su文件里设置禁止用户使用su命令
一、账号安全控制
1.系统账号清理:
对于不用的账号,应记得及时清理。
①将非登录用户的shell设为/sbin/nologin
②锁定长期不使用的账号
③删除无用的账号
2.锁定账号文件passwd、shadow
①chatter和lsattr
chattr -i /etc/passwd /etc/shadow -i 解锁 +i 上锁
lsattr /etc/passwd /etc/shadow 查看是否锁定
②usermod和passwd
usermod -L 用户名 锁定账号
usermod -U 用户名 解锁账号
passwd -S 用户名 查看帐号状态
passwd -l 用户名 锁定用户账号
passwd -u 用户名 解锁账号
userdel -r 用户名 删除用户
二、密码安全控制
1.设置密码有效期
vi /etc/login.defs #适用于新建的用户
PASS_MAX_DAYS 30 #设置密码有效期30天,默认99999
PASS_MIN_DAYS 0 #自从上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值为0
PASS_MIN_LEN 5 #密码最小长度,对root无效
ps:指定密码的最小长度,默认不小于5为,但是现在用户登录时验证已经被pam模块取代,所以这个选项并不生效
PASS_WARN_AGE 7 #指定在密码到期前多少天,系统开始警告,默认为7天
2.通过pam模块来防止暴力破解ssh
vim /etc/pam.d/sshd
在第一行下面添加一行:
尝试登陆失败超过3次,普通用户30s解锁,root用户60s解锁
3.手动解除锁定:
pam_tally2 --user 用户名 查看某一用户错误登录次数
pam_tally2 --user 用户名 --reset 清空用户错误登录次数
三、历史命令限制
1.减少记录的命令条数
①所有用户:
vim /etc/profile 环境变量文件所有用户终端都生效
添加:
HISTSIZE=次数 限制保留()条历史命令
source /etc/profile 重新加载
②单用户:
~目录下的隐藏文件.bash_profile
.bash_profile 用户登录时执行
.bashrc 用户登录时加载的
.bash_logout 登出时加载
history -c(clean) 清空
(但是家目录下的.bash_history还在)
③环境变量读取顺序:
用户登录 -> 加载~/.bash_profile -> bash_profile中配置了首先是使~/.bashrc生效
注销时自动清空命令历史
vim /etc/skel/.bash_logout
rm -rf $HOME/.bash_history
四、终端自动注销
闲置后终端自动注销
vim ~/.bash_profile 单用户
/etc/profile 所有用户
export TMOUT=时间 闲置时间后自动注销
unset TMOUT 取消TMOUT设置
输入 source /etc/profile 将会再次加载超时设置
五、限制su命令
1.在/etc/pam.d/su文件里设置禁止用户使用su命令
vim /etc/pam.d/su
2 # auth sufficient pam_rootok.so
6 # auth required pam_wheed.so use_uid
1)以上两行都是默认状态(即开启第二行,注释第六行),这种状态下是允许所有用户见使用su命令进行切换
2)两行都注释也是运行所有用户都能使用su命令,但root切换普通用户也需要密码;如果第二行不注释,则root使用su切换普通用户不需要密码
3)如果开启第六行,表示只有root用户和wheel组内用户可以使用su
4)如果注释第二行,开启第六行,表示只有wheel组内的用户才可以用su,root也被禁用su
auth sufficient pam.wheel.so trust use_uid 使wheel成员su到root不用密码
auth required pam_wheel.so use_uid 使非wheel成员无法切换到root
2.添加用户到组:
gpasswd -a 用户名 wheel #添加用户到wheel组
grep wheel /etc/group #确认wheel成员
六、PAM
1.pam安全认证
是一种高效且灵活的便利的用户级的认证,是现在linux服务器普遍使用的认证方式
2.pam认证原理
①pam认证一般遵循的顺序:service(服务)-pam(配置文件)-pam——*.so
②pam认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于/lib64/security/下)进行安全认证。
③用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证,不同的应用程序所对应的PAM模块也是不用的。
如果想查看某个程序是否支持PAM认证,可以使用ls查看/etc/pam.d/ PAM的配置文件中的每一行都是一个独立的认证过程,他们按从上往下的顺序依次由PAM模块调用
七、sudo机制提升权限
通过su命令可以非常方便的切换为另一个用户,但前提条件是必须知道目标用户的登陆密码。(为了安全)
etc/sudoers文件的默认权限为440,需使用专门的visudo工具进行编辑,也可以用vi编辑,不过需要":w!"强制执行
sudo -l 列出用户在主机上可用的和被禁止的命令
-v 验证用户的时间戳
-u 指定以某个用户执行特定操作
-k 删除时间戳
用户名 ALL=(root)NOPASSWD:命令的绝对路径,PASSWD:命令的绝对路径 #前面不需要密码,后面需要密码,中间用','隔开。命令之间空格隔开
八、终端登录安全控制
1.直接建立一个/etc/nologin
login程序会检查此文件是否存在。存在则拒绝普通用户登陆系统
2.限制终端登录
vim /etc/securetty
哪个终端不想让登录直接#注释掉
九、扫描端口
1.nmap
nmap -p 指定扫描端口
-n 禁用反向DNS解析(加快扫描速度)
-sS TCP SYN扫描,只向目标发送SYN数据包,接收到回复则目标端口开放
-sT TCP扫描,建立一个TCP链接
-sF TCP FIN是扫描,开放的端口忽略,关闭的端口回应RST数据包(间接检测防火墙的健壮性)
-sU UDP扫描,探测目标主机提供哪些UDP服务(速度较慢)
-sP ICMP扫描,类似于ping检测
-P0 跳过ping检测,认为所有目标主机存活。当对方不响应ICMP请求,可以避免无法ping通而放弃扫描
2.netstat
netstat -n 以数据形式显示相关的主机地址、端口等信息
-r 显示路由表信息
-a 显示主机中所有活动的网络链接信息(包括监听、非监听的服务端口)
-t 查看TCP相关信息
-l 显示处于监听状态的网络连接及端口信息
-u 显示UDP相关信息
-p 显示与网络连接相关的进程号、进程名称信息(root权限)
通常配合 -anpt 以数字形式显示当前系统中所有的TCP连接信息,同时显示对应的进程信息
管道符grep过滤出特定的记录