iptables知识点汇总小结

本文总结了iptables的基础知识,包括其作为包过滤防火墙的角色,5链4表的结构,工作流程,以及在企业场景中的应用。文章还提出了并发量大时的注意事项,如禁ping操作,并给出了应对DOS攻击的脚本示例。此外,文章包含一系列iptables相关面试题目,涉及工作流程、规则配置、状态查看、流量转发和安全策略等实际问题。

知识点总结

1、什么是iptables
基于包过滤的一个防火墙工具,对流入和流出的数据包进行很精细的控制,集成在linux2.6内核中,通过squid+iptables支持7层控制。
这里写图片描述
总共拥有5链4表:
5链:input,output,forward,prerouting,postrouting
4表:filternatmanagleraw
Filter表 是真正的防火墙功能
INPUT 进服务器 OUTPUT出服务器 FORWARD 流经服务器
Nat 表 负责数据包改写 网关共享上网、IP和端口映射

2、iptables工作流程
1).防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
2).如果匹配上规则,即明确表是阻止还是通过,此时数据包就不在向下匹配新规则了。
3).如果所有规则中没有明确是阻止还是通过这个数据包,也就是么有匹配上新规则,向下进行匹配,直到匹配默认规则得到明确的组织还是通过
4).防火墙的默认规则是对应链的所有规则执行完才会执行的。
流程图:
这里写图片描述

3、如果并发量比较大,不建议使用防火墙,会使整体访问变慢

4、企业场景禁ping

iptables -A INPUT -p icmp --icmp-type 8 -s 10.0.0.0/24 -j ACCEPT

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

#!/bin/sh
#
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
IP_file="/server/scripts/ddos.txt"
IP_filter_command="iptables -I INPUT -j DROP -s"
IP_recover_command="iptables -D INPUT -j DROP -s"
function IP_check(){
  grep "EST"  ${IP_file}|awk -F "[ |:]+" '{print $6}'|sort |uniq -c|sort -rn -k1 > /server/scripts/ip.txt
}
function IP_filter(){
   exec < /server/scripts/ip.txt
   while read line
   do
     IP_count=`echo $line|awk '{print $1}'`
     IP=`echo $line|awk '{print $2}'`
     IP_fil=`iptables -L -n|grep "\b${IP}\b"|wc -l`
     if [ ${IP_count} -gt 25 -a ${IP_fil} -eq 0 ];then
        ${IP_filter_command} ${IP}
        echo "${IP}" >> /server/scripts/ip_filtered.txt
        action "Filter ${IP}" /bin/true
     fi
   done
}
function IP_recover(){
   exec < /server/scripts/ip.txt
   while read line
   do
     IP_count=`echo $line|awk '{print $1}'`
     IP=`echo $line|awk '{print $2}'`
     IP_fil=`iptables -L -n|grep "\b${IP}\b"|wc -l`
     if [ ${IP_count} -le 25 -a ${IP_fil} -eq 1 ];then
        ${IP_recover_command} ${IP}
        echo "${IP}" >> /server/scripts/ip_filtered.txt
        action "Recover ${IP}" /bin/true
     fi
   done
}
function main(){
    case "$1" in
      filter)
      IP_check
      echo "$(date +%F-%H:%M:%S) filtered by $(whoami)" >> /server/scripts/ip_filtered.txt
      IP_filter
      ;;
      recover)
      IP_check
      echo "$(date +%F-%H:%M:%S) recovered by $(whoami)" >> /server/scripts/ip_filtered.txt
      IP_recover
      ;;
      *)
      echo "USAGE:$0 {filter|recover}"
      exit 1
    esac
}
main $*

做题训练

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

1.防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。

2.如果匹配上了规则,即明确表明是阻止还是通过,此时数据包就不能向下匹配新规则了。

3.如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。

4.防火墙的默认规则是对应链的所有的规则执行完才会执行的,(最后执行的规则)

2、iptables有几个表以及每个表有几个链?

   filter:INPUT,OUTPUT,FORWARD

   NAT  :POSTROUTING,PREROUTING,OUTPUT

   mangle:INPUT,OUTPUT,FORWARDPOSTROUTING,PREROUTING

   raw  : PREROUTING, OUTPUT

3、iptables的几个表以及每个表对应链的作用,对应企业应用场景?

nat:prerouting  ip与端口映射
nat:postrouting 共享上网
filterinput表示对入口流量限制

4、画图讲解iptables包过滤经过不同表和链简易流程图并阐述。

5、请写出查看iptables当前所有规则的命令。

iptables -Ln

6、禁止来自10.0.0.188 ip地址访问80端口的请求

iptables -I INPUT-p tcp -s 10.0.0.188 --dport 80 -j DROP

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

1.          /etc/init.d/iptables save

2.          写入配置文件/etc/sysconfig/iptables

            并重启服务 /etc/init.d/iptables reload

8、实现把访问10.0.0.3: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

9、实现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

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

3次握手
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.  主机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请求的验证回复。

11.详细描述HTTP工作原理?

用户访问网站流程
三次握手
请求报文
响应报文
四次挥手

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

主机防火墙(filter表的INPUT链)
局域网共享上网(nat表的POSTROUTING链),半个路由器,NAT功能
端口及IP(一对一)映射(nat表的PRETOUTING链),硬件防火墙的NAT功能。

13、请描述下面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

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

企业运维经验面试题:
15、写一个防火墙配置脚本,只允许远程主机访问本机的80端口(奇虎360面试题)

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

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

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

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

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

写一个脚本解决DOS攻击生产案例

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

(此题来自老男孩教育SHELL编程必会考试题之一)

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值