系统之家 - 系统光盘下载网站!

当前位置:系统之家 > 系统教程 > 使用iptables命令为Linux配置防火墙

如何使用iptables命令为Linux系统配置防火墙(3)

时间:2014-12-29 17:06:26 作者:qipeng 来源:系统之家 1. 扫描二维码随时看资讯 2. 请使用手机浏览器访问: https://m.xitongzhijia.net/xtjc/20141229/33650.html 手机查看 评论

  下面写一下更加细致的规则,就是限制到某台机器

  如:我们只允许192.168.0.3的机器进行SSH连接

  代码如下:

  [root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT

  如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.

  24表示子网掩码数。但要记得把 /etc/sysconfig/iptables 里的这一行删了。

  -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因为它表示所有地址都可以登陆。

  或采用命令方式:

  代码如下:

  [root@tp ~]# iptables -D INPUT -p tcp --dport 22 -j ACCEPT

  然后保存,我再说一边,反是采用命令的方式,只在当时生效,如果想要重起后也起作用,那就要保存。写入到/etc/sysconfig/iptables文件里。

  代码如下:

  [root@tp ~]# /etc/rc.d/init.d/iptables save

  这样写 !192.168.0.3 表示除了192.168.0.3的ip地址

  其他的规则连接也一样这么设置。

  在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链,对正在转发链的监控。

  开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)

  代码如下:

  [root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

  [root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT

  丢弃坏的TCP包

  代码如下:

  [root@tp ~]#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP

  处理IP碎片数量,防止攻击,允许每秒100个

  代码如下:

  [root@tp ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

  设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包。

  代码如下:

  [root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

  我在前面只所以允许ICMP包通过,就是因为我在这里有限制。

  二,配置一个NAT表放火墙

  1,查看本机关于NAT的设置情况

  代码如下:

  [root@tp rc.d]# iptables -t nat -L

  Chain PREROUTING (policy ACCEPT)

  target prot opt source destination

  Chain POSTROUTING (policy ACCEPT)

  target prot opt source destination

  SNAT all -- 192.168.0.0/24 anywhere to:211.101.46.235

  Chain OUTPUT (policy ACCEPT)

  target prot opt source destination

  我的NAT已经配置好了的(只是提供最简单的代理上网功能,还没有添加防火墙规则)。

  当然你如果还没有配置NAT的话,你也不用清除规则,因为NAT在默认情况下是什么都没有的

  如果你想清除,命令是

  代码如下:

  [root@tp ~]# iptables -F -t nat

  [root@tp ~]# iptables -X -t nat

  [root@tp ~]# iptables -Z -t nat

  2,添加规则

  添加基本的NAT地址转换,(关于如何配置NAT可以看我的另一篇文章),

  添加规则,我们只添加DROP链。因为默认链全是ACCEPT.

  防止外网用内网IP欺骗

  代码如下:

  [root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP

  [root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP

  [root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP

  如果我们想,比如阻止MSN,QQ,BT等的话,需要找到它们所用的端口或者IP,(个人认为没有太大必要)

  例:

  禁止与211.101.46.253的所有连接

  代码如下:

  [root@tp ~]# iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP

  禁用FTP(21)端口

  代码如下:

  [root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP

  这样写范围太大了,我们可以更精确的定义。

  代码如下:

  [root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -d 211.101.46.253 -j DROP

  这样只禁用211.101.46.253地址的FTP连接,其他连接还可以。如web(80端口)连接。

  按照我写的,你只要找到QQ,MSN等其他软件的IP地址,和端口,以及基于什么协议,只要照着写就行了。

  最后:

  drop非法连接

  代码如下:

  [root@tp ~]# iptables -A INPUT -m state --state INVALID -j DROP

  [root@tp ~]# iptables -A OUTPUT -m state --state INVALID -j DROP

  [root@tp ~]# iptables-A FORWARD -m state --state INVALID -j DROP

  允许所有已经建立的和相关的连接

  代码如下:

  [root@tp ~]# iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  [root@tp ~]# iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  [root@tp ~]# /etc/rc.d/init.d/iptables save

  这样就可以写到/etc/sysconfig/iptables文件里了。写入后记得把防火墙重起一下,才能起作用.

  代码如下:

  [root@tp ~]# service iptables restart

  别忘了保存,不行就写一部保存一次.你可以一边保存,一边做实验,看看是否达到你的要求,

  上面的所有规则我都试过,没有问题

  上面就是Linux下使用iptables命令配置防火墙的方法介绍了,如果你不知道你的系统有没配置防火墙,可先对系统进行检测,在进行配置。

发表评论

0

没有更多评论了

评论就这些咯,让大家也知道你的独特见解

立即评论

以上留言仅代表用户个人观点,不代表系统之家立场

其他版本软件

热门教程

人气教程排行

Linux系统推荐

扫码关注
扫码关注

扫码关注 官方交流群 软件收录