1. 首页>
  2. 腾讯云代理

[经验分享] 腾讯云主机安全攻略3

腾讯云 2017年04月23日 浏览699

腾讯云代理 腾讯云直播申请 游戏上云

摘要:

SUSE Linux系统安全配置十条             




1. 补丁、SSH及其它
1.1 补丁
   说明: 每个补丁的更新都意味着这是一个安全漏洞,或是有其他严重的功能问题,但如果更新补丁则又可能导致系统的一些异常,甚至引起一些服务的瘫痪。所以对于补丁的更新要慎重处理。从实际的角度来说,有4种做法:
       1)是在刚装完系统之后立刻更新补丁,然后再上应用。
       2)是通过外围防护手段来保护服务器,可以用防火墙、IPS之类的手段。
       3)是在测试机上更新补丁。不过值得注意的是,有些补丁带来的问题是隐性的,可
       能今天明天没问题,但后天出了问题,所以,观察的时间需要久一些。
4) 如果你的SUSE服务器比较多,也可以通过NFS共享或者内部的FTP、HTTP服务 来完成。但FTP、HTTP又会带来另外的安全风险。SUSE的补丁升级,需要去下载Novell的新RPM。RPM包的安装会有先有后,不过多数情况下,RPM会根据其依赖关系来处理。另外,Novell也有一些在特殊情况下的提示,比如内核更新、C运行库等。Novell公司提供了一个强大的工具YaST,不过遗憾的是,YaST自身也不安全,有在线升级不安全临时文件建立漏洞。
      加固方法:输入yast,在software中选择online update。
1.2 SSH
    SUSE上默认安装了OpenSSH,OpenSSH是目前比较流行并且免费的加密连接工具,但OpenSSH的低版本也存在不少安全漏洞,所以最好还是去http://www.openssh.org下载最新版本的。在升级到最新版本之后,SSH仍有很多需要安全加固工作要做。比如限制那些账户的登录、更改默认端口、指定可访问的网络等等,限于篇幅本文对此不做更详细的介绍。但至少有一点,是你必须要做的:将协议版本修改为2。因为版本1的安全问题实在太严重了,甚至可以截获密码。
       加固方法:vi /etc/ssh/ssh_config 修改protocol的值为2。
    更改SSH端口,最好改为10000以上,别人扫描到端口的机率也会下降
vi /etc/ssh/sshd_config
将PORT改为1000以上端口
同时,创建一个普通登录用户,并取消直接root登录
useradd  ‘username’
passwd ‘username’

在最后添加如下一句:
7PermitRootLogin no         #取消root直接远程登录
1.3 系统性能审计
    对于运维人员来说,需要经常监控系统的性能情况,SUSE提供的sysstat就是一个检测系统状态的工具,比如比如CPU利用率、磁盘I/O等。sysstat默认每10分钟收集一次系统数据,可以用sar命令查看。sysstat首先会建立一个正常的性能曲线,当这个基线建立完毕以后,任何超出基线的活动都会给出提示。例如密码猜测、或者在业务高峰期以外的事件会导致CPU利用率过高,从而偏离正常的基线。注意sysstat收集的数据默认是在系统上存放一周,一周之后会被cron任务自动移除,可在/var/log/sa/目录下来维护收集的数据。但是默认安装的服务器版本是不包括sysstat包的,除非安装的时候选择了完全安装。
       加固方法:安装sysstat,并使用sar命令。
1.4 防火墙
   SuSEfirewall2是SUSE下面的包过滤防火墙,可以允许、拒绝数据的进出。默认是安装并且激活的,而且默认不允许任何服务,要开放服务就必须明确的启用(比如上面提到的SSH)。
   加固方法:在YAST里,Center--#Securityand Users--#Firewall进行防火墙策略调整。更细粒度的策略配置,可以在YASTCenter--#System#--/etc/sysconfig editor-Network/Firewall/SuSEfirewall2,也可直接编辑/etc/sysconfig/SuSEfirewall2文件。
1.5 系统安全定期检查脚本seccheck
        seccheck是一个系统安全检查脚本,可以每天、每周、每月的定期生成报告,并且邮件发送。不过他在定期运行的时候比较占用资源,所以要选择在非业务高峰期来做。
        加固方法:YASTCenter-System-#/etc/sysconfig-System/Security/Seccheck selection
1.6  SUSE的安全应用框架AppArmor
AppArmor和SuSEfirewall2相比,他的特点在于对应用级的保护,可以管理应用的文件和目录访问等更细颗粒的操作,是一个白名单的机制,即指定哪些行为才是允许的,其他的拒绝,这样可以更好的隐藏内部系统。比如你的系统存在一个漏洞,但由于对其的操作没有受到白名单允许,所以操作会被拒绝。
   加固方法:YAST Center-Novell AppArmor可以调整细节策略、查看报告。如果不熟悉 的话,AppArmor还内设了一个向导功能
2. 最小化xinetd
2.1 关闭标准服务
    SUSE使用xinetd,他比inetd更优秀也更方便使用。SUSE默认情况下是关闭所有服务的,在启用SSH之后,就可以配置xinetd的服务了。安全的做法也应该如此,先关闭所有服务,然后只启用必须的服务。
       加固方法:运行chkconfig查看所有服务的开启状态,对不需要的服务进行关闭。
2.2 可信网络接入
     对服务器的访问应该受到控制,所以需要用SuSEfirewall2或者其他的措施来控制,只允许那些可信的网络接入。
      加固方法:
    vi /etc/sysconfig/SuSEfirewall2中的第10项配置。也可以在yastCenter#System#/etc/sysconfig editor进行配置。
2.3 telnet
    如果不是有特别的理由,不要使用telnet,telnet使用的是不加密的网络协议,这就意味着从你的账号到你传输的数据,都可以被人窃听,严重的可以通过会话劫持控制你的系统。所以这里还是强烈建议使用SSH,虽然SSH也不是那么的安全。
      加固方法:
      打开的命令是chkconfig telnet on。
      关闭的命令是chkconfig telnet off。
2.4 FTP
    同样,在没有充分理由的情况下,不要使用FTP,尤其是匿名FTP。和telnet一样,FTP也不加密,也可以被人窃听或者会话劫持。SSH则提供了SCP和SFTP,可以取代FTP。要注意的是,有时候FTP可能是因为某些应用绑定的,比如我多次见到的WEB上传通道,所以你必须要用这种匿名FTP。如果必须要用FTP,那还是要做一些控制,要注意的一点是,FTP的目录应该受到控制,最好能有自己的分区。在SUSE上,vsftpd默认是不安装的。
      加固方法:
      打开的命令是chkconfig vsftpd。
      关闭命令是chkconfig vsftpd off。
2.5 rlogin/rsh/rcp
     所有r系列的命令都应该被关闭。他们除了可以被窃听之外,在验证机制上也存在问题,并且还有其他的安全漏洞,比如缓冲区溢出、任意命令执行等。建议还是用SSH来取代。
       加固方法:
      打开命令是
      chkconfig rexec on
      chkconfig rlogin on
      chkconfig rsh on
      关闭他们:
      chkconfig rexec off
      chkconfig rlogin off
      chkconfig rsh off
2.6 TFTP
   TFTP一般用在无盘工作站,X-terminals等情况下。路由器或者其他网络设备的配置数据可以利用它复制,实现备份功能。当然,在这里,没有特殊原因,我们仍然建议你禁用。TFTP在SUSE上也不是默认安装的。
      关闭命令chkconfig tftp off
2.7 IMAP
   只有邮件服务器才会用到IMAP,一些邮件客户端(比如Eudora、Netscape Mail和Kmail)需要使用IMAP来检索远程邮件。
      加固方法:关闭服务的命令
      chkconfig cyrus off或chkconfig imap off。
2.8 POP
    这是一个收邮件的服务,如果没有,同样也应关闭。
         加固方法:chkconfig qpopper off或chkconfig cyrus off。
3. 最小化启动服务
3.1设置umask
   linux中的 umask 函数主要用于:在创建新文件或目录时 屏蔽掉新文件或目录不应有的访问允许权限。
  文件的访问允许权限共有9种,分别是:rwxrwxrwx
  它们分别代表:用户读用户写 用户执行 组读 组写 组执行 其它读 其它写 其它执行
  屏蔽的规则如下:
  1. 不管屏蔽码是多少,
   ·新创建的文件默认不具有可执行允可权限。
   ·新创建的目录默认具有可执行允可权限。
  2. 屏蔽码的格式为八进制格式,共三个八进制数。可设置如下 002 或 022 或 .....
  3. 其中的每一个八进制数由三位表示,分别是读 写  执行
     4 2  1
  例如 002 用二进制表示为: 0 0 0 -- 0 0 0 -- 0 1 0
   4 2 1 4 2 1  4 2 1
  4. 产生的文件为 umask 值求反后的允可权限,即
   对于文件: ~002 = 664(新创建文件所应具有的访问权限)
   对于目录: ~002 = 775(新创建目录所应具有的访问权限)
   定期用密码工具检测用户密码强度
    系统默认的umask至少应设置成027,有些守护进程比如系统日志,会默认设置为任何人可以写文件。如果某个守护进程需要放开对权限的限制,可以考虑修改守护进程的启动脚本,给以其权限,同时又不会影响服务器的其他安全。
      加固方法:
      vi /etc/profile,改变umask的值为027。
   对/home下的所有用户,根据其shell类型,定义umask的值。 一般在/home/.profile中新增加一行umask 027。
3.2 SMTP
    需要确认服务器是否需要处理邮件。SUSE中,默认安装的是Postfix,并且是激活状态。如果这台服务器是邮件服务器的话,需要注意的是,有权限在web界面上搜索附件是一个安全隐患。另外,如果你对邮件服务器管理有经验的话,你会知道为postfix规划一个chroot环境有多么重要。在chroot环境下,即使有人闯入了smtpd daemon,能够造成的损害也比较有限。
      加固方法:
  打开:vi/etc/sysconfig/mail,设置SMTPD_LISTEN_REMOTE="yes"。在防火墙上也必须启用。
   关闭:vi /etc/sysconfig/mail,设置SMTPD_LISTEN_REMOTE="no"。
3.3运行级别
   SUSE里有两个主要的运行级别,级别5直接启动到X Windows,级别3则是字符界面。但注意的是,即使系统运行在级别3,用户仍然可以在shelle下执行startx来启动X Windows。
       加固方法:
      设置为级别3,vi /etc/inittab,将id:5:initdefault中的5修改为3。
3.4 X Font Server
    对于服务器来说,一般不需要运行X Windows,如果不使用图形界面的话,X Font Server就可以关掉,他是为图形界面提供字体集用的,并且XFS还有一些缓冲区溢出的问题。
      加固方法:
      关闭X Font Server:chkconfig xfsoff
3.5标准启动服务
    每个系统的守护进程,如果你不能明确知道必须开启的话,都应该关闭。服务器上运行的脆弱应用,将大大增加风险。SUSE使用chkconfig来管理所有的系统服务脚本。这里要注意的是,SUSE的补丁程序可能会恢复启动某些服务,在更新补丁之前,最好还是先记录一下你已经启动哪些服务。还有就是一些守护进程会拥有一些账户,对这些账户要进行删除、锁定,避免别人登录,或者对他的Shell设置成/bin/false。
      加固方法:
     添加、删除启动服务的方法是在在不同运行级别下的目录里,首先你需要知道你的系统运行界别,使用runlevel命令查看运行级别,如果运行级别是3的话,那就需要在/etc/rc.d/rc3.d修改。这里面以S开头的,都是启动时会运行的服务。例如mv /etc/rc3.d/S04rpcbind etc/rc3.d/K04rpcbind,是将rpcbind服务关闭。
   另外还需要对守护进程的账户进行删除或锁定,删除用户命令是userdel,可以删除这些用户:adm lp sync shutdown halt news uucp operator gopher,如果不用x windows的话可以删除games,如果没有匿名ftp可以删除ftp。
3.6 SMBNMB
SUSE提供了Samba,为windows用户提供文件和打印共享,这样unix系统可以在windows的网络上充当文件服务器、打印服务器,甚至为早期的windows系统充当域控验证服务器。Samba需要用到SMB和NMB协议,SMB是Windows的文件共享,NMB是NetBIOS消息块。如果不需要充当这些角色的话,就应该关闭这两个协议。关闭命令 chkconfig smb off
3.7 NFS
NFS经常被利用来越权存取文件,所以没有需要也应关闭。即使真的需要NFS服务,也应该采取控制措施,包括限制访问的IP范围、文件的只读等。NFS的客户端服务也应关闭。
      关闭命令:
      chkconfig nfsserver off
      chkconfig autofs off
3.8 NIS
    除非十分有必要,否则不要使用NIS。NIS是网络信息服务的缩写,类似与windows中的域控制器。NIS虽然使用维护简单,但有设计上的安全问题,而且也完全可以用LDAP来替代。
      关闭命令:
      chkconfig ypserv off
      chkconfig yppasswdd off
3.9 RPC端口映射
      要想NIS能够运行,须首先运行portmap守护进程。但是RPC的验证机制很薄弱,很容易被绕过,却可以利用RPC得到很多重要的信息。除非是需要NIS,最好禁用。
       关闭命令:chkconfig portmap off
3.10 ncpfs脚本
    ncpfs是NFS、windows网络里共享文件需要用到的,但并非默认安装,如果没有网络共享在使用,就把它停掉。这个脚本会挂载在客户机的网络驱动器上,好在它不是一个持续的守护进程,所以相对来说不是那么危险。
      关闭命令:chkconfig ncpfs off
3.11 apache
    只有WEB服务器才会用到,即使这台服务器是WEB服务器,也不要把数据库和其他环境支持都放在这台服务器上。
      关闭命令:chkconfig apache2 off
3.12 SNMP
    在规模比较大的网络里会经常用到的网络管理协议,要确定你是不是在使用依赖SNMP的远程监控工具,比如HP OpenView, MRTG, Cricket等。如果使用了SNMP,也建议更改默认的community string。在SUSE中,snmp的设置在/etc/snmpd.conf里。
      关闭命令:chkconfig snmpd off
3.13 DNS Server
    确定你的网络是否需要域名解析的服务器,针对DNS的攻击这两年越来越多,如果必须要用,建议在/etc/named.conf里 使用访问控制。比如,内部的DNS服务器不应该对外部开放查询。在比较大的网络里,一般都会使用内部和外部的DNS服务器分别提供查询,但一些小的网络没有条件内外分开,就应考虑访问控制。
      关闭命令:chkconfig named off
3.14 squid cache 服务器
   Squid是一个代理服务器软件,其实Squid是一个较好的安全架构,因为他在客户端和服务器之间设置了一道代理,在一定程度上减少了系统泄露信息的风险,防止内部漏洞被发现。但是,在使用Squid的时候要仔细进行配置,有很多关于Squid cache的漏洞。如果不加安全考虑的话,外部仍然可以探测到内部的主机,或者利用你的cache来隐藏攻击者的真实IP。所以应该配置成:不允许外部人员未经认证使用你的缓存。
      关闭命令:chkconfig squid off
4. 内核优化
4.1 网络参数修改
   SUSE和其他Linux一样,把网络参数的修改都放在了/proc/sys/net/ipv4下,这里所有文件名中包含rate和max的变量都可以防止拒绝服务攻击。对于每个参数的具体解释可以参考相关文档,这里就不一一介绍。
      建议修改:
      net.ipv4.tcp_max_syn_backlog = 4096
      net.ipv4.conf.all.accept_source_route = 0
      net.ipv4.conf.all.accept_redirects = 0
      net.ipv4.conf.all.secure_redirects = 0
      net.ipv4.conf.default.rp_filter = 1
      net.ipv4.conf.default.accept_source_route= 0
      net.ipv4.conf.default.accept_redirects = 0
      net.ipv4.conf.default.secure_redirects = 0
      net.ipv4.icmp_echo_ignore_broadcasts = 1
4.2 其它参数
    如果系统不是作为一个防火墙或网关的话,需要修改以下部分。
      建议修改:
      net.ipv4.ip_forward = 0
      net.ipv4.conf.all.send_redirects = 0
      net.ipv4.conf.default.send_redirects = 0
5. 日志
5.1 syslog
SUSE使用了syslog-ng来记录日志。/var/log/messages包括了iptables, mail, news和messages,并把它们分别发送到(/var/log/firewall, /var/log/mail*, 和/var/log/news。文件权限默认是u=rw,g=r,o=。
  如果服务器比较重要,可以考虑把ssh,mail,引导信息等打印出来.在/etc/syslog.conf文件中加 入一行.:
Authpriv.*;mail.*;local7.*;auth.*;daemon.info /dev/lp0
执行/etc/rc.d/init.d/syslog restart
或者把日志发送到其它服务器保存

authpriv.*                /var/log/secure
要把它发送到192.168.0.2,就可以这样修改
authpriv.* @192.168.0.2               /var/log/secure
5.2 NTP
   NTP是网络时间协议,目的是保持计算机的时间与网络同步,默认安装,但是没有启用。系统时钟应该保持一个高准确度,这样日志的记录才能准确的反映时间。NTP启用后,在udp123端口监听。在配置上,应该忽略任何未明确允许的消息,只允许本地回环127.0.0.1和NTP服务器的消息,防止别人伪造时间服务器。对NTP的修改在/etc/ntp.conf下面。
5.3 日志文件权限
    确保系统日志文件的所有权和权限是正确的,日志文件权限的配置在/etc/syslog-ng/syslog-ng.conf.in和/etc/logrotate.d
5.4 远程日志记录
    配置系统日志记录发送到网络的其他主机上。注意的是,这个时候,就需要精确的系统时钟了,所以需要使用NTP。为什么要在远程记录日志呢?原因是,如果你的系统发生故障或者崩溃了,它是什么原因造成的?你就可以在这台远程记录日志的主机上找到原因。syslog-ng可以使用UDP或TCP。但是,除非这台远程主机能够保证一直可用、网络也很可靠,否则,建议使用TCP,防止数据丢失。
      例如:在/etc/syslog-ng的syslog-ng.conf中添加
      destination logserver {tcp("10.10.10.10" port(514)); };



腾讯云服务商邀请关注:

http://partners.qcloud.com/invitation/99377079157835da208bd0

关注服务商的链接,提供下您关注的QQ,我们这边审核下即可快速回复您的工单问题与技术支持! 感谢您的信任与支持!

auto_1452.png

腾讯云技术交流群


ps:本站信息来源于 bbs.qcloud.com

相关文章

在线客服
淘宝购买
腾讯云直播申请 title=
+成为腾讯云VIP客户 腾讯云直播申请 客服电话

15818558013

0755-33940501-803

0755-33940501-808