1、详述iptales工作流程以及规则过滤顺序?
iptables过滤的规则顺序是由上至下,若出现相同的匹配规则则遵循由上至下的顺序
2、iptables的几个表以及每个表对应链的作用?
Iptables有四表五链
Filter表 : Filter表是iptables中使用的默认表,它用来过滤网络包。如果没有定义任何规则,Filter表则被当作默认的表,并且基于它来过滤。支持的链有INPUT链,OUTPUT链,FORWARD链。
Nat表 : Nat表主要用于网络地址转换。根据表中的每一条规则修改网络包的IP地址。流中的包仅遍历一遍Nat表。例如,如果一个通过某个接口的包被修饰(修改了IP地址),该流中其余的包将不再遍历这个表。通常不建议在这个表中进行过滤,由NAT表支持的链称为PREROUTING链,POSTROUTING链和OUTPUT链。
Mangle表 : 正如它的名字一样,这个表用于校正网络包。它用来对特殊的包进行修改。它能够修改不同包的头部和内容。Mangle表不能用于地址伪装。支持的链包括PREROUTING链,OUTPUT链,Forward链,Input链和POSTROUTING链。
Raw表 : Raw表在我们想要配置之前被豁免的包时被使用。它支持PREROUTING链和OUTPUT链。
INPUT:当收到访问防火墙本地地址的数据包时,应用此链的规则
OUTPUT:当防火墙本机向外发出数据时,应用此链的规则。
FORWARD:当收到要通过防火墙发送给其他网络地址的数据包时,应用此链的规则。
PREROUTING:在对数据包做路由选择之前,应用此链的规则。
POSTROUTING:在对数据包做路由选择之后,应用此链的规则。
3、画图讲解iptables包过滤经过不同表和链简易流程图并阐述。
4、请写出查看iptables当前所有规则的命令。
iptables -nL --line-numbers
-t 表格名 可看表的规则
5、禁止来自10.0.0.8 ip地址访问80端口的请求
iptables -t $table $action -p $protocol -s $ip --dport $port -j $action
$table:表名(raw,mangle,filter,forward)
$action:对表执行的动作(accept,drop,reject)
$protocol: TCP/UDP
-s 源IP
--dport:目的端口
-j
iptables -t filter -A INPUT -p tcp -s 10.0.0.8 --dport 80 -j DROP
6、使命令行执行的iptables规则永久生效?
/etc/init.d/iptables save 保存命令
iptables save >>/etc/sysconfig/iptables
7、实现把访问10.0.0.8:80的请求转到172.16.1.17:8080
iptables -t nat -A PREROUTING -d 10.0.0.8 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.6:8080
8、实现172.16.1.0/24段所有主机通过124.32.54.26外网IP共享上网。
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 124.32.54.26
使用SNAT的时候,出口ip的地址范围可以是一个,也可以是多个 --to-source 10.0.0.4-10.0.0.6
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
MASQUERADE,地址伪装,算是snat中的一种特例,可以实现自动化的snat。
作用是,从服务器的网卡上,自动获取当前ip地址来做NAT。
iptables-t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE
这样配置的话,不用指定SNAT的目标ip了,不管现在eth0的出口获得了怎样的动态ip,MASQUERADE会自动读取eth0现在的ip地址然后做SNAT出去,这样就实现了动态SNAT地址转换。
9.详细描述HTTP工作原理?
1 ) 地址解析
2)封装HTTP请求数据包
3)封装成TCP包,建立TCP连接(TCP的三次握手)
4)客户机发送请求命令
5)服务器响应
6)服务器关闭TCP连接
10.请描述iptables的常见生产应用场景。
用于端口映射、包过滤
企业应用场景:
1) 把访问外网IP及端口的请求映射到内网某个服务器及端口(企业内部);
2) 硬件防火墙,把访问LVS/nginx外网VIP及80端口的请求映射到IDC 负载均衡服务器内部IP及端口上(IDC机房的操作) ;
局域网共享上网
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j SNAT --to-source 120.43.61.124
11、请描述下面iptables命令的作用
iptables -N syn-flood #自定义syn-flood链
iptables -A INPUT -i eth0 -syn -j syn-flood #添加对网卡eth0发包包头只设置了SYN位而清除了ACK和FIN位的TCP包的匹配规则,交由链进一步判断
iptables -A syn-flood -m limit -limit 5000/s -limit-burst 200 -j RETURN #通过-m模块limit标记桶过滤器,速率为5000/s,最大匹配个数到达200判断发起syn-flood攻击,进行标记
iptables -A syn-flood -j DROP #匹配动作为拒绝
自定义防止syn-flood攻击的安全规则
12、企业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
企业运维经验面试题:
13、写一个防火墙配置脚本,只允许远程主机访问本机的80端口(奇虎360面试题)
iptables -A INPUT -p tcp --dport 80 -j accept
iptables -A INPUT -p tcp -j DROP
14、请描述如何配置一个linux上网网关?
route add -net 192.168.0.0/24 gw 10.0.0.253 dev eth1
15、请描述如何配置一个专业的安全的WEB服务器主机防火墙?
先将默认的INPUT链和Forward链关闭,只开放允许进入的端口
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -P INPUT DROP
16、企业实战题6:请用至少两种方法实现!
写一个脚本解决DOS攻击生产案例
提示:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔3分钟。防火墙命令为:iptables -I INPUT -s 10.0.1.10 -j DROP。
方法一:
netstat -na|grep EST|awk -F "[ :]+" '{print $6}'|sort|uniq -c >>/tmp/a.log
while true
do
grep EST a.log|awk -F '[ :]+' '{print $6}'|sort|uniq -c >/tmp/tmp.log
exec </tmp/tmp.log
while read line
do
ip=`echo $line|awk "{print $2}"`
count=`echo $line|awk "{print $1}"`
if [ $count -gt 100 ] && [ `iptables -L -n|grep $ip|wc -l` -lt 1 ]
then
iptables -I INPUT -s $ip -j DROP //-I 将其封杀在iptables显示在第一条
echo "$line is dropped" >>/tmp/dropip.log
fi
done
sleep 180
done
方法二:
netstat -na|grep EST|awk -F "[ :]+" '{print $6}'|awk '{S[$1]++}END{for(i in S) print i,S[i]}'
17、/var/log/messages日志出现kernel: nf_conntrack: table full, dropping packet.请问是什么原因导致的?如何解决?
优化内核参数
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
18、压轴上机实战iptables考试题
iptables -t nat -A POSTROUTING -s 10.0.0.253 -j SNAT -o eth0 --to-source 120.43.61.124
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
tcpdump ip host 10.0.0.253 and 10.0.0.6 或 tcpdump ip host 10.0.0.253 and 10.0.0.7
iptables -t nat -A PREROUTING -d 120.43.61.124 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.6:80