防火墙Linux
一、
1 什么是防火墙
1.1.1 基本定义
防火墙是一种网络安全系统,用于监控和控制进出网络的网络流量,它通过设置预定的安全规则,允许或阻止数据包的传输,从而保护内部网络免受外部威胁。
1.1.2 工作原理
防火墙主要工作在网络层,通过深度包检测(DPI)来分析数据包的头部和内容,根据预定义的规则来决定放行或者丢弃数据包。
1.1.3 作用与重要性
防火墙是网络安全的第一道防线,能够防止未经授权的访问、过滤恶意流量、保护内部网络设备和数据,对于企业和个人用户来说,配置合适的防火墙策略是保障信息安全的关键步骤。
2 Linux下的防火墙
1.2.1 Netfilter框架
Netfilter是Linux内核中的一个子系统,用于实现数据包的过滤、修改和地址转换功能,它提供了一套钩子函数,可以在数据包处理的不同阶段调用。
1.2.2 iptables简介
iptables是一个命令行工具,用于配置Linux内核中的Netfilter规则表,它功能强大且灵活,但配置相对复杂,适用于需要细粒度控制的场景。
1.2.3 firewalld简介
firewalld是一种动态管理防火墙的工具,基于iptables构建,但提供了更友好的命令行接口和图形界面(如firewall-config),它支持区域概念,使配置更加简单和灵活。
二、使用iptables创建防火墙
1 安装与验证
2.1.1 检查是否安装
打开终端并输入以下命令以检查iptables是否已经安装:
sudo iptables -L
如果未安装,可以使用以下命令进行安装(基于不同的Linux发行版):
Debian/Ubuntu:
sudo apt-get install iptables
RHEL/CentOS:
sudo yum install iptables-services
2.1.2 启动与停止服务
启动iptables服务:
Debian/Ubuntu:
sudo systemctl start iptables
RHEL/CentOS:
sudo systemctl start iptables
停止iptables服务:
Debian/Ubuntu:
sudo systemctl stop iptables
RHEL/CentOS:
sudo systemctl stop iptables
2 配置默认策略
2.2.1 设置默认策略为DROP
为了提高安全性,通常将链的默认策略设置为DROP,这意味着所有不符合明确规则的流量都将被丢弃。
sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT
3 添加规则
2.3.1 允许特定流量通过
假设我们需要允许SSH(端口22)和HTTP(端口80)流量通过防火墙,可以添加以下规则:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2.3.2 阻止特定流量
要阻止所有来自特定IP地址(如192.168.1.100)的流量,可以使用以下规则:
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
4 保存与恢复配置
2.4.1 保存当前配置
在Debian/Ubuntu系统中,可以使用以下命令保存iptables配置:
sudo sh -c "iptables-save > /etc/iptables/rules.v4"
在RHEL/CentOS系统中,可以使用以下命令:
sudo service iptables save
2.4.2 恢复配置
在Debian/Ubuntu系统中,可以使用以下命令恢复iptables配置:
sudo sh -c "iptables-restore < /etc/iptables/rules.v4"
在RHEL/CentOS系统中,可以使用以下命令:
sudo service iptables restart
三、使用firewalld创建防火墙
1 安装与启动
3.1.1 检查是否安装
打开终端并输入以下命令以检查firewalld是否已经安装:
sudo firewall-cmd --state
如果未安装,可以使用以下命令进行安装(基于不同的Linux发行版):
RHEL/CentOS:
sudo yum install firewalld
Fedora:
sudo dnf install firewalld
3.1.2 启动与停止服务
启动firewalld服务:
sudo systemctl start firewalld
停止firewalld服务:
sudo systemctl stop firewalld
2 配置默认区域
3.2.1 查看当前区域配置
输入以下命令查看当前使用的防火墙区域:
sudo firewall-cmd --get-default-zone=public --permanent
3.2.2 更改默认区域
要将默认区域更改为“work”,可以使用以下命令:
sudo firewall-cmd --set-default-zone=work --permanent
3.2.3 查看区域详情
查看特定区域的详细信息,work”区域:
sudo firewall-cmd --zone=work --list-all
3 添加规则到区域
3.3.1 允许服务与端口
假设我们需要允许HTTP和HTTPS服务,可以通过以下命令添加规则:
sudo firewall-cmd --zone=public --add-service=http --permanent sudo firewall-cmd --zone=public --add-service=https --permanent
3.3.2 允许特定IP与端口段
要允许特定IP地址(如192.168.1.100)访问特定端口段(如1000-2000),可以使用以下命令:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="1000-2000" accept' --permanent
4 重新加载配置
每次修改配置后,需重新加载防火墙以使更改生效:
sudo firewall-cmd --reload
四、高级配置与优化
4.1 NAT与Masquerade(Masquerading)
4.1.1 DNAT目标地址转换
目标地址转换(DNAT)用于修改数据包的目的地址,将内网IP映射到公网IP:
sudo iptables -t nat -A PREROUTING -d <内网IP> -j DNAT --to-source <公网IP>
4.1.2 SNAT源地址转换
源地址转换(SNAT)用于修改数据包的源地址,将所有来自内网的流量转换为一个公网IP:
sudo iptables -t nat -A POSTROUTING -s <内网IP> -j SNAT --to-source <公网IP>
2 连接跟踪与状态匹配
4.2.1 状态匹配基础配置
状态匹配用于跟踪连接的状态,允许已建立的连接和相关的数据包通过:
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
4.2.2 限制无效连接状态的数据包通过防火墙
限制无效连接状态的数据包通过防火墙以提高安全性:
sudo iptables -A INPUT -m state --state INVALID -j DROP
3 Logging与通知机制
4.3.1 记录被拒绝的连接尝试日志信息便于审计分析安全事件原因及影响范围请确保启用了rsyslog或其他日志服务并将相关信息重定向至指定文件如/var/log/messages或/var/log/iptables.log等具体操作如下所示:
开启日志记录功能:sudo sysctl net.ipv4.ip_forward=1
(针对iptables) 或者直接编辑配置文件/etc/sysctl.conf
然后执行sysctl -p
使其生效;对于firewalld而言则是修改相应区域的设置项即可例如:sudo firewall-cmd --zone=public --add-logging=yes --permanent
之后再运行一次sudo firewall-cmd --reload
确保改动立即生效,同时还可以利用journalctl
工具查看实时日志输出以便及时发现潜在风险点采取相应措施加以应对减少损失程度。(注意:此处仅为示例实际生产环境中请根据具体情况调整参数设置以达到最佳效果)。
各位小伙伴们,我刚刚为大家分享了有关“防火墙linux”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1310342.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复