iptables 是 Linux 上用于配置网络防火墙规则的工具。以下是使用 iptables 在 Linux 系统上配置防火墙的具体步骤。
更新系统。出于安全原因,开发人员需要经常性的提供软件包更新发行版和操作系统。
在ubuntu中安装iptables防火墙。iptables有两个不同版本,分别用关于IPv4和IPv6,这两种不同协议无法协同工作需要单独配置,本文以IPv4为例。大多数linux系统都默认安装了iptables。确认iptables的安装命令为:
sudo apt-get install iptables
确保iptables规则在重启后仍有效,需要使用下面命令安装iptables持久包:
sudo apt-get install iptables-persistent
安装完成后,iptables文件夹将包含两个用于 IPV4 和 IPV6 规则的文件:
/etc/iptables/rules.v4
/etc/iptables/rules.v6
一般,iptables命令如下:
sudo iptables [option] CHAIN_rule [-j target]
以下是一些常见的iptables选项的列表:
·-A --append:将规则添加到字符串(在末尾)。
·-C --check:查找符合字符串要求的规则。
·-D --delete:从字符串中删除指定的规则。
·-F --flush:删除所有规则。
·-I --insert:在给定位置的字符串中添加规则。
·-L --list:显示字符串中的所有规则。
·-N -new chain:创建一个新字符串。
·-v --verbose:使用列表选项时显示更多信息。
·-X --delete-chain:删除提供的字符串。
检查iptables的当前状态,显示服务器当前的全部规则:
sudo iptables -L
系统会显示频道状态,输出会列出三个字符串。
:~# sudo iptab
Chain INPUT (policy ACCEPT)
Carget prot opt source destination
Chain FORWARD (policy ACCEPT)
tarqet prot opt source destination
Chain OUTPUT (policy ACCEPT)
tarqet prot opt source destination
:~#
允许本地主机上流量通过:
sudo iptables -A INPUT -i lo -j ACCEPT
这个命令会把防火墙配置为接受本地主机 (lo) 接口 (-i) 的流量。应该设置这个规则来允许应用程序和本地主机接口通信。这样来自系统的内容都可以通过防火墙。
端口是为特点类型数据指定的通信端点。允许特定端口上的流量通过。下面规则可以指定不同端口上的流量通过。允许 HTTP Web 流量命令:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
允许入站SSH(安全外壳)流量,输入以下内容(默认使用SSH端口号22,根据端口号不同调整命令):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
允许 HTTPS Internet 流量,请输入以下命令:
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
其中:
-p:检查指定的协议(tcp)。
--dport:指定目标端口。
-j jump:执行操作。
使用下面命令接收来自特点IP地址流量:
sudo iptables -A INPUT -s your_IP_address_to_authorise -j ACCEPT
把命令中的IP地址替换为要授权的IP地址。另外还可以阻止某个特定IP流量:
sudo iptables -A INPUT -s your_IP_address_to_block -j DROP
这个命令IP地址替换成需要阻止的IP地址。拒绝某个IP地址范围的流量:
sudo iptables -A INPUT -m iprange --src-range your_start_IP_address-your_end_IP_address -j REJECT
·其中:-m:匹配指定的选项。
·-iprange:指示系统等待一个 IP 地址范围而不是一个 IP 地址。
·--src-range:标识 IP 地址范围。
在定义iptables防火墙规则,删除来自其他端口的所有流量来防止未经授权的访问:
sudo iptables -A INPUT -j DROP
A 选项为字符串添加了一条新规则。如果连接通过您定义的端口以外的端口,则该连接将被中断。删除规则中,更精确的方法是删除规则的行号:
sudo iptables -P INPUT DROP
先输入以下命令列出所有规则:
sudo iptables -L --line-numbers
找出要删除的防火墙规则行,并运行以下命令:
sudo iptables -D INPUT <Number>
<Number>
替换为需要删除的规则行号。最后保存更改。系统重启后,iptables不会保存刚创建的规则。要将规则保存在基于Ubuntu的系统上。先用root身份登录sudo su:
ubuntu@server:~$ sudo su
root@server:/home/ubuntu#
再运行:
iptables-save > /etc/iptables/rules.v4
这样规则就会直接保存在IPv4文件夹中,下次系统再启动时,iptables就会自动重新加载防火墙规则。