美文网首页VPS
20170827Ubuntu防火墙

20170827Ubuntu防火墙

作者: cndaqiang | 来源:发表于2017-08-28 17:16 被阅读4次

防火墙再不学就没法深入学习更多东西了

首先纠正自己一个误解

在使用iptables过滤特定端口的数据包时,我喜欢使用在线端口扫描检测我的操作结果,结果检测都是未开放,原来能检测到,不仅需要防火墙允许通过,还要有监听的程序,后通过Apache监听特定端口&在线端口扫描检测操作结果

除非你的vps可以随时重装系统,或者可以断网后通过其他方式访问,否则不要轻易尝试

参考

Nftables HOWTO 中文翻译
iptables文档
看了那么多iptables的教程,这篇教程还是比较全面易懂的
iptables详细教程:基础、架构、清空规则、追加规则、应用实例
Ubuntu_IptablesHowTo
鸟哥的Linux 私房菜-- Linux 防火墙与NAT 服务器
保存iptable规则并开机自动加载

环境

Ubuntu 14.04 vps

注:腾讯云有额外的安全组,需要在控制面板里打开,不然配置了防火墙也达不到目的

iptables

安装

apt-get install iptables

结构

iptables的结构:iptables -> Tables表 -> Chains链 -> Rules规则

1. Table表&Chains链

鸟哥的Linux私房菜——iptables 内建各表格与链的相关性

1.1 Filter表

Filter表示iptables的默认表,因此如果你没有自定义表,那么就默认使用filter表,它具有以下三种内建链:

  • INPUT链 – 处理来自外部的数据。
  • OUTPUT链 – 处理向外发送的数据。
  • FORWARD链 – 将数据转发到本机的其他网卡设备上。

1.2 NAT表

NAT是 Network Address Translation 的缩写, 这个表格主要在进行来源与目的之 IP 或 port 的转换,与 Linux 本机较无关,主要与 Linux 主机后的局域网络内计算机较有相关。

  • PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
    类似与路由器向lan发送数据
  • POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。
    把lan的数据发到公网上去
  • OUTPUT链 – 处理本机产生的数据包

1.3 Mangle表

Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。Mangle表具有5个内建链:

  • PREROUTING
  • OUTPUT
  • FORWARD
  • INPUT
  • POSTROUTING

1.4 Raw表

Raw表用于处理异常,它具有2个内建链:

  • PREROUTING chain
  • OUTPUT chain

2. Rules规则

参见iptables语法

iptables语法

iptables [ -t 表名] 命令选项 [链名] [条件匹配] [-j 操作]

-t 表名 不写默认为Filter

1. 命令选项

命令选项

2. 规则

2.1 添加iptables规则

可以使用iptables -A命令追加新规则,新的规则将追加到链尾。
如果,最后一条规则用于丢弃(DROP)所有数据包,则使用-A参数添加新规则,无效,可以使用-I在指定位置或开头加

语法

ptables [-t 表名] -A 链名 条件匹配 -j 操作

条件匹配的基本参数

  • -p 协议(protocol)
    指定规则的协议,如tcp, udp, icmp等,可以使用all来指定所有协议。
    如果不指定-p参数,则默认是all值。这并不明智,请总是明确指定协议名称。
    可以使用协议名(如tcp),或者是协议值(比如6代表tcp)来指定协议。映射关系请查看/etc/protocols
    还可以使用–protocol参数代替-p参数

  • -s 源地址(source)
    指定数据包的源地址
    参数可以使IP地址、网络地址、主机名
    例如:-s 192.168.1.101指定IP地址
    例如:-s 192.168.1.10/24指定网络地址
    如果不指定-s参数,就代表所有地址
    还可以使用–src或者–source

  • -d 目的地址(destination)
    指定目的地址
    参数和-s相同
    还可以使用–dst或者–destination

  • -i 输入接口/网卡(input interface)
    例如:-i eth0指定了要处理经由eth0进入的数据包
    如果不指定-i参数,那么将处理进入所有接口的数据包
    如果出现! -i eth0,那么将处理所有经由eth0以外的接口进入的数据包
    如果出现-i eth+,那么将处理所有经由eth开头的接口进入的数据包
    还可以使用–in-interface参数

  • -o 输出(out interface)
    指定了数据包由哪个接口输出
    如果不指定-o选项,那么系统上的所有接口都可以作为输出接口
    如果出现! -o eth0,那么将从eth0以外的接口输出
    如果出现-i eth+,那么将仅从eth开头的接口输出
    还可以使用–out-interface参数

条件匹配的扩展参数,注意是两个--
对规则有了一个基本描述之后,有时候我们还希望指定端口、TCP标志、ICMP类型等内容。

  • --sport 源端口(source port)
    针对 -p tcp 或者 -p udp
    缺省情况下,将匹配所有端口
    可以指定端口号或者端口名称,例如”–sport 22″与”–sport ssh”。
    /etc/services文件描述了上述映射关系。
    从性能上讲,使用端口号更好
    使用冒号可以匹配端口范围,如”–sport 22:100″
    还可以使用”–source-port”
  • --dport 目的端口(destination port)
    针对-p tcp 或者 -p udp
    参数和-sport类似
    还可以使用”–destination-port”
  • --tcp-flags TCP标志 针对-p tcp
    可以指定由逗号分隔的多个参数
    有效值可以是:SYN, ACK, FIN, RST, URG, PSH
    可以使用ALL或者NONE
  • --icmp-type ICMP类型 针对-p icmp
  • --icmp-type 0 表示Echo Reply
  • --icmp-type 8 表示Echo

-j 操作
指定了当与规则(Rule)匹配时如何处理数据包
可能的值

  • ACCEPT:允许数据包通过。
  • DROP:直接丢弃数据包,不给出任何回应信息。
  • REJECT:拒绝数据包通过,必须时会给数据发送端一个响应信息。
  • LOG:在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则。
  • QUEUE:防火墙将数据包移交到用户空间
  • RETURN:防火墙停止执行当前链中的后续Rules,并返回到调用链(the calling chain)

2.2 删除iptables规则

iptables [-t 表名] -D 链名 序号

示例

#删除所有规则
root@VM-10-194-ubuntu:/home/ubuntu#  iptables -F
#查看规则
root@VM-10-194-ubuntu:/home/ubuntu# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
#添加规则
root@VM-10-194-ubuntu:/home/ubuntu# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#查看规则,可看到已加载添加的80端口(dpt:http),在INPUT的一个位置,序号就是1,按出现的次序,序号依次为1,2,3...
root@VM-10-194-ubuntu:/home/ubuntu# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
#删除INPUT的序号1规则
root@VM-10-194-ubuntu:/home/ubuntu# iptables -D INPUT 1
#再查看规则,已删除
root@VM-10-194-ubuntu:/home/ubuntu# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

2.3 生效&保存规则

规则添加后就立即生效了
添加的规则,重启之后就消失了

永久生效方法

把规则保存到一个文件
开机时自动加载文件
网上推荐的开机自动加载,不知为何在我的vps上都不好使
手动方法
保存# iptables-save > /etc/iptables/rules.v4
恢复# iptables-restore < /etc/iptables/rules.v4
利用了bash的重定向,/etc/iptables/rules.v4为自定义的文件
ipv为ip6tables-save ip6tables-restore
使用iptables-persistent

# 安装
apt-get install iptables-persistent
# 更改配置后,保存,开机会自动加载
service  iptables-persistent save

2.4 注

nftable

安装

apt install nftables

先省略,需要再继续学

相关文章

  • 20170827Ubuntu防火墙

    防火墙再不学就没法深入学习更多东西了 首先纠正自己一个误解 在使用iptables过滤特定端口的数据包时,我喜欢使...

  • centos7防火墙基本命令

    防火墙的基本使用命令 启动防火墙 停止防火墙 开机启动防火墙 开机禁止防火墙 查看防火墙状态 查看防火墙是否开机启...

  • LINUX防火墙

    一、iptables防火墙 -1、基本操作 查看防火墙状态 停止防火墙 启动防火墙 重启防火墙 永久关闭防火墙 永...

  • Linux 防火墙firewall设置

    Linux 防火墙设置说明:使用的是FIREWALL防火墙 安装防火墙 开启防火墙 排除端口 命令含义: 防火墙重...

  • Linux 防火墙设置

    Linux 防火墙设置 说明:使用的是FIREWALL防火墙 安装防火墙 开启防火墙 排除端口 防火墙重启 关闭端...

  • Centos6.5 关闭系统防火墙及内核防火墙

    清空系统防火墙 保存防火墙配置 临时关闭内核防火墙 永久关闭内核防火墙

  • firewall防火墙相关操作

    firewall 查看防火墙状态 开启防火墙 设置防火墙开机自启 查看防火墙设置开机自启是否成功 重启防火墙 查看...

  • Linux基本命令介绍

    本文命令都是基于CentOS7系统 一、防火墙相关命令 临时关闭防火墙 禁止防火墙开机启动 开启防火墙 查看防火墙...

  • iptables简介

    第1章 Iptables简介 防火墙分为硬件防火墙与软件防火墙,硬件防火墙价格很高,多数中小型公司使用软件防火墙,...

  • CentOS防火墙之iptables

    1、查看防火墙状态 2、启动防火墙 3、停止防火墙 4、重启防火墙 5、永久关闭防火墙 6、永久关闭后重启 7、开...

网友评论

    本文标题:20170827Ubuntu防火墙

    本文链接:https://www.haomeiwen.com/subject/wguidxtx.html