【运维知识进阶篇】iptables防火墙详解(iptables执行过程+表与链概述+iptables命令参数+配置filter表规则+NAT表实现共享上网、端口转发、IP映射)(二)

本文涉及的产品
公网NAT网关,每月750个小时 15CU
云防火墙,500元 1000GB
简介: 【运维知识进阶篇】iptables防火墙详解(iptables执行过程+表与链概述+iptables命令参数+配置filter表规则+NAT表实现共享上网、端口转发、IP映射)(二)

2、封ip,屏蔽某个ip

1. [root@Ansible ~]# iptables -I INPUT  -s 10.0.0.7   -j DROP 
2. [root@Ansible ~]# iptables -I INPUT  -s 172.16.1.7   -j DROP 
3. [root@Ansible ~]#  iptables -nL
4. Chain INPUT (policy ACCEPT)
5. target     prot opt source               destination
6. DROP       all  --  172.16.1.7           0.0.0.0/0
7. DROP       all  --  10.0.0.7             0.0.0.0/0
8. 
9. Chain FORWARD (policy ACCEPT)
10. target     prot opt source               destination
11. 
12. Chain OUTPUT (policy ACCEPT)
13. target     prot opt source               destination

屏蔽之后用10.0.0.7ssh连接会卡住

[root@Web01 ~]# ssh 10.0.0.61

3、禁止网段连入(禁止10.0.0.0/24网段访问 8888端口)

1. #指定10.0.0.0网段的屏蔽了22端口
2. [root@Ansible ~]# iptables -F
3. [root@Ansible ~]# iptables -I INPUT  -s 10.0.0.0/24  -p tcp  --dport 22 -j DROP 
4. 
5. [root@Web01 ~]# ssh 10.0.0.61 hostname
6. ^C
7. [root@Web01 ~]# ssh 172.16.1.61 hostname
8. root@172.16.1.61's password: 
9. Ansible
10. 
11. #指定10.0.0.0网段的屏蔽8888端口
12. [root@Ansible ~]# iptables -F
13. [root@Ansible ~]# iptables -I INPUT  -s 10.0.0.0/24  -p tcp  --dport 8888 -j DROP 
14. 
15. 这个可以用nc和telnet测试

4、只允许指定网段连入(允许10.0.0.0网段)

类似于阿里云白名单功能,开放指定端口和网段,其他均拒绝

1、利用!排除,只准许10.0.0.0/24访问

1. [root@Ansible ~]# iptables -I INPUT ! -s 10.0.0.0/24  -j DROP
2. 
3. 
4. [root@Web01 ~]# ping 10.0.0.61
5. PING 10.0.0.61 (10.0.0.61) 56(84) bytes of data.
6. 64 bytes from 10.0.0.61: icmp_seq=1 ttl=64 time=0.466 ms
7. 64 bytes from 10.0.0.61: icmp_seq=2 ttl=64 time=0.658 ms
8. ^C
9. --- 10.0.0.61 ping statistics ---
10. 2 packets transmitted, 2 received, 0% packet loss, time 1000ms
11. rtt min/avg/max/mdev = 0.466/0.562/0.658/0.096 ms
12. [root@Web01 ~]# ping 172.16.1.61
13. PING 172.16.1.61 (172.16.1.61) 56(84) bytes of data.
14. ^C
15. --- 172.16.1.61 ping statistics ---
16. 4 packets transmitted, 0 received, 100% packet loss, time 2999ms

2、修改链默认规则,修改为拒绝,添加准许

若默认规则修改为拒绝后,ping公网IP可以但是ping公网域名不行,故障类似于DNS解析有问题(我踩过的坑)

1. [root@Ansible ~]# iptables -nL
2. Chain INPUT (policy ACCEPT)
3. target     prot opt source               destination
4. 
5. Chain FORWARD (policy ACCEPT)
6. target     prot opt source               destination
7. 
8. Chain OUTPUT (policy ACCEPT)
9. target     prot opt source               destination
10. [root@Ansible ~]# iptables -P INPUT DROP 
11. [root@Ansible ~]# iptables -nL
12. Chain INPUT (policy DROP)
13. target     prot opt source               destination
14. 
15. Chain FORWARD (policy ACCEPT)
16. target     prot opt source               destination
17. 
18. Chain OUTPUT (policy ACCEPT)
19. target     prot opt source               destination
20. [root@Ansible ~]# iptables -A  INPUT   -s 10.0.0.0/24   -j  ACCEPT
21. [root@Ansible ~]# iptables -nL
22. Chain INPUT (policy DROP)
23. target     prot opt source               destination
24. ACCEPT     all  --  10.0.0.0/24          0.0.0.0/0
25. 
26. Chain FORWARD (policy ACCEPT)
27. target     prot opt source               destination
28. 
29. Chain OUTPUT (policy ACCEPT)
30. target     prot opt source               destination

5、指定多个端口

1. [root@Ansible ~]# iptables -I INPUT -p tcp --dport 8888 -j DROP 
2. [root@Ansible ~]# iptables -I INPUT -p tcp --dport 9999 -j DROP 
3. [root@Ansible ~]# iptables -nL
4. Chain INPUT (policy ACCEPT)
5. target     prot opt source               destination
6. DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9999
7. DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8888
8. 
9. Chain FORWARD (policy ACCEPT)
10. target     prot opt source               destination
11. 
12. Chain OUTPUT (policy ACCEPT)
13. target     prot opt source               destination
14. 
15. [root@Ansible ~]# iptables -I INPUT  -p tcp -m multiport ! --dport 80,443  -j DROP
16. 
17. #如果是禁用连续端口可以不加-m multiport 1:1024
18. [root@Ansible ~]# iptables -I INPUT  -p tcp  --dport 1024:65535  -j DROP 
19. [root@Ansible ~]#  iptables -nL
20. Chain INPUT (policy ACCEPT)
21. target     prot opt source               destination
22. DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpts:1024:65535
23. 
24. Chain FORWARD (policy ACCEPT)
25. target     prot opt source               destination
26. 
27. Chain OUTPUT (policy ACCEPT)
28. target     prot opt source               destination

6、匹配ICMP类型

ICMP(Internet Control Message Protocol)Internet控制报文协议,ping,是整个网站的核心

通过防火墙规则,控制是否可以ping

1. [root@Ansible ~]# iptables -I INPUT  -p icmp --icmp-type 8  -j DROP 
2. [root@Ansible ~]# iptables -nL
3. Chain INPUT (policy ACCEPT)
4. target     prot opt source               destination
5. DROP       icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 8
6. 
7. Chain FORWARD (policy ACCEPT)
8. target     prot opt source               destination
9. 
10. Chain OUTPUT (policy ACCEPT)
11. target     prot opt source               destination
12. 
13. [root@Web01 ~]# ping 10.0.0.61
14. PING 10.0.0.61 (10.0.0.61) 56(84) bytes of data.
15. ^C
16. --- 10.0.0.61 ping statistics ---
17. 6 packets transmitted, 0 received, 100% packet loss, time 5002ms

通过内核参数,控制禁止被ping

1. [root@Ansible ~]# cat /etc/sysctl.conf     
2. net.ipv4.icmp_echo_ignore_all = 0    #0为允许,1为禁止
3. [root@Ansible ~]# sysctl -p 
4. net.ipv4.icmp_echo_ignore_all = 0

7、匹配网络状态(TCP/IP连接状态)

-m state --state

NEW:已经或将启动新的连接

ESTABLISHED:已建立的连接

RELATED:正在启动的新连接

INVALID:非法或无法识别的

1. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
2. 
3. iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

8、限制并发及速率

-m limit 限制模块

-m limit --limit 10/minute     #每分钟只能有10个数据包 每6秒生成

-m limit --limit n/{second/minute/hour}:指定时间内的请求速率”n”为速率,后面为时间分别为:秒 分 时

1. -m limit --limit 10/minute   --limit-burst 5  每6秒释放工牌 给别人使用 
2. 
3. #10个数据包   
4. 前5个  1个1个工牌   从第6个开始 每6秒 才能释放1个工牌

--limit-burst [n]:在同一时间内允许通过的请求“n”为数字,不指定默认为5

1. #ping  icmp 协议  进行测试
2. [root@Ansible ~]# iptables -F 
3. [root@Ansible ~]# iptables -I INPUT  -p icmp  -m limit --limit 10/minute    --limit-burst 5   -j ACCEPT
4. [root@Ansible ~]# iptables -A INPUT  -p tcp  --dport 22 -j  ACCEPT
5. [root@Ansible ~]# iptables -P INPUT DROP 
6. [root@Ansible ~]# iptables -nL
7. Chain INPUT (policy DROP)
8. target     prot opt source               destination
9. ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0            limit: avg 10/min burst 5
10. ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
11. 
12. Chain FORWARD (policy ACCEPT)
13. target     prot opt source               destination
14. 
15. Chain OUTPUT (policy ACCEPT)
16. target     prot opt source               destination

测试

1. [root@Web01 ~]# ping 10.0.0.61
2. PING 10.0.0.61 (10.0.0.61) 56(84) bytes of data.
3. 64 bytes from 10.0.0.61: icmp_seq=1 ttl=64 time=0.298 ms
4. 64 bytes from 10.0.0.61: icmp_seq=2 ttl=64 time=1.33 ms
5. 64 bytes from 10.0.0.61: icmp_seq=3 ttl=64 time=0.435 ms
6. 64 bytes from 10.0.0.61: icmp_seq=4 ttl=64 time=0.460 ms
7. 64 bytes from 10.0.0.61: icmp_seq=5 ttl=64 time=0.758 ms
8. 64 bytes from 10.0.0.61: icmp_seq=7 ttl=64 time=2.28 ms    #7和1之间间隔6秒
9. 64 bytes from 10.0.0.61: icmp_seq=13 ttl=64 time=0.793 ms  #13和7之间间隔6秒
10. 64 bytes from 10.0.0.61: icmp_seq=19 ttl=64 time=0.734 ms
11. 64 bytes from 10.0.0.61: icmp_seq=25 ttl=64 time=0.803 ms
12. ^C
13. --- 10.0.0.61 ping statistics ---
14. 26 packets transmitted, 9 received, 65% packet loss, time 25013ms
15. rtt min/avg/max/mdev = 0.298/0.877/2.286/0.572 ms


目录
相关文章
|
2月前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
70 3
|
13天前
|
网络协议 Ubuntu Linux
解决ssh: connect to host IP port 22: Connection timed out报错(scp传文件指定端口)
解决 `ssh: connect to host IP port 22: Connection timed out` 报错涉及检查 SSH 服务状态、防火墙配置、网络连通性和主机名解析等多个方面。通过逐步排查上述问题,并在 `scp` 命令中正确指定端口,可以有效解决连接超时的问题,确保文件传输的顺利进行。希望本文提供的解决方案能帮助您快速定位并解决该错误。
39 3
|
18天前
|
运维 网络安全
解决ssh: connect to host IP port 22: Connection timed out报错(scp传文件指定端口)
通过这些步骤和方法,您可以有效解决“ssh: connect to host IP port 22: Connection timed out”问题,并顺利使用 `scp`命令传输文件。
96 7
|
2月前
|
网络协议 安全 网络安全
Cisco-网络端口地址转换NAPT配置
Cisco-网络端口地址转换NAPT配置
|
2月前
|
网络协议 Linux Windows
Rsyslog配置不同端口收集不同设备日志
Rsyslog配置不同端口收集不同设备日志
|
2月前
|
运维 安全 网络协议
Python 网络编程:端口检测与IP解析
本文介绍了使用Python进行网络编程的两个重要技能:检查端口状态和根据IP地址解析主机名。通过`socket`库实现端口扫描和主机名解析的功能,并提供了详细的示例代码。文章最后还展示了如何整合这两部分代码,实现一个简单的命令行端口扫描器,适用于网络故障排查和安全审计。
54 0
|
2月前
|
安全 网络安全 数据安全/隐私保护
Cisco-交换机配置聚合端口
Cisco-交换机配置聚合端口
|
4月前
|
安全 Linux 应用服务中间件
在Linux中,包过滤防火墙与代理应用防火墙有什么区别?有哪些相应的产品?
在Linux中,包过滤防火墙与代理应用防火墙有什么区别?有哪些相应的产品?
|
3月前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
242 73
|
1月前
|
存储 运维 Linux
Linux防火墙firewall的使用
CentOS 7 中的 firewalld 是基于 Netfilter 的防火墙服务,支持动态配置,无需重启服务即可生效。它通过区域管理网络流量,每个区域可以设置不同的防火墙规则。默认区域为 public,可以通过命令行工具 firewall-cmd 进行管理和配置。firewalld 提供了丰富的预定义服务和区域,方便用户根据需求进行灵活配置。
42 0
下一篇
DataWorks