TypechoJoeTheme

尘遇 logo

当我遇上你
排行榜
统计

Ubuntu Server 如何永久保存iptables的设置?

醉书生站长
3周前
0 评论
74 阅读
检测收录...
11/11

iptables是Linux操作系统常用的netfilter防火墙规则的管理指令。对于刚接触iptables的用户来说,经常会不知道该如何把用iptables设置好的防火墙规则进行「存盘」,让它在下次开机时也可以保留上一次开机所设置的规则。事实上,不同的Linux发行版有不同的iptables的保存方式,本篇文章将会介绍Ubuntu Server的iptables保存方式。

iptables范例

我们先来做个iptables的范例。提醒一下,这个范例看看就好,不要照做哦!怕各位不小心把自己的防火墙规则改乱了。

首先,为了方便说明,先用以下指令将iptables已经设置的防火墙规则和所有表格的方针(policy)清空。

sudo iptables -P INPUT ACCEPT && sudo iptables -P FORWARD ACCEPT && sudo iptables -P OUTPUT ACCEPT && sudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F

使用以下指令可以查看目前的iptables防火墙过滤规则(filter表)。

sudo iptables -L

假设我们的服务器运行SSH(监听TCP连接端口22)和HTTP/HTTPS(监听TCP连接端口80和443)服务,可以运行以下的几个指令,来使防火墙只允许TCP连接端口22、80和443的连入。

如果您是通过SSH连接,操作远程Linux操作系统来运行这边的指令,建议先将指令做成一个Bash文件来运行。也要留意一下指令的运行顺序,避免远程主机从此连不上……

Bash文件内容如下:iptables.sh

#!/bin/bash
sudo iptables -A INPUT -i lo -j ACCEPT                                           #允许所有来自本机的封包
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT            #允许已经创建连接或是有与其它连接相关连的封包。
sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT   #允许TCP连接端口22的创建连接封包。
sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT   #允许TCP连接端口80的创建连接封包。
sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT  #允许TCP连接端口443的创建连接封包。
sudo iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT                   #允许ICMP封包(允许「ping」指令)。
sudo iptables -P INPUT DROP                                                      #过滤所有不在规则中的连入封包。
sudo iptables -P FORWARD DROP                                                    #过滤所有不在规则中的转递封包。

运行以上的Bash文件后,再运行以下指令来确认

sudo iptables -L

iptables存盘

基本存盘与读档的方式
将iptables的设置给保存下来的基本方式,是使用iptables-save这个指令。例如以下指令,可以直接在终端机上显示iptables的目前的所有设置:

sudo iptables-save

利用终端机提供的>功能,可以将iptables-save指令的输出结果直接导到某个文件中保存。例如以下指令,可以将iptables的设置存成iptables.conf文件:

sudo iptables-save > iptables.conf

接着搭配iptables-restore指令和终端机提供的<功能,可以将先前的iptables存盘作为iptables-restore指令的标准输入(stdin),来使iptables套用先前存下来的设置。例如以下指令,可以让iptables套用先前iptables.conf文件中的设置:

sudo iptables-restore < iptables.conf


也就是说,只要把以上的iptables-restore指令,放在开机会自动运行的设置档中运行,就可以达到永久保存iptables设置的效果了!如果您还有使用IPv6的ip6tables的话,对应的指令为ip6tables-save和ip6tables-restore。

或者

iptables-save > /etc/iptables/rules.v4 && ip6tables-save > /etc/iptables/rules.v6

iptables-persistent

更方便的作法──iptables-persistent
Ubuntu Server提供了iptables-persistent套件,可以简化刚才提到的「基本存盘与读档的方式」,支持iptables和ipv6tables,完全不需要手动使用iptables-save等相关指令。

运行以下指令,即可安装iptables-persistent套件:

sudo apt install iptables-persistent

iptables-persistent套件在安装时,就会跳出是否要保存目前iptables和ipv6tables的画面。

选择Yes的话,就可以把iptables或ip6tables的设置,分别通过iptables-save和ip6tables-save指令,保存到/etc/iptables/rules.v4和/etc/iptables/rules.v6文件中。如此一来,Ubuntu Server在开机时,就会自动使用iptables-restore和ip6tables-restore指令来套用/etc/iptables/rules.v4和/etc/iptables/rules.v6中保存的设置。

若您在安装iptables-persistent套件之后,又去修改了iptables或是ipv6tables的设置,并且想永久保存下来的话,可以运行以下指令,来让iptables-persistent套件重新询问是否要以目前的iptables和ipv6tables设置来修改/etc/iptables/rules.v4和/etc/iptables/rules.v6文件。

Setup the IPv4 firewall rules in/etc/iptables/rules.v4:

sudo nano /etc/iptables/rules.v4

Paste the following into /etc/iptables/rules.v4:

*filter
#  Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
#  Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#  Allow all outbound traffic - you can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
#  Allow HTTP and HTTPS connections from anywhere (the normal ports for websites and SSL).
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
#  Allow SSH connections
#  The -dport number should be the same port number you set in sshd_config
-A INPUT -p tcp -m state --state NEW --dport 333 -j ACCEPT
#  Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
#  Log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
#  Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT

Setup the IPv6 firewall rules in /etc/iptables/rules.v6:

sudo nano /etc/iptables/rules.v6

Paste the following into /etc/iptables/rules.v6:

*filter
# Accept established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow loopback interface traffic
-A INPUT -i lo -j ACCEPT
# Reject non-loopback interface traffic to loopback IP addresses
-A INPUT ! -i lo -d ::1/128 -j REJECT
# Allow outbound traffic
-A OUTPUT -j ACCEPT
# Allow ping
-A INPUT -p icmpv6 -m state --state NEW -m icmpv6 --icmpv6-type 8 -j ACCEPT
# Log denied connections
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Reject all other inbound and forward traffic (default deny unless explicitly allowed)
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT

Activate the firewall v4 and v6 rules now:

sudo iptables-restore < /etc/iptables/rules.v4 && sudo ip6tables-restore < /etc/iptables/rules.v6

sudo dpkg-reconfigure iptables-persistent
本文共883个字数,您已阅读:平均阅读时长≈3分钟。
ubuntu
朗读
点赞
1
赞赏
海报
人生
欢迎
要时间嘉许,等春风得意,我正好遇上你!

微信/QQ/支付宝三合一收款码

微信
QQ
支付宝
打开微信/QQ/支付宝扫一扫,即可进行扫码打赏!
版权属于:

尘遇

最后修改:

2021 年 11 月 12 日 07 : 51 AM

本文链接:

https://chenyu.me/1500.html(转载时请注明本文出处及文章链接)

暂无评论

光阴者,百代之过客

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

最新回复

  1. 小斌秀才
    2021-12-07
  2. GGHZT贡士
    2021-12-06
  3. 米奇秀才
    2021-12-06
  4. GGHZT贡士
    2021-12-04

    {!{data:image/webp;base64,UklGRpIEAABXRUJQVlA4WAoAAAAwAAAAtQMAKwEASUNDUBgCAAAAAAIYAAAAAAIQAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANkFMUEgbAAAAAQcQEREQkCT9/09G9D/jP//5z3/+85///F9vAFZQOCAwAgAAkEAAnQEqtgMsAT9xuNlltK8rpyAIApAuCWlu4XdhG0AJ7APfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkN4AAP7/rR4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=}!}

  5. GGHZT贡士
    2021-11-30