简介

最小(少)原则,是安全的重要原则。最小的权限,最小的用户,最少的服务,最少的进程,是最安全的。

系统安全包括:文件系统保护、用户管理安全、进程的保护以及日志的管理。

场景

  1. 确保服务最少,每个都是有用,而且权限最小化。
  2. 确保用户最少,每个都是有用,而且权限最小化。
  3. 确保文件权限最小。
  4. 及时更新补丁,解决漏洞。
  5. 规范好人为的因素。往往这个才是最大的隐患。

解决方案

最少服务

服务越少,漏洞越少,越不容易被攻击,越安全。服务器本身越封闭越安全。

最小安装。

绝不安装多余的软件,需要什么安装什么。在安装系统的时候就使用最小安装。不要图形界面,不要其他服务。

取消不必要的服务

即使做了最小安装,还是有很多可能用不到的服务,建议也是关闭,除非真的有用。

# 查看哪些服务在运行
/sbin/chkconfig --list |grep 3:on
# 没有使用的服务都可以考虑删除。
chkconfig ip6tables off # ipv6
chkconfig auditd off #用户空间监控程序
chkconfig autofs off #光盘软盘硬盘等自动加载服务
...

禁止外来ping操作

[root@tp /]# vi /etc/rc.d/rc.local
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

限制控制台的登录

特别是关机和重启的命令,太危险了。

rm -rf /etc/security/console.apps/
[root@tp /]# vi /etc/securetty
...
#我们注释掉
tty1
# tty2
# tty3
# tty4
# tty5
# tty6
#只留下tty1,这时,root仅可在tty1终端登录

删除历史记录

防止账号被攻破后丢失更多的信息。

[root@tp /]# vim ~/.bash_logout
# 在里面添加命令
rm -rf ~/.bash_history

最小用户

使用的用户权限越小越安全。特别是有些软件的漏洞可以直接获取账号执行权限。一旦使用root启动,就相当于服务器的root直接被破解。

!千万不要用root启动软件。

自动注销

当我们登录到Linux服务器上操作完以后,应该退出当前用户,否则可能会出现安全问题,特别是root用户,一旦被盗用很可能造成不可挽回的损失

[root@tp /]# vim /etc/profile
# 在里面添加
export TMOUT=300

设置口令复杂度

(授权完修改密码会有影响吗???这个需要测试)

定期修改密码

# 一个是在/etc/login.defs文件,里面几个选项
PASS_MAX_DAYS 90 #密码最长过期天数
PASS_MIN_DAYS 80 #密码最小过期天数
PASS_MIN_LEN 10 #密码最小长度
PASS_WARN_AGE 7 #密码过期警告天数

清理没有用的账号

在想是不是注释掉,还是直接删除

# 需要删除的用户包括:
userdel lp
userdel sync
userdel shutdown
userdel halt
userdel news
userdel operator
userdel games
userdel ftp
userdel rpc
userdel rpcuser
userdel gopher
userdel nscd
# 需要删除的组包括:
groupdel lp
groupdel news

使用sudo来使用root权限

[root@tp /]#  /etc/sudoers
# 在 root ALL=(ALL) ALL 下面添加一行
username ALL=(ALL) ALL
# 如果不想每次都输入密码可以用这一行
username ALL=(ALL) NOPASSWD:ALL
exit

最小文件权限

原则:原则上不给任何权限,只有需要的时候才添加权限。能不给写和执行的权限,坚决不能给!!拒绝777的行为。

赋权限的类型:

  1. 重要的系统目录不可以修改
  2. 产品代码只可以读,不可以执行,不可以修改
  3. 需要上传目录,否则特别需要文件读写的目录要单独规划好。
  4. 通过umask设置默认生成的文件和文件目录的最小权限。

更新补丁

建议做法:重装系统,update,然后测试业务是否正常。不建议写成定时去更新,容易引发软件的冲突,导致业务不可用。

如果是线上的业务,可以通过集群和配置管理的方式,把部分服务器更新。但是要做好计划,不能盲目更新。

人为的因素

人才是系统安全最大的隐患。

  1. 每个人一个账号。
  2. 每个角色一个组(比如:运维,开发)。这个需要进一步思考和细化。
  3. 不允许使用root,如果有需要使用sudo。(能不能粒度到组啊?)
  4. 把日常的运维操作,做成命令或者别名,减少人为操作。

验证方法

  1. 文件是否被人篡改过 。Tripwire
  2. 密码是否安全,是否容易被破解。John the Ripper。当然原则上通过防火墙来隔离更好,不允许其他网段ssh。
  3. 系统安全。Lynis是针对Unix/Linux的安全检查工具,可以发现潜在的安全威胁。这个工具覆盖可疑文件监测、漏洞、恶意程序扫描、配置错误等。
  4. 其他的场景,根据能不能操作来验证。

web安全——系统(Linux)的更多相关文章

  1. 嵌入式系统Linux内核开发工程师必须掌握的三十道题(转)

    嵌入式系统Linux内核开发工程师必须掌握的三十道题 如果你能正确回答以下问题并理解相关知识点原理,那么你就可以算得上是基本合格的Linux内核开发工程师,试试看! 1) Linux中主要有哪几种内核 ...

  2. 基于Web的系统测试方法

    基于Web的系统测试与传统的软件测试既有相同之处,也有不同的地方,对软件测试提出了新的挑战.基于Web的系统测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显示是否 ...

  3. OS.js – 开源的 Web OS 系统,赶快来体验

    OS.js 是一个开源的 Web OS 系统,可以在浏览器中运行,提供了窗口管理器,应用程序API,用户界面开发套件和抽象的文件系统等.可以部署在 Node 或者 PHP 环境中运行.OS.js is ...

  4. 【转发】构建高可伸缩性的WEB交互式系统(下)

    原文转自:http://kb.cnblogs.com/page/504518/ 本文是<构建高可伸缩性的WEB交互式系统>系列文章的第三篇,以网易的NEJ框架为例,对模块的可伸缩性进行分析 ...

  5. 【转发】构建高可伸缩性的WEB交互式系统(中)

    原文转自:http://kb.cnblogs.com/page/503953/ 在<构建高可伸缩性的WEB交互式系统>的第一篇,我们介绍了Web交互式系统中平台的可伸缩性.本文将描述模块的 ...

  6. 【转发】构建高可伸缩性的WEB交互式系统(上)

    原文转自:http://kb.cnblogs.com/page/503460/ 可伸缩性是一种对软件系统处理能力的设计指标,高可伸缩性代表一种弹性,在系统扩展过程中,能够保证旺盛的生命力,通过很少的改 ...

  7. Walle 瓦力 web部署系统

    Walle 一个web部署系统工具,可能也是个持续发布工具,配置简单.功能完善.界面流畅.开箱即用! 安装步骤: 1. git clone 首先配置成功(去百度找答案) 打开git bash命令窗口执 ...

  8. 谈Web应用系统的可维护性

           每一个软件开发人员都十分清楚, 当软件构建得越来越复杂时, 可维护性就成了一个很突出的问题. 如何在构造软件系统的过程中始终保持可控制的可维护性呢?          一. 整体组织   ...

  9. 关于web资金系统提现安全保护,防止极快的重复并发请求导致重复提现的解决思路

    关于WEB金融系统中的提现安全问题很多人没有深入思想,导致有漏洞,常常会遇到有些人遇到被攻击到导资金损失的麻烦,     其实要彻底解决重复并发请求 导致重复提现问题,是需要花点心思的,并没有看起来的 ...

随机推荐

  1. jQuery UI--jquery-autohide解读

    // jQuery Autohide v1.0.2 // (c) 2014 Alex Taujenis // MIT License (function($) { return $.fn.autohi ...

  2. EPLAN Electric P8 2.0即将到来,着实令人期待-转caodaping

    在今年的4月份,2.0版本的EPLAN Electric P8 首次揭开其神秘面纱,见诸于世.它的展露,再次印证了EPLAN 软件平台朝着"更实用"这一方向发展,同时也证明&quo ...

  3. C#的设计模式分为3大类23种

    创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method ...

  4. mongodb备份恢复

    注意:在备份文件存放目录的选择上有这样一个条件,文件存放目录不管有多深,都只能有它一个文件:(即除了备份文件之外只能存在文件夹,这个条件约束其整个目录树) 数据备份 : /mongodump --ho ...

  5. Winform快速开发组件的实现(一)

    好久好久没有露面了,呵呵,对于写文章都有点生疏了. 在拿到任何一个项目,不管是b/s的还是c/s,我不会立即开始写代码,我一般会为使这些项目能够快速开发制定一系列的支持组件,虽然可能前期会付出一些代价 ...

  6. [OpenCV] IplImage and Functions

    In this chapter, APIs will make U crazy. Good luck! Next, Review Linear Algebra.  Ref: http://blog.c ...

  7. Windows7下的Java运行环境搭建过程图解

    第一步:下载JDK 地址:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html,(由于Sun于20 ...

  8. 性能测试类,让你写法代码养成经常测试的好习惯 -ASP.NET C#

    介绍: 可以很方便的在代码里循环执行 需要测试的函数  自动统计出执行时间,支持多线程. 使用方法: PerformanceTest p = new PerformanceTest(); p.SetC ...

  9. 6/20 sprint3 看板和燃尽图的更新

  10. ASP.NET MVC5--添加验证

    1.在Model类里面添加验证,代码如下: public class Movie { public int ID { get; set; } [StringLength(,MinimumLength= ...