博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Iptables2
阅读量:6655 次
发布时间:2019-06-25

本文共 4856 字,大约阅读时间需要 16 分钟。

linux下
iptables实战
2010-01-04 01:34
环境:
centos5.1
http://hi.baidu.com/xiutuo/blog

------------------------------------------------------------------------------

防火墙启动关闭重启
# 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 ACCEPT

COMMIT

-----------

错误
# iptables -A INPUT -s 192.168.8.121 -p icmp -j reject
iptables 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

转载地址:http://qgtto.baihongyu.com/

你可能感兴趣的文章
Ubuntu 12.04中文输入法的安装
查看>>
Windows phone开发初体验之-页面导航
查看>>
groovy 闭包的用途
查看>>
前端工程师的进阶之路
查看>>
request
查看>>
win7下easybcd安装centos
查看>>
Go 语言环境变量设置
查看>>
上海社保已经破产,全国呢?
查看>>
Heartbeat 6.5 vCenter5.1安装配置
查看>>
致敬感动的“自己”
查看>>
scrapy ImportError: No module named items
查看>>
python 判断Dll是32位还是64位
查看>>
[开源]在iOS上实现Android风格的控件Toast
查看>>
C#学习速记_文件
查看>>
centos7快速部署ceph
查看>>
使用setContent(Intent intent)指定对应的Activity设置成Tab页内容
查看>>
PPTP IPsec使用端口,已经路由器穿透配置
查看>>
ubuntu linux 9.04安装vmware tools
查看>>
点击按钮获取文本,改变或者切换其他盒子的值
查看>>
golang google authenticator
查看>>