首页 > 代码库 > iptables
iptables
防火墙的发展
版本 机制 命令
2.2版本 ipfw ipfwadm
2.4版本 ipchain ipchains
2.6版本 netfilter iptables
iptables的结构:四张表
raw mangle nat filter
每张表还包含了链
INPUT
OUTPUT
FORWARD
man iptables
表里面包含链,链里面写一条一条的规则
表---->链---->规则
规则的应用顺序
表的匹配顺序
raw-->mangle-->nat-->filter
链的匹配顺序 取决于数据流向
规则的匹配顺序
第一条规则,匹配上就不会再向后
如果匹配不到,再匹配第二条
如果所有匹配完还没匹配,使用默认规则
iptables标准用法
iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j目标动作 或 跳转]
不写表名代表的是filter表
=======
命令选项:
-A 追加
-D 删除表里面链的规则
-I 插入一条规则 默认插入到第一个规则
-L 罗列
-F 清空
-X 删除一个链,一般删除自定义链
-P 默认规则
-E 重命名一个链
iptables -t nat -L 查看nat表
关于icmp协议进站的都丢弃
iptables -t filter -A INPUT -p icmp -j DROP
iptables -nL 不做名称解析罗列
关于icmp协议的都接收
iptables -t fileter -I INPUT -p icmp -j ACCEPT
删除filter表里面input链的第一条规则
iptables -D INPUT 1
清空filter表INPUT链
iptables -F INPUT
iptables -F 清空filter表
iptables -P OUTPUT DROP
限定端口号 dport目标端口 sport源端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
========
条件匹配:
协议匹配
地址匹配 -s源地址 -d目标地址 -i网络接口=对应接收数据包 -o网络接口=发送数据包
filter表里面来自这个ip地址的进站消息全部丢弃
iptables -A INPUT -s 192.168.0.250 -j DROP
只要是出站的目标地址是它的就丢弃
iptables -I OUTPUT -d 192.168.0.250 -j DROP
进站的 eth0接口的进站的全部丢弃
iptables -I INPUT -i eth0 -j DROP
从etho接口出站的
iptables -I OUTPUT -o eth0
iptables -I INPUT -p icmp -s 192.168.0.250 -j DROP
使用某个协议匹配某个端口来过滤服务
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -A INPUT -p tcp --dport 53 -j DROP tcp53端口是DNS服务
仅允许 254 和 自己 去访问自己的httpd服务
iptables -I INPUT -s 192.168.0.254 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 192.168.0.250 -p tcp --dport 80 -j ACCEPT
iptables -P INPUT -p tcp --dport 80 DROP
或
iptables -A INPUT -s 192.168.0.250 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT ! -s 192.168.0.254 -p tcp --dport 80 -j DROP
端口匹配必须和协议匹配结合一起使用
man icmp得到icmp的一些参数 0接收包 8回应包
iptables -A INPUT -p icmp --icmp-type 8 -j DROP 回应包drop掉
=====
目标动作和跳转
DROP ACCEPT REJECT
DROP直接丢弃数据包不会给你任何响应信息,REJECT拒绝数据包通过,不过会给数据发送端响应信息
iptables -N Mylan1
iptables -nL
由源地址过来的都交给Mylan1来处理
iptables -A INPUT -s 192.168.0.250 -j Mylan1
iptables -A Mylan1 -p icmp -j DROP
iptables -X Mylan1 删除自定义的链
但是删除前要先清空该链
iptables -F
========
nat表 网络地址转换
snat 源地址转换
来自于这个网段的地址 从eth1这个接口出去的 做源地址转换 转换成219地址
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to-soruce 219.29.30.31
dnat 目标地址转换
iptables -t nat -A PRTROUTING -d 218.29.30.31 -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.254
重启生效
/etc/init.d/iptables save 保存,自动保存到下面的文件中
vim /etc/sysconfig/iptables
iptables-save > /etc/sysconfig/iptables
iptables-restore < /etc/sysconfig/iptables
chkconfig iptables on
tcp_wrappers tcp被包裹起来的机制
ldd /usr/bin/ssh 查看它是非被wrapp机制包裹
/etc/host.allow 允许那些客户端来访问
ALL:127. 所有服务自己可以访问
sshd: ALL 所有人都可以sshd
rpcbind,mountd 192.168.0.0
/etc/host.deny 拒绝哪些客户端来访问
ALL:ALL
先匹配host.allow,匹配到就允许,匹配不到再去再去deny文件
iptables