Linux运维面试题(四)之Linux服务管理
- 4.1 SSH
- SSH的登录验证方式
- SSH的登陆端口(默认22)和监听设置(/etc/ssh/sshd_config)
- SSH的登录用户限制(/etc/ssh/sshd_config PermitRootLogin)
- SSH的登录超时设置(/etc/profile export TMOUT=300 设置客户端无操作5分钟 unset TMOUT)
- SSH登录失败尝试次数(/etc/ssh/sshd_config MaxAuthTries 6)
- 答案
- ssh连接时认证时间过长如何解决?
- scp和rsync进行远程文件复制有什么区别?
- 4.2DHCP+FTP
- DHCP租约过程
- DCHP续租
- FTP的主被动模式
- 主动模式
- 被动模式
- 集群环境中,如何保证所有服务器之间的时间误差较小
- 4.3DNS服务(域名解析服务)
- 域名
- DNS原理及解析流程
- 4.4Apache配置及优化
- 问题
- 考查知识点1——虚拟主机:解决同一主机部署多个服务器(网站)
- 考查知识点2——地址重写
- apache的工作模式
- Apache优化
- 请写出工作中常见的Apache优化策略
- 有哪些技术可以提高网站的安全和效率?
- CDN内容分发网络
- 4.5Nginx配置和进阶
- Apache和nginx(web服务器)的优缺点,怎么选择?
- apache的优缺点
- Nginx(高性能、轻量级、反向代理服务器)的优缺点:
- apache和nginx的选择
- nginx处理过程
- nginx反向代理和负载均衡
- 为什么nginx的并发能力强,资源消耗低?
- 同步与异步
- 阻塞和非阻塞
- Nginx常用模块及功能
- Nginx如何连接PHP进行页面解析的
- Nginx和Tomcat之间的数据传输过程
- 4.6http状态码
- 网络服务分为:经验类;服务优化类;程序优化;架构优化。
4.1 SSH
- (1)哪些设置能够提升SSH远程管理的安全等级?
SSH的登录验证方式
- 口令登陆,密钥对登陆
SSH的登陆端口(默认22)和监听设置(/etc/ssh/sshd_config)
- (生产中绝大部分,防止敌手通过暴力破解登陆服务器)
- 质疑码
- 修改为上万的端口;只允许内网的远程登录,而不允许公网的。
SSH的登录用户限制(/etc/ssh/sshd_config PermitRootLogin)
- 普通用户对服务器的权限是有限的。
- 默认是允许,改为no。
SSH的登录超时设置(/etc/profile export TMOUT=300 设置客户端无操作5分钟 unset TMOUT)
SSH登录失败尝试次数(/etc/ssh/sshd_config MaxAuthTries 6)
答案
- 答:登录验证模式修改为密钥登录
登录端口修改为非22端口以及指定监听IP
禁止root用户远程登录
设置无操作时自动断开连接
设置登录失败后登录尝试次数为6次
编写防火墙规则,使用白名单机制放行ssh服务监听端口
ssh连接时认证时间过长如何解决?
/etc/ssh/sshd_config UseDns no
取消ssh登录时的dns反向解析请求功能
scp和rsync进行远程文件复制有什么区别?
- scp借助ssh服务进行操作
4.2DHCP+FTP
- (1)请简述通过DHCP服务器获取IP地址的过程
- 实现搭建服务和资源池。位于局域网内的服务。
- /etc/dhcp/dhcpd.conf
- 资源池范围,DNS地址,网关地址。
DHCP租约过程
- 首先,客户端无IP,而是进行广播(自身MAC地址);
- 是DHCP的服务器响应,找合理可用的IP地址将OFFER包发送出去,再次在局域网内进行广播(通过指定MAC地址);
- 广播回复Request包,声明服务器,告知其要用资源。
- 服务器回复ACK、NAK(资源已分配)、NACK。
DCHP续租
-
-
直连而不是广播
租约是广播,续租是直连 -
DHCP租用失败:
1.如果DHCP客户机无法找到DHCP服务器,他将从TCP/IP的B类网段169.254.0.0/16中挑选一个IP地址作为自己的临时IP地址,继续每隔5分钟尝试与DHCP服务器进行通讯,一旦与DHCP服务器取得联系,则客户机放弃自动配置的临时IP地址,而使用DHCP服务器分配的IP地址。
2.DHCP客户机收到DHCP服务器回应的ACK报文后,通过地址冲突检测(ARP协议)发现服务器分配的地址冲突或者由于其他原因导致不能使用,则发送DECLINE报文,通知服务器所分配的IP地址不可用。 -
答:
1.客户机请求IP(客户机发DHCPDISCOVER广播包)
2.服务器响应(服务器发DHCPOFFER广播包)
3.客户机选择IP(客户机发DHCPEQUEST广播包)
4.服务器确定租约(服务器发DHCPACK/DHCPNAK广播包)
FTP的主被动模式
主动模式
- 先建立登陆请求,再建立数据传输请求。
- 21一直监听,20默认关闭(只有数据传输时才开启)
被动模式
- 只有指定的服务器才知道该开放端口是多少。(客户端给每个服务器建立的端口不一样)
集群环境中,如何保证所有服务器之间的时间误差较小
- 手动测试同步:
ntpdate 时间服务器IP地址 - 自动同步:
可以将命令写入计划任务
4.3DNS服务(域名解析服务)
域名
- 二级域(又称注册域)
- 三级域(二级域的子域)
- 个人电脑并不知道网站的IP
DNS原理及解析流程
- 1、/etc/hosts 用来做解析 保存即生效
- 只有IPV4和IPV6的地址。
ping通来验证。- 2、网卡配置文件 /etc/sysconfig/network-script/ifcfg-eth0
- DNS:解决新增和维护
答:
- 客户机首先查看本地hosts文件是否有解析记录。有则直接用来访问web server
没有则向网卡中记录的首选DNS(本地DNS)发起查询请求
本地DNS若有记录则返回给客户端,客户端接收到后直接访问web server
………………………………………………………………………………………………
若没有,则本地DNS向根域服务器发起请求,请求解析对应顶级域的IP地址(开始迭代查询)
本地DNS得到顶级域服务器IP后,再向顶级域服务器发起请求,请求解析权威DNS服务器的IP地址
本地DNS服务器获取到权威DNS服务器IP地址后,再向其查询具体的完整域名的对应解析记录
最终本地DNS将查询到的对应域名的解析记录发送给客户端,并在本地记录一份 - 迭代查询,根-顶级域-二级域-三级域
- (2)权威DNS和(本地)递归DNS的含义
权威DNS是经上一级授权对域名进行解析的DNS服务器,同时它可以把解析授权转授给其他服务器
递归DNS负责接受用户对任何域名的查询,并返回结果给用户,它可以缓存结果避免用户再向上查询 - (3)智能DNS
将对用户发起的查询进行判断出是哪个运营商的用户查询,然后将请求转发给相应的运营商IP处理,减少跨运营商访问的时间,提高访问速度。
4.4Apache配置及优化
问题
- 公司里有一台服务器,需要在上面跑两个网站(虚拟主机的功能),并且其中一个网站需要更换新域名(生产环境中,新旧域名同时用,旧域名向新域名跳转),请问如何处理?
网站1:www.a.com
网站2:www.b.com > www.d.com
考查知识点1——虚拟主机:解决同一主机部署多个服务器(网站)
- 基于IP的虚拟主机
基于IP+端口的虚拟主机
基于域名的虚拟主机 - 1、用IP区分网站
ifconfig eth0:0 设置网卡子接口 临时生效;永久:扩展插头/虚拟机 新增网卡接口+配置文件
httpd.conf: - 临时生效,重启后不存在
- 关机并添加网卡,添加配置文件
- 域名配置文件
- 安装apache软件,修改配置文件
- 备份
- 拷贝,删除日志和管理员信息
- 在标签的标签里面去声明IP,作为两个网站的IP
- 为网站创建目录和文件
重启服务
- 测试访问
- 2、用端口区分网站
httpd.conf LISTEN要监听新增的端口 - 解析成相同IP
- 重启网卡服务,取消21端口IP地址
- 使apache既监听80又监听8080(同时修改设置)
- 重启服务
- 3、数据包的关键词
- 拆分数据包
- b和d新旧域名跳转
- host1
- apache
- b和d网页目录一样
- 开启基于域名的开关,否则可能出现报错
-跳转规则:.*任意内容,当有用户访问b则跳转到d
考查知识点2——地址重写
- apache将所有功能模块化
httpd.conf :
NameVirtualHost *:80 开关
apache的工作模式
- 1、prefork模式:事先开启子进程,单进程单线程处理单个请求
- 成熟稳定
2、worker模式:一对多线程,并发能力强点,但不安全(线程安全问题)
3、event模式:+分配管理线程 更擅长高并发- 查看工作模式:httpd -V | grep -i “server mpm”
- 线程频繁与客户端建立连接,额外消耗系统资源
- 不需要建立新的三次握手,直接发送页面。——》处理更多用户的请求。
- 有部分线程处理完了但是在等待,出现新问题
- 管理用户和线程的连接(新增管理线程的模式)
Apache优化
请写出工作中常见的Apache优化策略
- Apache服务器的安全、效率
- (1)日志的轮替(防止日志过大)
access.log(访问日志)/error.log(报错信息)(/var/log)
利用apache自带的rotatelogs工具进行日志切割,保证单个日志文件不过大 - 分割日志文件名,用年月日命名保存
- CustomLog “| /bin/rotatelogs -l /wwwlogs/access_%Y%m%d.log 86400” combined
- 将apache日志保存到指定位置
- 对应秒数24小时,保留当天
- (2)美化错误页面
可以将404 500等错误信息页面重定向到网站首页或其他页面,提升用户体验。
vim httpd.conf
ErrorDocument 404 http://www.a.com
- (3)屏蔽apache版本等敏感信息
- 修改版本信息,以免版本对应漏洞
- (4)配置静态缓存(特定文件,减少服务器的访问压力)
- 缓存周期可以人为修改和调整
- (5)禁止解析PHP
- 如:uploads目录 上传了非法代码 禁止它的解析
- 最后一条,禁止php解析该目录,利用上传漏洞上传但仍无法解析与提权。
有哪些技术可以提高网站的安全和效率?
CDN内容分发网络
- 所有的客户请求都扔给了当地的CDN机房,资源同步的大规模缓存,减轻压力,且保护了真正的服务器(身份)
- 中间:CDN服务器集合
- 服务器把相对变化频率较低如图片,通过Control Server分发到各个城市的网站服务器上。各个城市对网站访问时,首先会通过自身途径找到DNS服务器或者自己的Hosts文件找到对应服务器的域名解析答案,智能DNS首先把用户请求解析到另一个DNS服务器上,交由另一个DNS服务器来进行二次处理。
- 新DNS(CDN内部的DNS)将深圳用户请求解析成深圳DNS(机房IP)
- 保证不同城市的用户访问的网络资源都是就近从自己本地城市的CDN机房里拿到的资源,而不是直接找的web服务器取到的资源。
- 不同城市访问同一个网络资源时都很快,在各个城市部署了CDN,CDN资源都是一样的。
- 提高效率和用户体验度。保护服务器,即使受到攻击也是CDN机房,不是web服务器。
4.5Nginx配置和进阶
Apache和nginx(web服务器)的优缺点,怎么选择?
apache的优缺点
优点:
Apache的rewrite功能比nginx的要强大
模块非常多,基本想要的功能都能找到模块
存在时间较长,文献较全,bug也相对较少
动静态解析都超稳定(静态解析:html+css,动态解析:解析需要连接数据库的页面:PHP-》sql)
缺点:
由于工作模式是同步阻塞型,导致资源消耗较高,并发能力较差(相较于其他web服务器)
Nginx(高性能、轻量级、反向代理服务器)的优缺点:
优点:
轻量级服务,比Apache占用更少的内存及资源
并发能力强,nginx处理请求是异步非阻塞的,而apache则是阻塞型的,在高并发下nginx能保持低资源低消耗(远高)高性能
高度模块化的设计,编写模块相对简单
社区活跃,各种高性能模块产出迅速
缺点:
动态处理上需要使用fastcgi连接PHP的FPM服务,相比Apache不占优势
apache和nginx的选择
nginx适合做静态处理,简单,效率高
apache适合做动态处理,稳定,功能强
并发较高的情况下优先选择nginx,并发要求不高的时候两者都可以,规模稍大的可以使用nginx作为反向代理,然后将动态请求 负载均衡到后端apache上
nginx处理过程
- 接受动态请求时,交付给fastcgi
nginx反向代理和负载均衡
- 当用户量非常大,既有静态又有动态请求的时候,让Nginx充当所有用户的请求服务器(提供一个80端口),动态请求是不会做请求处理的,而是通过自身的反向代理模块代理到后端的Apache服务器。如轮询算法:来一个分一个。
- 并发性高,页面处理效率和稳定性也很强。
为什么nginx的并发能力强,资源消耗低?
- 同步/异步 + 阻塞/非阻塞 nginx以异步非阻塞方式工作
客户端发送request,服务器分配work进程来处理
能立即处理完的,处理后work进程释放资源,进行下一个request的处理
不能立即处理完的work进程注册返回事件,然后接着去处理其他request
当之前的request结束返回后,触发返回事件,由空闲work进程接着
通过这种快速处理,快速释放请求的方式,达到同样的配置可以处理更大并发量的目的
同步与异步
阻塞和非阻塞
- 同步阻塞,当Apache工作之后,有用户请求过来,Apache会分配一个线程处理请求,Apache会等待请求处理完毕,才会断开连接请求。用户请求等待,进程什么都不干。
- 异步非阻塞,nginx:有用户请求发送过来时,nginx发送一个线程来处理,如果该线程需要等待,则nginx这个线程会临时将事务挂起,接收新用户请求。
Nginx常用模块及功能
- https:443,http:80(默认);要求用户rewrite。nginx虚拟主机
- 图片裁剪模块
- 地址重写模块
- 反向代理功能
- 默认开启,需要编写规则
- 借助另外的模块对后台服务器进行任务的分配和管理
- RR算法,轮询算法
- php环境下高并发、java环境下
- LAMP
- Apache和php模块直连
- 而LNMP,动态请求时
- 静态无区别,中间。
- L(N)TMJ:nginx并发能力强。动态找Tomcat,静态不找。
- 重要的是nginx做反向代理。
- 这里既可以是一堆Apache服务器,也可以是一堆tomcat服务器。
Nginx如何连接PHP进行页面解析的
- php无服务,是一个解析翻译器,被调用。(默认不安装)中间连接点——连接端、接口——9000;
- CGI(Common Gateway Interface)公共网关接口,是外部扩展应用程序与 Web 服务器交互的一个标准接口。服务器端与客户端进行交互的常见方式多,CGI 技术就是其中之一。根据CGI标准,编写外部扩展应用程序,可以对客户端浏览器输入的数据进行处理,完成客户端与服务器的交互操作。
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要 行为是将CGI解释器进程保持在内存中并因此获得较高的性能。
Nginx和Tomcat之间的数据传输过程
- 由nginx代为处理静态页面请求,直接返回。动态请求由nginx代理到tomcat(两个负载均衡),处理后返回用户。
4.6http状态码
1**:信息,服务器收到请求,需要请求者继续执行操作
2**:成功,操作被成功接收并处理
3**:重定向,需要进一步的操作已完成请求
4**:客户端错误,请求包含语法错误或无法完成请求
5**:服务器错误,服务器在处理请求的过程中发生了错误
- 1.2.3客户端看不到,服务器端日志。
http1.0->http2.0- 203副本信息、204网页无更新、205用户重置展现新页面——页面更新、206用户处理资源只有某些成功。
- 301用于选择用户客户端浏览器、R=301永久重定向、302临时替换、303与上面不一样、304用户请求到的是缓存信息而不是服务器上的资源、305用户被迫使用代理、307和302类似
- 400请求的url地址错误或者内容错误、401提示客户端身份认证才能对对应资源进行访问、402暂停对应信息、403(特别常见)服务器理解请求但拒绝解析、404服务器找不到对应资源、405请求方法被禁用(POST、GET)、406服务器无法对客户端不合理的请求进行处理、407请求代理服务器进行授权或身份认证
- 相对常见的状态码