iptable防火墙面试题
第1章 (一)基础口试题
1.1 详述 iptales 工作流程以及规则过滤顺序?
1.防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
2.如果匹配上了规则,即明确表明是阻止还是通过,此时数据包就不能向下匹配新规则了。
3.如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
4.防火墙的默认规则是对应链的所有的规则执行完才会执行的,(最后执行的规则)
1.2 iptables 有几个表以及每个表有几个链?
filter:INPUT,OUTPUT,FORWARD
NAT :POSTROUTING,PREROUTING,OUTPUT
mangle:INPUT,OUTPUT,FORWARD,POSTROUTING,PREROUTING
raw : PREROUTING, OUTPUT
1.3 iptables 的几个表以及每个表对应链的作用,对应企业应用场景?
#####filter:
强调:主要和主机自身有关,真正负责主机防火墙功能的(过滤流入流出主机的数据包。)filter表iptables默认使用的表。这个表轻易了三个链(chains)
企业工作场景:主机防火墙
INPUT:负责过滤所有目标地址是本机地址的数据包,通俗的讲,就是过滤进入主机的数据包
FORWARD:负责转发流经主机的数据包。起转发的作用,和nat关系很大,
OUTPUT:处理所有源地址是本机地址的数据包,通俗的讲,就是处理从主机发出去的数据包
强调:对于filter表的控制是实现本机防火墙功能的重要手段,特别是对INPUT链的控制
#####nat表:
负责网络地址转换,即来源与目的ip地址的port的转换,应用:和主机本身无关。一般用于局域网共享上网或特殊的端口转换服务相关。
NAT功能一般企业工作场景
1.用于做企业路由(zebra)或网关(iptables),共享上网(postrouting)
2.做内部外部IP地址一对一映射(dmz),硬件防火墙映射IP到内部服务器,ftp服务(prerouting)
3.web,单个端口的映射。直接映射80端口(prerouting)
这个表定义了三个链(chains),nat功能就相当于网络的acl控制。和网络交换机类似
OUTPUT:和主机发出去的数据包有关,改变主机发出数据包的目标地址。
PREROUTING:在数据包到达防火墙时进行路由判断之前执行的规则。作用时改变数据包的目的地址,目的端口等。
POSTROUTING:在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址,源端口等。。例如:笔记本和虚拟机都是192.168.1.0/24,就是出网的时候被我们企业路由器把源地址改成了公网地址了。生产应用:局域网共享上网。
另外两个,raw和mangle在工作不常用,不做过多的解释了
1.4 画图讲解 iptables 包过滤经过不同表和链简易流程图并阐述。
1.5 请写出查看 iptables 当前所有规则的命令。
iptables -nL [--line-num ]
【】表示可选项
1.6 禁止来自 10.0.0.188 ip 地址访问 80 端口的请求
iptables -I INPUT-p tcp -s 10.0.0.188 --dport 80 -j DROP
1.7 如何使在命令行执行的 iptables 规则永久生效?
1. /etc/init.d/iptables save
2. 写入配置文件/etc/sysconfig/iptables
并重启服务 /etc/init.d/iptables reload
1.8 实现把访问 10.0.0.8:80 的请求转到172.16.1.17:80
iptables -t nat-A PREROUTING -d 10.0.0.8 -p tcp --dport 80 -j DNAT --to-destination172.16.1.17:80
1.9 实现 172.16.1.0/24 段所有主机通过 10.0.0.8外网 IP 共享上网。
iptables -t nat-A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.8
1.10 描述 tcp 3 次握手及四次断开过程?
1.10.1 三次握手
1. 由主机A发送建立TCP连接的请求报文,其中报文中包含seq序列号,是由发送端随机生成的,并且还将报文中SYN字段置为1,表示需要建立TCP连接
2. 主机B会回复A发送的TCP连接请求报文,其中包含seq序列号,是由回复端随机生成的,并且将回复报文的SYN字段置1,而会产生ACK字段,ACK字段数值是在A发过来的seq序列号基础上加1进行回复,以便A收到信息时,知晓自已的TCP建立请求已得到了验证
3. A端收到B端发送的TCP建立验证请求后,会使自已的序列号加1表示,并且再次回复ACK验证请求,在B端发送过来的seq基础上加1,进行回复
1.10.2 四次挥手
1. 主机A发送断开TCP连接请求的报文,其中报文中包含seq序列号,是由发送端随机生成的,并且还将报文中FIN字段置为1,表示需要断开TCP连接
2. 主机B会回复A发送的TCP断开请求报文,其中包含seq序列号,是则回复端随机生成的,而且会产生ACK字段,ACK字段数值,是在A发过来的seq序列号基础上加1进行回复,以便A收到信息时,知晓自己的TCP断开请求已得到了验证
3. 主机B在回复完A的TCP断开请求后,不会马上就进行TCP连接的断开,主机B会先确保断开前,所有传输到A的数据是否已经传输完毕,一旦确认传输数据完毕就会将回复报文的FIN字段置1,并产生随机seq序列号。
4. 主机A收到主机B的TCP断开请求后,会回复主机B的断开请求,包含随机生成的seq字段和ack字段,ack字段会在主机B的TCP点开请求的seq基础上加1,从而完成主机B请求的验证回复。
1.11 详细描述 HTTP 工作原理?
用户访问网站流程
三次握手
请求报文
响应报文
四次挥手
1.12 请描述 iptables 的常见生产应用场景。
主机防火墙(filter表的INPUT链)
局域网共享上网(nat表的POSTROUTING链),半个路由器,NAT功能
端口及IP(一对一)映射(nat表的PRETOUTING链),硬件防火墙的NAT功能。
1.13 请描述下面 iptables 命令的作用------>自定义链
iptables -Nsyn-flood
iptables -A INPUT-i eth0 -syn -j syn-flood
iptables -Asyn-flood -m limit -limit 5000/s -limit-burst 200 -j RETURN
iptables -Asyn-flood -j DROP
iptables -Nsyn-flood # 自定义链
iptables -A INPUT-i eth0 -syn -j syn-flood #
iptables -Asyn-flood -m limit -limit 5000/s -limit-burst 200 -j RETURN #
iptables -Asyn-flood -j DROP
1.14 企业 WEB 应用较大并发场景如何优化 iptables?
1、调整内核sysctl.conf
net.nf_conntrack_max= 25000000
net.netfilter.nf_conntrack_max= 25000000
net.netfilter.nf_conntrack_tcp_timeout_established= 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait= 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait= 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait= 120
2、LB启用防火墙,在web上开启防火墙
3、购买硬件防火墙
第2章 (二)企业运维面试题:
2.1 写一个防火墙配置脚本,只允许远程主机访问本机的 80 端口(奇虎 360 面试题)
iptables -A INPUT-p tcp --dport 80 -j ACCEPT #允许80端口访问
iptables -P INPUTDROP #默认拒绝所有服务、端口访问
2.2 请描述如何配置一个 linux 上网网关?
iptables -t nat-A POSTROUTING -o eth0 -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.8
2.3 请描述如何配置一个专业的安全的 WEB 服务器主机防火墙?
#!/bin/bash
IPT=/sbin/iptables
#Remove anyexisting rules
$IPT -F
$IPT -X
$IPT -Z
#setting defaultfirewall policy
$IPT --policyOUTPUT ACCEPT
$IPT --policyFORWARD DROP
$IPT -P INPUTDROP
#setting forloopback interface
$IPT -A INPUT -ilo -j ACCEPT
#setting accessrules
#one,ip accessrules,allow all the ips of
$IPT -A INPUT -s202.81.17.0/24 -p all -j ACCEPT
$IPT -A INPUT -s202.81.18.0/24 -p all -j ACCEPT
$IPT -A INPUT -s124.43.62.96/27 -p all -j ACCEPT
$IPT -A INPUT -s192.168.1.0/24 -p all -j ACCEPT
$IPT -A INPUT -s10.0.0.0/24 -p all -j ACCEPT
#icmp
$IPT -A INPUT -picmp -m icmp --icmp-type any -j ACCEPT
#others RELATED
$IPT -AINPUT -m state --stateESTABLISHED,RELATED -j ACCEPT
/etc/init.d/iptablessave
#iptables-save>/etc/sysconfig/iptables
2.4 企业实战题 6:请用至少两种方法实现!
写一个脚本解决 DOS 攻击生产案例
提示:根据 web 日志或者或者网络连接数,监控当某个 I-P 并发连接数或者短时内 PV 达到
100,即调用防火墙命令封掉对应的 IP,监控频率每隔 3 分钟。防火墙命令为: iptables -A
INPUT -s10.0.1.10 -j DROP。
2.5/var/log/messages 日志出现 kernel:nf_conntrack: table full, dropping packet.请问是什么原因导致的?如何解决
1、调整内核sysctl.conf
net.nf_conntrack_max= 25000000
net.netfilter.nf_conntrack_max= 25000000
net.netfilter.nf_conntrack_tcp_timeout_established= 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait= 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait= 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait= 120
sysctl -p 生效
2.6 实现共享上网
要求:
实现PC-D可以经过linux网关B上网,上因特网浏览网页等。
iptables -t nat -A POSTROUTING -s172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.8
iptables -t nat -A POSTROUTING -s172.16.1.0/24 -j MASQUERADE ç伪装。
实现外部用户A通过访问Linux网关B:10.0.0.8 即可以访问到内部 Server 172.16.1.51:80提供的web服务。
iptables -t nat -A PREROUTING -d 10.0.0.8-p tcp --dport 800 -j DNAT --to-destination 172.16.1.61:80
请分别给出命令完整实现细节,(操作目标机Linux网关B)?
假如1,2都配好了,但是问题处在内网普通PC-D和内部server-C,没有配置正确的网关,如何通过tcpdump来排查。
windows:ping 10.0.0.81
内网机器:tcpdump|grep -i icmp(两台机器上分别监测)
iptable防火墙面试题的更多相关文章
- Iptables防火墙面试题
Iptables防火墙面试题 第1章 (一)基础口试题 1.1 详述 iptales 工作流程以及规则过滤顺序? 1.防火墙是一层层过滤的.实际是按照配置规则的顺序从上到下,从前到后进行过滤的. 2. ...
- Linux(Centos7)下搭建SVN服务器 (转载)
系统环境:centos7.2 第一步:通过yum命令安装svnserve,命令如下: yum -y install subversion 此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停 ...
- Linux(Centos7)下搭建SVN服务器
操作系统: CentOS 7.6 64位 第一步:通过yum命令安装svnserve,命令如下: 检测svn是否安装: rpm -qa subversion #检查现有版本,如果输入命令后没有提示的话 ...
- SVN部署(基于Linux)
第一步:通过yum命令安装svnserve,命令如下: yum -y install subversion 此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停止命令运行 若需查看svn安装 ...
- 【转】【Centos】Linux(Centos7)下搭建SVN服务器
系统环境:centos7.2 第一步:通过yum命令安装svnserve,命令如下: yum -y install subversion 此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停 ...
- SVN 部署(基于 Linux)
1.通过 yum 命令安装 svnserve,命令如下: # 此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停止命令运行 yum -y install subversion # 若需查看 ...
- linux运维工程师面试题收集
面试必考 mysql5和mysql6 有什么区别 mysql-server-5.5:默认引擎改为Innodb,提高了性能和扩展性,提高实用性(中继日志自动恢复) mysql-server-5.6:In ...
- 39条常见的Linux系统简单面试题
39条常见的Linux系统简单面试题 本文主要分享39条常见的Linux系统简单面试题,其中包括如何看当前Linux系统有几颗物理CPU和每颗CPU的核数.如何实时查看网卡流量为多少等等,希望对你有所 ...
- 2019年Spring Boot面试都问了什么?快看看这22道面试题!
Spring Boot 面试题 1.什么是 Spring Boot? 2.Spring Boot 有哪些优点? 3.什么是 JavaConfig? 4.如何重新加载 Spring Boot 上的更改, ...
随机推荐
- python 中NumPy和Pandas工具包中的函数使用笔记(方便自己查找)
二.常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数据进行快速运算的标准 ...
- Qt 静态编译后的exe太大, 能够这样压缩.
1. 下载PECompact 下载地址:http://download.csdn.net/download/sniper_bing/7669247 , 不行大家就去baidu搜索下载就能够了这个是绿 ...
- Retrofit学习笔记(一)
github上的介绍,简单明了 Type-safe HTTP client for Android and Java by Square, Inc. http://square.github.io/r ...
- log4j分级别打印和如何配置多个Logger
log4j.rootLogger=dubug,info,warn,error 最关键的是log4j.appender.[level].threshold=[level] 这个是日志分级别打印的最关 ...
- 《从零开始学Swift》学习笔记(Day 40)——析构函数
原创文章,欢迎转载.转载请注明:关东升的博客 与构造过程相反,实例最后释放的时候,需要清除一些资源,这个过程就是析构过程.在析构过程中也会调用一种特殊的方法deinit,称为析构函数.析构函数dein ...
- JAVA的Hashtable在遍历时的迭代器线程问题
这篇博客主要讲什么 Hashtable及其内部类的部分源码分析 Hashtable在遍历时的java.util.ConcurrentModificationException异常的来由和解决 单机在内 ...
- 整理前端css/js/jq常见问题及解决方法(1)
1. 兼容ie8圆角的解决方法:下载ie-css3.htc文件在css中加入behavior:url(ie-css3.htc);z-index:3; position:relative 即可 2. 去 ...
- 使用QtConcurrent编写多线程程序(也可以阻塞)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Amnes1a/article/details/66470751Qt在其QtConcurrent命名空 ...
- TCustomControl绘制自己和图形子控件共四步,TWinControl关键属性方法速记
TCustomControl = class(TWinControl) private FCanvas: TCanvas; procedure WMPaint(var Message: TWMPain ...
- Python2 socket 多线程并发 ThreadingTCPServer Demo
# -*- coding:utf-8 -*- from SocketServer import TCPServer, StreamRequestHandler import traceback cla ...