首页 > Open Source > Linux主机安全

Linux主机安全

2011年5月12日 发表评论 阅读评论

Linux主机安全

如果服务器都在防火墙的保护下,主机这个层面的安全可以做的不那么苛刻。但是本着一切靠自己的原则,在主机这个层面把安全方面的工作先做充分了,反正这也是有百利而无一害的。

基本原则

  1. 及时更新服务软件包,以防止最新威胁
  2. 尽可能使用安全的协议
  3. 严格监控所有的服务器以便及时发现问题
  4. 关注最新安全信息

帐号安全

  • 每个需要登录的用户一个独立的普通帐号;每个服务使用单独的帐号(没有设置密码、没有合法的shell,不能登录)
  • 如果实在需要ftp服务,ftp的用户使用虚拟帐号
  • 禁止除了root、系统维护人员帐号之外其他所有系统帐号使用shell的权限
  • 锁定临时不用的帐号
  • 系统管理员离职要及时修改超级密码
  • 普通用户离职要及时删除其帐号

口令安全

因为我们都是public_key认证,所以这块儿基本上就是超级用户的口令安全。

  1. 定时重新生成超级用户口令(用密码生成器生成,综合数字、大小写字母以及特殊字符的组合,10字符以上)
  2. 定时重新生成普通用户密钥对

系统参数、属性安全设置

1,TMOUT:设置这个环境变量以防用户忘记退出登录,例如:

export TMOUT=3600

当需要保持session的时候,请用命令screen新建一个screen来实现。

2,更改shell的历史的格式
修改文件/etc/profile,设置HISTTIMEFORMAT为'<%F %T>’

远程登录安全

禁止root直接登录

修改文件/etc/ssh/sshd_config,设置:PermitRootLogin: no

sshd绑定私网网卡

修改文件/etc/ssh/sshd_config,设置:ListenAddress为私网网卡地址

public_key认证用户

不用任何修改,缺省就是支持的。

启动服务安全

在缺省启动里去除不需要的服务

Linux(不管是哪个发行版)启动都会缺省起好些服务,其中有很大一部分都不是 必须要起的,这样既浪费资源,又影响安全(尤其是开tcp端口的服务),于是不管怎样,都要把不需要的服务从缺省启动里干掉。方法主要是:使用 ntsysv命令,把不是必须要起的服务都取消勾选,然后再重启机器(如果允许的话,否则用命令service xxx stop一个一个的停服务)

启动服务最小化

  • 尽量禁止ftp服务,取而代之的是sftp或winscp,或者rz和sz这样利用xmodem的程序
  • mysql如果仅本机用,推荐skip-networking,用unix socks来连(这样性能还更好),否则,也只能听在私网网卡上,绝对不要开在公网上
  • 使用开源的代码的web服务,尽量不要在公网上提供服务(比如phpmyadmin,比如本站用的dokiwiki)
  • 只有对最终用户服务的应用,才能开服务端口于公网上。最理想的情况是在公网网卡上最多只开一个tcp80端口(管理口、数据口都是开在私网上的)

web应用安全

mod_security

基于国外基本上所有的虚拟主机提供商都会启用一种第三方的apache模块儿:mod_security,而且国内业界对其也很推崇,有人说,国内大 多的web防火墙都是基于这个(mod_security)改的。既然评价这么高,我曾想过在公司的web server上推这个东东的,但是结果是:缺省的策略非常不好用,很多开源的应用基本上都跑不了,所以……,还需要好好研究下mod_security, 定制一套适合我们的策略之后,才能在我们的web server上推广使用。

php的安全模式

相对mod_security的缺省设置的不好用,php的安全模式应该还是温和很多的,在忠波同学的强力推荐下,我觉得这个东西还是值得一推的。关 键是要在开发阶段就在开发服务器上把这个(php的安全模式)打开,最后才能在上线的时候在线上服务器上打开(php的安全模式)

日志安全

本地保留日志,同时日志还同步汇总到日志服务器。

kernel及tcp/ip安全

net.ipv4.ip_forward = 0    /* 可忽略,因为缺省就是0 */
net.ipv4.tcp_syncookies = 1    /* 防syn flood攻击 */
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.vs.timeout_timewait = 60

这部分内容可以直接写入/etc/sysctl.conf文件中。

系统自我检测

  • 每台机器安装tripwire来保持系统完整性
  • 每台机器定时使用tiger之类的本地检测工具自检

iptable策略

  • 接受从lo界面上进来的数据包
  • 接受从私网网卡(一般是eth1)上进来且源地址是私网地址的数据包(这里可以配置的更严厉一些)
  • 接受从公网网卡(一般是eth0)上进来且源地址不是私网地址且目标端口是22、80等端口的数据包
  • 接受状态是关联的或已建立连接的数据包
  • 其他包都drop掉

网络安全

刨除系统层面的安全,网络安全也是非常重要的。

内外网分离

只有内外网彻底分离了,才能保证内网上流动的敏感信息的安全。

入侵监测系统(ids)的搭建

机房网络上会部署入侵检测系统(ids),用来检测网络安全问题。

分类: Open Source 标签: ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.