------------------------------------------------------------------------------
防火墙启动关闭重启 # service iptables stop | start | restart 保存所以规则到/etc/sysconfig/iptables # service iptables save相当于清空所以规则
# service iptables panic加载iptables的额外模块: ip_conntrack_netbios_n
# service iptables condrestart------------------------------------------------------------------------------
查看规则号码id,插入新规则的时候非常管用
# iptables -t 表名(mangle,filter,nat) -L 链名(每个表下对应的链) --line-numbers 插入一条规则 # iptables -t 表名(mangle,filter,nat)-I 链名 rulenum(--line-number得到的id+1) ******** -j 动作 删除一条规则 # iptables -t 表名(mangle,filter,nat) -D 链名 rulenum(--line-numbers得到的id)命令中:链名和操作命令(链名前的那个参数)以及动作都是大写,其他小写
大小逻辑关系:表table>链chain>规则rule
表名 作用 对应链名
filter(默认表) 过滤 input,output,forword nat 地址转换 preroute,output,postroute mangle 高级路由 preroute,output------------------------------------------------------------------------------
基本命令
iptables [-t 要操作的表] <操作命令> [要操作的链] [规则号码] [匹配条件] [-j 匹配到以后的动作]其中:操作命令 -A -I -D -R -P -F -X -Z
规则内容是指(在删除和替换规则内容的时候用到):[要操作的链] [规则号码] [匹配条件] [-j 匹配到以后的动作]-----------------------------------
-A <链名>APPEND,追加一条规则(放到最后)
例如:iptables -t filter -A INPUT -j DROP 在 filter 表的 INPUT 链里追加一条规则(作为最后一条规则) 匹配所有访问本机 IP 的数据包,匹配到的丢弃-----------------------------------
-I <链名> [规则id]INSERT,插入一条规则
例如:iptables -t filter -I INPUT -j DROP 在 filter 表的 INPUT 链里插入一条规则(插入成第 1 条)iptables -I INPUT 3 -j DROP 在 filter 表的 INPUT 链里插入一条规则(插入成第 3 条) 注意: 1、-t filter 可不写,不写则自动默认是 filter 表 2、-I 链名 [规则id],如果不写规则号码,则默认是 1 3、确保规则号码 ≤ (已有规则id + 1),否则报错 4.规则id通过 # iptables -t 表名(mangle,filter,nat) -L 链名(每个表下对应的链) --line-numbers 得到的规则id-----------------------------------
-D <链名> <规则号码 | 具体规则内容>DELETE,删除一条规则
例如:iptables -D INPUT 3(按号码匹配删除规则) 删除 filter 表 INPUT 链中的第三条规则(不管它的内容是什么) 注意:-t filter 可不写,不写则自动默认是 filter 表iptables -D INPUT -s 192.168.0.1 -j DROP(按内容匹配删除规则)-----------------------------------
-R <链名> <规则号码> <具体规则内容>REPLACE,替换一条规则
例如:iptables -R INPUT 3 -j ACCEPT 注意:-t filter 可不写,不写则自动默认是 filter 表 将原来编号为 3 的规则内容替换为 "-j ACCEPT"-----------------------------------
-P <链名> <动作>POLICY,设置某个链的默认规则
例如:iptables -P INPUT DROP 设置 filter 表 INPUT 链的默认规则是 DROP-----------------------------------
-F [链名]FLUSH,清空规则
例如:iptables -F INPUT 清空 filter 表 INPUT 链中的所有规则iptables -t nat -F PREROUTING 清空 nat 表 PREROUTING 链中的所有规则-X [链名]
删除自定义链-Z [链名]
ZERO,链计数器清零 如清空所有防火墙配置 # iptables -F # iptables -X # iptables -Z------------------------------------------------------------------------------
附录iptables样本,默认策略均为drop
防火墙主机环境 centos5.1 iptables-1.3.5-1.2.1 防火墙主机配置samba ssh mysql apache 服务, (防火墙内部机器访问外网,本机,局域网内部的iptables设置; 一些ddos,arp flood等防护措施 没有加入,有兴趣的朋友再扩展扩展)vi /etc/sysconfig/iptables 内容如下
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended. *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT DROP [0:0]# iptable所在机器
# 允许外面主机ping该防火墙 -A INPUT -p icmp --icmp-type 8 -s 0/0 -j ACCEPT -A OUTPUT -p icmp --icmp-type 0 -s 0/0 -j ACCEPT# 允许ping外面主机
-A INPUT -p icmp --icmp-type 0 -s 0/0 -j ACCEPT -A OUTPUT -p icmp --icmp-type 8 -s 0/0 -j ACCEPT# 允许ping自己
-A INPUT -p icmp -i lo -j ACCEPT -A OUTPUT -p icmp -o lo -j ACCEPT#允许ssh到该防火墙
-A INPUT -p tcp --dport 22 -j ACCEPT -A OUTPUT -p tcp --sport 22 -j ACCEPT# 允许ssh到其他机器
-A INPUT -p tcp --sport 22 -j ACCEPT -A OUTPUT -p tcp --dport 22 -j ACCEPT# 允许访问防火墙的smb
# 允许访问防火墙的smb-139 -A INPUT -p tcp --dport 139 -j ACCEPT -A OUTPUT -p tcp --sport 139 -j ACCEPT# 允许访问防火墙的smb-445
-A INPUT -p tcp --dport 445 -j ACCEPT -A OUTPUT -p tcp --sport 445 -j ACCEPT # 允许访问防火墙的mysql数据库 -A INPUT -p tcp --dport 3306 -j ACCEPT -A OUTPUT -p tcp --sport 3306 -j ACCEPT# 允许防火墙访问外面的mysql数据库
-A INPUT -p tcp --sport 3306 -j ACCEPT -A OUTPUT -p tcp --dport 3306 -j ACCEPT #允许www到该防火墙 -A INPUT -p tcp --dport 80 -j ACCEPT -A OUTPUT -p tcp --sport 80 -j ACCEPT#允许该防火墙访问www (结合dns那句)
-A INPUT -p tcp --sport 80 -j ACCEPT -A OUTPUT -p tcp --dport 80 -j ACCEPT# 允许访问防火墙上的dns服务
#-A INPUT -p udp --dport 53 -j ACCEPT #-A OUTPUT -p udp --sport 53 -j ACCEPT#当dns采用udp协议时
# 允许访问防火墙访问外面的dns,允许防火墙解析外面域名 #(允许防火墙访问域名时能解析到域名的ip,) # 如访问 能解析到ip,而不是host not found -A INPUT -p udp --sport 53 -j ACCEPT -A OUTPUT -p udp --dport 53 -j ACCEPT # 当dns采用tcp协议时 -A INPUT -p tcp --sport 53 -j ACCEPT -A OUTPUT -p tcp --dport 53 -j ACCEPT # 允许防火墙内部通信(很重要的一句) -A OUTPUT -p all -s 127.0.0.1 -j ACCEPT#检查到达外部网络接口的封包状态.属于已有TCP连接的封包都允许通过
# 从WAN到LAN的封包仅放行回应封包(eth0为外网网口) -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPTCOMMIT
-----------
错误 # iptables -A INPUT -s 192.168.8.121 -p icmp -j rejectiptables v1.3.5: Couldn't load target `reject':/lib/iptables/libipt_reject.so: cannot open shared object file: No such file or directory把reject大写(drop和accept大写即可)
# iptables -A INPUT -s 192.168.8.121 -p icmp -j reject