VPS

20170827Ubuntu防火墙

2017-08-28  本文已影响4人  cndaqiang

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

首先纠正自己一个误解

在使用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表,它具有以下三种内建链:

1.2 NAT表

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

1.3 Mangle表

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

1.4 Raw表

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

2. Rules规则

参见iptables语法

iptables语法

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

-t 表名 不写默认为Filter

1. 命令选项

命令选项

2. 规则

2.1 添加iptables规则

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

语法

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

条件匹配的基本参数

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

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

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

先省略,需要再继续学

上一篇 下一篇

猜你喜欢

热点阅读