1. 详述iptales工作流程以及规则过滤顺序?

iptables采用数据包过滤机制工作的,他会对请求的数据包的包头数据进行分析,并根据预先设定的规则决定是否可以进入主机.
过滤顺序是层层过滤,从上到下,从前到后进行过滤.
只要匹配上就不再往下进行匹配

  1. iptables有几个表以及每个表有几个链?
    4个表
    5个链

  2. iptables的几个表以及每个表对应链的作用,对应企业应用场景?
    3个表
    Filter表 真正的防火墙功能
    Nat表 负责数据包改写,网关共享,端口映射
    Mangle表 路由相关,用的不多
    5个链
    INPUT 过滤进入主机的数据包
    FORWARD 负责转发流经主机的数据包
    OUTPUT 处理从主机发出去的数据包
    PREROUTING 数据包到达防火墙时进行路由判断之前执行的规则,适合的工作场景是端口映射
    POSTROUTING 数据包离开防火墙时进行路由判断之后执行的规则,适合的工作场景是共享上网

  3. 请写出查看iptables当前所有规则的命令。
    iptables -nL
    iptables -nL -t nat
    iptables -nL -t mangle

  4. 禁止来自10.0.0.188 ip地址访问80端口的请求
    ipttables -A INPUT -p tcp -s 10.0.0.188 --dport 80 -j DROP

  5. 如何使在命令行执行的iptables规则永久生效?
    /etc/init.d/iptables save
    iptables-save >/etc/sysconfig/iptables

  6. 实现把访问10.0.0.5:9000的请求转到172.16.1.8:80
    iptables -t nat -A PREROUTING -d 10.0.0.5 -p tcp --dport 9000 -j DNAT --to-destination 172.16.1.8:80

  7. 实现172.16.1.0/24段所有主机通过124.32.54.26外网IP共享上网。
    iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.8

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

三次握手:
第一次握手:建立连接时,客户端发送SYN(seq=x)包到服务器,并进入SYN_SENT状态,等待服务器的确认.SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即发送SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到SYN+ACK包,向服务器发送ACK(ack=y+1)包,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.
完成三次握手,客户端与服务器开始传送数据

四次挥手:
tcp/ip协议的四次断开的过程
注:挥手动作可由客户端或服务器任意一方发起。
 第一次挥手:客户端发送FIN+ACK包(序号为seq=a,确认序号ack=b)给服务端,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1状态.
 第二次挥手:服务端收到FIN+ACK包后,发送ACK包给客户端进行确认,服务端进入CLOSE_WAIT状态.客户端收到ACK包后进入FIN_WAIT_2状态.到这里,关闭一个单向通道.
 第三次挥手:服务端发送FIN+ACK包给客户端,服务端进入LAST_ACK状态.
 第四次挥手:客户端收到FIN+ACK包后,发送ACK包给服务端进行确认,客户端进入TIME_WAIT状态,在等待30秒(可修改)后进入CLOSED状态.服务端收到ACK包后进入CLOSED状态,关闭另一个单向通道.

  1. 请描述iptables的常见生产应用场景。

1) 局域网共享上网(适合做企业内部局域网上网网关,以及IDC机房内网的上网网关)(nat POSTROUTING)
2) 服务器防火墙功能(适合IDC机房具有外网IP的服务器)(主要是filter INPUT的控制)
3) 把外部IP及端口映射到局域网内部(可以一对一IP映射,也可以针对某一端口映射).也可能是IDC把网站的外网VIP及网站端口映射到负载均衡器上(硬件防火墙).(nat PREROUTING)
4)办公路由器+网关功能(zebra路由+iptables过滤及NAT+squid正向透明代理80+ntop/iftop/iptraf流量查看+tc流量控制限速)
5)邮件的网关

  1. 请描述下面iptables命令的作用

iptables -N syn-flood
iptables -A INPUT -i eth0 -syn -j syn-flood
iptables -A syn-flood -m limit -limit 5000/s -limit-burst 200 -j RETURN
iptables -A syn-flood -j DROP

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

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

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

iptables -A INPUT --dport 80 -j ACCEPT
iptables -P INPUT DROP

  1. 请描述如何配置一个linux上网网关?
    route -net 172.16.1.0/24 gw 192.168.1.1

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

#首先设置允许ssh连接
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -p tcp -s 10.0.0.0/24 --dport 22 -j ACCEPT
iptables -P INPUT DROP
iptables -nL
#设置允许本机lo通信规则
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#修改默认规则
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#开启信任网段
iptables -A INPUT -s 124.43.62.96/27 -p all -j ACCEPT       <---办公室固定IP段
iptables -A INPUT -s 192.168.1.0/24 -p all -j ACCEPT        <---IDC机房的内网网段
iptables -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT           <---其他机房的内网网段
iptables -A INPUT -s 203.83.24.0/24 -p all -j ACCEPT        <---IDC机房的外网网段
iptables -A INPUT -s 201.82.34.0/24 -p all -j ACCEPT        <---其他IDC机房的外网网段#允许业务服务端口对外访问(允许http服务无条件通过)
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
#允许icmp类型协议通过
iptables -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
提示:如果不想开,就不执行此命令
如果对内开,对外不开就用下面的方式
iptables -A INPUT -p icmp -s 10.0.0.0/24 -m icmp --icmp-type any -j ACCEPT
#允许关联的状态包通过(web服务不要使用FTP服务)
iptables -A INPUT -m stste --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
##查看最终结果
[root@nginx ~]# iptables -nL
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  10.0.0.0/24          0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  124.43.62.96/27      0.0.0.0/0
ACCEPT     all  --  192.168.1.0/24       0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
ACCEPT     icmp --  10.0.0.0/24          0.0.0.0/0           icmp type 255 Chain FORWARD (policy DROP)
target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
#将iptables临时配置保存为配置文件的方法
[root@nginx ~]# /etc/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
  1. 企业实战题6:请用至少两种方法实现!

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

脚本一:

[root@nginx~]# cat drop_ip3.sh
#!/bin/bash
. /etc/init.d/functions
conut=10 #访问次数的阀值,超过10次就禁止掉这个IP
Path=/server/scripts/access.log
function ipt(){ #iptables 的设置awk  '{print $1}'$Path|sort|uniq -c|sort -rn >/tmp/tmp.log #统计IP访问次数exec < /tmp/tmp.logwhile read linedoip=echo $line|awk '{print $2}'if [ echo $line|awk '{print $1}' -ge $conut -a iptables -L -n|grep "$ip"|wc -l -lt 1 ]#如果IP访问次数大于等于10并且在iptables禁止列表里没有这个IP。theniptables -I INPUT -s $ip -j DROP#把这个IP写进iptables禁止列表里RETVAL=$?if [ $RETVAL -eq 0 ]#如果上一条命令执行没有出错thenaction "iptables -I INPUT -s $ip -j DROP" /bin/trueecho "$ip" >>/tmp/ip_$(date +%F).log#把这个ip写进一个IP地址黑名单elseaction "iptables -I INPUT -s $ip -j DROP" /bin/falsefifidone
}
function del(){[ -f /tmp/ip_$(date +%F -d '-1 day').log ]||{#如果存在这个黑名单日志echo "log is not exist"exit 1} exec </tmp/ip_$(date +%F -d '-1 day').logwhile read linedoif [ iptables -L -n|grep "$line"|wc -l -ge 1 ]#如果IP地址存在黑名单里theniptables -D INPUT -s $line -j DROP#就把他放出来fidone
}function main(){flag=0#计数器while truedosleep 180#180秒运行一次下面的命令((falg++))#每执行一次,计数器自动加上1ipt[ $flag -ge 480 ] && del && flag=0#超过1天的时候,就把黑名单里的IP给放出来并且把计数器归零done
}
main

脚本二:

#!/bin/bash. /etc/init.d/functions iptables_list=$(iptables -n -L)count=10
path=/server/scripts/access.log
function ipt(){awk '{print $1}' $path|sort|uniq -c|sort -rn >/tmp/tmp.logmax_line=$(cat /tmp/tmp.log|wc -l)for ((i=1;i<=$max_line;i++)) doip=$(awk 'NR=='"$i"'{print $2}' /tmp/tmp.log)ip_num=$(awk 'NR=='"$i"'{print $1}' /tmp/tmp.log)iptables_ip_num=$(iptables -nL|grep "$ip"|wc -l)if [ $ip_num -ge $count -a $iptables_ip_num -lt 1 ]theniptables -I INPUT -s $ip -j DROPRETVAL=$?if [ $RETVAL -eq 0 ]thenaction "iptables -I INPUT -s $ip -j DROP" /bin/trueecho "$ip" >>/tmp/ip_$(date +%F).logelseaction "iptables -I INPUT -s $ip -j DROP" /bin/falsefifi
done
}function del(){if [ -f /tmp/ip_$(date +%F -d '-1 day').log ]
thencat /tmp/ip_$(date +%F -d '-1 day').log|awk '{print "iptables -D INPUT -s "$1" -j DROP"}'|bash
elseecho "log is not exist"
fi
}function main(){while true
dosleep 10 ((flag++)) ipt[ $flag -ge 480 ] && del && flag=0
done
}main
  1. /var/log/messages日志出现kernel: nf_conntrack: table full, dropping packet.请问是什么原因导致的?如何解决?

解答:
有两种可能,一是打开的端口太少导致不够用,修改ip_conntrack文件为1024 65535
还有一个原因是nat连接真的达到了65535了,此时就把NAT映射表保持时间设置短一些.
以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不计
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

iptables企业面试题集锦相关推荐

  1. J2EE面试题集锦(附答案)

    转自:http://blog.sina.com.cn/s/blog_4e8be0590100fbb8.html J2EE面试题集锦(附答案) 一.基础问答 1.下面哪些类可以被继承? java.lan ...

  2. [转载] Java笔试题集锦

    参考链接: 关于Java中文件名和类名的误解 Java笔试题集锦 1.MVC的各个部分都有那些技术来实现?如何实现? 答:MVC是Model-View-Controller的简写."Mode ...

  3. 老男孩Shell企业面试题30道 [答案]

    @老男孩Shell企业面试题 shell  2016年9月7日  本文来自于老男孩教育,未经本人同意,禁止转载!否则追究法律责任.  原文:http://oldboy.blog.51cto.com/2 ...

  4. shell企业面试题

    shell企业面试题 1.利用bash for循环打印下面这句话中字母数不大于6的单词 I am oldboy teacher welcome to oldboy training class [ro ...

  5. 2016最新Java笔试题集锦

    更新时间:2015-08-13         来源:网络投诉删除 [看准网(Kanzhun.com)]笔试题目频道小编搜集的范文"2016最新Java笔试题集锦",供大家阅读参考 ...

  6. 平面设计师美工面试试题集锦

    平面设计师美工面试试题集锦 一.设计理念方面的问题(以下问题没有标准答案,但可以在沟通的过程是了解对方理论方面的深浅程度): 1.在你所见的平面设计作品中你认为哪些国家或地区的作品令你印象深一些?为什 ...

  7. [分类整理IV]微软等100题系列V0.1版:字符串+数组面试题集锦

    微软等100题系列V1.0版整理IV:字符串+数组面试题集锦 July   2010年12月30日 第4章 字符串+数组面试题 在微软等100题系列V0.1版中,此类字符串+数组的问题,占了足足22道 ...

  8. python面试题及答案-50道Python面试题集锦(附答案)

    原标题:50道Python面试题集锦(附答案) Python是目前编程领域最受欢迎的语言.在本文中,我将总结Python面试中最常见的50个问题.每道题都提供参考答案,希望能够帮助你在2019年求职面 ...

  9. 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18)

    1.android开发新浪面试题[开发者必看哦] 下载地址 http://www.eoeandroid.com/thread-177885-1-1.html 2.华为关于android笔试题案例解析 ...

最新文章

  1. 全卷积神经网路【U-net项目实战】论文中U-Net网络实现
  2. PHP算法之四大基础算法
  3. 基础数学:通俗解释,啥叫随机变量?
  4. 数据结构(一)---顺序表的实现---java版
  5. 命令行输入mysql不行_MySQL命令行无法插入中文数据
  6. 【连载】Django入门到实战(一)
  7. Windows 0day成功验证之ETERNALBLUE
  8. 【pycharm】pycharm上安装tensorflow,报错:AttributeError: module ‘pip‘ has no attribute ‘main‘ 解决方法
  9. mac系统不能使用127.0.0.2的解决方案
  10. GNU/Linux下的开发环境
  11. html里文字跳动,Web前端
  12. 拓端tecdat|爬取微博用户行为数据语义分析数据挖掘报告
  13. WordPress W3 Super Cache插件远程PHP代码执行漏洞
  14. Ubuntu系统lamp环境下安装wordpress、zencert和mangento程序网站
  15. 苹果cms如何添加广告代码
  16. 2021/7/27 Ubuntu18.04 安装 PCL记录
  17. input.validity
  18. 【学习笔记】密码学入门(2) 单向散列函数,消息认证码,数字签名,证书
  19. 字节跳动日常实习一二三面面经(后端开发)
  20. Rtools 环境变量设置-windows

热门文章

  1. 英语单词大小序 c语言,C语言基本入门英语单词.doc
  2. 桌面一键通——小巧易用的桌面程序管理软件
  3. python学习课程 0基础学Python视频教程
  4. Java 基础篇:多线程基本概念
  5. 全网最zui面zui详细关于ICP许可证办理指南
  6. presto常用函数
  7. 【精彩回顾】迪拜BSV全球区块链大会Day1
  8. 最新织梦DEDECMS全站目录化伪静态设置(网址和生成静态地址一样、电脑和手机访问地址也一样)
  9. 极限内卷丨让我们偷偷的卷起来
  10. node卸载和npm卸载