二十多少个iptables常用示例

本文将付诸二十四个iptables常用准绳示例,那几个事例为您提供了些基本的沙盘模拟经营,您能够依照特定须求对其进展更换调度以高达梦想。  格式

iptables [-t 表名] 选项 [链名] [条件] [-j 调控项目] 参数

 

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

示例

1. 刨除原来就有平整

在最早创制iptables准绳以前,你恐怕供给删除原来就有平整。

 

  1. 命令如下:
  2. iptables -F
  3. (or)
  4. iptables –flush

2.设置链的默许攻略

链的暗中同意政策设置为”ACCEPT”(选用),若要将INPUT,FOTiggoWALX570D,OUTPUT链设置成”DROP”(屏绝),命令如下:

 

  1. iptables -P INPUT DROP
  2. iptables -P FORWARD DROP
  3. iptables -P OUTPUT DROP

当INPUT链和OUTPUT链都设置成DROP时,对于每多个防火墙法则,我们都应该定义多个准则。举例:二个传开另一个传播。在上面全体的例证中,由于大家已将DROP设置成INPUT链和OUTPUT链的默许计谋,每一种景况大家都将制定两条准则。当然,倘若您相信你的当中客户,则足以轻易下面的末梢黄金年代行。例如:默许不废弃全体出站的数据包。在此种状态下,对于每一个防火墙法规供给,你只须求拟订三个平整——只对进站的多少包制订准绳。

3. 梗阻钦赐IP地址

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

 

  1. iptables -A INPUT -s x.x.x.x -j DROP
  2. 注:当你在log里发现来自某ip地址的异常记录,可以通过此命令暂时阻止该地址的访问以做更深入分析

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

 

  1. iptables -A INPUT -i eth0 -s x.x.x.x -j DROP
  2. iptables -A INPUT -i eth0 -p tcp -s x.x.x.x -j DROP

4. 允许全体SSH的连天诉求

例:允许具有来自外界的SSH连接要求,即只同意步向eth0接口,况兼目的端口为22的数据包

 

  1. iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

5. 仅允许来自钦命互连网的SSH连接乞求

例:仅允许来自于192.168.100.0/24域的客商的ssh连接央浼

 

  1. iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

6.同意http和https的连续几日必要

例:允许全数来自web – http的接连乞请

 

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

例:允许全体来自web – https的连天央求

 

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

7. 用到multiport 将几个法规结合在联合

允许多少个端口从外面连入,除了为每一种端口都写一条独立的法规外,我们能够用multiport将其组合成一条准则。如下所示: 
例:允许持有ssh,http,https的流量访问

 

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

8. 同意从本地发起的SSH

 

  1. iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -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

 

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

10. 同意从本土发起的HTTPS连接央求

上边的平整允许输出安全的网络流量。如若您想同意客商访谈网络,那是特别有必要的。在服务器上,那个法规能让您选用wget从表面下载一些文本

 

  1. iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -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地址。

 

  1. 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:443
  2. iptables -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:443
  3. iptables -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内部主机

 

  1. iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
  2. iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

13. 允许内部主机ping外界主机

 

  1. iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
  2. iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

14. 允许回环访谈

例:在服务器上同意127.0.0.1环绕访谈。

 

  1. iptables -A INPUT -i lo -j ACCEPT
  2. iptables -A OUTPUT -o lo -j ACCEPT

15. 同意内部互连网域外界网络的通信

防火墙服务器上的此中三个网卡连接到表面,另七个网卡连接到此中服务器,使用以下准绳允许内部网络与外表网络的通讯。此例中,eth1连接纳外界网络(互连网卡塔尔国,eth0连接收内部网络(比如:192.168.1.x卡塔尔(英语:State of Qatar)。

 

  1. iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

16. 同意出站的DNS连接

 

  1. iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
  2. iptables -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使用端口的总是伏乞

 

  1. iptables -A INPUT -p tcp --dport 111 -j ACCEPT
  2. iptables -A INPUT -p udp --dport 111 -j ACCEPT
  3. iptables -A INPUT -p tcp --dport 853 -j ACCEPT
  4. iptables -A INPUT -p udp --dport 853 -j ACCEPT
  5. iptables -A INPUT -p tcp --dport 850 -j ACCEPT
  6. iptables -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连接诉求

 

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

19. 同意来自钦赐网络的MySQL连接诉求

好些个气象下,MySQL数据库与web服务跑在同生龙活虎台服务器上。有时候大家仅希望DBA和开采人士从里面网络(192.168.100.0/24)直接登陆数据库,可尝试以下命令:

 

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

20. 允许Sendmail, Postfix邮件服务

Sendmail和postfix都使用了25端口,因而大家只必要允许来自25端口的接连要求就可以。

 

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

21. 允许IMAP和IMAPS

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

 

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

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

 

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

22. 允许POP3和POP3S

例:允许POP3访问

 

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

例:允许POP3S访问

 

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

23. 防止DoS攻击

 

  1. iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
  2. 上述例子中:
  3. -m limit: 启用limit扩展
  4. –limit 25/minute: 允许最多每分钟25个连接(根据需求更改)。
  5. –limit-burst 100: 只有当连接达到limit-burst水平(此例为100)时才启用上述limit/minute限制。

24. 端口转载

例:以往自422端口的流量全体转到22端口。 
那意味大家不仅可以通过422端口又能经过22端口进行ssh连接。启用DNAT转载。

 

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

除此而外,还索要允许连接到422端口的央求

 

  1. iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT

25. 笔录丢掉的数据表

第一步:新建名叫LOGGING的链

 

  1. iptables -N LOGGING

其次步:将享有来自INPUT链中的数据包跳转到LOGGING链中

 

  1. iptables -A INPUT -j LOGGING

其三步:为这几个包自定义个前缀,命名称为”IPTables Packet Dropped”

 

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

第四步:扬弃那些数据包

 

  1. iptables -A LOGGING -j DROP