等保加固

[TOC]

服务器加固

账号密码加固

创建sudo账号

将账号添加入wheel 用户组

useradd sudouser -G wheel; (创建用户添加到 wheel用户组)

passwd sudouser (修改用户密码)

修改账户有效期 失效期 警告期

对此后新建账号生效

编辑log.defs文件

修改pass_MAX_DAYS   90 密码更换时间

对此前创建账号修改

chage -M 90 username

创建开发运维账户

useradd devoper ;
	passwd  devoper ;

​ 对账号赋予权限

chown -R devoper /export

设置口令复杂度 和口令长度

1) vi /etc/pam.d/system-auth

2) password 块 在pam_cracklib.so或pam_pwquality.so所在行末尾追加如下内容:
minlen=8 minclass=3 remember=5   dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 enforce_for_root

​ retry=5 定义登录、或修改密码失败后,可以重复的次数
​ type= 选项,定义用户修改密码时的提示内容,一般不管
​ dcredit=-1 至少一个数字
​ lcredit=-1 至少一个小写
​ ucredit=-1 至少一个大写
​ ocredit=-1 至少一个特殊字符
​ minlen=8 密码最短长度为8位
​ remember=5 不能重复使用前5次使用过的密码
​ enforce_for_root root修改密码也要遵守规则

设置登录次数限制(输错密码锁定账号)

1)vi /etc/pam.d/system-auth
2)在首行添加如下内容:
	auth        required      pam_tally2.so deny=3 even_deny_root unlock_time=300
3)保存并退出

4)vi /etc/pam.d/password-auth
5)在首行添加如下内容:
	auth        required      pam_tally2.so deny=3 even_deny_root unlock_time=300
6)保存并退出

字段说明
even_deny_root 也限制root用户;
deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户
unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒;

设置账号超时退出

cp  /etc/profile /etc/profile.bak202210;
vi /etc/profile

末尾添加  TMOUT=1800  单位为秒
source /etc/profile  当即生效

禁用root账号远程登录


vi /etc/ssh/sshd_config
修改 或直接添加
PermitRootLogin no 禁止root登录
重启 sshd服务
systemctl  restart  sshd
systemctl  status  sshd

数据库加固

mysql开启 bin_log

开启log_bin

log_bin=ON
#打开binlog日志

log_bin_basename=/var/lib/mysql/mysql-bin
#binlog日志的基本文件名,后面会追加标识来表示每一个文件

log_bin_index=/var/lib/mysql/mysql-bin.index
#binlog文件的索引文件,这个文件管理了所有的binlog文件的目录

或者另一种配置

log-bin=/var/lib/mysql/mysql-bin
mysql会根据这个配置自动设置log_bin为on状态,自动设置log_bin_index文件为你指定的文件名后跟.index

影响:

这些配置完毕之后对于5.7以下版本应该是可以了,但是我们这个时候用的如果是5.7及以上版本的话,重启mysql服务会报错。这个时候我们必须还要指定一个参数:server-id=123454
随机指定一个不能和其他集群中机器重名的字符串,如果只有一台机器,那就可以随便指定了有了上述的配置之后,重新启动mysql
systemctl restart mysqld

查询

show global variables like '%log_bin%';

开启自动备份

使用 crond crontab crontab

编写备份脚本: backup.sh

#!/bin/bash

mysqldump  --no-defaults -uroot -ppwd -h IP fsp_huaihua_db |gzip  >/work/backup/fsp_huaihua_db$(date +%Y%m%d_%H%M%S).sql.gz

添加权限chmod u+x backup.sh

执行测试 ./backup.sh

系统添加定时

crontab -e
添加 定时配置
00 23 * * * /etc/backup.sh
查看任务配置
crontab -l
重启crontab服务
service crond restart  或者  systemctl restart crond

elk日志系统

一、ELK原理与介绍

1、ELK简介

集中式日志系统,将所有节点上的日志统一收集,管理,访问

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。

1.1、Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
1.2、Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
1.3、Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

elk 或 efk 或 rsyslog elsearch kibana 或者 添加 消息队列 redis

官网下载

环境安装

EL 安装依赖java

版本矩阵

rpm -ivh jdk-8u271-linux-x64.rpm

验证

java -version

elsearch 安装

elsearch 官网手册

下载:

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.1.rpm

安装

rpm -ivh elasticsearch-6.0.1.rpm

开机启动

systemctl daemon-reload
systemctl enable elasticsearch.service

服务启停

systemctl start elasticsearch
systemctl stop elasticsearch

配置

地址 : /etc/elasticsearch/elasticsearch.yml

添加配置
network.host: 0.0.0.0
http.port: 9200

注意:

卸载elsearch后
rpm -qa | grep search  查询安装信息
rpm -e  elasticsearch-6.0.1-1.noarch  根据查询结果卸载
卸载后 需要删除 /var/lib/elasticsearch 下的 nodes 否则重新安装启动报错

kibana 安装

kibana 官网手册

下载

https://artifacts.elastic.co/downloads/kibana/kibana-6.0.1-x86_64.rpm

安装

rpm -ivh kibana-6.0.1-x86_64.rpm

添加开机启动

systemctl daemon-reload
systemctl enable kibana.service

停止启动

systemctl start kibana
systemctl stop kibana

配置文件

/etc/kibana/kibana.yml
添加:
server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200"  对应elsearch 的端口

访问

默认端口5601    http://IP:5601

logstash安装

官网手册

下载

https://artifacts.elastic.co/downloads/logstash/logstash-6.0.1.rpm

安装

rpm -ivh logstash-6.0.1.rpm

停止启动

systemctl start logstash
systemctl stop  logstash

配置文件

文件位置
/etc/logstash/logstash.yml
自定义配置文件地址
/etc/logstash/conf.d

配置示例

input {
	file {
		type => "nginx"
        path => "/export/nginx/logs/access.log/"
        start_position => "beginning"
    }
}
output {
	if [type] == "nginx" {
		elasticsearch {
			hosts => ["127.0.0.1:9200"]
			index => "nginx"
		}

	}
}

elk 使用

常用语句

GET _cat/indices

GET /testindex/_search


GET /secure355-2022.10.20/_search

GET _search
{
  "query":{
    "term":{
      "_index":"testindex"
    }
  }
}



POST /testindex/_delete_by_query?pretty
{
  "query":{
    "term":{
      "_index":"nginxacc"
    }
  }
}

POST /testindex/_delete_by_query?wait_for_completion=false
{
  "query":{
    "match_all":{
    }
  }
}

DELETE testindex

参考

rsyslog介绍 logrorate

mysql 备份多种方式

mysql 日志管理

mysqldump 命令

linnux 定时器 crontab 命令

centos7 防火墙命令

rpm 介绍 常用rpm

ELK安装日记