Linux下iptables防火墙详解

5G技术 创建于:2022-01-13

什么是防火墙?

在计算中,防火墙是基于预定安全规则来监视和控制传入和传出网络流量的网络安全系统。计算机的所有流入流出的网络通信都要经过防火墙,防火墙对流经他的网络通信进行扫描,这样就能过滤掉一些攻击。
Netfilter是Linux操作系统核心层内部的一个数据包处理模块,它所设置的规则是存放在内核空间内,而iptables是一个应用层的应用程序,它通过Netfilter放出的接口来对存放在内核空间的XXtables进行修改。

链:

iptables开启后,数据报文从进入服务器到出来会经过
Pre-routing(路由前)
Input(输入)
Output(输出)
Forward(转发)
Post-routing(路由后):

在这里插入图片描述
centos7默认没有iptables所以要安装iptables:

sudo yum -y install iptables ##安装iptables防火墙
sudo yum -y install iptables-service ##安装iptables的service启动工具
systemctl status iptables ##查看iptables状态
systemctl reload iptables ##重载iptables

iptables常用命令:

iptables -A 将一个规则添加到链末尾
iptables -D 将指定的链中删除规则
iptables -F 将指定的链中删除所有规则
iptables -I 将在指定链的指定编号位置插入一个规则
iptables -L 列出指定链中所有规则
iptables -t nat -L 列出所有NAT链中所有规则
iptables -N 建立用户定义链
iptables -X 删除用户定义链
iptables -P 修改链的默认设置,如将iptables -P INPUT DROP (将INPUT链设置为DROP)

设置参数介绍:

--dport 指定目标TCP/IP端口 如 –dport 80
--sport 指定源TCP/IP端口 如 –sport 80
-p tcp 指定协议为tcp
-p icmp 指定协议为ICMP
-p udp 指定协议为UDP
-j DROP 拒绝
-j ACCEPT 允许
-j REJECT 拒绝并向发出消息的计算机发一个消息
-j LOG 在/var/log/messages中登记分组匹配的记录
-m mac –mac 绑定MAC地址
-m limit –limit 1/s 1/m 设置时间策列
-s 10.10.0.0或10.10.0.0/16 指定源地址或地址段
-d 10.10.0.0或10.10.0.0/16 指定目标地址或地址段

iptables配置文件

配置文件位置:/etc/sysconfig/iptables

配置filter表防火墙

1.查看iptables的配置信息

[root@master ~]# iptables -L -n  
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

设置预设规则

请求接入包丢弃:
[root@master ~]# iptables -p INPUT DROP
接受响应数据包:
[root@matser ~]# iptables -p OUTPUT ACCEPT
转发数据包丢弃:
[root@master ~]# iptables -p FORWARD DROP

添加防火墙规则

首先添加INPUT链(必须大写),INPUT链的默认规则是DROP,所以我就写需要ACCEPT(通过)的链。
1.开启SSH服务端口

[root@master ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@master ~]# iptables -nvL
Chain INPUT (policy ACCEPT 3 packets, 228 bytes)
 pkts bytes target     prot opt in     out     source               destinatio                                                             n
   50  2916 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0                                                                         tcp dpt:22

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destinatio                                                             n

Chain OUTPUT (policy ACCEPT 30 packets, 2392 bytes)
 pkts bytes target     prot opt in     out     source               destinatio                                                             n

2.开启Web服务端口

[root@master ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
[root@master ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

3.开启DNS服务的53端口

[root@matser ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT

4.只允许某台主机或者某个网段进行SSH连接

[root@master ~]# iptables -A INPUT -s 192.168.231.3 -p tcp --dport 22 -j ACCEPT
[root@master ~]# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  master               anywhere             tcp dpt:ssh

如果允许或者限制一段IP地址可用192.168.231.0/24表示192.168.231.1-255的所有ip。

[root@master ~]# iptables -A INPUT -s 192.168.231.0/24 -p tcp --dport 22 -j ACCEPT
[root@master ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  master               anywhere             tcp dpt:ssh
ACCEPT     tcp  --  192.168.231.0/24     anywhere             tcp dpt:ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

删除iptables的记录

1.直接清空

[root@master ~]# iptables -t filter -F INPUT

2.根据编号删除

[root@master ~]# iptables -t filter -D INPUT 2

3.根据条件删除

[root@master ~]# iptables -t filter -D INPUT -s 192.168.231.3 -j DROP

保存规则

[root@master ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  确定  ]

原文地址:https://blog.csdn.net/wanqianshao/article/details/122399694

免责声明:本文来源于互联网,版权归合法拥有者所有,如有侵权请公众号联系管理员

* 本站提供的一些文章、资料是供学习研究之用,如用于商业用途,请购买正版。

李昕泽不是程序员