uroute -n 查看路由表
TCP_wrapper
ALL: [::1]
netfilter 模块对ISO的2\3\4层做过滤。只对包头过滤。
cd /lib/modules/2.6.18-53.el5xen/kernel/net/ipv4/netfilter
使用就加载。不使用则不加载。
如:lsmod |grep ntfs
我们是通过iptables这个接口来管理netfilter这个模块。
防火墙的过滤是内核中集成的。
防火墙是通一netfliter这个模块控制的。
mangle 透明代理
Prerouting :在路由判断这前做的判断
iptables -A INPUT -i eth+ -p tcp --dport 80 -j LOG --log-prefix "iptables_80_alert" --log_level info
iptables -A IPNUT -s 192.168.0.1 -j DROP
2.168.0.0/24 -j REJECT
-t 表的名称
-A append(追加)链的名称 是表里面的一个元素
-s 表示源地址
-d 表示目的地址
-j 最后的动作
-L 查看iptables表内容
-vL 详细内容
iptables -t nat -L 查看nat表
iptables -L --line-numbers 为条目编号
iptables -I INPUT 9 -s 192.168.0.200 -j REJECT
-I 插入
eth+ 所有的接口
eth1+ eth1的所有子接口
-i eth0 -s '!' 192.168.0.0/24 反向选择
iptables -A FORWARD -s 192.168.2.1 -d 192.168.1.1
--p tcp --port 25 -j REJCEP
iptables -t nat PREPOSTING -i eth0
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 25 -j ACCEPT
iptalbes -S OUTPUT -d 192.168.0.0/24 -p tcp --sport 25 -j ACCEPT
--dport 1024:65535 1024到65535端口
1024: 大于1024号端口
:1024 小于1024号端口
1、要求允许192.168.0.0/24通过eth0访问本机的smtp协议:
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -o eth0 -d 192.168.0.0/24 -p tcp --sport 25 -j ACCEPT
2、允许192.168.0.0/24可以通过pop3协议接收本机邮件
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 100 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -p tcp --sport 100 -j ACCEPT
1 iptables -P INPUT DROP 默认策略 是最后执行的。
iptables -A INPUT -j REJECT 这条一定要写在最后面
iptables -F 刷新所有的策略 不能清空默认策略
iptables -Z 计数器清零
iptables -t nat -F 清除所有的nat策略
iptables -X 清除自定义链
iptables -N RHCE 自定链
iptables -A INPUT -j RHCE 把它加到最后面。
iptables -A RHCE -s 192.168.1.0/24 -p tcp -dport 25 -j REJECT
iptables -F RHCE
iptables -X
iptables -L
service iptalbes stop 关闭了防火墙
状态跟踪防火墙
NEW : 第一次发起请求的数据包
ESTABLISHED: 己建立连接的数据包
RELATED: server 回应 client 的数据包
INVALID : 无效的数据包
状态跟踪的实验:
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 5900 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -p tcp --sport 5900 -j ACCEPT
iptables -P INPUT DROP 位置放到哪个地方无所谓
iptables -P OUTPUT DROP
iptables -A INPUT -j DROP 这两一定要放在最后面
iptalbes -A OUTPUT -j DROP
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -p tcp --sport 21 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 20 -j ACCEPT
iptables -A OUTPUT -p 192.168.0.0/24 -p tcp --sport 20 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -m state --state NEW -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
加载模块:
modprobe ip_conntrack_ftp
modprobe ip_conntrack_tfpt
modprobe ip_nat_ftp
modprobe ip_nat_tftp
iptables -P 不能用REJECT
默认策略不管怎么样都是在最后匹配。
iptables -p INPUT -j DROP
iptables -P OUTPUT -j DROP
iptables -A INPUT -s 192.168.0.15 -p tcp --dport 5900 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.15 -p tcp --sport 5900 -j ACCEPT
iptables -I INPUT -j RHEL 把INPUT链丢到RHEL链
默认策略不能清空
service iptables save 把iptables的策略放入/etc/sysconfig/iptables 这样
下次重启才会生效。
vim /etc/sysconfig/iptables-config
Network Address Translation (NAT)
DNAT 外网用户访问内网时使用。
SNAT
INBOUND
iptalbes -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-dest 192.168.0.20
访问这里的80端口就转到192.168.0.20这台主机
OUTBOUND
iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-dest 192.168.0.200:3128
把往外发的80端口转到我们内网的192.168.0.200的3128端口去。
iptables -t nat -A PROTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTOUTING -j SNAT --to-source 1.2.3.4
远程管理iptables:
at 恢复最后一次好的配置:
实验Server1 firewall/iptables.doc
============================================================================
允许本网络的计算机可以访问到本防火墙的SSH服务,并且允许防火墙可以连接到网络中的其他任何计算机:
#SSH Server:
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT 从192.168.0.0/24这个网段进来的。
iptables -A OUTPUT -d 192.168.0.0.24 -p tcp --sport 22 -j ACCEPT 出去到192.168.0.0/24这个网段的。
#SSH Client:
iptables -A OUTPUT -s 192.168.0.15 -p tcp --dport 22 -j ACCEPT 从我们本机出去的,对方端口为22号,我方随机
iptables -A INPUT -d 192.168.0.15 -p tcp --sport 22 -j ACCEPT 从我们本机进来的。对方端口为22号,我方随机
========================================================================================
允许本网络的计算机可以访问到本防火墙的SSH服务,并且允许防火墙可以连接到网络中的其他任何计算机:
iptables -A INPUT -s 192.168.0.0/24 -p icmp --icmp-type echo-request -j ACCEPT 外来的
iptables -A OUTPUT -s 192.168.0.0/24 -p icmp --icmp-type echo-reply -j ACCEPT 本机出的
==========================================================================================
#icmp request:
iptables -A INPUT -s 192.168.0.0/24 -p icmp --icmp-type 8 (echo-request) -j ACCEPT
iptalbes -A OUTPUT -d 192.168.0.0/24 -p icmp --icmp-type 0 (echo-reply) -j ACCEPT
#icmp echo:
iptables -A OUTPUT -d 192.168.0.0/24 -p icmp --icmp-type 8 (echo-request) -j ACCEPT
==iptables -A OUTPUT -s 192.168.0.0/24 -p icmp --icmp-type 0 (echo-reply) -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p icmp --icmp-type 0 (echo-reply) -j ACCEPT
========================================================================
ping通127.0.0.1:
iptables -A INPUT -d 127.0.0.1 -p icmp --icmp-type echo-reply -j ACCEPT 允许来自本机的回应 (进)
iptables -A INPUT -d 127.0.0.1 -p icmp --icmp-type echo-request -j ACCEPT 允许来自本机的请求
iptables -A OUTPUT -s 127.0.0.1 -p icmp --icmp-type echo-reply -j ACCEPT 允许自由本机出的回应 (出)
iptables -A OUTPUT -s 127.0.0.1 -p ICMP --icmp-type echo-request -j ACCEPT 允许自由本机出的请求
ping通127.0.0.1的另一种方法:
iptables -A INPUT -s 127.0.0.1 -p icmp --icmp-type echo-reply -j ACCEPT 允许来自本机的回应 (进)
iptables -A INPUT -s 127.0.0.1 -p icmp --icmp-type echo-request -j ACCEPT 允许来自本机的请求
iptables -A OUTPUT -d 127.0.0.1 -p icmp --icmp-type echo-reply -j ACCEPT 允许去ping127.0.0.1这台主机 (出)
iptables -A OUTPUT -d 127.0.0.1 -p icmp --icmp-type echo-request -j ACCEPT 允许去ping127.0.0.1这台主机的请求
=========================================================================
主机192.168.0.15:
service iptables start (iptables -P INPUT DROP;iptables -P OUTPUT DROP):
service iptables stop
以下操作都在192.168.0.15上做:
一、只可以192.168.0.30ping通192.168.0.15,不可以192.168.0.15ping通192.168.0.30.用两种方法:
1、iptables -A INPUT -s 192.168.0.30 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -d 192.168.0.30 -p icmp --icmp-type echo-reply -j ACCEPT
2、iptables -A OUTPUT -s 192.168.0.15 -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -d 192.168.0.15 -p icmp --icmp-type echo-request -j ACCEPT
二、只可以192.168.0.15ping通192.168.0.30,不可以192.168.0.30ping通192.168.0.15.用两种方法:
1、iptables -A OUTPUT -s 192.168.0.15 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -d 192.168.0.15 -p icmp --icmp-type echo-reply -j ACCEPT
2、iptables -A INPUT -s 192.168.0.30 -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -d 192.168.0.30 -p icmp --icmp-type echo-request -j ACCEPT
request:请求 8
reply :回应 0
==========================================================================
iptables -A OUTPUT -s 192.168.0.15 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -d 192.168.0.15 -p tcp --sport 22 -j ACCEPT==iptable -A INPUT -s 192.168.0.30 -p tcp --dport 22 -j ACCEPT
环境:192.168.0.30 (service iptables stop) ftp_client
192.168.0.15 (service iptables start;iptables -P INPUT DROP;iptables -P OUTPUT DROP) ftp_server
要求:ftp_client > ftp_server
iptables -A INPUT -d 192.168.0.30 -p tcp -j ACCEPT
iptables -A INPUT -s 192.168.0.30 -p tcp -j ACCEPT
iptables -A OUTPUT -d 192.168.0.30 -p tcp -j ACCEPT
iptables -A OUTPUT -s 192.168.0.15 -p tcp -j ACCEPT
iptables -A INPUT -s 192.168.0.30 -d 192.168.0.15 -p tcp --dport 21 --sport 1024: -j ACCEPT
iptables -A OUTPUT -s 192.168.0.15 -d 192.168.0.30 -p tcp --dport 1024: --sport 21 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.30 -s 192.168.0.15 -p tcp --sport 1024: --dport 1024: -j ACCEPT
iptables -A INPUT -s 192.168.0.15 -d 192.168.0.30 -p tcp --dport 1024: --sport 1024: -j ACCEPT
建立起命令通道:
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -p tcp --sport 21 -j ACCEPT
用主动模式建立数据通道:
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 20 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -p tcp --dport 20 -j ACCEPT
建立被动通道:
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 1024: -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -p tcp --sport 1024: -j ACCEPT
状态跟踪:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
当internet的计算机访问eth0接口SSH服务时自动转发到内网计算机192.168.0.X:
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 192.168.0.234
双网卡转发:
外网进内网:
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 192.168.0.4
内网出外网:
iptables -t nat -A POSTROUTING -j SNAT --to-source 202.101.23.34