返回顶部
首页 > 资讯 > 精选 >有用的iptables常用示例有哪些
  • 292
分享到

有用的iptables常用示例有哪些

2023-06-28 17:06:46 292人浏览 安东尼
摘要

今天就跟大家聊聊有关有用的iptables常用示例有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。格式iptables [-t 表名] 选项&nbs

今天就跟大家聊聊有关有用的iptables常用示例有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

格式

iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
参数

-P 设置默认策略:iptables -P INPUT (DROP|ACCEPT)
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号”!”表示除这个IP外。
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如tcp,udp,icmp
–dport num 匹配目标端口号
–sport num 匹配来源端口号

示例
1. 删除已有规则

在开始创建iptables规则之前,你也许需要删除已有规则。命令如下:

iptables -F(or)iptables –flush
2.设置链的默认策略

链的默认政策设置为”ACCEPT”(接受),若要将INPUT,FORWARD,OUTPUT链设置成”DROP”(拒绝),命令如下:

iptables -P INPUT DROPiptables -P FORWARD DROPiptables -P OUTPUT DROP

当INPUT链和OUTPUT链都设置成DROP时,对于每一个防火墙规则,我们都应该定义两个规则。例如:一个传入另一个传出。在下面所有的例子中,由于我们已将DROP设置成INPUT链和OUTPUT链的默认策略,每种情况我们都将制定两条规则。当然,如果你相信你的内部用户,则可以省略上面的最后一行。例如:默认不丢弃所有出站的数据包。在这种情况下,对于每一个防火墙规则要求,你只需要制定一个规则——只对进站的数据包制定规则。

3. 阻止指定IP地址

例:丢弃来自IP地址x.x.x.x的包

BLOCK_THIS_IP="x.x.x.x"iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP

注:当你在log里发现来自某ip地址的异常记录,可以通过此命令暂时阻止该地址的访问以做更深入分析

例:阻止来自IP地址x.x.x.x eth0 tcp的包

iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROPiptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP
4. 允许所有ssh的连接请求

例:允许所有来自外部的SSH连接请求,即只允许进入eth0接口,并且目标端口为22的数据包

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
5. 仅允许来自指定网络的SSH连接请求

例:仅允许来自于192.168.100.0/24域的用户的ssh连接请求

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
6.允许Httphttps的连接请求

例:允许所有来自WEB – http的连接请求

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

例:允许所有来自web – https的连接请求

iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

7. 使用multiport 将多个规则结合在一起

允许多个端口从外界连入,除了为每个端口都写一条独立的规则外,我们可以用multiport将其组合成一条规则。如下所示:

例:允许所有ssh,http,https的流量访问

iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT

8. 允许从本地发起的SSH请求
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

请注意,这与允许ssh连入的规则略有不同。本例在OUTPUT链上,我们允许NEW和ESTABLISHED状态。在INPUT链上,我们只允许ESTABLISHED状态。ssh连入的规则与之相反。

9. 仅允许从本地发起到一个指定的网络域的SSH请求

例:仅允许从内部连接到网域192.168.100.0/24

iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

10. 允许从本地发起的HTTPS连接请求

下面的规则允许输出安全的网络流量。如果你想允许用户访问互联网,这是非常有必要的。在服务器上,这些规则能让你使用wget从外部下载一些文件

iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

注:对于HTTP web流量的外联请求,只需要将上述命令中的端口从443改成80即可。

11. 负载平衡传入的网络流量

使用iptables可以实现传入web流量的负载均衡,我们可以传入web流量负载平衡使用iptables防火墙规则。
例:使用iptables nth将HTTPS流量负载平衡至三个不同的ip地址。

iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:443iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.102:443iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.1.103:443

12. 允许外部主机ping内部主机
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPTiptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

13. 允许内部主机ping外部主机
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPTiptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

14. 允许回环访问

例:在服务器上允许127.0.0.1回环访问。

iptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPT

15. 允许内部网络域外部网络的通信

防火墙服务器上的其中一个网卡连接到外部,另一个网卡连接到内部服务器,使用以下规则允许内部网络与外部网络的通信。此例中,eth2连接到外部网络(互联网),eth0连接到内部网络(例如:192.168.1.x)。

iptables -A FORWARD -i eth0 -o eth2 -j ACCEPT

16. 允许出站的DNS连接
iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPTiptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

17. 允许NIS连接

如果你使用NIS管理用户帐户,你需要允许NIS连接。如果你不允许NIS相关的ypbind连接请求,即使SSH连接请求已被允许,用户仍然无法登录。NIS的端口是动态的,先使用命令rpcinfo –p来知道端口号,此例中为853和850端口。

rpcinfo -p | grep ypbind

例:允许来自111端口以及ypbind使用端口的连接请求

iptables -A INPUT -p tcp --dport 111 -j ACCEPTiptables -A INPUT -p udp --dport 111 -j ACCEPTiptables -A INPUT -p tcp --dport 853 -j ACCEPTiptables -A INPUT -p udp --dport 853 -j ACCEPTiptables -A INPUT -p tcp --dport 850 -j ACCEPTiptables -A INPUT -p udp --dport 850 -j ACCEPT

注:当你重启ypbind之后端口将不同,上述命令将无效。有两种解决方案:1)使用你NIS的静态IP 2)编写shell脚本通过“rpcinfo – p”命令自动获取动态端口号,并在上述iptables规则中使用。

18. 允许来自指定网络的rsync连接请求

例:允许来自网络192.168.101.0/24的rsync连接请求

iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT

19. 允许来自指定网络的MySQL连接请求

很多情况下,Mysql数据库与web服务跑在同一台服务器上。有时候我们仅希望DBA和开发人员从内部网络(192.168.100.0/24)直接登录数据库,可尝试以下命令:

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT

20. 允许Sendmail, Postfix邮件服务

Sendmail和postfix都使用了25端口,因此我们只需要允许来自25端口的连接请求即可。

iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

21. 允许IMAP和IMAPS

例:允许IMAP/IMAP2流量,端口为143

iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT

例:允许IMAPS流量,端口为993

iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT

22. 允许POP3和POP3S

例:允许POP3访问

iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT

例:允许POP3S访问

iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT

23. 防止DoS攻击
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

上述例子中:

-m limit: 启用limit扩展
–limit 25/minute: 允许最多每分钟25个连接(根据需求更改)。
–limit-burst 100: 只有当连接达到limit-burst水平(此例为100)时才启用上述limit/minute限制。

24. 端口转发

例:将来自422端口的流量全部转到22端口。

这意味着我们既能通过422端口又能通过22端口进行ssh连接。启用DNAT转发。

iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22

除此之外,还需要允许连接到422端口的请求

iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT
25. 记录丢弃的数据表

新建名为LOGGING的链

iptables -N LOGGING

将所有来自INPUT链中的数据包跳转到LOGGING链中

iptables -A INPUT -j LOGGING

为这些包自定义个前缀,命名为”IPTables Packet Dropped”

iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7

丢弃这些数据包

iptables -A LOGGING -j DROP

看完上述内容,你们对有用的iptables常用示例有哪些有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: 有用的iptables常用示例有哪些

本文链接: https://lsjlt.com/news/320954.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 有用的iptables常用示例有哪些
    今天就跟大家聊聊有关有用的iptables常用示例有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。格式iptables [-t 表名] 选项&nbs...
    99+
    2023-06-28
  • linux中iptables常用方法有哪些
    这篇文章主要介绍linux中iptables常用方法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!iptables其实是一个命令行工具,可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安...
    99+
    2023-06-28
  • iptables的用法有哪些
    本篇文章为大家展示了iptables的用法有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。总览 用iptables -ADC 来指定链的规则,-A添加 -D删除 -C 修改 iptables &...
    99+
    2023-06-13
  • linux中实用的Shell示例有哪些
    这篇文章将为大家详细讲解有关linux中实用的Shell示例有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。并发从数台机器中获取 hostname,并记录返回信息花费的时长,重定向到一个文件 host...
    99+
    2023-06-15
  • 常用的dbms有哪些
    小编给大家分享一下常用的dbms有哪些,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!目前互联网上常见的数据库管理软件(DBMS)有:一、 OracleOracle Database,又名Ora...
    99+
    2024-04-02
  • 非常有用的jQuery工具提示插件有哪些
    这篇文章给大家介绍非常有用的jQuery工具提示插件有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。这里介绍了10个非常有用的jquery 提示插件。工具提示条对于完善web网站的...
    99+
    2024-04-02
  • linux中Shell有哪些使用示例
    小编给大家分享一下linux中Shell有哪些使用示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Shell脚本是帮助程序员和系统管理员完成费时费力的枯燥工作的...
    99+
    2023-06-15
  • Redis有哪些常用的用法
    今天就跟大家聊聊有关Redis有哪些常用的用法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、redis 是什么> redis是一种支持Ke...
    99+
    2024-04-02
  • 有哪些Shell常用命令和例子
    本篇内容主要讲解“有哪些Shell常用命令和例子”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些Shell常用命令和例子”吧!在Windows下的用户要使用shell命令符的话请先安装cyg...
    99+
    2023-06-09
  • julia常用的包有哪些
    Julia语言是一种高性能、动态的编程语言,具有丰富的包生态系统。以下是一些常用的Julia包:1. DataFrames:用于处理...
    99+
    2023-09-21
    julia
  • 常用的Linux shell有哪些
    这篇文章主要介绍“常用的Linux shell有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“常用的Linux shell有哪些”文章能帮助大家解决问题。Shell是系统的用户界面,提供了用户与...
    99+
    2023-06-27
  • linux的常用shell有哪些
    这篇文章主要介绍“linux的常用shell有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux的常用shell有哪些”文章能帮助大家解决问题。三种shell:1、bourne shel,...
    99+
    2023-06-30
  • iptables基础知识点有哪些
    这篇文章主要介绍了iptables基础知识点有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇iptables基础知识点有哪些文章都会有所收获,下面我们一起来看看吧。iptables可以适用于所有的Linux...
    99+
    2023-06-28
  • Sed常用用法有哪些
    今天就跟大家聊聊有关Sed常用用法有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。将文件中的root全部替换为abc:sed  's/root/abc/g...
    99+
    2023-06-05
  • Awk常用用法有哪些
    Awk常用用法有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 awk语法:awk [option] 'pattern {action}' fil...
    99+
    2023-06-05
  • 非常有用的jQuery插件有哪些
    这期内容当中小编将会给大家带来有关非常有用的jQuery插件有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. UploadifyUploadify是一款用于在你网...
    99+
    2024-04-02
  • 不常用但很有用的Python库有哪些
    这篇文章主要讲解了“不常用但很有用的Python库有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“不常用但很有用的Python库有哪些”吧!导读提到数据科学的python包,大家想到的估...
    99+
    2023-06-16
  • java常用包有哪些?
    java常用包有哪些?常用的五个java.lang.*提供利用 Java 编程语言进行程序设计的基础类。最重要的类是 Object(它是类层次结构的根)和 Class(它的实例表示正在运行的应用程序中的类)。【推荐学习:java课程】jav...
    99+
    2015-10-24
    java教程 java
  • vue有哪些常用api
    这篇文章主要为大家展示了“vue有哪些常用api”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue有哪些常用api”这篇文章吧。 ...
    99+
    2024-04-02
  • Java常用语有哪些
    这期内容当中小编将会给大家带来有关Java常用语有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。不介绍Java 常用语,对Java 的总体介绍就是不完整的。尽管促使Java 诞生的源动力是可移植性和安...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作