系统管理员常用的16个iptables技巧

发布时间:2022-07-24 03:00:05 作者:123123445 阅读量:9559

iptables提供强大的功能来控制进出系统的流量。

现代Lin内核附带了一个名为Netfilter的包过滤框架。Netfilter可以允许,删除和修改进出系统的流量。iptables用户空间命令行工具以此功能为基础,提供强大的防火墙,可以通过添加规则来配置防火墙以形成防火墙策略。iptables因其丰富的功能和巴洛克式命令语法而非常令人生畏。让我们探讨其中的一些为系统管理员可能遇到许多情况的一套iptables技巧和窍门。

避免锁定自己

场景:你将对公司主服务器上的iptables策略规则进行更改。你想避免锁定自己 ,可能还有其他所有人。(这会花费时间和金钱,导致半夜手机响起。)

提示#1:在开始处理iptables配置之前先备份它。

使用以下命令备份配置:


  1. /sbin/iptables-save > /root/iptables-works 

提示#2:更好的方法是,在文件名中包含一个时间戳。

使用以下命令添加时间戳:


  1. /sbin/iptables-save > /root/iptables-works-`date +%F` 

你得到一个名称如下的文件:


  1. /root/iptables-works-2018-09-11 

如果你做了阻止系统工作的事情,你可以快速恢复它:

提示#3:每次创建iptables策略的备份副本时,都要在名称中创建一个指向“latest”的文件的链接。


  1. ln –s /root/iptables-works-`date +%F` /root/iptables-works-latest 

提示#4:将特定规则放在底部的策略和通用规则的顶部。

避免在策略规则的顶部使用这样的通用规则:


  1. iptables -A INPUT -p tcp --dport 22 -j DROP 

在规则中指定的条件越多,锁定自己的机会就越少。而不是上面的非常通用的规则,使用这样的内容:


  1. iptables -A INPUT -p tcp --dport 22 –s 10.0.0.0/8 –d 192.168.100.101 -j DROP 

此规则将(-A)附加到INPUT链中,规则将DROP任何源自TCP(-p tcp)端口22( - 端口22)上的CIDR块10.0.0.0/8的数据包发往IP地址192.168.100.101 (-d 192.168.100.101)。

有很多方法可以更具体。例如,使用-i eth0会将处理限制为服务器中的单个NIC。这样,过滤操作将不会将规则应用于eth1。

提示#5:在策略规则顶部将你的IP地址列入白名单。

这是一种不会锁定自己的非常有效的方法。


  1. iptables -I INPUT -s -j ACCEPT 

需要将此作为其正常工作的第一条规则。 记住,-I将其作为第一条规则插入; -A将其附加到列表的末尾。

提示#6:了解并理解当前的所有规则。

首先不犯错误就是成功的一半。如果了解iptables策略背后的内部工作原理,它将使你的生活更轻松。如果必须,绘制流程图。 还要记住:策略的作用和应该做的事情可能是两件不同的事情。

设置工作站防火墙策略

场景:你希望设置具有限制性防火墙策略的工作站。

提示#1:将默认策略设置为DROP。


  1. Set a default policy of DROP 
  2. *filter 
  3. :INPUT DROP [0:0] 
  4. :FORWARD DROP [0:0] 
  5. :OUTPUT DROP [0:0] 

提示#2:允许用户完成工作所需的最少量服务。

iptables规则需要允许工作站通过DHCP获取IP地址,网络掩码和其他重要信息(-p udp --dport 67:68 --sport 67:68)。对于远程管理,规则需要允许入站SSH(--dport 22),出站邮件(--dport 25),DNS( - export 53),出站ping(-p icmp),网络时间协议(--dport 123 --sport 123),以及出站HTTP(--dport 80)和HTTPS(--dport 443)。


  1. Set a default policy of DROP 
  2. *filter 
  3. :INPUT DROP [0:0] 
  4. :FORWARD DROP [0:0] 
  5. :OUTPUT DROP [0:0] 
  6.  
  7. # Accept any related or established connections 
  8. -I INPUT  1 -m state --state RELATED,ESTABLISHED -j ACCEPT 
  9. -I OUTPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT 
  10.  
  11. # Allow all traffic on the loopback interface 
  12. -A INPUT -i lo -j ACCEPT 
  13. -A OUTPUT -o lo -j ACCEPT 
  14.  
  15. # Allow outbound DHCP request 
  16. -A OUTPUT –o eth0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT 
  17.  
  18. # Allow inbound SSH 
  19. -A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW  -j ACCEPT 
  20.  
  21. # Allow outbound email 
  22. -A OUTPUT -i eth0 -p tcp -m tcp --dport 25 -m state --state NEW  -j ACCEPT 
  23.  
  24. # Outbound DNS lookups 
  25. -A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT 
  26.  
  27. # Outbound PING requests 
  28. -A OUTPUT –o eth0 -p icmp -j ACCEPT 
  29.  
  30. # Outbound Network Time Protocol (NTP) requests 
  31. -A OUTPUT –o eth0 -p udp --dport 123 --sport 123 -j ACCEPT 
  32.  
  33. # Outbound HTTP 
  34. -A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT 
  35. -A OUTPUT -o eth0 -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT 

COMMIT

限制IP地址范围

场景:贵公司的首席执行官认为员工在Facebook上花费了太多时间而没有完成任何工作。 首席执行官告诉CIO要对员工在Facebook上浪费时间做些什么。 首席信息官告诉CISO要对员工在Facebook上浪费时间做些什么。 最后,你被告知员工在Facebook上浪费了太多时间,你必须对此做些什么。 你决定阻止对Facebook的所有访问。首先,使用host和whois命令查找Facebook的IP地址。


  1. host -t a www.facebook.com 
  2. www.facebook.com is an alias for star.c10r.facebook.com. 
  3. star.c10r.facebook.com has address 31.13.65.17 
  4. whois 31.13.65.17 | grep inetnum 
  5. inetnum:        31.13.64.0 - 31.13.127.255 

然后使用CIDR到IPv4转换页面将该范围转换为CIDR表示法。 你得到31.13.64.0/18。 要阻止对www.facebook.com的传出访问,请输入:


  1. iptables -A OUTPUT -p tcp -i eth0 –o eth1 –d 31.13.64.0/18 -j DROP 

按时间设置规则

场景:拒绝公司员工访问Facebook的强烈反对导致首席执行官放松一点(这和他的行政助理提醒他,她让HIS Facebook页面保持最新状态)。首席执行官决定仅在午餐时间(中午12点至下午1点)允许访问Facebook.com。 假设默认策略是DROP,请使用iptables的时间功能打开访问权限。


  1. iptables –A OUTPUT -p tcp -m multiport --dport http,https -i eth0 -o eth1 -m time --timestart 12:00 --timestart 12:00 –timestop 13:00 –d  
  2. 31.13.64.0/18  -j ACCEPT 

此命令将策略设置为允许(-j ACCEPT)http和https(-m multiport --dport http,https)在中午(--timestart 12:00)和13PM(--timestop 13:00)之间到Facebook.com (-d 31.13.64.0/18)。

按时间调整-Take 2

场景:在计划的系统维护停机期间,需要在凌晨2点到凌晨3点之间拒绝所有TCP和UDP流量,这样维护任务就不会受到传入流量的干扰。 这将采取两个iptables规则:


  1. iptables -A INPUT -p tcp -m time --timestart 02:00 --timestop 03:00 -j DROP  
  2. iptables -A INPUT -p udp -m time --timestart 02:00 --timestop 03:00 -j DROP 

根据这些规则,TCP和UDP流量(-p tcp和-p udp)在输入的2AM(--timestart 02:00)和3AM(--timestop 03:00)之间被拒绝(-j DROP)( - IUPUT)。

限制与iptables的连接

场景:你的互联网连接的Web服务器受到来自世界各地的不良攻击,他们试图使用DoS(拒绝服务)。要减轻这些攻击,你可以限制单个IP地址与Web服务器之间的连接数:


  1. iptables –A INPUT –p tcp –syn -m multiport -–dport http,https –m connlimit -–connlimit-above 20 –j REJECT -–reject-with-tcp-reset 

让我们来看看这条规则的作用。如果主机在一分钟内向Web服务器(-dport http,https)发出超过20个(--connlimit-大于20)个新连接(-p tcp -syn),则拒绝新连接(-j REJECT),并告诉连接主机你拒绝连接(--reject-with-tcp-reset)。

监控iptables规则

场景:由于iptables在链条中遍历规则,因此iptables在“首次匹配获胜”的基础上运行,因此经常匹配的规则应该接近策略的顶部,而不太频繁匹配的规则应该接近底部。 你怎么知道哪些规则最多或最少,所以可以在顶部或底部附近订购?

提示#1:查看每个规则被击中的次数。

使用此命令:


  1. iptables -L -v -n –line-numbers 

该命令将列出链中的所有规则(-L)。由于没有指定链,所有链都将列出详细输出(-v),显示数字格式的数据包和字节计数器(-n),每个规则开头的行号对应于该规则在链中的位置。

使用数据包和字节计数,您可以将最常访问的规则排序到顶部,将最不频繁遍历的规则排在最后。

提示#2:删除不必要的规则。

哪些规则根本没有获得任何匹配? 这些将是从政策中删除的良好候选人。你可以用这个命令找到它:


  1. iptables -nvL | grep -v "0 0" 

注意:这不是零之间的标签; 零之间有五个空格。

提示#3:监控正在发生的事情。

不想要实时监控iptables的情况,例如top。 使用此命令动态监视iptables活动的活动,并仅显示正在遍历的规则:


  1. watch --interval=5 'iptables -nvL | grep -v "0 0"' 

看跑'iptables -nvL | grep -v“0 0”'每五秒钟显示一次输出的第一个屏幕。 这使可以观察数据包和字节数随时间的变化。

关于iptables的报告

场景:你的经理认为这个iptables防火墙的东西很棒,但每日活动报告会更好。有时写报告比做工作更重要。

使用数据包过滤器/防火墙/ IDS日志分析器FWLogwatch根据iptables防火墙日志创建报告。 FWLogwatch支持许多日志格式并提供许多分析选项。 它生成日志文件的每日和每月摘要,使安全管理员可以节省大量时间,更好地控制网络安全,并减少未被注意的攻击。

以下是FWLogwatch的示例输出:

不仅仅是ACCEPT和DROP

我们已经涵盖了iptables的许多方面,从确保在使用iptables监视iptables以可视化iptables防火墙的活动时确保你没有锁定自己。这些将让你开始实现更多的iptables提示和技巧。

***本网站图片,文字之类版权申明,因为网站可以由注册用户自行上传图片或文字,本网站无法鉴别所上传图片或文字的知识版权,如果侵犯,请及时通知我们,本网站将在第一时间及时删除。

我要评论

网友评论


评论时间:2024-04-25 18:25:02

云虚拟主机建站 其次向该用户提供产标准服务器机柜内宽 品及技术信息资料


评论时间:2022-11-08 21:25:02

到2020年中国数据中心数量有望超过20目前最好的云主机 服务器系统2012 到2020年中国数据中心数量有望超过200万,整体需求保持快速增长趋势

最新文章

 2023-12-25 22:44:35   admin

活动发布区版规

 2023-05-27 22:03:52   御风而行

容器、无服务器、虚拟机:安全性差...

 2023-05-27 19:08:41   小绵羊0123

科技巨头布局云端 服务器 网络硬...

 2023-05-27 18:17:46   姐姐的跟屁虫

钉钉因系统访问流量激增,宕机1小...

热门阅读

 2022-07-23 00:34:02   freeatom

常见ftp命令 FTP命令使用详...

 2022-07-21 02:17:02   ares

双硬盘组建Raid0磁盘阵列图文...

 2022-07-20 06:17:02   mankeung123

用友软件客户端连接不上服务器的解...

 2022-07-23 00:51:02   antonfxb

WebService实例

 2022-07-13 05:38:02   苯小孩

开发、运维不可不看的Linux调...

 2022-07-20 18:51:02   nightstone

如何使用Charles抓取Web...

随机文章

 2021-12-26 05:38:02   爱UUD哒

为什么服务器托管比租用费用高?

 2022-01-23 05:38:02   fj1221

服务器托管哪家最好?

 2022-02-10 05:38:03   gzx001

Web服务器窗口配置

 2022-03-03 05:38:02   jyuu

安装文件服务器

 2022-03-14 05:38:03   netstu86

Nginx如何限制流量

 2022-03-16 05:38:03   chcr

JBoss实战:服务器配置指南 ...

热评文章

 2022-07-19 20:17:02   dengyu0429

linux vi使用及详细介绍

 2022-07-20 01:00:05   激动的舌头

Linux视频教程:用户管理命令...

 2022-07-21 20:51:02   jessica-an

创建本地FTP站点

 2022-02-07 05:38:03   jasonkidd

WEB服务器配置详解

 2022-07-20 04:51:02   wolfssss

ACL权限-默认与递归(4)

 2022-07-22 15:00:05   淡水珊瑚

Linux下 Samba Ser...
全球云服务器
Catfish(鲶鱼) Blog V 4.7.3