因招聘要求熟练运用Office,被微软打上门查盗版(微软怎么知道在用盗版office)
626
2022-05-30
详述iptales工作流程以及规则过滤顺序?
iptables采用数据包过滤机制工作的,他会对请求的数据包的包头数据进行分析,并根据预先设定的规则决定是否可以进入主机.
过滤顺序是层层过滤,从上到下,从前到后进行过滤.
只要匹配上就不再往下进行匹配
iptables有几个表以及每个表有几个链?
4个表
5个链
iptables的几个表以及每个表对应链的作用,对应企业应用场景?
3个表
Filter表 真正的防火墙功能
Nat表 负责数据包改写,网关共享,端口映射
Mangle表 路由相关,用的不多
5个链
INPUT 过滤进入主机的数据包
FORWARD 负责转发流经主机的数据包
OUTPUT 处理从主机发出去的数据包
PREROUTING 数据包到达防火墙时进行路由判断之前执行的规则,适合的工作场景是端口映射
POSTROUTING 数据包离开防火墙时进行路由判断之后执行的规则,适合的工作场景是共享上网
请写出查看iptables当前所有规则的命令。
iptables -nL
iptables -nL -t nat
iptables -nL -t mangle
禁止来自10.0.0.188 ip地址访问80端口的请求
ipttables -A INPUT -p tcp -s 10.0.0.188 --dport 80 -j DROP
如何使在命令行执行的iptables规则永久生效?
/etc/init.d/iptables save
iptables-save >/etc/sysconfig/iptables
实现把访问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
实现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
描述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状态,关闭另一个单向通道.
请描述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)邮件的网关
请描述下面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
企业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
写一个防火墙配置脚本,只允许远程主机访问本机的80端口(360面试题)
iptables -A INPUT --dport 80 -j ACCEPT
iptables -P INPUT DROP
请描述如何配置一个linux上网网关?
route -net 172.16.1.0/24 gw 192.168.1.1
请描述如何配置一个专业的安全的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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
企业实战题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 }'$Path|sort|uniq -c|sort -rn >/tmp/tmp.log #统计IP访问次数 exec < /tmp/tmp.log while read line do ip=echo $line|awk '{print }' if [ echo $line|awk '{print }' -ge $conut -a iptables -L -n|grep "$ip"|wc -l -lt 1 ] #如果IP访问次数大于等于10并且在iptables禁止列表里没有这个IP。 then iptables -I INPUT -s $ip -j DROP #把这个IP写进iptables禁止列表里 RETVAL=$? if [ $RETVAL -eq 0 ] #如果上一条命令执行没有出错 then action "iptables -I INPUT -s $ip -j DROP" /bin/true echo "$ip" >>/tmp/ip_$(date +%F).log #把这个ip写进一个IP地址黑名单 else action "iptables -I INPUT -s $ip -j DROP" /bin/false fi fi done } function del(){ [ -f /tmp/ip_$(date +%F -d '-1 day').log ]||{ #如果存在这个黑名单日志 echo "log is not exist" exit 1} exec
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
脚本二:
#!/bin/bash . /etc/init.d/functions iptables_list=$(iptables -n -L) count=10 path=/server/scripts/access.log function ipt(){ awk '{print }' $path|sort|uniq -c|sort -rn >/tmp/tmp.log max_line=$(cat /tmp/tmp.log|wc -l) for ((i=1;i<=$max_line;i++)) do ip=$(awk 'NR=='"$i"'{print }' /tmp/tmp.log) ip_num=$(awk 'NR=='"$i"'{print }' /tmp/tmp.log) iptables_ip_num=$(iptables -nL|grep "$ip"|wc -l) if [ $ip_num -ge $count -a $iptables_ip_num -lt 1 ] then iptables -I INPUT -s $ip -j DROP RETVAL=$? if [ $RETVAL -eq 0 ] then action "iptables -I INPUT -s $ip -j DROP" /bin/true echo "$ip" >>/tmp/ip_$(date +%F).log else action "iptables -I INPUT -s $ip -j DROP" /bin/false fi fi done } function del(){ if [ -f /tmp/ip_$(date +%F -d '-1 day').log ] then cat /tmp/ip_$(date +%F -d '-1 day').log|awk '{print "iptables -D INPUT -s "" -j DROP"}'|bash else echo "log is not exist" fi } function main(){ while true do sleep 10 ((flag++)) ipt [ $flag -ge 480 ] && del && flag=0 done } main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/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
NAT TCP/IP
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。