0
点赞
收藏
分享

微信扫一扫

linux各种加固

一脸伟人痣 2022-04-13 阅读 84
linux

系统加固

修改用户密码生存期和复杂度

密码生存期默认配置在/etc/login.defs

[root]# vi /etc/login.defs

PASS_MAX_DAYS 90 # 新建用户密码最长使用天数

PASS_MIN_DAYS 0 # 新建用户密码最短使用天数

PASS_MIN_LEN 7 # 新建用户密码到期提示天数

PASS_WARN_AGE 10 # 最小密码长度

密码复杂度默认配置在/etc/pam.d/system-auth

[root]# vi /etc/pam.d/system-auth

#%PAM-1.0

password required pam_cra

cklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 dcredit=-1 minlen=10

其含义是至少包含一个数字、一个小写字母、一个大写字母、一个特殊字符、符且密码长度>=10

minlen:密码最小长度

ucredit:最小大写字母

lcredit:最小小写字母

dcredit:最少数字

retry:重试多少次返回错误

 

限制登录超时用户无操作就断开

[root]# vi /etc/profile

TMOUT=300

export TMOUT

无操作300秒自动退出

限制TTY尝试次数

默认配置文件在/etc/pam.d/login

[root]# vi /etc/pam.d/login

#%PAM-1.0

auth required pam_tally2.so deny=3 lock_time=300 even_deny_root root_unlock_time=10

输入三次错误后普通用户300秒解锁。root用户10秒解锁

限制Umask值

防止一句话木马使用

echo "umask 0777" >> /etc/bashrc

意思是创建的文件命令都没有读写权限

限制GCC编辑器

为了防止黑客使用纵向提权

首先检测有哪些文件

rpm -q --filesbypkg gcc | grep "bin"

最后都限制掉

chmod 000 /usr/bin/c89

锁定系统文件

[root@localhost sbin]# chattr +i /sbin/

[root@localhost sbin]# chattr +i /usr/sbin/

[root@localhost sbin]# chattr +i /bin/

[root@localhost sbin]# chattr +i /sbin/

[root@localhost sbin]# chattr +i /usr/lib

[root@localhost sbin]# chattr +i /usr/lib64

[root@localhost sbin]# chattr +i /usr/libexec

限制日志文件

为了防止黑客擦掉痕迹所以给它增加不可删除命令

cd /var/log/

chattr +a dmesg cron lastlog messages secure .... wtmp 

关掉Ctrl+Alt+Del重启系统

默认配置文件/etc/inittab

vi /etc/inittab

#ca::ctrlatdel:/sbin/shutdown -t3 -r now

注释掉

centos7会在/etc/inittab告诉你它你的文件位置进去后直接把所以内容注释或者删除

用户登录系统提示信息

配置文件/etc/issue

vi /etc/issue

新起一行“输入内容”

 使用命令 awk -F: '($2=="")' /etc/shadow 查看空口令账号。

使用命令 awk -F: '($3==0)' /etc/passwd 查看UID为零的账号

FTP加固

vsftpd有三个配置文件

/etc/vsftpd.conf 主

/etc/vsftpd.ftpusers

/etc/vsftpd.userlist

vsfptd默认主配置文件

允许匿名登录 

anonymous_enable=YES

允许本地用户登录 

local_enable=YES

开发本地写权限

write_enable=YES

设置本地用户文件生成掩码为022,默认值为077

local_umask=022

激活上传和下载日志 

xferlog_enable=YES 

dirmessage_enable=YES 

使用标准的ftpd xferlog日志格式

xferlog_stg_format=YES

允许匿名用户上传

anon_upload_enable=YES

anon_mkdir_write_enable=YES

开启匿名用户对上传目录有写权限

write_enable=YES

添加

anon_world_readable_only=NO(开启匿名用户浏览权限)

启用ASCII传输方式

去掉#号启用

#ascii_upload_enable=YES

#ascii_download_enable=YES

设置连接服务器后欢迎信息

ftpd_banner="欢迎信息"

设置空闲的用户会话的中断时间

idle_session_timeout=600

会话空闲后10分钟被中断

设置空闲的数据连接时间的中断时间

data_connection_timeout=120

数据连接空闲2分钟后被中断

设置客户端空闲时的自动中断和激活连接的时间 

例如下面的配置:

accept_timeout=60 

connect_timeout=60

将使客户端空闲1分钟后自动中断连接,并在中断1分钟后自动激活连接

设置最大传输速率限制

local_max_rate=50000

anon_max_rate=30000

本地用户最大传输速率为50kbytes.匿名用户为30kbytes

设置连接端口范围

pasv_min_port=50000

pasv_max_port=60000

端口范围5000-6000之间

设置对所有用户活动范围在自家目录

chroot_local_user=YES

如果是指定用户则需要以下命令

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file= /etc/vsftpd.chroot_list

(/etc/vsftpd.chroot_list文件中指定的用户才被限制.格式是每个用户名占一行。)

限制指定的本地用户不能访问

userlist_enable=YES

userlist_deny=YES

usrelist_file= /etc/vsftpd.user_list

(/etc/vsftpd.usre_list文件中指定的用户被限制,格式和/etc/vsftpd.chroot_list一样)

如果想让/etc/vsftpd.usre_list中用户不被限制反而是不在里面的用户被限制我们可以将usrelist_deny=YES 改为NO

指定连接失败时显示的信息 

在配置文件/etc/xinetd.d/vsftpd的 {}中添加如下的配置语句:

banner_fail =文件名

例如:banner_fail = /etc/vsftpd.busy_banner 表示当连接失败时显示文件/etc/vsftpd.busy_banner中的内容。 

可以用下面的命令生成文件/etc/vsftpd.busy_banner:

echo "421 Server busy, please try later."> /etc/vsftpd.busy_banner

SQL加固

基础

删除某个数据库

drop database + 数据库名字

删除用户

drop user '用户名'@'localhost';(有些不是localhost注意看)

新建用户

create user '用户名'@'localhost' identified by '密码';

刷新权限

flush privileges;

查看表中记录

select * from + 表名

例题

对忘记mysql数据库root管理员密码重置操作

在配置文件/etc/my.cnf

添加

skip-grant-tables(跳过权限检查启动)

然后重启数据库

service mysqld restart

最后进入改密码

update user set authentication_string=password("新密码") where user="root";

赋予user1用户对数据库所以表只有select ,insert,delete,update权限并且查看

grant select,insert,delete,update on 数据库名.* to user1@'localhost';

查看命令

grants for 'user1'@'localhost';

禁用LOCAL INFILE命令防止非授权用户访问本地文件

vi /etc/my.cnf

添加

set-variable=local-infile=0

防止数据库操作信息泄露禁用使用历史记录

rm -f $HOME /.mysql_history

ln -s /dev/null $HOME /.mysql_history

为分析数据异常活动,开启MySQL二进制日志并且查看

vi /etc/my.cnf

添加

log-bin=mysql-bin

然后重启数据库

查看是否开启

show variables like 'log_bin';

使用MySQL内置MD5加密函数加密user1密码(P@ssw0rd1!)并且查看

vi /etc/my.cnf

添加

skip-grant-tables

重启后

update user set password=md5(P@ssw0rd1!) where user="user1";

查看

select password from user where user='user1';

禁止MySQL以管理员账号权限运行

vi /etc/my.cnf

user=mysql

改变默认MySQL管理员用户为:SuperRoot

update user set user="SuperRoot" where user="root";

限制一般用户浏览其他用户数据库,对MySQL启动加固

vi /etc/my.cnf

添加

skip-show-database

创建一个新的mysql数据库用户(grant语句)

grant all on *.* to '用户名'@’localhost‘ identified by '密码';

禁止数据库用户 root 从任意地点登录

delete from user where host=’%’ and user=’root’; 

或 drop user 'root'@'%';

SSH加固

ip限制

[root@localhost ~]# vim /etc/hosts.allow

...

sshd:192.168.2.130:allow       //添加只允许连接的IP地址

sshd:192.168.3.0/24:allow      //允许3.0/24这个网段内的IP连接

不允许root直接登录ssh

vi /etc/ssh/sshd_config

#PermitRootLogin yes

去掉#号yes改为no

禁止空密码登录

vi /etc/ssh/sshd_config

#PermitEmptyPasswords yes

去掉#号yes改为no

限制ssh登录

配置文件/etc/pam.d/sshd

auth required pam_tally2.so deny=3 unlock_time=150 eve

举报

相关推荐

0 条评论