在Linux系统中,防火墙的配置对于服务器的安全至关重要,尤其是Web服务器和SSH远程服务的配置。通过正确配置防火墙规则,可以有效地防止外部非法访问、入侵等风险。本指南将详细介绍如何在Linux环境中配置防火墙,以保证Web服务器和SSH服务的安全运行。
一、什么是防火墙?
防火墙是一种网络安全设备或软件,用于监控并控制进出网络的流量,通常基于预设的安全规则。防火墙可以过滤数据包,防止未经授权的访问。
1. 防火墙的主要功能
- 数据包过滤:根据特定的规则,允许或拒绝通过防火墙的流量。
- 端口管理:只允许特定端口的流量,关闭不必要的端口。
- 防止DDoS攻击:通过限制IP的连接频率,防止分布式拒绝服务攻击。
2. Linux中的防火墙工具
- iptables:Linux内核自带的防火墙工具。
- firewalld:CentOS 7+ 默认防火墙工具,提供动态防火墙管理。
- ufw:Ubuntu系统中简化的防火墙管理工具,基于iptables。
本指南将介绍如何使用firewalld
和ufw
来配置Web服务器和SSH服务。
二、安装并启用防火墙
1. CentOS中安装firewalld
firewalld
是CentOS的默认防火墙管理工具,通常系统自带。如果未安装,可以通过以下命令进行安装:
sudo yum install firewalld
启动并设置防火墙开机启动:
sudo systemctl start firewalld
sudo systemctl enable firewalld
查看防火墙状态:
sudo firewall-cmd --state
2. Ubuntu中安装ufw
在Ubuntu系统中,默认防火墙工具是ufw
,同样可能已经安装。检查是否已安装并启用:
sudo ufw status
如果没有安装,可以通过以下命令进行安装:
sudo apt install ufw
启动并启用ufw:
sudo ufw enable
查看防火墙状态:
sudo ufw status verbose
三、Web服务器防火墙配置
对于Web服务器(如Nginx或Apache),需要打开HTTP(80端口)和HTTPS(443端口),以便允许外部访问。
1. 使用firewalld开放80和443端口(CentOS)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
验证端口规则是否生效:
sudo firewall-cmd --list-all
2. 使用ufw开放80和443端口(Ubuntu)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
查看已开放的端口:
sudo ufw status
3. 限制IP访问Web服务器
如果只允许特定IP地址访问Web服务器,可以设置特定IP的规则。例如,允许192.168.1.10
访问HTTP服务:
CentOS:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.10" service name="http" accept'
sudo firewall-cmd --reload
Ubuntu:
sudo ufw allow from 192.168.1.10 to any port 80
四、SSH远程服务防火墙配置
SSH服务默认监听在22端口,防火墙需要允许22端口的流量,以便远程登录服务器。
1. 使用firewalld开放22端口(CentOS)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
2. 使用ufw开放22端口(Ubuntu)
sudo ufw allow 22/tcp
sudo ufw reload
3. 限制特定IP访问SSH
为了提高安全性,可以设置只允许特定的IP地址访问SSH服务。
CentOS:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.10" service name="ssh" accept'
sudo firewall-cmd --reload
Ubuntu:
sudo ufw allow from 192.168.1.10 to any port 22
4. 更改SSH端口并配置防火墙
为了避免默认22端口的扫描攻击,可以修改SSH服务的端口号。例如,将SSH端口修改为2222,并配置防火墙:
修改/etc/ssh/sshd_config
文件:
sudo vi /etc/ssh/sshd_config
将Port 22
修改为Port 2222
,然后重启SSH服务:
sudo systemctl restart sshd
CentOS:
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
Ubuntu:
sudo ufw allow 2222/tcp
sudo ufw reload
五、防止DDoS攻击的防火墙配置
防火墙不仅可以控制访问,还能设置规则防止DDoS攻击。例如,可以限制某个IP的连接频率,防止频繁的请求导致服务器瘫痪。
CentOS:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="http" limit value="50/m" accept'
sudo firewall-cmd --reload
Ubuntu:
sudo ufw limit 80/tcp
六、防火墙规则的备份与还原
为了防止误操作导致防火墙配置出错,可以在进行大规模修改前备份防火墙规则。
1. 备份firewalld规则
sudo firewall-cmd --runtime-to-permanent
2. 还原firewalld默认配置
sudo firewall-cmd --reload
3. 备份ufw规则
sudo cp /etc/ufw/ufw.conf /etc/ufw/ufw.conf.backup
4. 还原ufw默认配置
sudo ufw reset
七、总结
通过本文的介绍,大家应该掌握了如何在Linux系统中使用firewalld和ufw配置防火墙规则,确保Web服务器和SSH服务的安全运行。具体包括如何开放常用端口、限制IP访问、提高SSH服务的安全性以及防止DDoS攻击。防火墙的合理配置是服务器安全的重要保障,希望大家能够灵活应用。