a. 最小密码长度不少于8个字符;
linux
vi /etc/login.defs
PASS_MIN_LEN 8
退出root用户重新登录(exit),密码设置生效。
密码策略必须同时满足大小写字母、数字、特殊字符。
linux
vi /etc/pam.d/system-auth
找到同时有 “password” 和 “pam_cracklib.so” 那行改为
password requisite pam_cracklib.so try_first_pass retry=3 type= ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
retry 允许重试3次
difok=N:新密码必需与旧密码不同的位数 difok=3 新密码必须与旧密码有3位不同
minlen 最小位数
ucredit 大写字母位数
lcredit 小写字母位数
dcredit=N: N >= 0:密码中最多有多少个数字;N < 0密码中最少有多少个数字.
dcredit=-1 密码中最少有1个数字
ocredit=N:特殊字符的个数 ocredit=-1 密码中至少有1个特殊字符
a.在用户登录系统时,应该有“For authorized users only”提示信息;
linux
vi /etc/issue
最后加上语句For authorized users only
b.一分钟内仅允许5次登录失败的尝试,超过5次,登录帐号锁定1分钟;
linux
vi /etc/pam.d/login
在第一行后添加(位置很关键)
auth required pam_tally2.so deny=6 unlock_time=60 even_deny_root root_unlock_time=60
deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户
unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;
even_deny_root 也限制root用户;
root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒;
手动解除锁定:
例如,查看work用户的错误登陆次数:
pam_tally2 –-user work --user也可写成-u
清空某一用户错误登陆次数:
pam_tally2 –-user –-reset
例如,清空 work 用户的错误登陆次数,
pam_tally2 –-user work –-reset
**c.**远程用户非活动会话连接超时应小于等于5分钟。
?????linux
vi /etc/ssh/sshd_config
找到,并修改值为
ClientAliveInterval 300
ClientAliveCountMax 0
前面的#去掉
重启sshd服务,使配置生效
Service sshd restart
禁用LOCAL INFILE命令防止非授权用户访问本地文件;
vi /etc/my.cnf
在[mysqld]模块中加入语句 local-infile=0
重启mysqld
进入mysql,输入
show variables like ‘local_infile’;
value的值为off
**SSH **禁止 root 用户远程登录
修改配置文件 vim /etc/ssh/sshd_config
打开文件第38行 修改以下内容
#PermitRootLogin yes
PermitRootLogin no
设置 root 用户的计划任务。每天早上 7:50 自动开启 SSH 服务,22:50 关闭;每周六的 7:30 重新启动 SSH 服务。
crontab -e
50 7 *** /sbin/service sshd start
50 22 *** /sbin/service sshd stop
修改 SSH 服务端口为 2222。
1、查看ssh配置文件
vim /etc/ssh/sshd_config
2、把Port #去了
VSFTPD 服务加固
设置数据连接的超时时间为 2 分钟、无任何操作的超时时间为5分钟。
1**、修改配置文件:/etc/vsftpd/vsftpd.conf**
2****、data_connection_timeout=120将在数据连接空闲2分钟后被中断。3、idle_seesion_timeout=300
设置站点本地用户访问的最大传输速率为1M。
1****、修改配置文件/etc/vsftpd/vsftpd.conf
2、在文件末尾添加:local_max_rate=1000000
禁止匿名用户登录。
1****、修改配置文件/etc/vsftpd/vsftpd.conf
2、anonymous_enable=NO
关闭ascii模式下载,防止被用于DoS攻击。
1****、修改配置文件/etc/vsftpd/vsftpd.conf
2****、ascii_download_enable=NO
设置mysql根用户
mysqladmin –u root password 123456
登录mysql
mysql –u root –p123456任务二 数据库加固(Data)
**以普通帐户MySql安全运行MySql,禁止MySql以管理员帐号权限运行; **
vi /etc/my.cnf
在[mysqld]模块加入语句user=mysql
**删除默认数据库(test); **
drop database test;
删除 数据库 数据库名称
**改变默认MySql管理员用户为:SuperRoot; **
update mysql.user set user=’SuperRoot’ where user=’root’
更新 mysql数据库的user表 设置user值为SuperRoot 当原先user值为root时
使用MySql内置MD5加密函数加密用户user1的密码为(P@ssw0rd1!);
先查看一下有没有user1用户
select user from mysql.user;
如果没有user1用户,则先新建一个user1用户
create user ‘user1’@’localhost’ identified by ‘123456’;
其中后面的@’localhost’ identified by ‘123456’可以不输入,表示建立一个空密码,不限制运行主机的帐号。
update mysql.user set password=md5(‘P@ssw0rd1!’) where user=’user1’
**赋予user1用户对数据库所有表只有select,insert,delete,update权限; **
select user,host ,select_priv,insert_priv,delete_priv,update_priv from mysql.user;
查看user1的权限
grant select,insert,delete,update on . to ‘user1’@’localhost’
grant :授权
on . :对所有的数据库下的所有表
to ‘user1’@’localhost’ :第4题新建用户时如果没有加localhost那么这里也不加,要对应起来,否则将会新建一条记录
show columns for mysql.user :显示表结构
对忘记mysql数据库SuperRoot管理员密码进行重置操作;
vi /etc/my.cnf
***[mysqld]***模块添加 skip-grant-tables
重启mysqld service mysqld restart
然后输入 mysql 就能直接以管理员的权限进入数据库
再用 update mysql.user set password=password(‘1234’) where user=’SuperRoot’
然后exit退出mysql,重新 vi /etc/my.cnf,把skip-grant-tables语句删除或者注释
重启mysqld服务
用超级用户进入mysql mysql –u SuperRoot –p1234出现welcome提示
8.为防止数据库操作信息泄露,请禁止使用MySql命令行历史记录;
rm –f $HOME/.mysql_history
删除用户目录下的.mysql_history(前面加点,表示是隐含文件,用ls-al能查看到)
$HOME表示用户目录,必须大写,
-f 表示不用确认直接删除
ln –s /dev/null $HOME/.mysql_history
in –s 表示建立一个超链接,让.mysql_history指向空设备
9.为了分析数据库运行过程中的一些异常活动,请开启MySql二进制日志。
vi /etc/my.cnf
在[mysqld]模块中加入语句 log-bin=mysql-bin
重启mysqld
我这里创建了一个学习交流群,欢迎大佬炸鱼,小白共同学习,纯交流群,
🐧🐧:603289145
版权归原作者 秃发的边缘 所有, 如有侵权,请联系我们删除。