ubuntu防火墙设置(四)——iptables语法与防火墙基础配置
前面介绍的ufw和firewall-config均为iptables的前端,
分别适合个人用户和服务器网络管理
下面介绍底层——ipables
iptables是一个强大的工具,用于配置Linux系统的防火墙。以下是一些基本的使用方法和示例,帮助您入门:
基本语法
1. 查看当前规则
要查看当前的iptables规则,可以使用以下命令:
sudo iptables -L -v -n
2. 添加规则
允许特定端口的流量
例如,允许HTTP(端口80)和HTTPS(端口443)的流量:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
拒绝特定IP的流量
例如,拒绝来自特定IP地址的流量:
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
3. 删除规则
要删除特定的规则,可以使用-D
选项。例如,删除刚才添加的HTTP规则:
sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT
4. 保存规则
在Ubuntu中,iptables的规则在重启后不会自动保存。您可以使用以下命令保存当前规则:
sudo iptables-save > /etc/iptables/rules.v4
要在系统启动时自动加载这些规则,您可以安装iptables-persistent
:
sudo apt install iptables-persistent
在安装过程中,系统会询问您是否要保存当前的iptables规则。
5. 清空规则
如果您想清空所有的iptables规则,可以使用以下命令:
sudo iptables -F
6. 设置默认策略
您可以设置默认策略来处理未匹配的流量。例如,设置默认策略为拒绝所有流量:
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
7. 其他常用选项
- -A:添加规则到链的末尾。
- -I:在链的开头插入规则。
- -D:删除规则。
- -F:清空链中的所有规则。
- -P:设置默认策略。
- -s:指定源IP地址。
- -d:指定目标IP地址。
- -p:指定协议(如tcp、udp等)。
- –dport:指定目标端口。
注意事项
- 使用iptables时,请小心操作,尤其是在远程管理服务器时,错误的规则可能会导致您失去对服务器的访问。
- 在进行更改之前,建议备份当前的iptables规则。
通过这些基本命令,您可以开始使用iptables来管理Linux系统的网络流量。
基础配置示例
http(s)服务器的防火墙配置
#检查是否安装了iptables
whereis iptables
#安装iptables
apt-get install iptables
#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
#开放dhcp客户端(可删除)
iptables -A INPUT -p udp --sport 67 --dport 68 -j ACCEPT
#开放995端口(POP3s)
iptables -A INPUT -p tcp --dport 995 -j ACCEPT
#开放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#开放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP
#允许接受本机请求之后的返回数据 RELATED,是为软件设置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#保存上述规则
service iptables save
服务器内网管理进阶配置
#如果要添加内网ip信任(接受其所有TCP请求)
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
#过滤所有非以上规则的请求
iptables -P INPUT DROP
#要封停一个IP,使用下面这条命令:
iptables -I INPUT -s ***.***.***.*** -j DROP
#要解封一个IP,使用下面这条命令:
iptables -D INPUT -s ***.***.***.*** -j DROP
客户端基础配置
- 非副取其,不用提供http,https,
- 不远程登陆,也不用提供ssh,
- 配置非常简单
#检查是否安装了iptables
whereis iptables
#安装iptables
apt-get install iptables
#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
#开放dhcp客户端(可删除)
iptables -A INPUT -p udp --sport 67 --dport 68 -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP
#允许接受本机请求之后的返回数据 RELATED,是为软件设置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
、
iptables -A INPUT -i lo -j ACCEPT的作用是什么
- 这条命令的作用是允许本地回环接口(lo)接收进入的数据包,并将其接受并进行处理。
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT的作用是什么
- 这条规则的作用是允许已建立的连接和相关的连接通过防火墙的INPUT链。通过使用RELATED和ESTABLISHED状态,可以让服务器响应之前的请求,并且能够正常进行通信。
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT可能会导致与发起连接相关的、但由攻击者发起的报文攻击吗?
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
这条规则的作用是允许已经建立的连接和相关的连接通过防火墙。虽然这条规则本身是为了允许正常的流量,但在某些情况下,它可能会与攻击者的行为相关联。
-
攻击者利用已建立连接:如果攻击者能够成功建立与目标系统的连接(例如,通过合法的身份验证),那么后续的流量可能会被这条规则接受。这意味着,如果攻击者已经获得了某种形式的访问权限,他们可以利用这条规则进行进一步的攻击。
-
相关流量:如果攻击者发起的连接是与某个合法连接相关的(例如,某个应用程序的回调或数据流),那么这条规则也可能允许这些流量通过。
为了降低风险,建议采取以下措施:
-
限制入站流量:在允许已建立连接的流量之前,先明确允许哪些特定的入站流量(如 SSH、HTTP、HTTPS 等),并拒绝其他所有流量。
-
使用其他防护措施:结合使用其他安全措施,如入侵检测系统(IDS)、入侵防御系统(IPS)和应用层防火墙,以监控和防止潜在的攻击。
-
定期审查规则:定期审查和更新防火墙规则,以确保它们符合当前的安全需求。
总之,虽然这条规则本身并不会直接导致攻击,但在不当配置或缺乏其他安全措施的情况下,可能会被攻击者利用。因此,合理配置防火墙规则和采取综合的安全措施是非常重要的。
iptables规则保存,用于开机自启动
- 有两种方式
1. iptables-persistent&netfilter-persistent
工具比较
-
iptables-persistent 是一个用于保存和恢复 iptables 规则的工具。它可以在系统启动时自动加载之前保存的规则。
-
netfilter-persistent 是一个更通用的工具,旨在管理与 Linux 内核中的 Netfilter 框架相关的所有类型的规则,包括 iptables、ip6tables(用于 IPv6)和 arptables(用于 ARP).
-
iptables-persistent通过netfilter-persisitent重新保存和开机加载iptables规则
-
netfilter保存
sudo netfilter-persistent save
- netfilter加载
sudo netfilter-persistent reload
2. 使用 iptables-save
和 iptables-restore
您也可以使用 iptables-save
和 iptables-restore
命令手动保存和加载规则。
-
iptables-save 命令会输出当前所有的 iptables 规则,包括所有链(如 INPUT、OUTPUT、FORWARD)和规则的详细信息。
-
同样,iptables-store 命令会输出当前所有存储的 iptables 规则,包括所有链(如 INPUT、OUTPUT、FORWARD)和规则的详细信息。
-
保存规则
sudo iptables-save > /etc/iptables/rules.v4
- 加载规则
在系统启动时,您可以通过创建一个启动脚本来加载规则。可以将以下内容添加到/etc/rc.local
文件中(确保该文件可执行):
#!/bin/sh -e
iptables-restore < /etc/iptables/rules.v4
exit 0
链接
- 华为云教程:https://bbs.huaweicloud.com/blogs/300487
- 大佬的基础配置:https://blog.csdn.net/weixin_36032459/article/details/125147050
- 新奇的防火墙配置:https://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-20-04
原文地址:https://blog.csdn.net/shuia64649495/article/details/144302827
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!