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

2data_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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐