1. 什么是防火墙?
防火墙是一种网络安全系统,用于监控和控制网络流量。通过使用规则,防火墙可以允许或拒绝进入或离开网络的数据包。Linux系统自带一种防火墙程序iptables,它可以用于保护服务器免受外部攻击。
2. iptables基础
2.1 iptables规则
iptables通过设置规则来控制流量。每个规则都由链(chain)、规则动作(policy)和匹配条件(match)构成。链可以理解为数据包处理的大类别,规则动作可以是ACCEPT、DROP或REJECT,匹配条件用于决定规则是否应该应用到一个数据包上。
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
这个例子中,-A参数表示添加规则,INPUT表示它是应用于输入链的规则,-i指定接口名称为eth0,-p指定协议为TCP,--dport指定目标端口号为22,-j指定规则动作为ACCEPT,即接受数据包。
2.2 iptables链
iptables为四个链提供了默认规则:INPUT、OUTPUT、FORWARD和PREROUTING。
INPUT链用于控制从外部网络进入服务器的数据包。
OUTPUT链用于控制从服务器离开网络的数据包。
FORWARD链用于控制通过服务器转发的数据包。
PREROUTING链用于在数据包到达相应目标之前转发它们。
3. 防火墙的启动与关闭
3.1 启动iptables
在大多数Linux系统中,iptables已经默认安装并启动。如果你需要手动启动它,可以使用以下命令:
sudo service iptables start
3.2 关闭iptables
如果需要暂时关闭iptables,可以使用以下命令:
sudo service iptables stop
如果需要彻底禁用iptables,可以使用以下命令:
sudo chkconfig iptables off
4. 防火墙的常见设置
4.1 开启SSH访问
SSH是一种远程登录协议,它通常使用22号端口。为了让其他用户可以远程登录你的服务器,你需要允许22号端口的数据包通过iptables:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
如果你想限制谁可以访问服务器,可以按以下方式进行配置:
sudo iptables -A INPUT -p tcp -s IP地址/子网掩码 --dport 22 -j ACCEPT
这个规则将只允许来自指定IP地址或子网的SSH连接。
4.2 允许Web访问
如果你希望用户可以通过Web浏览器访问你的网站,你需要允许Web服务器端口通过iptables:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
这样就可以允许Web浏览器使用HTTP协议连接到你的Web服务器。
4.3 允许DNS查询
如果你使用服务器来提供DNS服务,你需要允许UDP端口53上的数据包通过iptables:
sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT
5. 总结
防火墙是保护服务器安全的一种重要工具。iptables是Linux系统下的一种强大的防火墙程序,它可以用于控制网络流量。掌握iptables如何配置是Linux管理员必备的基础知识。