内容简介:《高性能linux服务器构建实战》
本文为 《高性能 linux 服务器构建实战》 一书的摘要。
安全运维篇
Linux服务器安全运维
账号安全
- 删除不必要的用户和用户组
userdel games groupdel games //禁用登录功能 usermod -s /sbin/nologin nagios
- 关闭系统不需要的服务
- 密码安全策略 Linux下,远程登录系统有两种认证方式:密码认证和密钥认证。如果选择密码认证,设置一个相对复杂的密码。更推荐使用密钥认证方式登录。
- 合理使用su、sudo命令
su命令是一个切换用户的工具,经常用于将普通用户切换到超级用户下,当然也可以从超级用户切换到普通用户。为了保证服务器的安全,几乎所有服务器都禁止了超级用户直接登录系统,而是通过普通用户登录系统,然后再通过su命令输入root用户密码,切换到超级用户下。 sudo命令允许系统管理员分配给普通用户一些合理的“权力”,并且不需要普通用户知道超级用户密码,就能让他们执行一些只有超级用户或其他特许用户才能完成的任务。sudo执行命令的流程是:将当前用户切换到超级用户下,或切换到指定的用户下,然后以超级用户或其指定切换到的用户身份执行命令,执行完成后,直接退回到当前用户,通过sudo的配置文件/etc/sudoers来进行授权。 //vim /etc/sudoers //让普通用户user01可访问/etc/shadow文件,需要定时输入user01的密码 user01 ALL = /bin/more /etc/shadow //不需要密码 CENTREON ALL = NOPASSWD: /etc/init.d/nagios restart //user02登录系统后 执行sudo su - 可切换到root user02 ALL=(ALL) NOPASSWD: ALL
- 删除系统登录欢迎信息
/etc/issue、/etc/issue.net文件都记录了操作系统的名称和版本号,当用户通过本地终端或本地虚拟控制台等登录系统时,就会显示/etc/issue的文件内容,当用户通过ssh或telnet等远程登录系统时,在登录后就会显示/etc/issue.net的文件内容.(服务器的/etc/ssh/sshd_config 需要有 Banner /etc/issue.net) /etc/redhat-release 也记录了操作系统的名称和版本号 /etc/motd 文件是系统的公告信息
-
禁止Control-Alt-Delete键盘关闭命令
注释掉 /etc/init/control-alt-delete.conf文件中的相关命令 # exec /sbin/shutdown -r now "Control-Alt-Delete pressed"
远程访问安全
- 远程登录取消telnet而采用SSH方式 telnet是一种古老的远程登录认证服务,它在网络上用明文传送口令和数据,因此别有用心的人就会非常容易截获这些口令和数据。 使用SSH的另外一个好处就是:传输的数据是经过压缩的,所以可以加快网络传输速度。
- 合理使用 shell 历史命令记录功能 shell命令操作记录默认保存在用户目录下的.bash_history文件中,通过这个文件可以查询shell命令的执行历史(history),默认的history命令只能查看用户历史操作记录,并不能区分每个用户操作命令的时间,这点对于排查问题十分不便,不过可以通过下面的方法(加入四行内容)让history命令自动记录所有shell命令的执行时间,编辑/etc/bashrc文件:
HISTFILESIZE=4000 HISTSIZE=4000 HISTTIMEFORMAT='%F %T' export HISTTIMEFORMAT
文件系统安全
- 锁定系统重要文件 通过chattr命令修改文件或者目录的文件属性能够提高系统的安全性.
chattr [-RV] [-v version] [mode] ·-R:递归修改所有的文件及子目录。 ·-V:详细显示修改内容,并打印输出。 mode : 最常用到的是a和i,a参数常用于服务器日志文件安全设定只能想文件追加内容不能删除,而i参数更为严格,不允许对文件进行任何操作,即使是root用户。 //查询文件属性 lsattr [-adlRvV] 文件或目录
- 文件权限检查和修改
查找系统中任何用户都有写权限的文件或目录 find / -type f -perm -2 -o -perm -20 |xargs ls -al find / -type d -perm -2 -o -perm -20 |xargs ls –ld //查找系统中所有含“s”位的程序 find / -type f -perm -4000 -o -perm -2000 -print | xargs ls –al //检查系统中所有suid及sgid文件 find / -user root -perm -2000 -print -exec md5sum {} \; find / -user root -perm -4000 -print -exec md5sum {} \; //检查系统中没有属主的文件 find / -nouser -o –nogroup
- /tmp、/var/tmp、/dev/shm安全设定 在Linux系统中,用来存放临时文件主要有两个目录或分区,分别是/tmp和/var/tmp。存储临时文件的目录或分区有个共同点,就是所有用户可读写、可执行,这就为系统留下了安全隐患。 如果/tmp是一个独立的磁盘分区,那么设置非常简单,修改/etc/fstab文件中/tmp分区对应的挂载属性,加上nosuid、noexec、nodev三个选项即可. 对于/var/tmp,如果是独立分区,安装/tmp的设置方法是修改/etc/fstab文件即可;如果是/var分区下的一个目录,那么可以将/var/tmp目录下所有数据移动到/tmp分区下,然后在/var下做一个指向/tmp的软连接即可。
/dev/shm是Linux下的一个共享内存设备,在Linux启动的时候系统默认会加载/dev/shm,被加载的/dev/shm使用的是tmpfs文件系统,而tmpfs是一个内存文件系统,存储到tmpfs文件系统的数据会完全驻留在RAM中,这样通过/dev/shm就可以直接操控系统内存,这将非常危险,因此如何保证/dev/shm安全也至关重要。需要修改/dev/shm的挂载属性 tmpfs /dev/shm tmpfs defaults,nosuid,noexec,rw 0 0
系统软件安全
- 使用yum安装、删除、更新软件。
安全监测软件
- rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和隐蔽的目的,在系统遭受rootkit攻击后,合法的文件被木马程序替代,变成了外壳程序,而其内部是隐藏着的后门程序。通常容易被rootkit替换的系统程序有login、ls、ps、ifconfig、du、find、netstat等,目前最有效的防御方法是定期对系统重要文件的完整性进行检查,如果发现文件被修改或者替换,那么很可能系统已经遭受了rootkit入侵。
- 使用 chkrootkit、RKHunter监测系统是否被感染。
Linux下网络安全运维
-
iftop iftop能够实时显示网络的流量状态,监控网卡流量的来源IP和目标地址,这对于检测服务器网络故障、流量异常是非常有用的.
-
ntop iftop工具适合对单台服务器网络故障的排查,ntop可以监控一个庞大的服务器网络,ntop就是一个功能强大的流量监控、端口监控、服务监控管理系统。Ntopng在Ntop版本的基础上,新增了网络流量实时监控功能,并将各个功能进行重新梳理和整合,使整个流量展示更加智能化和合理化。
-
iperf iperf是一个基于TCP/IP和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量,还可以提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息。网络管理员可以根据这些信息了解并判断网络性能问题,从而定位网络瓶颈,解决网络故障。
-
nmap nmap是一个开源免费的网络发现工具,通过它能够找出网络上在线的主机,并测试主机上哪些端口处于监听状态,接着通过端口确定主机上运行的应用程序类型与版本信息,最后利用它还能侦测出操作系统的类型和版本。
Linux下数据安全
数据镜像软件DRBD
分布式块设备复制(Distributed Replicated Block Device,DRBD),是一种基于软件的、基于网络的块复制存储解决方案,主要用于对服务器之间的磁盘、分区、逻辑卷等进行数据镜像。当用户将数据写入本地磁盘时,还会将数据发送到网络中另一台主机的磁盘上,这样本地主机(主节点)与远程主机(备节点)的数据就可以保证实时同步,当本地主机出现问题,远程主机上还保留着一份相同的数据,可以继续使用,保证了数据的安全。
数据恢复软件extundelete
extundelete是基于Linux的一个数据恢复工具,它通过分析文件系统的日志,解析出所有文件的inode信息,从而可以恢复Linux下主流的ext3、ext4文件系统下被误删除的文件。
运维故障排查
Linux系统运维故障排查思路
- 重视报错提示信息
- 查阅日志文件
- 分析、定位问题
- 解决问题
Linux故障排查案例实战
- 磁盘出现“Read-only file system”的原因有很多种,可能是文件系统数据块出现不一致导致的,也有可能是磁盘故障造成的,手工修复文件系统错误的命令是fsck.
- 提示磁盘空间耗尽,也可能是inode节点耗尽导致(df -i)
- 删除大文件空间未释放,可能是文件正被其它进程打开。
- 对于"Too many open files"报错,首先检查 ulimit -n设置的最大文件描述符的数量
自动化运维篇
轻量级运维利器pssh、pdsh和mussh
- pssh的全称是parallel-ssh,是一个用 Python 编写的可以并发在多台服务器上批量执行命令的工具,它支持文件并行复制、远程并行执行命令、杀掉远程主机上的进程等。其中,文件并行复制是pssh核心功能,也是同类 工具 中最大的亮点,因此,要批量在远程主机上传、下载文件时,最好选用pssh这个服务器批量管理工具。
- pdsh的全称是parallel distributed shell,与pssh类似,pdsh可并行执行对远程目标主机的操作,在有批量执行命令或分发任务的运维需求时,使用这个命令可达到事半功倍的效果。同时,pdsh还支持交互模式,当要执行的命令不确定时,可直接进入pdsh命令行,非常方便。
- mussh的全称是MUltihost SSH Wrapper,它其实是一个SSH封装器,由一个shell脚本实现。通过mussh可以实现批量管理多台远程主机的功能,mussh可以把本地的脚本在多台远程主机上执行,这个功能十分有用。
分布式监控系统 Ganglia
Ganglia是一款为HPC(高性能计算)集群而设计的可扩展的分布式监控系统,它可以监视和显示集群中节点的各种状态信息,它由运行在各个节点上的gmond守护进程来采集CPU、内存、硬盘利用率、I/O负载、网络流量情况等方面的数据,然后汇总到gmetad守护进程下,使用rrdtool存储数据,最后将历史数据以曲线方式通过 PHP 页面呈现。
基于nagios的分布式监控报警平台Centreon
Centreon是一款功能强大的分布式IT监控系统,它通过第三方组件可以实现对网络、操作系统和应用程序的监控:首先,它是开源的,我们可以免费使用它;其次,它的底层采用nagios作为监控软件,同时nagios通过ndoutil模块将监控到的数据定时写入数据库中,而Centreon实时从数据库读取该数据并通过Web界面展现监控数据;最后,我们可以通过Centreon管理和配置nagios,或者说Centreon就是nagios的一个管理配置工具,通过Centreon提供的Web配置界面,可以轻松完成nagios的各种烦琐配置。
通过Ganglia与Centreon构建智能化监控报警平台
Ganglia作为监控报警平台的数据收集模块,将Centreon作为智能监控报警平台的监控报警模块.
集群架构篇
高性能Web服务器Nginx
略
高性能集群软件Keepalived
Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态。它根据TCP/IP参考模型的第三、第四和第五层交换机制检测每个服务节点的状态,如果某个服务节点出现异常,或工作出现故障,Keepalived将检测到,并将出现故障的服务节点从集群系统中剔除,而在故障节点恢复正常后,Keepalived又可以自动将此服务节点重新加入服务器集群中,这些工作全部自动完成,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。 LVS负责负载均衡,Keepalived高可用。初创公司推荐直接使用阿里的SLB
###千万级高并发负载均衡软件 HAProxy 有基于硬件的负载均衡设备,例如F5、Big-IP等,也有基于软件的负载均衡产品,例如HAProxy、LVS、Nginx等。 HAProxy是一个开源的、高性能的、基于TCP(第四层)和HTTP(第七层)应用的负载均衡软件,借助HAProxy可以快速、可靠地提供基于TCP和HTTP应用的负载均衡解决方案。HAProxy非常适用于那些并发量特别大且需要持久连接或四层和七层处理机制的Web系统,例如门户网站或电商网站等。另外。HAProxy也可用于 MySQL 数据库(读操作)的负载均衡。 ###构建高性能的MySQL集群系统
- 主从复制解决方案
- 通过Keepalived搭建MySQL双主模式的高可用集群系统
- 通过MMM构建MySQL高可用集群系统
- MySQL读写分离解决方案(Amoeba Atlas Kingshard) ###高性能负载均衡集群软件 HAProxy HAProxy + Keepalived
以上所述就是小编给大家介绍的《《高性能linux服务器构建实战》》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Spark+Hbase 亿级流量分析实战(小巧高性能的ETL)
- 【架构入门 - 高性能篇】集群高性能
- 【架构入门 - 高性能篇】数据库高性能
- 高性能计算Lustre性能优化方案
- 深度 | 从Go高性能日志库zap看如何实现高性能Go组件
- 高性能计算
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入理解OpenCV
[巴西]Daniel Lelis Baggio / 刘波 / 机械工业出版社 / 2014-9 / 59
opencv是最常见的计算机视觉库之一,它提供了许多经过优化的复杂算法。本书对已掌握基本opencv技术同时想提高计算机视觉的实践经验的开发者来讲是一本非常好的书。每章都有一个单独的项目,其背景也在这些章节中进行了介绍。因此,读者可以依次学习这些项目,也可以直接跳到感兴趣的项目进行学习。 《深入理解opencv:实用计算机视觉项目解析》详细讲解9个实用的计算机视觉项目,通过本书的学习,读者可......一起来看看 《深入理解OpenCV》 这本书的介绍吧!