linux centos 防火墙设置

最近两周都在搞写iptables设置的脚本,就总结一下,适合初学者看看。有大牛经过的话欢迎指正,毕竟偶还是菜鸟一只。。。这里只总结了常用的一些内容,如果想查看完整的,请访问:鸟哥的私房菜 或 http://www.linuxdw.com/netweb/iptables.htm#iptablessyntax

linux在2.4以后的内核中防火墙用的都是netfilter/iptables,可以实现防火墙,NAT(网络地址翻译)和数据包的分割等功能。netfilter工作在内核内部(目前没去了解啥东东),iptables则是用户定义规则集的表结构,就是一条条规则来进行限制。

iptables的表有三个:filter、nat、mangle,最常用的是filter(另外两个还没用过,据很多教程都说mangle几乎不会用到),一般的防火墙设置,貌似filter就够了。

一、启动与停止

  服务启动命令:service iptables start

  服务启动命令:service iptables stop

  服务状态查看命令:service iptables status(下面还有另外一种查看方式)

  

  table——表名

  chain——列名

  下面即为规则,num——规则号;target——处理动作;prot——协议名(如tcp、udp、icmp)opt——选项;source——源地址;destination——目标地址

二、设置

iptables一般设置步骤:

1.清除原先设置:

iptables -F  清除filter表中所有规则

iptables -X  清除filter表中所有用户自定义的规则

iptables -Z  清零所有规则的计数和流量统计

2.添加自己的规则:

(1)设定默认规则,即默认的处理方式ACCEPT,DROP,REJECT

一般比较安全的话如下设置(如果有特殊要求,按自己的要求设置呗^_^):

iptables -P INPUT DROP     对进入的封包设置默认动作——忽略

iptables -P FORWARD DROP  对转发的封包设置默认动作——忽略

iptables -P OUTPUT ACCEPT  对本机发出去的包设置默认动作——允许

(2)添加自己的规则

iptables [-t table] command [match] [-j target/jump]

[table]   即所用的表filter/nat/mangle

[command](只列出常用的):

-L  查看当前规则链的所有规则,可加-n选项,省去hostname与IP的翻译,速度较快

例:  iptables -L -n

-A  添加一条新的链,将会添加到所有规则链的最后

例:  iptables -A INPUT -p tcp

-D  删除一条规则

例:可以列出规则的全部内容,如 iptables -D INPUT -p tcp

    也可以只列出规则号,如 iptables -D INPUT 1   即删除filter表中的编号为1的规则

  注:规则的编号,可以用service iptables status查看,其中的项num即为规则编号。

    

[match]  匹配规则(:-(这个好长的说。。。。俺在此偷懒,只写俺用过的吧= -)

-p  协议名

-s  源地址

-d  目标地址

--sport  源端口

--dport  目标端口

[此处省略N个字]……

[-j target]    处理动作

ACCEPT  对封包放行,进行完此处理动作后,将不再匹配其它规则,直接跳往下一个规则链

DROP   对封包忽略,不采取任何动作,匹配该规则之后直接停止过滤程序

REJECT  对封包拒绝,并通知对方,可用选项有ICMP port-unreachable、ICMP echo-reply 或是tcp-reset(这个封包会要求对方关闭 连接),进行完此处理动作后,将不再匹配其它规则,直接中断过滤程序。

三、保存与恢复

  1.如果你只输入命令不保存的话,下次启动iptables又会恢复原来的设置(这与配置文件iptables-config有关)。因此,如果想之后都用自己的设置,就要对设置进行保存。

   iptables规则可以保存至自己任意指定的文件:iptables-save > /your/iptables/file

     恢复的时候用命令:iptables-restore < /your/iptables/file

  2.不过,默认是保存在文件/etc/sysconfig/iptables中的,可以查看该文件cat /etc/sysconfig/iptables

# Generated by iptables-save v1.3.5 on Sun Jul 31 08:21:53 2011

*filter   ——*开头的是表名

:INPUT ACCEPT [211:14330]     ——:开头的是链

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [341:30516]

COMMIT

# Completed on Sun Jul 31 08:21:53 2011

四、碰到的问题,或者叫【说明】

1.偶用的系统是centos5.5,精简版的哦,亲!

地址:http://dl.wdlinux.cn/taxonomy/term/3

2.安装过程中,偶选的是不开启防火墙。如果这样的话,未开启防火墙的时候是不能查看iptables的status的

3.与iptables有关的几个文件(查看/etc/init.d/iptables可查看iptables的代码)

/proc/net/ip_tables_names   里面放的是iptables的表名,stop的时候会检查该文件

/etc/sysconfig/iptables    保存iptables的规则的文件,没有该文件,iptables无法启动

/etc/sysconfig/iptables-config  iptables的配置文件,里面配置项比较关心的IPTABLES_SAVE_ON_STOP="no",即iptables关闭的时候不保存当前设置,同理IPTABLES_SAVE_ON_RESTART="no",可以自己更改这些配置项。

/var/lock/subsys/iptables  iptables的日志记录文件,start过程创建,stop的时候会删除。

这里再奉上一个大牛的总结—— http://blog.csdn.net/tianlesoftware/article/details/6208985

原文地址:https://www.cnblogs.com/aaronwxb/p/2135833.html