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

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: 【运维知识进阶篇】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


目录
相关文章
|
1月前
|
监控 网络协议 安全
华为配置防火墙直连路由器出口实验
华为配置防火墙直连路由器出口实验
|
2月前
|
网络安全 数据中心
百度搜索:蓝易云【Proxmox软件防火墙的配置教程】
现在,你已经完成了Proxmox软件防火墙的配置。请确保你的防火墙规则设置正确,以保护你的Proxmox VE环境免受未经授权的访问和网络攻击。
128 5
|
23天前
|
网络协议 安全 网络安全
二层交换机与防火墙对接上网配置示例
二层交换机指的是仅能够进行二层转发,不能进行三层转发的交换机。也就是说仅支持二层特性,不支持路由等三层特性的交换机。 二层交换机一般部署在接入层,不能作为用户的网关
|
1月前
|
运维 Linux 应用服务中间件
Centos7如何配置firewalld防火墙规则
Centos7如何配置firewalld防火墙规则
49 0
|
2月前
|
弹性计算 Linux 网络安全
三步搭建VPC专有网络NAT网关,配置SNAT和DNAT规则(补充版)
申明:该文档参考于用户 “帅宝宝”的文档进行的优化,新增永久生效的方式
291 1
|
3月前
|
网络协议 Shell Linux
系统初始化shell,包括:挂载镜像、搭建yum、设置主机名及IP地址和主机名映射、配置动态IP、关闭防火墙和selinux
系统初始化shell,包括:挂载镜像、搭建yum、设置主机名及IP地址和主机名映射、配置动态IP、关闭防火墙和selinux
37 2
|
4月前
|
网络协议 Linux 网络安全
Centos7中如何打开和关闭防火墙??CentOS 7以上默认使用firewall作为防火墙改为iptables
Centos7中如何打开和关闭防火墙??CentOS 7以上默认使用firewall作为防火墙改为iptables
|
4月前
|
存储 网络协议 Linux
Linux加强篇008-使用Iptables与Firewalld防火墙
山重水复疑无路,柳暗花明又一村
313 0
Linux加强篇008-使用Iptables与Firewalld防火墙
|
18天前
|
Linux 虚拟化
VMware workstation 中centos7虚拟机在nat模式下怎么配置网卡,指定我想要的IP并且可以联网
https://blog.csdn.net/2302_78534730/article/details/132825156?spm=1001.2014.3001.5502
131 0
|
8月前
|
弹性计算 运维 网络架构
【运维知识进阶篇】用阿里云配置NAT网关配置
【运维知识进阶篇】用阿里云配置NAT网关配置
335 0