专栏首页技术向ubuntu iptables防火墙指南

ubuntu iptables防火墙指南

本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/iptables_in_ubuntu/

iptables介绍

netfilter/iptables是内核集成的,不存在start/stop或者禁用的说法。可以用iptables命令创建过滤规则。(现在较新的内核中已经默认集成,无需单独安装)

而ufw则是ubuntu上简化iptables配置的工具,其定义了一系列的规则并加入到iptables中。所以在ufw启用的情况下,你能在iptables规则中看到一系列的ufw类字样。这些具体的由ufw定义的规则在/etc/ufw/*.rules下。

以下适合于Ubuntu 16.04.5 LTS

基本命令

查看帮助:

iptables -h

查看过滤规则

sudo iptables -vnL --line-numbers
  • -n:以数字的方式显示ip,它会将ip直接显示出来,如果不加-n,则会将ip反向解析成主机名
  • -v:显示详细信息
  • –line-numbers:给规则标上数字,这个在删除规则时很有用

同一个chain,从上到下进行匹配,所以num很重要;

创建一个新的iptables规则,不会影响现有的连接;

保存创建好的规则到文件

iptables-save > /etc/iptables.up.rules

从文件中恢复规则

/sbin/iptables-restore < /etc/iptables.up.rules

也可以把上条命令添加到/etc/rc.local,在系统重启时恢复规则

完整命令规则

iptables [-t table] command chain [match] [-j target]

以下是各段命令主要参数的解释。

-t table,table有四个选项,默认为filter:

  • filter:一般的过滤功能,默认的table
  • nat:用于NAT功能(端口映射,地址映射等)
  • mangle:用于对特定数据包的修改
  • raw:主要用于配合NOTRACK的响应
  • security:用户强制访问控制(MAC)网络规则

command,定义规则写入方式:

  • -P:定义链的默认规则(所有其它规则都没有匹配到的数据包,将按照默认规则来执行)
  • -A:追加,在当前链的最后新增一个规则
  • -I num:插入,把当前规则插入为第几条
  • -R num:Replays替换/修改第几条规则
  • -D num:删除,明确指定删除第几条规则 num要放到chain之后,见后面的应用实例。

chain,netfilter可以在五个位置进行过滤:

  • PREROUTING (路由前)
  • INPUT (数据包流入口)
  • FORWARD (端口转发)
  • OUTPUT(数据包出口)
  • POSTROUTING(路由后)

match:匹配规则,常用的规则有以下几种,可以并列使用多种匹配规则:

  • -p:用于匹配协议的(这里的协议通常有3种,TCP/UDP/ICMP,逗号分隔多个协议,ALL是确实设置,!表示反向匹配)
  • -s:匹配源地址ip或ip段(IP或IP/MASK,!表示反向匹配)
  • -d:匹配信息包的目的地IP地址(!表示反向匹配)
  • -i:流入网卡
  • -o:流出网卡
  • –dport:目标端口(两个短行)
  • –sport:源端口
  • –state:连接状态
  • -m:显式扩展以上的规则(即可以匹配多个状态、端口等)

target:进行的操作/响应,常见的有以下几种:

  • DROP(悄悄丢弃)
  • REJECT(明示拒绝)
  • ACCEPT(接受)
  • MASQUERADE(源地址伪装)
  • REDIRECT(重定向)
  • MARK(打防火墙标记的)
  • RETURN(返回)

实际使用范例

开放某个tcp端口

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

删除某条规则

这里删除的是规则1

sudo iptables -t filter -D FORWARD 1

添加一条nat记录

sudo iptables -t nat -A POSTROUTING -s 192.168.255.0/24 -j MASQUERADE

保存和恢复iptables

sudo iptables-save > ./iptables.bak
sudo iptables-restore < ./iptables.bak

参考资料

写的比较好的博客,适合入门

适合入门之后的深入

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 蓝默空间のLvBlog-1.1.2.20191030_release开源啦~

    The LvBlog Application is open-source software licensed under the MIT license.

    蓝默空间
  • numpy.logical_and()

    numpy.logical_and(x1, x2, /, out=None, *, where=True, casting='same_kind', order...

    于小勇
  • mybatis批量增、删、改(更新)操作oracle和mysql批量写法小记

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    eguid
  • Linux xargs 命令

    xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读...

    于小勇
  • crontab定时执行python脚本不成功解决方案

    Learn the rules like a pro, so you can break them like an artist.

    小闫同学啊
  • numpy.logical_or

    numpy.logical_or(x1, x2, /, out=None, *, where=True, casting='same_kind', order=...

    于小勇
  • Nginx多个子域名映射到不同的端口或 ip

    我决定采用采用 子域名区分服务 的方式,然后使用 nginx 做反向代理,分发到不同的端口。

    Java架构师历程
  • thinkphp执行计划任务crontab

    tp5.1中的php 计划任务的实现,本质上可以分为两种第一种封装在框架内部,在crontab -e中只要添加一条,然后在框架内去扩展内容就好了(Laravel...

    php007
  • Linux 命令(81)—— chmod 命令

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    Dabelv
  • Linux 命令(82)—— chgrp 命令

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    Dabelv

扫码关注云+社区

领取腾讯云代金券