iptables 配置实例

  1. # 列出规则,供查看
  2. iptables -L -n
  3. # stop iptables, 如果清空规则前没有停止,ssh 会断掉,必须重启系统
  4. /etc/init.d/iptables stop
  5. # 清空规则
  6. iptables -F
  7. # 允许内网ip访问所有端口
  8. iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
  9. # 允许本地回环接口(即运行本机访问本机)
  10. iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
  11. # 允许访问22端口
  12. iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  13. # 允许访问80端口
  14. iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  15. # 允许所有ip访问80端口
  16. iptables -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT
  17. # 允许本地发起的连接返回数据到任意端口。本地作为客户端可以发起到任何ip和端口的请求,这条规则确保能够收到返回
  18. #------------------when conntrack unkonw error use this
  19. # sudo /sbin/iptables -A OUTPUT -m state --state NEW,ESTABLISHED -j ACCEPT
  20. # sudo /sbin/iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
  21. # sudo /sbin/iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
  22. #---------------------------------------------------------------
  23. iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
  24. # 允许80端口返回数据
  25. iptables -A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
  26. # 允许返回数据给所有ip所有端口 允许所有本机向外的访问
  27. iptables -A OUTPUT -j ACCEPT
  28. # 除上面允许的规则,抛弃所有INPUT请求 (注意:如果22端口未加入允许规则,SSH链接会直接断开。)
  29. iptables -P INPUT DROP
  30. # 除上面允许的规则,抛弃所有FORWARD请求
  31. iptables -P FORWARD DROP
  32. # 除上面允许的规则,抛弃所有OUTPUT请求
  33. iptables -P OUTPUT DROP
  34. # 备份
  35. iptables-save > /etc/iptables/iptables.rules
  36. # (cat /etc/sysconfig/iptables > /etc/iptables/iptables.rules )
  37. # 保存(ArchLinux系统下的路径可能和其他系统下的路径不同)
  38. sudo /etc/rc.d/init.d/iptables save
  39. # 重新启动
  40. sudo service iptables restart
  41. # (/etc/init.d/iptables restart)
  42. # 列出规则,供查看
  43. iptables -L -n
  44. # iptables 安装后 iptables 命令无效,可能是因为该用户的PATH不包括/sbin和/usr/sbin, 可用 sudo /sbin/iptables 运行

文章转自:http://www.badnotes.com/2013/10/03/iptables/