加固Linux系统的三种方法总结
时间:2019-03-31
本文章向大家介绍加固Linux系统的三种方法总结,主要包括加固Linux系统的三种方法总结使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
加固Linux系统的三种方法总结
Linux命令行历史加固
通过配置系统环境变量实现记录用户在命令行执行的命令。
vim /etc/profile.d/system_monitor.sh # 添加下面代码 export TMOUT=600 readonly TMOUT #history USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'` HISTDIR=/usr/share/.history if [ -z $USER_IP ]; then USER_IP=`hostname` fi if [ ! -d $HISTDIR ]; then mkdir -p $HISTDIR chmod 777 $HISTDIR fi if [ ! -d $HISTDIR/${LOGNAME} ]; then mkdir -p $HISTDIR/${LOGNAME} chmod 300 $HISTDIR/${LOGNAME} fi export HISTSIZE=4000 DT=`date +%Y%m%d_%H%M%S` export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT" export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]" chmod 600 $HISTFILE/${LOGNAME}/*.history* 2>/dev/null
重新加载环境变量
source /etc/profile.d/system_monitor.sh
效果:每个帐号每次的登录IP以及运行命令都会记录在该目录如下:
[root@localhost ~]# ll /usr/share/.history/root/ total 8 -rw-------. 1 root root 236 Apr 23 21:49 1.180.212.137.history.20170423_214918 -rw-------. 1 root root 564 Apr 23 21:54 1.180.212.137.history.20170423_214957
crond调用黑白名单
Cron有它自己内建的特性,这特性允许定义哪些人能哪些人不能跑任务。 这是通过两个文件/etc/cron.allow 和 /etc/cron.deny控制的。要锁定在用Cron的用户时可以简单的将其名字写到corn.deny里,而要允许用户跑cron时将其名字加到cron.allow即可。如果你要禁止所有用户,仅允许root用户。如下:
# echo 'root' >> /etc/cron.allow # echo 'ALL' >> /etc/cron.deny
ssh服务禁止root登录
1、不要使用默认端口,修改方式;
Port 3714
2、不要使用第一版协议;
Protocol 2
3、限制可登录的用户;
AllowUsers user1 user2 #仅允许user1和user2用户登录
4、设定空闲会话超时时长;
5、利用防火墙设置ssh的远程访问策略;仅允许来自于指定网络中的主机访问;
6、仅监听于指定的IP地址;
ListenAddress
7、基于口令认证时,要使用强密码策略;
# 使用mkpasswd命令生成密码; mkpasswd -l 15 -s 3 -d 3 -C 3
8、最后使用基于密钥进行认证
9、禁止使用空密码,默认启用;
PermitEmptyPasswords no:是否允许空密码登录;
10、禁止管理员直接登录;
PermitRootLogin yes # 是否允许管理员直接登录;安全起见,建议为no;
11、限制ssh访问频度和并发在线;
12、做好日志分析;
- 关于Membership/Role您可能不知道的细节
- Sqlite向MySql导入数据
- 未来3年,人工智能如何影响法律行业?5位权威专家给出趋势
- Java 常见内存溢出异常与代码实现
- nginx限制上传大小和超时时间设置说明/php限制上传大小
- Unity Application Block 1.2 学习笔记
- 苹果首个自动驾驶专利到底有什么来头?
- 围棋遇上互联网:科技打开优秀传统文化未来之门
- 神经网络开始放飞自我!都是因为架构搜索新算法
- 浏览器缓存问题的解决
- nginx下目录浏览及其验证功能、版本隐藏等配置记录
- Sqlite的多表连接更新
- Enterprise Library 4.1学习笔记6----加密应用程序块
- 浅谈数据库主键策略
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 放弃手中Docker拥抱下一代容器管理工具Podman
- 个人博客搭建
- leetcode哈希表之两数之和
- Spring boot 的彩色日志
- 一位Android程序员入坑Flutter后整理出一份超详细的学习笔记
- Python批量获取并保存手机号归属地和运营商的示例
- Qt音视频开发31-Onvif抓拍图片
- 突击并发编程JUC系列-ReentrantLock
- 【腾讯云】记一次搭建云服务器
- 前端:如何让background背景图片进行CSS自适应
- 为什么Rust的println!不会发生所有权转移?
- 【译文】Rust futures: async fn中的thread::sleep和阻塞调用
- Smart Pointer Programming Techniques
- 一文搞懂AQS及其组件的核心原理
- 比较JavaScript中的数据结构(数组与对象)