网传Linux运维面试题解答(二)

题目来源:http://2358205.blog.51cto.com/2348205/1688323

http://mofansheng.blog.51cto.com/8792265/1627907

大部分都自己做的,部分参考了原帖博主的答案

1、Linux开机流程

BIOS开机自检→MBR引导→加载GRUB→加载linux内核→运行init进程,读取/etc/inittab→执行/etc/rc.d/rc.sysinit脚本→执行/etc/rc.d/rc脚本,运行/etc/rc.d/rcX.d中的脚本,X表示inittab中指定的运行级别→执行/etc/rc.d/rc.local脚本→启动mingetty进程,等待用户登陆

2、TCP三次握手,四次挥手

说明:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)

Sequence number(顺序号码) Acknowledge number(确认号码)

第一次握手————建立连接时,客户端发送syn包(syn=j)到服务器,并进入syn_send状态,等待服务器确认;

第二次握手————服务器收到syn包,必须确认客户的syn(ack=j+1),同时自己也发送一个syn包(syn=k),即syn+ack包,此时服务器进入syn_recv状态;

第三次握手————客户端收到服务器的syn+ack包,向服务器发送确认包ack(ack=k+1),此包发送完毕,客户端和服务器进入established状态,完成三次握手,客户端与服务器开始传送数据。

第一次挥手————客户端发送一个FIN,用来关闭客户端到服务器的数据传送,客户端进入FIN_WAIT_1状态;

第二次挥手————服务器收到FIN后,发送一个ACK包给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务器进入CLOSE_WAIT状态;

第三次挥手————服务器发送一个FIN,用来关闭服务器到客户端的数据传送,服务器进入LAST_ACK状态;

第四次挥手————客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务器,确认序号为收到序号+1,服务器进入CLOSED状态,完成四次挥手。

3、如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0


iptables -t nat -A PREROUTING -o eth0 -d 192.168.16.1 -p tcp --dport 80 -j REDIRECT --to-ports 8080

4、什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?

NAT(Network Address Translation,网络地址转换)是将IP数据包头中的IP地址转换为另一个IP地址的过程。分为DNAT (目的网络地址转换)和SNAT(源网络地址转换)

SNAT主要是用于内网主机通过路由器或网关访问外网

DNAT将外部地址和端口的访问映射到内部地址和端口

5、包过滤防火墙与代理应用防火墙有什么区别,能列举几种相应的产品吗?

 过滤防火墙工作在网络层,它只对IP包的源地址、目标地址及相应端口进行处理,因此速度比较快,能够处理的并发连接比较多,缺点是对应用层的攻击无能为力。

 代理服务器防火墙工作在应用层,它将收到的IP包还原成高层协议的通讯数据,比如http连接信息,因此能够对基于高层协议的攻击进行拦截。缺点是处理速度比较慢,能够处理的并发数比较少。代理服务器是防火墙技术的发展方向,众多厂商都在提高处理速度的同时基于代理开发防火墙的更高级防护功能。

6、iptables是否支持time时间控制用户行为,如有请写出具体操作步骤。

iptables是支持时间控制的,以下摘抄自man iptables:

EXAMPLES. To match on weekends, use:

 -m time --weekdays Sa,Su

Or, to match (once) on a national holiday block:

 -m time --datestart 2007-12-24 --datestop 2007-12-27

Since  the stop time is actually inclusive, you would need the following stop time to not match the first second

of the new day:

 -m time --datestart 2007-01-01T17:00 --datestop 2007-01-01T23:59:59

During lunch hour:

 -m time --timestart 12:30 --timestop 13:30

The fourth Friday in the month:

 -m time --weekdays Fr --monthdays 22,23,24,25,26,27,28

7、说出你知道的几种linux/unix发行版本。

Linux:RHEL、CentOS、Fedora、SuSE、Debian、Ubuntu等

Unix:FreeBSD、Solaris、AIX、Mac OS X等

8、列出linux常见打包工具并写相应解压缩参数(至少三种)

tar  

gzip

bzip2 

9、计划每星期天早8点服务器定时发送一封内容为:test的邮件。发信人:[email protected] 收信人:[email protected],如何实现?

crontab -e

00 08 * * 7  echo "test" | /bin/mail -r [email protected] -s test [email protected] &>/dev/null

10、我们都知道,dns既采用了tcp协议,又采用了udp协议,什么时候采用tcp协议?什么时候采用udp协议?为什么要这么设计?


首先了解一下TCP与UDP传送字节的长度限制: UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。当DNS查询超过512字节时,协议的TC标志出现删除标志,这时则使用TCP发送。通常传统的UDP报文一般不会大于512字节。 

区域传送时使用TCP: 

辅域名服务器会定时(一般时3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会执行一次区域传送,进行数据同步。区域传送将使用TCP而不是UDP,因为数据同步传送的数据量比一个请求和应答的数据量要多得多,并且TCP是一种可靠的连接,保证了数据的准确性。 

域名解析时使用UDP: 

客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。虽然从理论上说,客户端也可以指定向DNS服务器查询的时候使用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。

11、一个EXT3的文件分区,当使用touch test.file命令创建一个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况,说说你的理由。

df -i 查看inode使用情况

一般是inode满了造成的

12、我们都知道FTP协议有两种工作模式,说说它们的大概的一个工作流程?

主动模式FTP:

命令连接:客户端 >1024端口 -> 服务器 21端口

数据连接:客户端 >1024端口 <- 服务器 20端口

被动模式FTP:

命令连接:客户端 >1024端口 -> 服务器 21端口

数据连接:客户端 >1024端口 -> 服务器 >1024端口

下面是主动与被动FTP优缺点的简要总结:

主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

解决办法:使用被动模式,可以把数据连接的端口固定(大于1024小于65535),在服务器端的防火墙上开放该端口

13、编写个shell脚本将当前目录下大于100K的文件转移到/tmp目录下


find .  -size +100K  xargs -I {} mv {} /tmp

14、apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?


Apache主要有两种工作模式:prefork(预派生,默认安装模式)和worker(支持混合的多线程多进程的多路处理模块,可以在编译的时候加参数--with-mpm=worker指定为worker模式)

prefork的特点:

1、prefork MPM 使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销。

2、可以防止意外的内存泄漏,但这种模式消耗的内存比较大;

3、在服务器负载下降的时候会自动减少子进程数

worker的特点: 

worker MPM 使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。但worker MPM也由不完善的地方,假如一个线程崩溃,整个进程就会连同其任何线程一起"死掉".由于线程共享内存空间,所以一个程式在运行时必须被系统识别为"每 个线程都是安全的"。

15、编写shell脚本获取本机的IP/netmask。

ifconfig | awk -F "[ :]+" ‘NR==2 {print $4}‘

16、简述DDOS攻击的原理,有没有解决办法?有,如何解决?

分布式服务拒绝攻击就是用一台主服务器来控制N台肉鸡对目标服务器进行合理的资源请求,导致服务器资源耗尽而不能进行正常的服务。

几种流行的DDOS攻击方式:SYN/ACK FLOOD攻击、TCP全连接攻击、CC攻击(百科:攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS,和伪装就叫:cc(ChallengeCollapsar)。CC主要是用来攻击页面的。)

一个简单的测试: 首先是网站如果打不开的话,可以尝试着用3389连接一下服务器看看,然后还可以用PING命令来测试,再一种方式就是用telnet来登录80端口看看,看会不会出现黑屏。如果这些方式测试都连接不上的话,那就说明受到DDOS攻击了。

然后如果除了80端口之外的其他端口连接都正常,PING命令测试也正常,但就是80端口访问不了,然后看看IIS是否正常,可以把80端口改成其他端口测试,如果可以正常访问,那就说明很可能受到CC攻击。

防御DDOS攻击:

<1>要有充足的网络带宽和稳定安全的机房:选择口碑好、服务好、安全防护好点的机房,网络带宽直接决定了能抗受攻击的能力。

<2>软硬设备的防护:硬件DDOS防火墙黑洞、冰盾都不错,软件如web服务器都有相应的ddos防护模块,iptables,做单IP的并发限制,流量限制,syn及部分攻击限制。

<3>网站架构优化,避免单点提供服务,集群,冗余,负载均衡、缓存技术的架设。

<4>服务器系统自身的优化及安全参数调配

<5>采用高性能的网络设备

17、如何查看占用80端口的进程,并清理该端口进程。

lsof -i :80

pkill 或 kill 

18、如何查看当前用户的家目录是什么?

echo $HOME

19、如果设置 umask 为 001 , 那么用户默认创建的目录和文件的权限是什么样子的?

目录:776  文件:666

20、出于安全考虑,如何实现让别人ping不通你的在线的服务器。

有多种方法

防火墙上用ACL封ICMP协议或者在服务器上使用iptables封icmp

或者在服务器上修改内核参数:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

21、怎样防止他人在服务器前通过按下 ctrl+alt+del 强行重启系统(提示,仔细看/etc/inittab)

vim /etc/init/control-alt-delete.conf 

exec /sbin/shutdown -r now "Control-Alt-Delete pressed"    这一项#号注释掉,保存退出;

在我的测试机(CentOS 6.7)默认已经关闭

22、当在对服务器进行大负荷操作的时候,你不希望现在有普通用户登录上来,你该怎么做?不能剪网线。

touch /etc/nologin

创建一个nologin文件,此文件为特殊文件,创建之后所有普通用户不能登录;系统维护结束后删除此文件,用户可以恢复登录;只限于shell登录用户,本身shell为/sbin/nologin 的用户本身就无法登录shell,不受影响;

23、你新建了一批用户,出于安全考虑,要求这些用户在第一次登录的时候 就必须要更改密码,怎么实现?


查看密码和账户过期信息:chage -l username  

将密码设置为过期,用户登陆必须要更改密码:chage -d0 username 或 passwd -e username 

24、如何把一个目录下的所有文件(不含目录)权限改为644?

find ./ ! -type d -exec chmod 644 \;

25、请实现下面这个需求:只允许使用普通账户登陆,而普通账户登录后,可以不输入密码就能sudo切换到root账户,root是不允许远程登录的。

vim /etc/ssh/sshd_config

PermitRootLogin        设置为no,禁止root远程登录

/etc/init.d/sshd reload   重新加载sshd配置文件生效

visudo,添加一行:user    ALL=(root)    NOPASSWD: /bin/su

26、 如何使文件只能写不能删除? 如何使文件不能被删除、重命名、设定链接接、写入、新增数据?

chattr +a  只能向文件中添加数据,而不能删除

chattr +i 文件不能被删除、改名、设定链接关系,同时不能写入或新增内容

27、用ls 查看目录或者文件时,第二列的数值表示什么意思?如果一个目录的这列的值为3,那么这个3是如何得到的?

第二列的数值表示硬链接数,默认情况下,新建一个目录,该目录就会包含一个指向自身的目录“.”和指向其上一级目录的父目录“..”,该数值是2,若分别在新建的目录里建一个文件和一个目录,那么再次查询时,就会发现该数值变为了3,由此类推..

时间: 2024-10-12 13:09:16

网传Linux运维面试题解答(二)的相关文章

运维屌丝回答网传Linux运维面试题(二)

继续屌丝回答网传第二面试题 上海某证券公司: Linux开机流程 答:过程如下: <1>开启电源,加载BIOS----当你按下电源按钮时,服务器会检测系统外围关键设备(如:CPU.内存.显卡.I/O.键盘鼠标等)是否正常,加载BIOS信息,因为BIOS中包含了CPU的相关信息,设备启动顺序信息,硬盘信息,内存信息,时钟信息等等,加载之后,服务器知道应该去读取哪个硬件设备了. <2>读取MBR----硬盘上第0磁道第一个扇区被称为MBR(Master Boot Record,主引导记

网传Linux运维面试题解答(三)

题目来源:http://2358205.blog.51cto.com/2348205/1688449 大部分都自己做的,部分参考了原帖博主的答案 1.DNS使用的端口号和协议,简单描述一下DNS正向解析和反向解析的工作原理和作用还有应用场景? DNS使用 DNS使用的端口号是53,封装协议udp.正向解析是指域名到IP地址的解析过程.反向解析是从IP地址到域名的解析过程,它的作用就是通过查询IP地址的PTR记录来得到该IP地址指向的域名.PTR (Pointer Record),指针记录,是电子

网传Linux运维面试题解答(四)

题目来源:http://2358205.blog.51cto.com/2348205/1688557 大部分都自己做的,部分参考了原帖博主的答案 1.如何检测某个端口所占用的进程 lsof -i :port 2.对于linux主机的cpu负载使用,什么情况下user的比例升高,什么情况下system的比例升高,请联系实际举例. 使用top命令可以查看cpu的负载使用 -us:用户进程消耗的CPU时间百分比us的值比较高时,说明用户进程消耗的CPU资源多,如果长期超50%的使用,那么我们就该考虑优

网传Linux运维面试题解答(一)

题目转载自:http://2358205.blog.51cto.com/2348205/1687708 大部分都自己做的,部分参考了原帖博主的答案 1.LINUX系统软件安装和卸载的常见方法 ①yum方式: yum install   安装yum remove 卸载(不推荐此种方式,会将待卸载的软件包一并卸载掉) ②rpm方式 rpm -i  安装rpm -e 卸载(忽略依赖加上--nodeps) ③编译安装的卸载 cd命令进入编译后的软件目录,即安装时的目录,执行make uninstall命

运维屌丝回答网传Linux运维面试题

前段时间网上流传有很多Linux运维的面试题,豪鹫也看了一些,但很多都没有附答案,最近工作比较空闲,利用这三年的运维经验,做做题目,当是巩固一下知识,如答案有误或者各位有更好的答案,欢迎点评.这里当然有小部分答案是网上整理过来的, 请原作者见谅,此作为引用. 以下是面试题,蓝色内容为豪鹫的回答:(未完待续--)  上海实战面试经历----Linux 系统/运维面试总结 同学在上海某网络公司面试题: 1.LINUX系统软件安装和卸载的常见方法 答:A.rpm包卸载:rpm -e XXX.rpm  

运维屌丝回答网传Linux运维面试题(四)

淘米和上海埃富梦科技,笔试题 后续将整理出豪鹫亲身经历面试过的公司运维技术面的题目(非笔试题目,技术面运维经理的提问),并也附上答案. 敬请期待..... 1.如何检测某个端口所占用的进程 答:如检测3306端口所占用的进程:使用命令: [[email protected] ~]# lsof -i:3306 COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME mysqld  2452 mysql   10u  IPv4  13315

Linux运维面试题及解答

Linux运维面试题及解答 1.创建一个10G的文件系统,类型为ext4,要求开机可自动挂载至单独数据/data目录: 查看电脑现有磁盘及分区情况,命令:[[email protected] ~]# df –lh 1.1大家都知道linux系统分区都是以文件的形式存在的,当我们安装完一台linux系统的设备后,设备的磁盘分区可能已经存在,所以我们首先要确定的是磁盘现有分区,在哪个分区下有满足我们题目要求的容量. 查看电脑现有磁盘及分区情况:[[email protected] ~]# df –l

简单的Linux运维面试题,

前几天朋友去面试,拿到的一份Linux运维面试题,不太全,数据库方面的没有弄到,有些没有答完,欢迎大神补充 1.写出至少四种Linux发行版本 Redhat.centos.suse.ubuntu.debian.gentoo.slackware.fedora.arch Linux Suse是基于Slackware的二次发行版 Ubuntu是基于debian的二次发行版 Fedora属于红帽系列 Arch linux是轻量级的,是独立的发行版,没有基于其他版本 2.分别写出ftp.vpn.dns.s

linux运维面试题(1)

一.有文件file1 1.查询file1 里面空行的所在行号 awk ?{if($0~/^$/)print NR}' file or grep -n ^$ file |awk ?BEGIN{FS=|:|}{print $1}' 2.查询file1 以abc 结尾的行 grep abc$ file1 3.打印出file1 文件第1 到第3 行 sed -n '1,3p' file1 head -3 file1 二.如何将本地80 端口的请求转发到8080 端口当前主机IP 为192.168.2.