Iptables 实例分析
创始人
2024-07-23 03:10:42
0

iptables漫长的配置后,我拿出来几个Iptables 应用实例,供大家参考下!

  一、单个规则实例

  iptables -F?

  # -F 是清除的意思,作用就是把 FILTRE TABLE 的所有链的规则都清空

  iptables -A INPUT -s 172.20.20.1/32 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

  #在 FILTER 表的 INPUT 链匹配源地址是172.20.20.1的主机,状态分别是NEW,ESTABLISHED,RELATED 的都放行。

  iptables -A INPUT -s 172.20.20.1/32 -m state --state NEW,ESTABLISHED -p tcp -m multiport --dport 123,110 -j ACCEPT

  # -p 指定协议,-m 指定模块,multiport模块的作用就是可以连续匹配多各不相邻的端口号。完整的意思就是源地址是172.20.20.1的主机,状态分别是NEW, ESTABLISHED,RELATED的,TCP协议,目的端口分别为123 和 110 的数据包都可以通过。

  iptables -A INPUT -s 172.20.22.0/24 -m state --state NEW,ESTABLISHED -p tcp -m multiport --dport 123,110 -j ACCEPT

  iptables -A INPUT -s 0/0 -m state --state NEW -p tcp -m multiport --dport 123,110 -j DROP

  #这句意思为源地址是0/0的 NEW状态的的TCP数据包都禁止访问我的123和110端口。

  iptables -A INPUT -s ! 172.20.89.0/24 -m state --state NEW -p tcp -m multiport --dport 1230,110 -j DROP

  # "!"号的意思 取反。就是除了172.20.89.0这个IP段的地址都DROP。

  iptables -R INPUT 1 -s 192.168.6.99 -p tcp --dport 22 -j ACCEPT

  替换INPUT链中的第一条规则

  iptables -t filter -L INPUT -vn

  以数字形式详细显示filter表INPUT链的规则

  #-------------------------------NAT IP--------------------------------------

  #以下操作是在 NAT TABLE 里面完成的。请大家注意。

  iptables -t nat -F

  iptables -t nat -A PREROUTING -d 192.168.102.55 -p tcp --dport 90 -j DNAT --to 172.20.11.1:800

  #-A PREROUTING 指定在路由前做的。完整的意思是在 NAT TABLE 的路由前处理,目的地为192.168.102.55 的 目的端口为90的我们做DNAT处理,给他转向到172.20.11.1:800那里去。

  iptables -t nat -A POSTROUTING -d 172.20.11.1 -j SNAT --to 192.168.102.55

  #-A POSTROUTING 路由后。意思为在 NAT TABLE 的路由后处理,凡是目的地为 172.20.11.1 的,我们都给他做SNAT转换,把源地址改写成 192.168.102.55 。

  iptables -A INPUT -d 192.168.20.0/255.255.255.0 -i eth1 -j DROP

  iptables -A INPUT -s 192.168.20.0/255.255.255.0 -i eth1 -j DROP

  iptables -A OUTPUT -d 192.168.20.0/255.255.255.0 -o eth1 -j DROP

  iptables -A OUTPUT -s 192.168.20.0/255.255.255.0 -o eth1 -j DROP

  # 上例中,eth1是一个与外部Internet相连,而192.168.20.0则是内部网的网络号,上述规则用来防止IP欺骗,因为出入eth1的包的ip应该是公共IP

  iptables -A INPUT -s 255.255.255.255 -i eth0 -j DROP

  iptables -A INPUT -s 224.0.0.0/224.0.0.0 -i eth0 -j DROP

  iptables -A INPUT -d 0.0.0.0 -i eth0 -j DROP

  # 防止广播包从IP代理服务器进入局域网:

  iptables -A INPUT -p tcp -m tcp --sport 5000 -j DROP

  iptables -A INPUT -p udp -m udp --sport 5000 -j DROP

  iptables -A OUTPUT -p tcp -m tcp --dport 5000 -j DROP

  iptables -A OUTPUT -p udp -m udp --dport 5000 -j DROP

  # 屏蔽端口 5000

  iptables -A INPUT -s 211.148.130.129 -i eth1 -p tcp -m tcp --dport 3306 -j DROP

  iptables -A INPUT -s 192.168.20.0/255.255.255.0 -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

  iptables -A INPUT -s 211.148.130.128/255.255.255.240 -i eth1 -p tcp -m tcp --dport 3306 -j ACCEPT

  iptables -A INPUT -p tcp -m tcp --dport 3306 -j DROP

  # 防止 Internet 网的用户访问 MySQL 服务器(就是 3306 端口)

  iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset

  #REJECT, 类似于DROP,但向发送该包的主机回复由--reject-with指定的信息,从而可以很好地隐藏防火墙的存在

#p#

  二、www的iptables实例

  #!/bin/bash

  export PATH=/sbin:/usr/sbin:/bin:/usr/bin

  #加载相关模块

  modprobe iptable_nat

  modprobe ip_nat_ftp

  modprobe ip_nat_irc

  modprobe ip_conntrack

  modprobe ip_conntrack_ftp

  modprobe ip_conntrack_irc

  modprobe ipt_limit

  echo 1 >;/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

  echo 0 >;/proc/sys/net/ipv4/conf/all/accept_source_route

  echo 0 >;/proc/sys/net/ipv4/conf/all/accept_redirects

  echo 1 >;/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

  echo 1 >;/proc/sys/net/ipv4/conf/all/log_martians

  echo 1 >;/proc/sys/net/ipv4/tcp_syncookies

  iptables -F

  iptables -X

  iptables -Z

  ## 允许本地回路?Loopback - Allow unlimited traffic

  iptables -A INPUT -i lo -j ACCEPT

  iptables -A OUTPUT -o lo -j ACCEPT

  ## 防止SYN洪水?SYN-Flooding Protection

  iptables -N syn-flood

  iptables -A INPUT -i ppp0 -p tcp --syn -j syn-flood

  iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN

  iptables -A syn-flood -j DROP

  ## 确保新连接是设置了SYN标记的包?Make sure that new TCP connections are SYN packets

  iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP

  ## 允许HTTP的规则

  iptables -A INPUT -i ppp0 -p tcp -s 0/0 --sport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT

  iptables -A INPUT -i ppp0 -p tcp -s 0/0 --sport 443 -m state --state ESTABLISHED,RELATED -j ACCEPT

  iptables -A INPUT -i ppp0 -p tcp -d 0/0 --dport 80 -j ACCEPT

  iptables -A INPUT -i ppp0 -p tcp -d 0/0 --dport 443 -j ACCEPT

  ## 允许DNS的规则

  iptables -A INPUT -i ppp0 -p udp -s 0/0 --sport 53 -m state --state ESTABLISHED -j ACCEPT

  iptables -A INPUT -i ppp0 -p udp -d 0/0 --dport 53 -j ACCEPT

  ## IP包流量限制?IP packets limit

  iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

  iptables -A INPUT -i eth0 -p icmp -j DROP

  ## 允许SSH

  iptables -A INPUT -p tcp -s ip1/32 --dport 22 -j ACCEPT

  iptables -A INPUT -p tcp -s ip2/32 --dport 22 -j ACCEPT

  ## 其它情况不允许?Anything else not allowed

  iptables -A INPUT -i eth0 -j DROP

#p#

  三、一个包过滤防火墙实例

  环境:redhat9 加载了string time等模块

  eth0 接外网──ppp0

  eth1 接内网──192.168.0.0/24

  #!/bin/sh

  #

  modprobe ipt_MASQUERADE

  modprobe ip_conntrack_ftp

  modprobe ip_nat_ftp

  iptables -F

  iptables -t nat -F

  iptables -X

  iptables -t nat -X

  ###########################INPUT键###################################

  iptables -P INPUT DROP

  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  iptables -A INPUT -p tcp -m multiport --dports 110,80,25 -j ACCEPT

  iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 139 -j ACCEPT

  #允许内网samba,smtp,pop3,连接

  iptables -A INPUT -i eth1 -p udp -m multiport --dports 53 -j ACCEPT

  #允许dns连接

  iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

  iptables -A INPUT -p gre -j ACCEPT

  #允许外网vpn连接

  iptables -A INPUT -s 192.186.0.0/24 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

  iptables -A INPUT -i ppp0 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP

  #为了防止DoS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃

  iptables -A INPUT -s 192.186.0.0/24 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP

  #为了防止DoS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃

  iptables -A INPUT -p icmp -m limit --limit 3/s -j LOG --log-level INFO --log-prefix "ICMP packet IN: "

  iptables -A INPUT -p icmp -j DROP

  #禁止icmp通信-ping 不通

  iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE

  #内网转发

  iptables -N syn-flood

  iptables -A INPUT -p tcp --syn -j syn-flood

  iptables -I syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN

  iptables -A syn-flood -j REJECT

  #防止SYN攻击 轻量

  iptables -P FORWARD DROP

  iptables -A FORWARD -p tcp -s 192.168.0.0/24 -m multiport --dports 80,110,21,25,1723 -j ACCEPT

  iptables -A FORWARD -p udp -s 192.168.0.0/24 --dport 53 -j ACCEPT

  iptables -A FORWARD -p gre -s 192.168.0.0/24 -j ACCEPT

  iptables -A FORWARD -p icmp -s 192.168.0.0/24 -j ACCEPT

  #允许 vpn客户走vpn网络连接外网

  iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

  iptables -I FORWARD -p udp --dport 53 -m string --string "tencent" -m time --timestart 8:15 --timestop 12:30 --days Mon,Tue,Wed,Thu,Fri,Sat -j DROP

  #星期一到星期六的8:00-12:30禁止qq通信

  iptables -I FORWARD -p udp --dport 53 -m string --string "TENCENT" -m time --timestart 8:15 --timestop 12:30 --days Mon,Tue,Wed,Thu,Fri,Sat -j DROP

  #星期一到星期六的8:00-12:30禁止qq通信

  iptables -I FORWARD -p udp --dport 53 -m string --string "tencent" -m time --timestart 13:30 --timestop 20:30 --days Mon,Tue,Wed,Thu,Fri,Sat -j DROP

  iptables -I FORWARD -p udp --dport 53 -m string --string "TENCENT" -m time --timestart 13:30 --timestop 20:30 --days Mon,Tue,Wed,Thu,Fri,Sat -j DROP

  #星期一到星期六的13:30-20:30禁止QQ通信

  iptables -I FORWARD -s 192.168.0.0/24 -m string --string "qq.com" -m time --timestart 8:15 --timestop 12:30 --days Mon,Tue,Wed,Thu,Fri,Sat -j DROP

  #星期一到星期六的8:00-12:30禁止qq网页

  iptables -I FORWARD -s 192.168.0.0/24 -m string --string "qq.com" -m time --timestart 13:00 --timestop 20:30 --days Mon,Tue,Wed,Thu,Fri,Sat -j DROP

  #星期一到星期六的13:30-20:30禁止QQ网页

  iptables -I FORWARD -s 192.168.0.0/24 -m string --string "ay2000.net" -j DROP

  iptables -I FORWARD -d 192.168.0.0/24 -m string --string "宽频影院" -j DROP

  iptables -I FORWARD -s 192.168.0.0/24 -m string --string "色情" -j DROP

  iptables -I FORWARD -p tcp --sport 80 -m string --string "广告" -j DROP

  #禁止ay2000.net,宽频影院,色情,广告网页连接 !但中文 不是很理想

  iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP

  iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP

  iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP

  #禁止BT连接

  iptables -A FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 --connlimit-mask 24 -j DROP

  #只允许每组ip同时15个80端口转发

  #######################################################################

  sysctl -w net.ipv4.ip_forward=1 &>/dev/null

  #打开转发

  #######################################################################

  sysctl -w net.ipv4.tcp_syncookies=1 &>/dev/null

  #打开 syncookie (轻量级预防 DOS 攻击)

  sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=3800 &>/dev/null

  #设置默认 TCP 连接痴呆时长为 3800 秒(此选项可以大大降低连接数)

  sysctl -w net.ipv4.ip_conntrack_max=300000 &>/dev/null

  #设置支持最大连接树为 30W(这个根据你的内存和 iptables 版本来,每个 connection 需要 300 多个字节)

  #######################################################################

  iptables -I INPUT -s 192.168.0.50 -j ACCEPT

  iptables -I FORWARD -s 192.168.0.50 -j ACCEPT

  #192.168.0.50是我的机子,全部放行!

通过文章的具体分析和介绍,想必大家通过Iptables的实例分析,对Iptables有个全面认识,希望本文对大家有帮助!

【编辑推荐】

  1. 15.4 iptables的工作原理
  2. 15.5 关于iptables
  3. 解决Linux iptables防火墙和vsftpd的问题
  4. Linux系统下IPtables防火墙简易设置方法
  5. Linux iptables firewall 設定常見 FAQ 整理
  6. 如何用iptables实现Linux下强大的NAT功能
  7. iptables防火墙配置工具ShoreWall的安装和使用实例

 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...