Iptables防火墙面试题

第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功能一般企业工作场景
.用于做企业路由(zebra)或网关(iptables),共享上网(postrouting)
.做内部外部IP地址一对一映射(dmz),硬件防火墙映射IP到内部服务器,ftp服务(prerouting)
.web,单个端口的映射。直接映射80端口(prerouting)
这个表定义了三个链(chains),nat功能就相当于网络的acl控制。和网络交换机类似
OUTPUT:和主机发出去的数据包有关,改变主机发出数据包的目标地址。
PREROUTING:在数据包到达防火墙时进行路由判断之前执行的规则。作用时改变数据包的目的地址,目的端口等。
POSTROUTING:在数据包离开防火墙时进行路由判断之后执行的规则,作用改变数据包的源地址,源端口等。。例如:笔记本和虚拟机都是192.168.1./,就是出网的时候被我们企业路由器把源地址改成了公网地址了。生产应用:局域网共享上网。
另外两个,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  -j DROP

1.7 如何使在命令行执行的 iptables 规则永久生效?

.          /etc/init.d/iptables save
. 写入配置文件/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  -j DNAT --to-destination 172.16.1.17:

1.9 实现 172.16.1.0/24 段所有主机通过 10.0.0.8 外网 IP 共享上网。

iptables -t nat -A POSTROUTING -s 172.16.1.0/ -o eth0 -j SNAT --to-source 10.0.0.8

1.10 描述 tcp 3 次握手及四次断开过程?

1.10.1 三次握手

.  由主机A发送建立TCP连接的请求报文,其中报文中包含seq序列号,是由发送端随机生成的,并且还将报文中SYN字段置为1,表示需要建立TCP连接
. 主机B会回复A发送的TCP连接请求报文,其中包含seq序列号,是由回复端随机生成的,并且将回复报文的SYN字段置1,而会产生ACK字段,ACK字段数值是在A发过来的seq序列号基础上加1进行回复,以便A收到信息时,知晓自已的TCP建立请求已得到了验证
. A端收到B端发送的TCP建立验证请求后,会使自已的序列号加1表示,并且再次回复ACK验证请求,在B端发送过来的seq基础上加1,进行回复

1.10.2 四次挥手

.  主机A发送断开TCP连接请求的报文,其中报文中包含seq序列号,是由发送端随机生成的,并且还将报文中FIN字段置为1,表示需要断开TCP连接
. 主机B会回复A发送的TCP断开请求报文,其中包含seq序列号,是则回复端随机生成的,而且会产生ACK字段,ACK字段数值,是在A发过来的seq序列号基础上加1进行回复,以便A收到信息时,知晓自己的TCP断开请求已得到了验证
. 主机B在回复完A的TCP断开请求后,不会马上就进行TCP连接的断开,主机B会先确保断开前,所有传输到A的数据是否已经传输完毕,一旦确认传输数据完毕就会将回复报文的FIN字段置1,并产生随机seq序列号。
. 主机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 -N syn-flood            # 自定义链
iptables -A INPUT -i eth0 -syn -j syn-flood #
iptables -A syn-flood -m limit -limit /s -limit-burst -j RETURN #
iptables -A syn-flood -j DROP

1.14 企业 WEB 应用较大并发场景如何优化 iptables?

1、调整内核sysctl.conf

net.nf_conntrack_max =
net.netfilter.nf_conntrack_max =
net.netfilter.nf_conntrack_tcp_timeout_established =
net.netfilter.nf_conntrack_tcp_timeout_time_wait =
net.netfilter.nf_conntrack_tcp_timeout_close_wait =
net.netfilter.nf_conntrack_tcp_timeout_fin_wait =

2、LB启用防火墙,在web上开启防火墙

3、购买硬件防火墙

第2章 (二)企业运维面试题:

2.1 写一个防火墙配置脚本,只允许远程主机访问本机的 80 端口(奇虎 360 面试题)

iptables -A INPUT -p tcp --dport  -j ACCEPT         #允许80端口访问
iptables -P INPUT DROP #默认拒绝所有服务、端口访问

2.2 请描述如何配置一个 linux 上网网关?

iptables -t nat -A POSTROUTING -o eth0 -s 172.16.1.0/ -j SNAT --to-source 10.0.0.8

2.3 请描述如何配置一个专业的安全的 WEB 服务器主机防火墙?

#!/bin/bash
IPT=/sbin/iptables #Remove any existing rules
$IPT -F
$IPT -X
$IPT -Z #setting default firewall policy
$IPT --policy OUTPUT ACCEPT
$IPT --policy FORWARD DROP
$IPT -P INPUT DROP #setting for loopback interface
$IPT -A INPUT -i lo -j ACCEPT #setting access rules
#one,ip access rules,allow all the ips of
$IPT -A INPUT -s 202.81.17.0/ -p all -j ACCEPT
$IPT -A INPUT -s 202.81.18.0/ -p all -j ACCEPT
$IPT -A INPUT -s 124.43.62.96/ -p all -j ACCEPT
$IPT -A INPUT -s 192.168.1.0/ -p all -j ACCEPT
$IPT -A INPUT -s 10.0.0.0/ -p all -j ACCEPT #icmp
$IPT -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT #others RELATED
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT /etc/init.d/iptables save
#iptables-save >/etc/sysconfig/iptables

2.4 企业实战题 6:请用至少两种方法实现!

写一个脚本解决 DOS 攻击生产案例
提示:根据 web 日志或者或者网络连接数,监控当某个 I-P 并发连接数或者短时内 PV 达到
,即调用防火墙命令封掉对应的 IP,监控频率每隔 分钟。防火墙命令为: iptables -A
INPUT -s 10.0.1.10 -j DROP。

2.5 /var/log/messages 日志出现 kernel: nf_conntrack: table full, dropping packet.请问是什么原因导致的?如何解决

1、调整内核sysctl.conf

net.nf_conntrack_max =
net.netfilter.nf_conntrack_max =
net.netfilter.nf_conntrack_tcp_timeout_established =
net.netfilter.nf_conntrack_tcp_timeout_time_wait =
net.netfilter.nf_conntrack_tcp_timeout_close_wait =
net.netfilter.nf_conntrack_tcp_timeout_fin_wait =

sysctl -p 生效

2.6 实现共享上网

要求:

  1. 实现PC-D可以经过linux网关B上网,上因特网浏览网页等。 

iptables -t nat -A POSTROUTING -s 172.16.1.0/ -o eth0 -j SNAT --to-source 10.0.0.8
iptables -t nat -A POSTROUTING -s 172.16.1.0/ -j MASQUERADE ç伪装。

2.实现外部用户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  -j DNAT --to-destination 172.16.1.61:

请分别给出命令完整实现细节,(操作目标机Linux网关B)?

3.假如1,2都配好了,但是问题处在内网普通PC-D和内部server-C,没有配置正确的网关,如何通过tcpdump来排查。

windows:ping 10.0.0.81
内网机器:tcpdump|grep -i icmp(两台机器上分别监测)

4.如何保证内部普通PC-D能够通过访问10.0.0.8:80也访问内部Server-C

Iptables防火墙面试题的更多相关文章

  1. iptable防火墙面试题

    第1章 (一)基础口试题 1.1 详述 iptales 工作流程以及规则过滤顺序? 1.防火墙是一层层过滤的.实际是按照配置规则的顺序从上到下,从前到后进行过滤的. 2.如果匹配上了规则,即明确表明是 ...

  2. 建置 POSTFIX 服务器

    建置 POSTFIX 服务器 postfix 是除了 sendmail 以外 ,最被广泛采用的 Linux 邮件服务器,一般使用的观感不外乎两点: 一.安全:垃圾信过滤机制较聪明,就算什么都没设定,也 ...

  3. debian防火墙firestarter

    Firestarter是一个非常好用的防火墙图形化配置工具,作者和开发者是芬兰人. 首先肯定的说Firestarter防火墙是一款非常优秀的基于GUI图形用户界面下的,完全免费的自由软件,它为中小型L ...

  4. CenOS7.1安装VNC——让win7远程桌面linux

    参考:http://wic.xingning.gov.cn/blog/29 https://linux.cn/article-5335-1.html 1.检查是否安装VNC, rpm -q tiger ...

  5. Win10使用VNC连接Centos7远程桌面

    一.安装VNC Viewer 1.首先win10下载安装VNC VIEWER 或者直接下载绿色版 2.linux系统安装vnc: 检查linux是否安装vnc:rpm -q tigervnc tige ...

  6. Redis Cluster(Redis集群)的搭建和使用

    Reids集群准备知识: (1)Redis集群介绍 Redis 集群是一个提供在多个Redis间节点间共享数据的程序集. Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据 ...

  7. CentOS7.x下安装VNC

    1.检查是否安装VNC rpm -q tigervnc tigervnc-server 2.安装X-Window yum check-update yum groupinstall "X W ...

  8. 邁向 RHCE 之路 (Day26) - Apache 網頁伺服器

    本篇將在 SELinux 安全機制及 IPTables 防火牆開啟的環境下實作,分別實作簡單網頁服務及虛擬主機 Virtual Host 設定,最後則是實作網頁中需要保護網頁時可以透過 .htacce ...

  9. lvs+keepalived 高可用及负载均衡

    一.环境准备 VIP:10.18.43.30 dr1:10.18.43.10 dr2:10.18.43.20 web1:10.18.43.13 web2:10.18.43.14 结构图 (一).预处理 ...

随机推荐

  1. 修改登陆织梦后台的“DedeCMS 提示信息”

    修改方法: 在dedecms程序的include目录中找到文件common.func.php并对其进行编辑,把其中的“DedeCMS 提示信息”修改为自己想要的内容提示: 在dedecms程序的默认管 ...

  2. typeof 与 instanceof 区别

    typeof typeof 是一元运算符,返回值是字符串,且只能是number,string,boolean,object,function,undefined typeof用来判断一个值是否存在 i ...

  3. Intellj IDEA光标替insert状态,back键无法删除内容

    Intellj IDEA光标为insert状态,无法删除内容导入项目后,发现打开java文件的光标是win系统下按了insert键后的那种宽的光标,并且还无法删除内容,且按删除(delete)键也只见 ...

  4. 800元组装一台3D打印机全教程流程

    我最近正好要组装一台新的reprap的kossel delta型开源3d打印机,这台机器性价比非常高,具有速度快,静音,三臂并联结构,扩展性强,便宜的特点.图纸啥的都有,只是用到mega2560和ra ...

  5. python发布IIS

    参考文档 https://segmentfault.com/a/1190000008909201 http://blog.51cto.com/anngle/1922041 https://www.cn ...

  6. 【oracle案例】ORA-01102: cannot mount database in EXCLUSIVE mode

    ORA-01102: cannot mount database in EXCLUSIVE mode 今天在fedora上安装完10g后,测试数据库是否安装成功.STARTUP数据库时,发生如下错误: ...

  7. 九度OJ 1049:字符串去特定字符 (基础题)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8499 解决:3860 题目描述: 输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果. 输入: 测试数据有多组,每组输入字符串s和 ...

  8. 如何获取 Greenplum 中用户最后登录时间和登录频率

    这几天搞系统迁移,老板突然想知道给客户开的那么多用户当中,哪些还在用,哪些已经不用了.我们的数据库是 Greenplum,而且还是一直没有升级的老版本,Google 了一下没有发现特别好的查看用户登录 ...

  9. 用 Apache POI 读取 XLSX 数据

    最近因为项目的原因,需要从一些 Microsoft Office Excel 文件读取数据并加载到数据库. Google了一下方法,发现其实可以用的 Java 第三方库很多,最著名的是 Apache ...

  10. 我的Android进阶之旅------>如何在多个LinearLayout中添加分隔线

    如果要适合于所有的Android版本,可以在多个LinearLayout放置用于显示分隔线的View.例如,放一个ImageView组件,然后将其背景设为分隔线的颜色或图像,分隔线View的定义代码如 ...