简介

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

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

场景

  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. HTML5 Canvas实战之刮奖效果

    近年来由于移动设备对HTML5的较好支持,经常有活动用刮奖的效果,最近也在看H5方面的内容,就自己实现了一个,现分享出来跟大家交流. 1.效果 2.原理 原理很简单,就是在刮奖区添加两个canvas, ...

  2. HTML5新特性之WebRTC

    1.概述 WebRTC是“网络实时通信”(Web Real Time Communication)的缩写,它主要用来让浏览器实时获取和交换视频.音频和数据. WebRTC共分三个API. MediaS ...

  3. Swift 程序流程控制

    Swift采用类同c语言的流程控制语句,if, for, for-in,  while,  do-while , switch, break, continue .Swift语言的Switch语句自动 ...

  4. 查看kernel log命令

    adb shell "cat /dev/kmsg | grep -Ei "gesture""

  5. 锁屏上显示Activity

    在Android中,有些比较强的提醒,需要用户紧急处理的内容.需要唤醒屏幕,甚至在锁定屏幕的情况下,也要显示出来.例如,来电界面和闹钟提醒界面.这是怎样实现的呢? 其实,实现起来非常简单.只要给Act ...

  6. python watchdog

    监视文件变更 #!/usr/bin/python # -*- coding:UTF-8 -*- import time from watchdog.observers import Observer ...

  7. 在没安装OFFICE的服务器SSIS中进行EXCEL的ETL操作!

    由于OFFICE 2010的安装包比较庞大,如果仅仅为了在服务器中实现操作EXCEL,完全没有必要安装整个OFFICE,是否可以不装OFFICE也实现与OFFICE文件的互相操作呢?答案是肯定的,在S ...

  8. php的单例模式

    据说,单例模式是设计模式中最简单的一种. 不多说,先上代码,然后解说,一共两个文件: danli.class <?php class Danli { //保存类的实例的静态成员变量 static ...

  9. Chart 点击获取坐标

    private void chart2_MouseMove(object sender, MouseEventArgs e) { if (!this.DesignMode) { ].AxisX.Sca ...

  10. 转:C#中String类的几个方法(IndexOf、LastIndexOf、Substring)

    String.IndexOf String.IndexOf 方法 (Char, Int32, Int32)报告指定字符在此实例中的第一个匹配项的索引.搜索从指定字符位置开始,并检查指定数量的字符位置. ...