职能:安全管理/性能优化/监控相关/CICD相关面试题
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
张贺,多年互联网行业工作经验,担任过网络工程师、系统集成工程师、LINUX系统运维工程师
个人网站:www.zhanghehe.cn
笔者微信:zhanghe15069028807,现居济南历下区
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
安全管理
安全现在已经形成一个学科,可以从多个维度切入 ,我就用从OSI七层参考模型切入
物理层安全:
物理层负责传输比特流,这一层的安全威胁比较简单,但同时也比较被人忽略,比如:
- 堡垒机的U-KEY被不法分子拿到
- 不法分子进入机房之后,直接做端口镜像,截取所有的流量
那对于物理层的安全除了相关人员平时有安全意识之外,还要依靠制度的配合,我去过很多的高校、政府、银行、医院这类单位,发现只有银行的机房管理比较严格,其它的单位的制度都不严格,很多都是做做样子,这完全可以给不法分子可乘之机。
链路层安全:
安全领域遵循木桶理论,而链路层是最短的那块木板,这一层的安全非常重要,我曾经就曾利用链路层的arp欺骗攻击过别人,这一层的安全威胁比如:
- arp欺骗
- arp泛洪
关于链路层的安全防范也比较简单,减少广播域的范围,即划分vlan;将mac与接口进行绑定,防止arp的欺骗,交换机端口安全策略保护,都能有效防止链路层的攻击。
应用层的安全:
-
DDOS攻击的的防范(买服务、硬件、脚本监测日志联动防火墙,ssh、iptables畸形报文防范、网络相关参内核参数优化,攻击后的应用)
-
应用层安全:https、nginx配置优化
网络层攻击:
网络层的攻击近年来并不常见了,在windows xp时代网络层的攻击比较常见,比如:
- ping 死,攻击者使用越大包,导致受害主机内存用光
- ip地址扫描
网络层的攻击可以通过硬件防火墙、或主机上的软件防火墙进行防御,比如如果受到包大于65535就丢弃,不处理;或从OUTPUT到INPUT的方面的icmp包都丢弃,通过iptabes可以制定别人无法ping我,但我可以ping他人的策略。
传输层安全:
最常见的传输层威胁就是ddos,为此我专门写过一篇博文,这里不过多介绍了: https://www.cnblogs.com/yizhangheka/p/12658777.html
系统安全
- ssh
- selinux
- iptables
- sudo
- 时间服务器
- 精简开机服务
- 删除不必要用户和组
- 定时清理垃圾
- 给重要配置文件加锁
- 定期hash重要的文件和命令
应用层的安全:
以nginx来举例子:
- 防盗链
- 隐藏版本号
- 更改nginx的默认运行用户
性能优化
性能优化也是要分层讨论的,不能单独地说优化系统或优化某一个应用。
物理层:
- 将服务器托管到环境配套比较好的机房(带宽、电源、链路等等)
- 使用更好的硬件,比如用华为、思科的交换机总比一些杂牌子要强多了
- 网络尽量都使用成品6类线,别小气家家还手工做水晶头,老是出问题,不结实。
链路层优化:
链路层的优化项不多,但也是有的,比如
- 比如多链路,多运营商
- 防火墙双机热备
网络层优化:
- 选项更好的路由协议,比如选项ospf,业内最优化的IGP内部网关路由协议。
- 尽量使用静态IP地址,比较稳定。
传输层优化:
- 增大TCP的初始化拥塞窗口
- 慢启动重启
- TCP快速打开
系统资源参数优化:
- 增加进程打开的的套接字的最大数量(尤其像负载均衡,一手托两家)
- 增加进程打开的文件的最大数量
- 增加用户打开的最大进程数
系统优化:
关于系统优化的内容非常多,我们在这里举几个例子:
- 进程优先级调整,比如将sshd服务优先级调整高一些,保护被ddos攻击时无法连接
- 启动内存大页,让cpu控制能更大的内存
- swap限制,当内存完全实在不够用时再用swap分区
- 增加系统内部进程之前的消息队列大小
- oom优化
详情请参考我写的另一篇博客: https://www.cnblogs.com/yizhangheka/p/12700112.html
应用层优化:
还是以nginx为例吧!
- 优化Nginx服务的worker进程个数
- 优化绑定不同的Nginx进程到不同的CPU上
- Nginx事件处理模型优化
- 调整Nginx单个进程允许的客户端最大连接数
- 配置Nginx worker进程的最大打开文件数
- 配置Nginx gzip压缩实现性能优化
tomcat的优化请参考我这篇博客: https://www.cnblogs.com/yizhangheka/p/12666753.html
CI/CD相关
谈一谈你对持续集成的理解(什么是持续集成)
为什么要用持续集成?
持续集成的实施流程?
什么是版本控制系统?
介绍一下jenkens?是什么?有什么作用?
常用的版本控制系统?git比svn好有何处?
git的基本使用?
git add
git commit
git status
git config
git branch
git是可以通过快照回退的
通过gitlib-rake gitlab:backup:create对gitlib做备份。
监控相关
zaabix相关
zabbix-server的端口?(10051)zabbix-agnet的端口(10050)
zabbix-server、zabbix-server-mysql、zabbix-web-mysql、zabbix-agent之间关系
如何自定义一个监控项?
默认zabbix-agent端是工作在被动模式的,所谓的被动模式就是等待server端过来拉取数据,而不是agent端主动向srever端推送数据。
nginx监控
如何监控nginx
通过nginx监控的性又能判断什么
redis监控
- 命中率
- 连接客户数
- 阻塞连接数
- 占用内存量
- 内存峰值
- 主从状态
- IO状态
mysql监控
关于msql的
以下几个参数是针对Innodb 存储引擎计数的:
-
Innodb_rows_read select 查询返回的行数;
-
Innodb_rows_inserted 执行Insert 操作插入的行数;
-
Innodb_rows_updated 执行update 操作更新的行数;
-
Innodb_rows_deleted 执行delete 操作删除的行数;
5.监控主从的状态
-
Slow_queries 慢查询的次数
tomcat监控
tomcat也可以有个状态页,状态页分为三个部分:jvm、http、jk
jvm: jvm比较吃内存
-
Free memory:空闲内存大小
-
Total memory:总内存大小
-
Max memory:最大内存大小
-
新生代、老年代、持久代内存内部的使用情况
-
监控堆内存使用情况
http协议:
这里的监控项与nginx类似,比如
- 当前的连接数
- 等待的用户请求
- 正在处理的请求