赞
踩
在互联网时代,网络安全问题成为了一个极为重要的议题。为了保护服务器和计算机免受网络攻击的威胁,配置防火墙是必不可少的。本节将介绍如何在Linux系统上配置防火墙。
防火墙是一种网络安全设备,用于监视和控制网络数据流量。其主要功能是在不同网络之间建立一条阻隔,对进出的数据流量进行过滤和筛选,从而保护内部网络免受未经授权的访问和恶意攻击。
防火墙通过规则集合控制网络流量的通过与阻止,这些规则可以根据网络策略和需求进行配置。不正确的配置可能导致无法访问特定服务或应用程序。
Linux操作系统提供了内置的防火墙工具,包括iptables
和firewalld
。这些工具可以用来管理网络流量的过滤规则。
iptables
是一个在Linux内核中操作防火墙规则的工具。它提供了一种灵活的方式来定义规则,控制网络流量的通过与阻止。
iptables使用表(table)
,链(chain)
和规则(rule)
来实现这一功能。
iptables的规则由多个表组成,每个表又包含多个链。每个链包含一系列的规则,规则决定了如何处理数据包。
常用的表包括filter
、nat
和mangle
链的解释:
iptables规则可以根据源IP地址
、目标IP地址
、端口号
、协议类型
等来筛选和转发数据包。用户可以自定义规则,允许或阻止特定的网络连接。
参数 | 含义 |
---|---|
-L | 显示表中的所有规则 |
-n | 不要把端口或IP反向解析为名字 |
-t | 指定表,不指定默认是filter表 |
-A | append追加,加入准许类规则 |
-D | delete删除,例如 -D INPUT 1 |
-I | insert拒绝类规则放在所有规则的最上面 |
-p | 协议protocal tcp/udp/icmp/all |
–dport | 目标端口dest destination指定端口加上协议 -p tcp |
–sport | 源端口,source源 |
-d | –destination 目标IP |
-s | –source 来源IP或网段 |
-m | 指定模块 multiport |
-i | input输入的时候,从哪个网卡进来 |
-o | output输出的时候,从哪个网卡出去 |
-j | 满足条件后的工作:DROP/ACCEPT/REJECT |
DROP | 把数据丢掉,不会返回信息给用户 |
REJECT | 拒绝,返回拒绝信息 |
-F | flush 清除所有规则,不会处理默认的规则 |
-X | 删除用户自定义的链 |
-Z | 链的计数器清零(数据包计数器和数据包字节计数器) |
几乎所有的Linux发行版都内置了iptables,不需要额外安装。但是,对于某些较新的发行版来说,可能启用了firewalld,所以需要先禁用firewalld才能使用iptables。
以下是一些常用的iptables命令:
• iptables -L:列出当前的iptables规则。
• iptables -A chain:添加一条规则到指定链。
• iptables -D chain rule_number:删除指定链上的一条规则,规则从1编号
• iptables -P chain target:设置指定链上到目标机器的默认处理动作。
• iptables -I chain [rule_number]:在指定链上指定位置插入一条规则。
使用iptables来配置一个简单的防火墙,只允许通过SSH和HTTP访问服务器。
$ sudo systemctl status iptables
$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
$ sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
conntrack是一种状态跟踪和记录的机制,本身并不能过滤数据包,只是提供包过滤的依据。有状态是一种过滤依据,无状态实际也是一种过滤依据。其他还有INVALID(无效连接)、CLOSE(关闭连接)、TIME_WAIT(等待超时)、NEW(新建连接)等状态。
$ sudo iptables -P INPUT DROP
iptables -A INPUT -p tcp --dport 23 -j DROP
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
iptables –A INPUT –p tcp –dport 22 –s 172.16.10.0/24 –j ACCEPT
iptables –A INPUT –p tcp –dport 22 -j DROP
iptables -A FORWARD -p ! icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -s 192.168.1.0/24 -m time --weekdays 1,2,3,4,5 --timestart 08:30 --timestop 18:00 -j ACCEPT
iptables -I INPUT -s 172.16.1.0/24 -j DROP
iptables -I FORWARD -s 172.16.1.0/24 -j DROP
at now +2 hours
at> iptables -D INPUT 1
at> iptables -D FORWARD 1
例:屏蔽某个ip
# iptables -I INPUT -s 10.0.0.7 -j DROP
# iptables -I INPUT -s 172.16.1.7 -j DROP
iptables -A INPUT -s 172.16.0.0/16 -d 192.168.1.111 -p tcp --dport 21 -m time --timestart 8:30 --timestop 18:00 --weekdays 1,2,3,4,5 -m connlimit --connlimit-upto 5 -j ACCEPT
引用:iptables常用命令_iptables命令-CSDN博客
防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
如果匹配成功规则,即明确表示是拒绝(DROP)
还是接收(ACCEPT)
,数据包就不再向下匹配新的规则。
如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则
得到明确的阻止还是通过。
防火墙的默认规则是所有规则都匹配完才会匹配的。
DROP 是直接将流量丢弃而且不响应;
REJECT 则会在拒绝流量后再回复一条“信息已经收到,但是被扔掉了”信息,从而让流量发送方清晰地看到数据被拒绝的响应信息。
防火墙策略规则是按照从上到下的顺序匹配的,因此一定要把允许动作放到拒绝动作前面,否则所有的流量就将被拒绝掉,从而导致任何主机都无法访问我们的服务。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。