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

简介: 【运维知识进阶篇】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


目录
相关文章
|
11月前
|
人工智能 运维 Kubernetes
别再手动敲命令了!运维自动化才是打工人的“自救之道”
别再手动敲命令了!运维自动化才是打工人的“自救之道”
386 8
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
1245 3
|
11月前
|
网络协议 安全 网络安全
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
734 2
|
10月前
|
网络协议 Linux 网络安全
CentOS防火墙管理:查询与配置开放端口的技巧
遵循以上步骤,CentOS系统管理员能够灵活地查询和管理系统端口的开放情况,并且能适用于大多数防火墙管理场合。务必在改变防火墙规则后认真审核和测试,以确保网络安全性与服务的正常运行。
1646 0
|
弹性计算 人工智能 运维
摆脱繁琐命令-让运维更加流畅-阿里云ECS操作系统控制台运维篇
阿里云操作系统控制台提供了便捷的服务器监控与管理功能,简化了运维工作。通过将多台服务器纳入统一监控平台,用户可以快速查看CPU、内存、磁盘和网络等关键资源的使用情况,避免了逐一远程连接查询的繁琐操作。此外,该工具支持自动化数据汇总,极大地方便了日报、周报和月报的编写。测试过程中,系统展示了良好的稳定性和响应速度,尤其在网络抖动和大文件健康状态测试中表现出色。整体体验流畅,显著提升了运维效率。 操作系统控制台地址:[点击访问](https://alinux.console.aliyun.com/)
487 26
摆脱繁琐命令-让运维更加流畅-阿里云ECS操作系统控制台运维篇
|
运维
阿里云服务器批量执行命令(系统运维管理oos)
阿里云【系统运维管理oos】批量执行详情
324 5
|
运维 监控 网络协议
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
1244 3
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
1465 3
|
图形学 开发者 存储
超越基础教程:深度拆解Unity地形编辑器的每一个隐藏角落,让你的游戏世界既浩瀚无垠又细节满满——从新手到高手的全面技巧升级秘籍
【8月更文挑战第31天】Unity地形编辑器是游戏开发中的重要工具,可快速创建复杂多变的游戏环境。本文通过比较不同地形编辑技术,详细介绍如何利用其功能构建广阔且精细的游戏世界,并提供具体示例代码,展示从基础地形绘制到植被与纹理添加的全过程。通过学习这些技巧,开发者能显著提升游戏画面质量和玩家体验。
1541 3