1.首先介绍一下指令和相关配置文件

  1. 启动指令:service iptables start
  2. 重启指令:service iptables restart
  3. 关闭指令:service iptables stop
  4. 然后是相关配置:/etc/sysconfig/iptables
  5. 如何操作该配置呢?
  6. vim /etc/sysconfig/iptables
  7. 然后进去修改即可,修改完了怎么办?这里很多人会想到/etc/rc.d/init.d/iptables save指令,但是一旦你这么干了你刚才的修改内容就白做了。。。
  8. 具体方法是:
  9. 只修改/etc/sysconfig/iptables 使其生效的办法是修改好后先service iptables restart,然后才调用/etc/rc.d/init.d/iptables save,
  10. 因为/etc/rc.d/init.d/iptables save会在iptables服务启动时重新加载,要是在重启之前直接先调用了/etc/rc.d/init.d/iptables save那么你
  11. 的/etc/sysconfig/iptables 配置就回滚到上次启动服务的配置了,这点必须注意!!!

2.下面介绍一些指令用法(主要还是man iptables看下相关资料才行)

  1. -A:指定链名
  2. -p:指定协议类型
  3. -d:指定目标地址
  4. --dport:指定目标端口(destination port 目的端口)
  5. --sport:指定源端口(source port 源端口)
  6. -j:指定动作类型

3.如果我不像修改文件直接打命令可以吗,当然没问题,步骤如下:

  1. 例如我给SSH加放行的语句:
  2. 添加input记录: iptables -A INPUT -p tcp --dport  -j ACCEPT
  3. 添加output记录: iptables -A OUTPUT -p tcp --sport  -j ACCEPT
  4. 最后注意需要再执行一下 /etc/init.d/iptables save,这样这两条语句就保存到刚才那个/etc/sysconfig/iptables 文件中了。

4.接下来说明一下步骤,如果机器不在我身边,我只能SSH进去做iptables规则,那么我必须注意每一步,千万别搞错了,否则就SSH链接不上都有可能!

  1. 首先要做的是给咱的SSH进行ACCEPT配置,以免直接无法连接的情况发生:
  2. 1.如果SSH端口是22(这里不建议用默认端口最好改掉SSH端口)
  3. iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  4. iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
  5. 注意要/etc/rc.d/init.d/iptables save,以下每一步都最好执行一遍此语句,以下不再累述。
  6. 2.vim /etc/sysconfig/iptables确定是否已经加入配置,可以的话执行service iptables restart重启后生效
  7. 3.下面是很危险的操作,如果你第一步没做就会直接可能导致你连不上SSH,此步骤前切记执行第一步!!!
  8. iptables -P INPUT DROP
  9. iptables -P OUTPUT DROP
  10. iptables -P FORWARD DROP
  11. 这个步骤是把所有不符合自己配置的规则ACCEPT的连接全部DROP掉,执行完以后如果咱SSH还没掉,那么谢天谢地,安全了,重启下iptables后继续下面的配置!
  12. 4.下面咱就不细说了,具体就是看自己服务器要开放哪些端口或者是要访问哪些端口来做具体的配置,下面是我自己的机器的配置:
  13. /etc/sysconfig/iptables文件配置如下:
  14. # Generated by iptables-save v1.4.7 on Fri Mar  2 19:59:43 2012
  15. *filter
  16. :INPUT DROP [0:0]
  17. :FORWARD DROP [0:0]
  18. :OUTPUT DROP [8:496]
  19. -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  20. #ping使用的端口
  21. -A INPUT -p icmp -j ACCEPT
  22. -A INPUT -i lo -j ACCEPT
  23. -A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
  24. -A INPUT -s 192.168.2.200/32 -d 192.168.2.200/32 -j ACCEPT
  25. #允许服务器自己的SSH(对外部请求来说服务器是目标所以使用--dport)
  26. -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
  27. #80端口不用说了吧,服务器网站访问端口
  28. -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
  29. -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
  30. -A INPUT -p tcp -m tcp --dport 11211 -j ACCEPT
  31. -A INPUT -p tcp -m tcp --dport 11212 -j ACCEPT
  32. -A FORWARD -j REJECT --reject-with icmp-host-prohibited
  33. #53端口是DNS相关,TCP和UDP都要配置
  34. -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
  35. -A INPUT -p udp -m udp --dport 53 -j ACCEPT
  36. #ping使用的端口
  37. -A OUTPUT -p icmp -j ACCEPT
  38. -A OUTPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
  39. -A OUTPUT -s 192.168.2.200/32 -d 192.168.2.200/32 -j ACCEPT
  40. #允许服务器SSH到其他机器(使用外部端口就使用--dport)
  41. -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
  42. #允许服务器自己的SSH(自已为源输出就使用--sport)
  43. -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
  44. #访问外部网站80端口(使用外部端口就使用--dport)
  45. -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
  46. #如果服务器需要访问外部网站,那么OUTPUT也需要配置53端口(使用外部端口就使用--dport)
  47. -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
  48. -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
  49. #如果有访问外部邮箱,那么打开邮箱相关端口(使用外部端口就使用--dport)
  50. -A OUTPUT -p tcp -m tcp --dport 465 -j ACCEPT
  51. -A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT
  52. -A OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT
  53. #服务器网站访问端口(自已为源输出就使用--sport)
  54. -A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
  55. -A OUTPUT -p tcp -m tcp --sport 3306 -j ACCEPT
  56. -A OUTPUT -p tcp -m tcp --sport 11211 -j ACCEPT
  57. -A OUTPUT -p tcp -m tcp --sport 11212 -j ACCEPT
  58. COMMIT
  59. # Completed on Fri Mar  2 19:59:43 2012

5.可能有时候需要删除规则,最简单就是修改一下/etc/sysconfig/iptables然后service iptables restart,最后/etc/rc.d/init.d/iptables save即可。

当然也可以使用指令完成:

  1. 在网上找了一下,删除规则的方法:
  2. 语法是: iptables -D chain rulenum [options]
  3. 其中: chain 是链的意思,就是INPUT FORWARD 之类的
  4. rulenum 是规则的编号。从1 开始。可以使用  --line-numbers 列出规则的编号
  5. 所以,例如上面要删除一个INPUT链的规则的话可以这样:iptables -D INPUT 3
  6. 意思是删除第3条规则。
  7. 还有第二种方法。第二种办法是 -A 命令的映射,不过用-D替换-A。当你的链中规则很复杂,而你不想计算它们的编号的时候这就十分有用了。也就是说,你如何用iptables -A.... 语句定义了一个规则,则删除此规则时就用 -D 来代替- A  其余的都不变即可。
  8. ======================
  9. 说一下上面的 --line-numbers 选项,如下面的命令:
  10. iptables -L INPUT --line-numbers   列出INPUT 链所有的规则
  11. num  target     prot opt source               destination
  12. 1    REJECT     tcp  --  anywhere             anywhere            tcp dpt:microsoft-ds reject-with icmp-port-unreachable
  13. 2    REJECT     tcp  --  anywhere             anywhere            tcp dpt:135 reject-with icmp-port-unreachable
  14. 3    REJECT     tcp  --  anywhere             anywhere            tcp dpt:netbios-ssn reject-with icmp-port-unreachable
  15. ...
  16. ...
  17. 删除指定行规则:
  18. [root@localhost rc.d]# iptables -D INPUT 4

6.最后补充一下,如果想针对某IP进行单独开放端口可以如下配置:

  1. 如果我需要对内网某机器单独开放mysql端口,应该如下配置:
  2. iptables -A INPUT -s 192.168.2.6 -p tcp -m tcp --dport 3306 -j ACCEPT
  3. iptables -A OUTPUT -s 192.168.2.6 -p tcp -m tcp --sport 3306 -j ACCEPT

7.彻底禁止某IP访问:

  1. #屏蔽单个IP的命令是
  2. iptables -I INPUT -s 123.45.6.7 -j DROP
  3. #封整个段即从123.0.0.1到123.255.255.254的命令
  4. iptables -I INPUT -s 123.0.0.0/8 -j DROP
  5. #封IP段即从123.45.0.1到123.45.255.254的命令
  6. iptables -I INPUT -s 124.45.0.0/16 -j DROP
  7. #封IP段即从123.45.6.1到123.45.6.254的命令是
  8. iptables -I INPUT -s 123.45.6.0/24 -j DROP
  9. 指令I是insert指令 但是该指令会insert在正确位置并不像A指令看你自己的排序位置,因此用屏蔽因为必须在一开始就要加载屏蔽IP,所以必须使用I命令加载,然后注意执行/etc/rc.d/init.d/iptables save进行保存后重启服务即可

iptables指令参考的更多相关文章

  1. 五、案例-指令参考-freemarker指令、表达式

    案例-指令参考描述:本人自己测试写了一遍,如有错的地方,懂freemarker的朋友望指点指点! 案例-指令参考 表达式 一. Assign 1.<#assign name1="北京& ...

  2. iptables 指令语法

    iptables 指令 语法: iptables [-t table] command [match] [-j target/jump] -t 参数用来指定规则表,内建的规则表有三个,分别是:nat. ...

  3. 推荐 15 个 Angular.js 应用扩展指令(参考应用)

    几天前我们看到Angular 1.4.0发布了-一个以社团为驱动的发布版本涵盖了400多个GitHub的提交,增加了对特性的提升,比如动画,以及可用性. 官方新闻发布稿 覆盖了绝大部分,这同样值得放于 ...

  4. vim常用指令参考

    (完)

  5. 规则 防火墙 iptables input accept【转】

    由于 mangle 这个表格很少被使用,如果将图 9.3-3 的 mangle 拿掉的话,那就容易看的多了: 图 9.3-4.iptables 内建各表格与链的相关性(简图) 透过图 9.3-4 你就 ...

  6. CentOS 7.0 firewall防火墙关闭firewall作为防火墙,这里改为iptables防火墙

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤: 1.先检查是否安装了: iptables service iptables status 2.安装ip ...

  7. linux指令快速复制粘贴[龟速更新中]

    由于有经常碰到要输入linux指令,但是却忘记了的情况.在家里我把常用的命令放到Xshell的快速命令集,但是在很多情况下不在家,可能用的他人电脑,以及在非Win环境下使用ssh时没有xshell使用 ...

  8. netfilter/iptables 防火墙

    目录 文章目录 目录 iptables 与 netfilter 工作机制 规则(Rules) 链(chain) 表(tables) 网络数据包通过 iptables 的过程 总结链.表和规则的关系 i ...

  9. 【转】Linux iptables 详解

    转自:https://www.cnblogs.com/qwertwwwe/p/9452370.html 最近搭一个框架需要用到iptables做映射,学习了下iptables的原理,总结下方便以后查~ ...

随机推荐

  1. css2和CSS3的background属性简写

    1.css2:background:background-color || url("") || no-repeat || scroll || 0 0;  css3:  backg ...

  2. CentOS 7中将Tomcat设置为系统服务

    tomcat 需要增加一个pid文件,在tomca/bin 目录下面,增加 setenv.sh 配置,catalina.sh启动的时候会调用,在该文件中添加如下内容 CATALINA_PID=&quo ...

  3. cocos2dx 举例说明 convertToNodeSpace 与 convertToWorldSpace 的使用

    convertToNodeSpace:把世界坐标转换到当前节点的本地坐标系中. //可以应用于判断子节点是否被点击,这时就需要把坐标从世界坐标系转换为父节点的坐标系. //当然大多数情况会用CCMen ...

  4. 使用jquery.validate.js插件进行表单里控件的验证

    jsp中具体实现的代码: <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  5. js将xml对象,xml文件解析成xml dom对象,来对对象进行操作

    由于ie与其他的浏览器对于xml文件的解析方式不同,所以有不同的解析方式 1.1 IE解析xml文件的方式 var xmlDoc=new ActiveXObject("Microsoft.X ...

  6. centos7 安装openvswitch

    安装 1.安装依赖包:yum -y install openssl-devel wget kernel-devel 2.安装开发工具:yum groupinstall "Developmen ...

  7. STM32普通定时器(TIM2-7)的时钟源

    STM32普通定时器(TIM2-7)的时钟源

  8. isset()和empty()的区别

    form表单的数据提交过来 如果用isset() if(isset($_GET)){ .....} '' '0' 0 返回 true 不够严谨 empty() '' '0' 0 显示返回false 比 ...

  9. js行内式遇到的一些问题 DOM对象和jq对象转换的问题

    这两天给后台页面做页面,我的工作比较简单,只需要写结构和样式就行了,写好之后,后端大哥用ajax重写页面加载数据,顺便给标签添加选中事件,做选中后变色的处理,但是却遇到一个问题,一直选不到触发事件这个 ...

  10. C#使用LitJson解析JSON(转)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - Decembe ...