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文件内容如下:

#!/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指令和终端机提供的

sudo iptables-restore < iptables.conf

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

更方便的作法──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文件。

sudo dpkg-reconfigure iptables-persistent

ubuntu服务器修改保存文件,Ubuntu Server 如何永久保存iptables的设置?相关推荐

  1. ubuntu服务器版编辑文件,Ubuntu 服务器版 18.04.4 固定 IP 设置

    1.输入命令 su 以root用户权限操作 2.找到Ubuntu网络配置文件 vim /etc/netplan/50-cloud-init.yaml 3.输入 i  让文件变成可编辑状态 4.修改内容 ...

  2. ubuntu服务器ftp无法上传文件,ubuntu服务器上传文件ftp

    ubuntu服务器上传文件ftp 内容精选 换一换 通过Web浏览器登录主机,提供协同分享.文件传输.文件管理和预置命令等功能.用户在主机上执行的所有操作,被云堡垒机记录并生成审计数据.协同分享指会话 ...

  3. [Ubuntu]在Ubuntu系统下连接远程Ubuntu服务器并传输文件:安装putty, filezilla

    转载自:[Ubuntu]在Ubuntu系统下连接远程Ubuntu服务器并传输文件_北望花村-CSDN博客_ubuntu上传文件到服务器 本篇文章介绍,如何在Ubuntu系统下连接远程Ubuntu系统并 ...

  4. 【ubuntu】本地访问ubuntu服务器的jupyter文件,.ipynb误删除找回、恢复

    [ubuntu]本地访问ubuntu服务器的jupyter文件,.ipynb误删除找回.恢复 提取浏览器cache文件 将文件转为json并处理为ipynb格式 本文大部分基于博客<灾难恢复:j ...

  5. Ubuntu服务器之间传输文件夹/目录

    将当前Ubuntu服务器上某文件夹传输到另一台Ubuntu服务器目标文件夹下: scp -r [当前服务器上文件夹位置] [目标服务器用户名]@[目标服务器IP地址]:[目标文件夹绝对路径] 一般会要 ...

  6. php保存文件乱码,如何解决php保存文件乱码的问题

    如何解决php保存文件乱码的问题 发布时间:2020-07-15 15:58:54 来源:亿速云 阅读:80 作者:Leah 这篇文章将为大家详细讲解有关如何解决php保存文件乱码的问题,文章内容质量 ...

  7. ubuntu服务器修改root密码

    ubuntu18部署ruoyi前后端分离版 说明 之前部署项目都是使用 centos7 ,很少接触 ubuntu , 但是有的编程环境需要使用 ubuntu , 所以使用 ubuntu18 部署 sp ...

  8. Ubuntu服务器访问PHP文件显示该网页无法正常运作,目前无法处理此请求HTTP ERROR 500?

    一.问题描述 使用Ubuntu服务器搭建Apache服务器的php后台时,试图通过网址访问php文件,由于php文件访问数据库有错误,本来应该显示具体报错信息,但是网页总返回该网页无法正常运作,目前无 ...

  9. ubuntu如何修改php文件夹权限,Linux命令chmod:修改文件或文件夹权限

    在Linux中要修改一个文件夹或文件的权限我们需要用到linux chmod命令来做,下面我写了几个简单的实例大家可参考一下. 语法如下: chmod [who] [+ | - | =] [mode] ...

最新文章

  1. 飞凌OK6410开发板移植u-boot官方最新版u-boot-2012.10.tar.bz2
  2. 【SeaJS】【3】seajs.data相关的源码阅读
  3. 最人性化的在线作图工具
  4. 【项目实战课】基于Pytorch的StyleGAN人脸属性(表情、年龄、性别)编辑实战
  5. pragma名字的来源
  6. Android 使用ViewPager实现view轮播效果,单个item分页样式,多个item分页样式,横向listview
  7. 高端大气上档次的官网介绍导航页源码
  8. 城市社会经济专项规划之生态文化规划
  9. Ubuntu 通过apt安装VSCode
  10. python数据分析与展示 嵩天_Python数据分析与展示第2周学习笔记(北理工 嵩天)...
  11. 管理感悟:承认错误,善于总结
  12. Linux服务跟随启动,关于linux服务启动与自启动
  13. mnist数据集无法下载
  14. Windows系统怎么查看电脑的系统位数?
  15. HTML5游戏引擎(一)-egret引擎简介——一个开源免费的游戏框架
  16. mysql 口令_怎么样为用户设定口令(MYSQL)_MySQL
  17. python安装.egg文件_芳草地-小狍子的空间_百度空间
  18. webstorm激活码
  19. 天蝎座2005年运势
  20. 线程让步(yield)和线程睡眠(sleep)区别

热门文章

  1. jquery根据滚动像素显示隐藏顶部导航条
  2. 第17章分布式爬虫-17-1 分布式系统简介
  3. c# lu分解的代码_LU分解(1)
  4. python闭包的应用场景_Python闭包函数定义与用法分析
  5. ssm校园帮代服务系统的设计与实现答辩PPT模板
  6. 韩国大面积断网事情,可能遭受了DDoS攻击,网友:真的是黑客攻击吗?
  7. 数据结构与算法之-----二叉树(二)
  8. css放服务器ttf文件格式,CSS如何实现读取服务器字体
  9. 怎样看mysql是不是支持SSL_mysql是如何支持ssl通信的?
  10. P3052 [USACO12MAR]摩天大楼里的奶牛Cows in a Skyscraper [模拟退火]