知识点总结
1、什么是iptables
基于包过滤的一个防火墙工具,对流入和流出的数据包进行很精细的控制,集成在linux2.6内核中,通过squid+iptables支持7层控制。
总共拥有5链4表:
5链:input,output,forward,prerouting,postrouting
4表:filter,nat,managle,raw
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,FORWARD,POSTROUTING,PREROUTING
raw : PREROUTING, OUTPUT
3、iptables的几个表以及每个表对应链的作用,对应企业应用场景?
nat:prerouting ip与端口映射
nat:postrouting 共享上网
filter:input表示对入口流量限制
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.请问是什么原因导致的?如何解决?
本文总结了iptables的基础知识,包括其作为包过滤防火墙的角色,5链4表的结构,工作流程,以及在企业场景中的应用。文章还提出了并发量大时的注意事项,如禁ping操作,并给出了应对DOS攻击的脚本示例。此外,文章包含一系列iptables相关面试题目,涉及工作流程、规则配置、状态查看、流量转发和安全策略等实际问题。
219

被折叠的 条评论
为什么被折叠?



