SYNOPSIS iptables [-t table] {-A|-C|-D} chain rule-specification ip6tables [-t table] {-A|-C|-D} chain rule-specification iptables [-t table] -I chain [rulenum] rule-specification iptables [-t table] -R chain rulenum rule-specification iptables [-t table] -D chain rulenum
iptables 是linux下一款强大的防火墙,在不考虑效率的情况下,功能强大到足能够替代大多数硬件防火墙。可是强大的防火墙假设应用不当,可能挡住的可不光是那些潜在的攻击,还有可能是你自己哦。
这个带来的危害对于普通的个人PC来说可能无关紧要。可是想象一下,假设这是一台server,一旦发生这种情况。不光是影院正常的服务。还须要到现场去恢复。这会给你带来多少损失呢?
所以我想说的是,当你敲入每个iptables 相关命令的时候都要万分小心。
1.应用每个规则到DROP target时,都要细致检查规则。应用之前要考虑他给你带来的影响。
2.在redhat中我们能够使用service iptables stop来关闭防火墙,可是在有些版本号如ubuntu中这个命令却不起作用,大家可能在网上搜索到不少文章告诉你用iptables -F这个命令来关闭防火墙,可是使用这个命令前。千万记得用iptables -L查看一下你的系统中全部链的默认target。iptables -F这个命令仅仅是清除全部规则。仅仅不会真正关闭iptables.想象一下,假设你的链默认target是DROP,本来你有规则来同意一些特定的port,但一旦应用iptables -L 。清除了全部规则以后。默认的target就会阻止不论什么訪问。当然包含远程ssh管理server的你。
所以我建议的关闭防火墙命令是
iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -F
总之,当你要在你的server上做不论什么变更时,最好有一个測试环境做过充分的測试再应用到你的server。
除此之外。要用好iptables,那就要理解iptables的执行原理,知道对于每个数据包iptables是怎么样来处理的。这样才干准确地书写规则,避免带来不必要的麻烦。
iptables [-t table] -S [chain [rulenum]] iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...] iptables [-t table] -N chain iptables [-t table] -X [chain] iptables [-t table] -P chain target iptables [-t table] -E old-chain-name new-chain-name rule-specification = [matches...] [target] match = -m matchname [per-match-options] target = -j targetname [per-target-options]
屏蔽ICMP ping请求
我们能够通过同意以下的命令屏蔽ping请求:
- # iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
- # iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP
也能够依照特定的网段和主机限制ping请求:
- # iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j ACCEPT
下面命令仅仅接受受限制的ping请求:
- #假定默认INPUT策略为丢弃数据包
- # iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
- # iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
- # iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
- #全部的server都对ping请求作出应答
- # iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
屏蔽或开启常见port
屏蔽或开启经常使用的TCP、UDPport:
- #能够使用DROP替换ACCEPT。实现端口屏蔽。
- #打开22端口(SSH)
- # iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
- # iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT
- #打开TCP/UDP631端口(打印服务)
- # iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 631 -j ACCEPT
- # iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT
- # 打开123端口,同意局域网用户进行NTP时间同步
- # iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT
- #打开25端口(SMTP)
- # iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT
- # 打开DNS端口
- # iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
- # iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
- #打开http/https端口
- # iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
- # iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
- #打开TCP110端口(POP3)
- # iptables -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT
- #打开TCP143端口
- # iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT
- #为局域网用户开启Samba訪问
- # iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 137 -j ACCEPT
- # iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 138 -j ACCEPT
- # iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT
- # iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT
- #为局域网用户开启代理server訪问
- # iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 3128 -j ACCEPT
- #为局域网用户开启MySQL訪问
- # iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
版权声明:本文博主原创文章。博客,未经同意不得转载。