一、身份鉴别(安全通用要求)
a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。
/etc/login.defs

登陆密码有效期为99999天
登陆密码最短修改时间,增加可防止非法用户短期内多次修改登陆密码
登陆密码最小长度为5位
登陆密码过期前7天提示修改
结果记录:
(0.5)
服务器采用账户+口令方式进行身份鉴别,身份标识具有唯一性,没有启用口令复杂度策略,没有设置口令长度,没有设置定期更换口令周期。
问题描述:
服务器没有启用没有启用口令复杂度策略,没有设置口令长度,没有设置定期更换口令周期,外部攻击者可利用口令暴力破解、口令猜解等手段获取弱口令账户的鉴别信息,从而获取服务器的管理权限进行恶意操作。
整改建议:
建议服务器设置口令复杂度,口令必须包含大小写字母、数字、特殊字符,设置口令最小长度为8位,设置定期更换口令周期为90天。
b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施。
测评方法:
(1)、核查文件中SSH远程登陆失败处理功能(/etc/pam.d/sshd #ssh远程登录处理)
(2)、核查/etc/profile文件中TLMEOUT环境变量是否配置了超时锁定参数(/etc/profile)
/etc/pam.d/sshd #ssh远程登录处理

服务器已设置登录失败3次后锁定账户150s,已配置并开启空闲会话超时600s自动退出功能。
结果记录

c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听。
服务器远程管理:SSH协议、Telnet协议
Telnet协议是不安全的,因为其在传输过程中账户与密码均为明文。
SSH协议的原理与Telnet协议原理相似,且具有更高的安全性。
SSH是一个运行与传输控制层的应用程序。与Telnet协议相比,SSH协议提供了强大的认证和加密功能,可以保证远程连接过程中传输的数据是经过加密处理的(保证了账户与密码的安全)。
测评方法:
(1)查看是否运行了sshd服务(/etc/pam.d/sshd #ssh远程登录处理)

符合:(1)
该服务器采用SSH协议进行远程管理,防止鉴别信息在网络传输过程中被监听。
二、访问控制
a)应对登录的用户分配账户和权限。
/etc/sudoers #了解那些用户拥有root权限"

测评结果记录
服务器已为登录账户root分配超级管理员权限,但没有限制登录账户的root的管理权限。
b)应重命名或删除默认账户,修改默认账户的默认口令。

测评方法:
1、查看文件中的用户,是否存在adm、lp、sync、shutdown、halt、mail、uucp、operator、games、gopher ftp等默认的、无用的用户(查看命令:/etc/shadow)
2、查看root账户是否能够进行远程登陆
/etc/ssh/sshd_config #禁止root远程登录 应配置PermitRootLogin no

测评结果记录
c)应及时删除或停用多余的、过期的账户,避免共享账户的存在。
服务器不存在多余、过期的账户,无多人共用同一个管理账户情况。
d)应授予管理用户所需的最小权限,实现管理用户的权限分离。
三权分立:安全管理员、系统管理员、审计管理员
/etc/sudoers #了解那些用户拥有root权限"

三、安全审计
a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计。
Linux系统审计功能有两个,一个是audit,另一个是syslog,audit 主要用来记录安全信息,用于对系统安全事件的追溯;而 syslog 日志系统用来记录系统中的各种信息,如硬件警报和软件日志等。但是 syslog 属于应用层,没办法记录太多信息。audit 来记录内核信息,包括文件的读写,权限的改变等。
两个功能都是相互独立的,谁都不影响谁,我们测评时主要看audit功能,我们可以使用命令:service auditd status,来启动audit功能,命令:auditctl -s,来查看auditd内核模块的状态,其中enabled参数为1代表开启,为0代表关闭,如下图所示:


b)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。
开启autid服务后,所有的审计日志会记录在/var/log/audit/audit.log文件中,该文件记录格式是每行以type开头,后边有事件发生的日期和时间,以及事件ID、同一种事件ID一致,用户等各种信息,如下图所示:

以上图表示符合要求的
c)应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等。
询问管理员是否定期备份,备份策略是啥
1、head -20 /var/log/audit/audit.log #audit的前20条日志
2、tail -n 10 /var/log/audit/audit.log #audit的后10条日志(查看日志的记录是否满6个月)
四、入侵防范(安全通用要求)
a)应遵循最小安装的原则,仅安装需要的组件和应用程序。
yum list installed #查看已安装的组件
b)应关闭不需要的系统服务、默认共享和高危端口。
Linux不存在默认共享
系统服务:查看telnet是否开启(不能开启)
service telnet status #查看telnet服务
高危端口:查看是否有高危端口(netstat -ntlp#查看端口号")

上图没有高危端口
c)应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制。
使用管理员权限的身份登录Linux,查看/etc/hosts.deny与/etc/hosts.allow中,是否有对IP或网段进行限制
d)应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求。
服务器未有能自主设置输入内容格式的通信接口,故此项不适用。
e)应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞。
五、可信验证(安全通用要求)
a)可基于可信根对计算设备的系统引导程序、系统程序、重要配置参数和应用程序等进行可信验证,并在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心。
这个是现阶段没有办法做到的,所有都是不符合
在金融界才有可能做到
五、数据完整性(安全通用要求)
a)应采用校验技术保证重要数据在传输过程中的完整性。
查看是否开启ssh服务(ps -e | grep ssh)

符合:
xxx采用SSH协议进行远程管理,保证重要数据在传输过程中的完整性。
六、数据备份恢复(安全通用要求)
a)应提供重要数据的本地数据备份与恢复功能。
b)应提供异地数据备份功能,利用通信网络将重要数据定时批量传送至备用场地。
七、剩余信息保护(安全通用要求)
a)应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除。
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除
require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame
我有一个使用PDFKit呈现网页的pdf版本的Rails应用程序。我使用Thin作为开发服务器。问题是当我处于开发模式时。当我使用“bundleexecrailss”启动我的服务器并尝试呈现任何PDF时,整个过程会陷入僵局,因为当您呈现PDF时,会向服务器请求一些额外的资源,如图像和css,看起来只有一个线程.如何配置Rails开发服务器以运行多个工作线程?非常感谢。 最佳答案 我找到的最简单的解决方案是unicorn.geminstallunicorn创建一个unicorn.conf:worker_processes3然后使用它:
关于如何使用git设置类似Dropbox的服务,您有什么建议吗?您认为git是解决此问题的合适工具吗?我在考虑使用git+rush解决方案,你觉得怎么样? 最佳答案 检查这个开源项目:https://github.com/hbons/SparkleShare来自项目的自述文件:Howdoesitwork?SparkleSharecreatesaspecialfolderonyourcomputer.Youcanaddremotelyhostedfolders(or"projects")tothisfolder.Theseprojec
我将以下代码放在一起用于一个简单的RubyTFTP服务器。它工作正常,因为它监听端口69并且我的TFTP客户端连接到它,我能够将数据包写入test.txt,但我不只是写入数据包,我希望能够从我的客户端通过TFTP传输文件到/temp目录。预先感谢您的帮助!require'socket.so'classTFTPServerdefinitialize(port)@port=portenddefstart@socket=UDPSocket.new@socket.bind('',@port)whiletruepacket=@socket.recvfrom(1024)putspacketFile