iptables系列:如何配置ubuntu14.04中的iptables防火墙

singularity      2022-02-08     514

关键词:

IPTables基本命令

在向大家介绍复杂防火墙规则之前,还是先上一些简单的料,让大家对IPTables最为基本的命令有一些简单了解。

首先要说明的是IPTables命令必需以root权限运行,这意味着你需要使用root身份登录或者能够有权限使用su或sudo -i取得root Shell。下面的内容中我们都使用sudo,这也是Ubuntu系统上的首选方法。

最好的起点就是先通过“-L”参数来查看下当前系统的所有IPTables规则:

sudo iptables -L

技术分享

我们可以看到Linux中都有的3个常用默认链(INPUT、OUTPUT和FORWARD),同时也可以看到每个链的缺省策略(每个链对默认策略都是接受),在此我们可以看到Ubuntu中并没有添加任何默认规则集。

如果你希望通过命令来查看每个链的默认规则,可以使用“-S”参数:

sudo iptables -S

技术分享

如果你看到IPTables里面已经有规则了,并希望取消这些规则后重新更配置话,可以使用“-F”参数来清空已有的规则集:

sudo iptables -F

虽然“-F”参数可以清空并刷新链中所有的现有规则集,但并不会对链的默认策略进行更改。因此,如果你是在更改远程VPS防火墙策略的话需要在“-F”清空所有规则时先将INPUT和OUTPUT链的默认策略恢复到ACCEPT,以免规则清空后SSH连接被阻断。要做到这一点可执行如下命令:

sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F

在配置好允许SSH连接后(下面介绍),再将INPUT和OUTPUT链的默认规则更改为DROP即可。

创建自已的IPTables规则

现在就要开始为我们的VPS创建自定义的防火墙规则啦,正如上篇文章中所说,由于INPUT链会处理所有连接到服务器的入站数据包,因此我们的所有操作都与INPUT链有关。现在先来配置服务器允许SSH连接。

完整命令应该是这样的:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

大多朋友可能会觉得看起来怎么这么复杂,那我们来逐一分拆说明下。

  • -A INPUT :表明我们要将此规则追加到某个链的最后,由于我们要操作INPUT链接,所以这么写。
  • -m conntrack :iptables除了自己的核心功能外还只有一些实用的扩展和模块,这个参数表明添加conntrack模块提供的能力。(conntrack模块可以根据先前的连接来确定数据包之间的关系)
  • –ctstate :该参数是conntrack模块提供的,它可以确定如何用现在的数据包去匹配先前获得的数据包。ESTABLISHED值将自动允许现有连接的数据包,RELATED值将允许已建立连接的相关数据包。(这样就与SSH会话特性相匹配上了)
  • -j ACCEPT :这个参数用于指定匹配的数据包的目标。用在这里表示接受和允许符合上述标准的数据包通过。

配置好后我们来看一下:

sudo iptables -L

技术分享

现在,你应该已经知道IPTables的基本语法了,下面我们继续添加规则打怪,以期尽快升级为高手。

接受其它必要连接

大家的VPS上一般SSH服务的22端口,Web服务器的80端口及Mysql的3306端口都是需要打开的,不然怎么对外提供服务呢。因此我们也需要通过如下命令在IPTables中打开这些端口:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

为了保证我们的VPS能够正常运行,还需要添加一条允许规则。通常,计算机上的服务都会发送网络数据包以保持彼此之间的通信。而这种通信会利用到一个名叫loopback的伪网卡将流量引导回自己。因此,我们还需要为loopback网卡添加一条允许规则。

sudo iptables -I INPUT 1 -i lo -j ACCEPT
  • -I INPUT 1 :与“-A”不同,它可以指定要将规则添加到该链的位置。

实施Drop规则

前面讲的内容其实都是基于一个前提假设的,但事先我们需要先把防火墙的2种常用模式说明一下。一种是明确定义允许通过防火墙的规则,不匹配的都丢弃。另外一种是明确定义拒绝通过防火墙的规则,其余的都允许。我们的前提假设采用的就是第一种方式,这样配置起来相对简单,规则也较少,也更加安全。

前面我们已经为INPUT链接定义了一些允许规则,但默认INPUT链是允许所有包,所以我们现在需要将INPUT链的默认规则更改为“Drop”即丢弃。通过如下命令完成更改:

sudo iptables -P INPUT DROP

查看和保存配置

IPTables的配置是立即生效的,前面已经介绍过,在配置好之后我们可以直接用“-L”参数进行查看,这里再另外增加一个“–line-numbers”参数,它主要用于显示行数,对于规则较多时的查看非常方便。

sudo iptables -L --line-numbers

技术分享

虽然IPTables的命令执行后会立即生效,但这个生效过程其实是临时的,系统在重启之后便会丢失。因此,我们还需要将这些配置添加到配置文件当中,以保证系统在下次重启后会自动载入我们的IPTables防火墙规则。

sudo apt-get update
sudo apt-get install iptables-persistent

该命令脚本下载执行后会询问我们是否对IPTables配置进行保存,如果确定的话选择“是”即可。保存后下次重启系统也不会造成配置丢失了。

技术分享

如何配置ubuntu14.04中的iptables防火墙

参考技术A#whereisiptables#查看系统是否安装防火墙可以看到:iptables:/sbin/iptables/usr/share/iptables/usr/share/man/man8/iptables.8.gz#表示已经安装iptablesapt-getinstalliptables#如果默认没有安装,请运行此命令安装防火墙#iptables-L#查看防火墙配置信息... 查看详情

如何配置ubuntu14.04中的iptables防火墙

参考技术A(1)查看本机关于IPTABLES的设置情况[root@tp~]#iptables-L-nChainINPUT(policyACCEPT)targetprotoptsourcedestinationChainFORWARD(policyACCEPT)targetprotoptsourcedestinationChainOUTPUT(policyACCEPT)targetprotoptsourcedestinationChainRH-Firewall-1-INPUT(0references)targetprotoptsourc... 查看详情

ubuntu使用iptables配置防火墙提示:unrecognizedservice(ubuntu配置iptables防火墙)

Ubuntu默认安装是没有开启任何防火墙的。当使用serviceiptablesstatus时发现提示iptables:unrecoginzedservice。意思是无法识别的服务。以下方法来自http://blog.csdn.net/lywzgzl/article/details/39938689,但是测试发现,此方法已经无法在Ubuntu中使用#... 查看详情

ubuntu14.04配置iptables防火墙

...器的安全,建议大家安装启用防火墙设置,这里推荐使用iptables防火墙.如果mysql启本地使用,可以不用打开3306端口.#whereisiptables#查看系统是否安装防火墙可以看到:iptables:/sbin/iptables/usr/share/iptables/usr/share/man/man8/iptables.8.gz#表示 查看详情

如何配置ubuntu14.04中的iptables防火墙

参考技术AUbuntu14使用的是UFW防火墙,是在iptables基础上进行了配置简化下面是一些常用操作1.查看ufw版本:sudoufwversion2.查看uwf状态sudoufwstatus3.启动防火墙ufwenable4.设置默认允许访问端口ufwdefaultallow5.设置默认不允许访问端口ufwdefaul... 查看详情

iptables系列教程|iptables实战篇(代码片段)

iptables实战篇实战1服务器禁止pingiptables-AINPUT-picmp--icmp-type8-s0/0-jDROP//禁止任何人ping通本机除了上面禁止PING的方法,我们还可以通过修改内核配置实现,如下:echonet.ipv4.icmp_echo_ignore_all=1>>/etc/sysctl.confsysctl-p//如果允许PING,则... 查看详情

乌邦图ubuntu配置iptables的nat上网

cat/etc/network/iptables.up.rules#Generatedbyiptables-savev1.6.0onMonNov2111:26:132016*nat:PREROUTINGACCEPT[56:3590]:INPUTACCEPT[0:0]:OUTPUTACCEPT[45:3096]:POSTROUTINGACCEPT[45:3096]-APOSTROUTING-s10. 查看详情

iptables系列教程|iptables入门篇(代码片段)

前言在早期的Linux系统中,默认使用的是iptables配置防火墙。尽管新型的firewalld防火墙已经被投入使用多年,但是大量的企业在生产环境中依然出于各种原因而继续使用iptables。考虑到iptables在当前生产环境中还具有顽强的生命力... 查看详情

ubuntu下使用ufw配置防火墙(简化iptables的操作)

UFW全称为UncomplicatedFirewall,是Ubuntu系统上配置iptables防火墙的工具。UFW提供一个非常友好的命令用于创建基于IPV4,IPV6的防火墙规则。但是,UFW是没有界面的,就是用命令的那一种,所以,操作起来就不是那么的方便,有人帮它... 查看详情

flink实战系列flink1.14.0消费kafka数据自定义反序列化器(代码片段)

Flink1.14.0消费kafka数据自定义反序列类在最近刚发布的Flink1.14.0版本中Source接口进行了重构,API的变化还是非常大的,那在新的接口下消费kafka的时候如何自定义反序列类呢?KafkaSource使用Kafkasource提供了一个构建类来构造KafkaSource的实... 查看详情

iptables系列教程|iptables入门篇(代码片段)

前言在早期的Linux系统中,默认使用的是iptables配置防火墙。尽管新型的firewalld防火墙已经被投入使用多年,但是大量的企业在生产环境中依然出于各种原因而继续使用iptables。考虑到iptables在当前生产环境中还具有顽强的生命力... 查看详情

在ubuntu虚拟系统下实现iptables的配置,为啥输入命令后全部显示“找不到命令”呢?

电脑装了个ubuntu虚拟系统,在虚拟系统下实现iptables配置,经检验系统中确实安装了iptables,但是输入命令后全部显示“找不到命令”,哪位好心人帮忙解决一下啊。。iptables-L,iptables-F,注意,iptables与后面的参数中间有个空格... 查看详情

ubuntu的ufw与iptables

... 最近配置环境时一直需要做端口转发,嘎嘎嘎,结果iptables的规则总是写错,还是不能投机取巧,认真开始学习一哈这个有趣的命令,咯咯咯~    iptables规则分析:iptables-tnat-APREROUTING-ptcp--dport502-jREDIRECT--to-port... 查看详情

使用 CentOS 6 作为 docker 容器的 Ubuntu 主机,如何访问 iptables?

】使用CentOS6作为docker容器的Ubuntu主机,如何访问iptables?【英文标题】:UbuntuhostwithCentOS6asdockercontainer,howdoIaccessiptables?【发布时间】:2015-02-0317:59:00【问题描述】:在以Ubuntu为主机的CentOS6容器内,服务iptables失败,错误代码如下... 查看详情

如何查看linux的iptables配置

参考技术A1、用iptables命令直接查看[root@test ~]# iptables -nv -L#-L是--list的简写,作用是列出规则2、直接查看iptables的配置文档[root@test ~]# more /etc/sysconfig/iptables 查看详情

debian9系统安装配置iptables

用惯了centos系列,用debian系列还是有很大差别的。debian中也是自带类似红帽系统的/etc/rc.local这种系统启动时候自启程序列表的文件的。我看到有人说放到/etc/network/if-pre-up.d/下有时候并不能随系统启动自启动,所以放到了/etc/netwo... 查看详情

如何在 Ubuntu 的 iptables 中删除/取消阻止我的服务器 IP?

】如何在Ubuntu的iptables中删除/取消阻止我的服务器IP?【英文标题】:Howtodelete/unblockmyserverIPiniptablesonUbuntu?【发布时间】:2017-01-2712:01:57【问题描述】:我的第一台服务器阻止了我的第二台服务器IP,我现在无法访问。命令iptables... 查看详情

debian配置iptables

前言iptables在Linux发行版本如Centos、Debian、Ubuntu、Redhat等的配置内容基本一致,但是配置方式有所不同。由于工作日常用的是Centos6.x,它的配置较简单。下面对Debian上配置iptables做一个说明。配置过程环境要求一台Debian6.x/7.x及以... 查看详情