一、关于iptables
iptables是一个基于命令行的防火墙工具,它使用规则链来允许/阻止网络流量。当一条网络连接试图在你的系统中建立时,iptables会查找其对应的匹配规则。如果找不到,iptables将对其采取默认操作。
几乎所有的linux发行版都预装了iptables。在ubuntu/debian中更新/安装iptables的命令为:
iptables的规则链分为三种:输入、转发和输出。
1.输入——这条链用来过滤目的地址是本机的连接。例如,如果一个用户试图使用ssh登陆到你的pc/服务器,iptables会首先匹配其ip地址和端口到iptables的输入链规则。
2.转发——这条链用来过滤目的地址和源地址都不是本机的连接。例如,路由器收到的绝大数数据均需要转发给其它主机。如果你的系统没有开启类似于路由器的功能,如nating,你就不需要使用这条链。
有一个安全且可靠的方法可以检测你的系统是否需要转发链:
在配置特定的规则之前,也许你想配置这些链的默认行为。换句话说,当iptables无法匹配现存的规则时,你想让它作出何种行为。
你可以运行如下的命令来显示当前iptables对无法匹配的连接的默认动作:
正如上面所显示的,我们可以使用grep来使输出的结果变得更加简洁。在上面的截图中,所有的链默认情况下均接受所有的连接。 复制代码 代码如下: iptables --policy input accept iptables --policy output accept iptables --policy forward accept 你也可以在使用默认配置的情况下,添加一些命令来过滤特定的ip地址或端口号。我们稍后在本文介绍这些命令。 复制代码 代码如下: iptables --policy input drop iptables --policy output drop iptables --policy forward drop 四、对特定连接的配置
|
五、允许或阻止特定的连接 在配置完基本的规则链之后,你就可以配置iptables来允许或者阻止特定的ip地址或者端口。 来自同一ip地址的连接 复制代码 代码如下: iptables -a input -s 10.10.10.10 -j drop 来自一组ip地址的连接 下面这个例子展示了如何阻止来自子网10.10.10.0/24内的任意ip地址的连接。你可以使用子网掩码或者标准的/符号来标示一个子网: 复制代码 代码如下: iptables -a input -s 10.10.10.0/24 -j drop 或 复制代码 代码如下: iptables -a input -s 10.10.10.0/255.255.255.0 -j drop 特定端口的连接 这个例子展示了如何阻止来自10.10.10.10的ssh连接。 复制代码 代码如下: iptables -a input -p tcp --dport ssh -s 10.10.10.10 -j drop 你可以将“ssh”替换成其它任何协议或者端口号。上述命令中的-p tcp告诉iptables连接使用的是何种协议。 下面这个例子展示了如何阻止来自任意ip地址的ssh连接。 复制代码 代码如下: iptables -a input -p tcp --dport ssh -j drop 六、连接状态 我们之前提到过,许多协议均需要双向通信。例如,如果你打算允许ssh连接,你必须同时配置输入和输出链。但是,如果你只想允许来自外部的ssh请求,那该怎么做? 复制代码 代码如下: iptables -a input -p tcp --dport ssh -s 10.10.10.10 -m state --state new,established -j accept iptables -a output -p tcp --sport 22 -d 10.10.10.10 -m state --state established -j accept 七、保存更改 上述方法对iptables规则作出的改变是临时的。如果你想永久保存这些更改,你需要运行额外的命令(不同linux发行版下的保存命令也不相同): ubuntu: 复制代码 代码如下: sudo /sbin/iptables-save red hat / centos: 复制代码 代码如下: /sbin/service iptables save 或者 复制代码 代码如下: /etc/init.d/iptables save |
列出iptables的当前配置:
如对本文有疑问, 点击进行留言回复!!
荐 23-TensorFlow2.2+Keras版本新特性---自动图
荐 Flutter:最难搞的搭建环境,一次性成功!(新手踩坑)
ZABBIX自定义监控指定的LINUX磁盘分区,并配置触发器产生告警
Android7以上读写/data/data下其他APP私有文件的注意点
荐 MnasNet:经典轻量级神经网络搜索方法 | CVPR 2019
网友评论