CentOS 7 安全加固学习笔记

1. 文件锁定管理

chattr命令

chattr命令用于改变文件属性

1.1 选项

-R 递归处理,将指定目录下的所有文件及子目录一并处理。

+<属性> 开启文件或目录的该项属性。

-<属性> 关闭文件或目录的该项属性。

=<属性> 指定文件或目录的该项属性

1.2 属性

a:只能给文件添加内容,但是不能删除。

i:不得任意更改文件或目录。

1.3 例

chattr +i /etc/passwd //锁定用户文件

chattr +a /var/log/messages //设置不能清除日志文件

lsattr /etc/shadow /etc/passwd //查看锁定状态,权限中有i 表示已锁定

在已锁定状态下创建用户将会报错

useradd: cannot open /etc/passwd

2. 设置用户账户有效期

2.1 对于即将要新添加的用户设置有效期时间

可在配置文件中修改时间,在创建用户时将会生效

vim /etc/login.defs //打开用户账户策略配置文件

defs配置文件中部分选项的作用

  • PASS_MAX_DAYS 99999 //密码最大有效期
  • PASS_MIN_DAYS 0 //两次修改密码的最小间隔时间
  • PASS_MIN_LEN 5 //密码最小长度,对于root无效
  • PASS_WARN_AGE 7 //密码过期前多少天开始提示
  • UID_MIN 500 //创建用户开始的第一个UID
  • UID_MAX 60000 //最大的用户UID
  • GID_MIN 500 //创建组的第一个GID
  • GID_MAX 60000 //最大的组GID
  • CREATE_HOME yes //是否创建用户的宿主目录

2.2 对于已添加的用户设置有效期

chage -M 30 zhangsan //设置用户张三的有效期为30天,passwd shadow文件必须为解锁状态才可执行此命令

chage -d 0 zhangsan //设置张三用户下次登录系统时需要修改密码

也可以使用chmod命令对用户进行设置

3. 查看并清除命令历史记录

3.1 查看系统所执行的命令记录

history

3.2 清空所有命令历史记录

①history -c

可将此命令添加至用户的.bash_logout文件中,.bash_logout 系统退出时执行的命令,用户注销后将会自动清除历史记录

②rm -rf ~/.bash_history

Linux命令行输入的历史记录是保存在~/.bash_history这个文件中,通过删除该文件可以清除历史记录

3.3 修改记录条数

history中默认记录1000条记录,可在配置文件中修改记录条数

vim /etc/profile

HISTSIZE=1000 //默认为1000条,可修改为其他值,一般修改为5或者10条

4. 设置用户超时登出时间

vim /etc/profile

export TMOUT=600 //加入此行,定义变量,600表示秒数, 经过以上设置后,在用户登录系统后十分钟为操作,将会退出登录

5. 用户切换

su 临时切换,shell环境仍是之前的

su - 切换到新的shell环境

默认情况下所有用户均可使用su 进行切换,为了安全,可以设置个别用户才能使用su

wheel组默认拥有su命令

设置用户张三能够使用su命令

gpasswd -a zhangsan wheel //将用户zhangsan加入wheel组

vim /etc/pam.d/su

auth required pam_wheel.so use_uid //去掉此行的开的#

以上配置设置完成后,使用用户zhangsan进行使用su可以进行切换,而其他普通用户将无法使用su进行切换,将会提示密码不正确

6.用户提权

6.1 sudo

6.2 /etc/sudoers

对于普通用户要提升的权限可在配置文件/etc/sudoers中配置。

比如,普通用户无法使用ifconfig命令进行修改主机IP地址,如果需要普通用户修改主机IP地址,则可为普通用户授权使用ifconfig命令进行修改IP地址,需要注意的是命令路径必须写绝对路径,不可写相对路径。

sudo的配置文档是/etc/sudoers ,我们能够用他的专用编辑工具visudo对其进行编辑 ,此工具的好处是在添加规则有误时,保存退出会提示给我们错误信息。

6.3 例

visudo

①zhangsan ALL=(ALL) /sbin/ifconfig //表示张三除了sbin下的ifconfig能执行以外,其他所用命令均不可执行

第一列为用户账号

第二列的ALL意思是登录来源,如localhost

第三列等号右边小括号中的ALL是代表可以切换的身份

第四列ALL是可执行的命令

②%wheel ALL=(ALL) NOPASSWD: ALL //wheel组在任何终端登录都不需要密码即可执行所有命令

%wheel ALL=(ALL) ALL

关于wheel组需要注意,一旦将用户加入了wheel组,则默认表示该用户拥有执行所有命令的权限,不过在执行部分管理员才能命令时需要在前面加sudo才能成功

③Defaults logfile = "/var/log/secure" //添加此项,表示记录sudo使用日志,默认该功能已生效

④当使用相同授权的用户过多,或者授权的命令较多可使用别名方式进行定义

User_Alias    USER=zhangsan,lisi //定义用户张三李四给别名 USER

Host_Alias    HOST=localhost //定义主机给HOST

Cmnd_Alias  CMND=/bin/cat,/bin/cp //定义命令给CMND

USER HOST=CMND //代表用户zhangsan lisi能够在本地主机上执行cat、cp命令

7.禁用重启热键Ctrl+Alt+Del

在CentOS 7中,可以使用下方的命令禁用重启热键Ctrl+Alt+Del,避免因用户误操作导致重启

mv /usr/lib/systemd/system/ctrl-alt-del.target{,.back}

8. 设置单用户模式密码

CentOS 7:

grub2-mkpasswd-pbkdf2

vim /etc/grub.d/00_header //末尾新增行增加以下内容: "cat<<EOF也必须增加"

cat <<EOF

set superusers='root'

password_pbkdf2 root grub.pbkdf2.sha512.10000.15699E16E86D79C3084AA969626337FB3A8000B84FC03D9DAB9FDBA6F95DB69A14EB85F100A221D6C396AD465820FF5FD8726E4CC8D5151433D7CC437B5440C5.797A64272FE6F595D07496730DEA2C304670322FA7473DC3BA18DD4C55533B9166E7023B619E8114C04B93590405DBFCD82774B7334D8CF450270B8E497C628E

EOF

grub2-mkconfig -o /boot/grub2/grub.cfg //重新配置文件

也可以直接设置明文密码:

cat <<EOF

set superusers='root'

password root 123456

EOF

grub2-mkconfig -o /boot/grub2/grub.cfg //重新配置文件

9. 调整BIOS引导设置

将第一引导设备设为当前系统所在硬盘

禁止从其他设备(光盘、U盘、网络)引导系统

将安全级别设为setup,并设置管理员密码

10. 禁止root从本地登录

可以修改/etc/securetty配置文件,该文件只对root生效

vim /etc/securetty

#tty1 //注释登录终端

11. 禁止root用户通过sshd登录

vim /etc/ssh/sshd_config

PermitRootLogin no //将此项#号去掉,并修改参数为no

systemctl restart sshd //重启生效

12. 禁止普通用户以本地及ssh登录

12.1 禁止普通用户以本地登录

touch /etc/nologin //文件创建后所有用户都不能本地登录

允许普通用户登录:

rm -rf /etc/nologin

12.2 禁止普通用户以ssh登录

修改用户配置文件/etc/ssh/sshd_config

(1)只允许指定用户进行登录(白名单)

AllowUsers选项

(2)只拒绝指定用户进行登录(黑名单)

DenyUsers选项

13. 弱口令检测

使用john工具

①安装过程

cd

tar zxf john-1.8.0.tar.gz

cd john-1.8.0/src

make clean linux-x86-64 //32位 Intel平台

cp /etc/shadow /root/shadow.txt

cd /root/john-1.8.0/run/

./john /root/shadow.txt //执行暴力破解

Press 'q' or Ctrl-C to abort, almost any other key for status 123456 (root) //已破解用户root 密码为123456

②查看已破解的账户列表

./john --show /root/shadow.txt

③通过其他字典进行破解

:>john.pot //清空破解信息

./john --wordlist=./password.lst /root/shadow.txt //指定其他字典进行破解

14. sshd服务防止暴力破解

防止暴力破解的两种方法

方法一、配置安全的sshd服务

①密码足够的复杂,密码的长度要大于8位最好大于20位。密码的复杂度是密码要尽可能有数字、大小写字母和特殊符号混合组成 ②修改默认端口号 ③不允许root账号直接登陆,添加普通账号,授予root的权限 ④不允许密码登陆,只能通过认证的秘钥来登陆系统

方法二:通过防护软件来避免暴力破解

①fail2ban

fail2ban可以监视系统用户登录日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员。基于整个IP地址做拒绝。

ban (bæn)禁令 简单来说其功能就是防止暴力破解。工作的原理是通过分析一定时间内的相关服务日志,将满足动作的相关IP利用iptables加入到dorp列表一定时间。 注:重启iptables服务的话,所有DORP将重置。

相关主要文件说明:

/etc/fail2ban/action.d //动作文件夹,内含默认文件。iptables以及mail等动作配置

/etc/fail2ban/fail2ban.conf //定义了fai2ban日志级别、日志位置及sock文件位置

/etc/fail2ban/filter.d //条件文件夹,内含默认文件。过滤日志关键内容设置

/etc/fail2ban/jail.conf //主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值

②通过pam模块来防止暴力破解ssh

基于用户认证做限制,但IP、web服务等都可以访问

/etc/pam.d/sshd

# vim /etc/pam.d/sshd

在第一行下面添加一行:

auth    required    pam_tally2.so    deny=3    unlock_time=600 even_deny_root root_unlock_time=1200

说明:尝试登陆失败超过3次,普通用户600秒解锁,root用户1200秒解锁

查看work用户的错误登陆次数:
pam_tally2 --user work

清空 work 用户的错误登陆次数:
pam_tally2 --user work --reset 

③通过shell脚本来防止暴力破解ssh

通过自定义的shell脚本来防护安全

④denyhosts软件防护

DenyHosts是一个使用python编写的脚本文件,可以有效的阻止对SSH服务器的攻击。

DenyHosts的特性

对/var/log/secure日志文件进行分析,查找所有的登录尝试,并且过滤出失败和成功的尝试。 记录下所有失败的登录尝试的用户名和主机,如果超过阀值,则记录主机。 保持对每一个登录失败的用户(存在系统中或不存在系统中的用户)的跟踪 对每一个可疑的登录进行跟踪。(虽然登录成功,但是有很多次登录失败的记录) 将可疑地址的主机加入到/etc/hosts.deny文件中。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值