码迷,mamicode.com
首页 > 其他好文 > 详细

iptables防火墙(二)

时间:2018-01-19 11:34:54      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:commit   参数   cookie   ref   routing   sbin   防火墙规则   响应   post   

SNAT策略的典型应用环境
局域网主机共享单个公网IP地址接入Internet

SNAT策略的原理
源地址转换,Source Network Address Translation
修改数据包的源地址
局域网共享上网

技术分享图片

未作SNAT转换时的情况
技术分享图片

进行SNAT转换后的情况
技术分享图片

前提条件
局域网各主机正确设置IP地址/子网掩码
局域网各主机正确设置默认网关地址
Linux网关支持IP路由转发

实现方法
编写SNAT转换规则

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24  -o eth0 -j SNAT --to-source 218.29.30.31
POSTRIYTING;路由选择后再处理
192.168.1.0/24;局域网短地址
193.eth0;外网接口名称
194.218.29.30.31;外网接口IP

-
验证SNAT结果
在局域网主机 192.168.1.234 中能够访问外网的Web服务器 58.63.236.45
查看Web主机 58.63.236.45 的访问日志,记录的来访者应是网关主机的外网IP地址 218.29.30.31

MASQUERADE —— 地址伪装
适用于外网IP地址非固定的情况
对于ADSL拨号连接,接口通常为 ppp0、ppp1
将SNAT规则改为MASQUERADE即可

DNAT策略的典型应用环境
在Internet中发布位于企业局域网内的服务器

DNAT策略的原理
目标地址转换,Destination Network Address Translation
修改数据包的目标地址
进行DNAT转换后的情况
技术分享图片

在Internet中发布内网服务器
技术分享图片
前提条件
局域网的Web服务器能够访问Internet
网关的外网IP地址有正确的DNS解析记录
Linux网关支持IP路由转发

实现方法
编写DNAT转换规则

[root@localhost ~]# iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 
-p tcp --dport 80 -j DNAT --to-destination 192.168.1.6
PRETOUTING;路由选择之前处理
218.29.30.31;外网接口IP地址
80;发布服务器端口
192.168.1.6;web主机内网IP地址

验证DNAT结果
在外网客户机 173.96.97.98 中能够访问位于企业内网的Web服务,访问地址为 http://218.29.30.31/
查看Web服务器 192.168.1.6 的访问日志,记录了外网客户机的IP地址 173.96.97.98
技术分享图片

发布时修改目标端口
在DNAT规则中以“IP:Port”的形式指定目标地址

[root@localhost ~]# iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31
 -p tcp --dport  2346 -j DNAT --to-destination 192.168.1.6:22
 2346;访问的目的端口
 :22;实际提供服务的端口

-
导出(备份)规则
iptables-save工具

[root@localhost ~]# iptables-save 
 Generated by iptables-save v1.4.7 on Wed Sep 24 08:25:33 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [54:7037]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 
COMMIT
 Completed on Wed Sep 24 08:25:33 2014
[root@localhost ~]# iptables-save > /opt/iprules_all.txt

-
导入(还原)规则
iptables-restore工具
可结合重定向输入指定规则来源
[root@localhost ~]# iptables-restore < /opt/iprules_all.txt

iptables服务
脚本位置:/etc/init.d/iptables
规则文件位置:/etc/sysconfig/iptables

[root@localhost ~]# service iptables start
iptables:应用防火墙规则:                                          [确定]

[root@localhost ~]# service iptables stop
iptables:将链设置为政策 ACCEPT:filter                   [确定]
iptables:清除防火墙规则:                                           [确定]
iptables:正在卸载模块:                                               [确定]

[root@localhost ~]# service iptables status
iptables:未运行防火墙

——
1.定义基本变量
便于脚本的维护、重用

#!/bin/bash
INET_IF= "eth0"
INET_IP="218.29.30.31"
LAN_IF="eth1"
LAN_IP= "192.168.1.1"
LAN_NET="192.168.1.0/24"
LAN_WWW_IP="192.168.1.6"
IPT="/sbin/iptables"
MOD="/sbin/modprobe"
CTL="/sbin/sysctl“
……

2.加载必要的内核模块
将频繁用到的模块载入内核

……
$MOD ip_tables
$MOD ip_conntrack
$MOD ipt_REJECT
$MOD ipt_LOG
$MOD ipt_iprange
$MOD xt_tcpudp
$MOD xt_state
$MOD xt_multiport
$MOD xt_mac
$MOD ip_nat_ftp
$MOD ip_conntrack_ftp
……

支持FTP访问的地址转换连接状态跟踪

3.调整/proc参数
Linux内核控制及调优

$CTL -w net.ipv4.ip_forward=1
$CTL -w net.ipv4.ip_default_ttl=128
$CTL -w net.ipv4.icmp_echo_ignore_all=1
$CTL -w net.ipv4.icmp_echo_ignore_broadcasts
$CTL -w net.ipv4.tcp_syncookies=1
$CTL -w net.ipv4.tcp_syn_retries=3
$CTL -w net.ipv4.tcp_synack_retries=3
$CTL -w net.ipv4.tcp_fin_timeout=60
$CTL -w net.ipv4.tcp_max_syn_backlog=3200

优化TCP响应能力

4. 具体的防火墙规则
按表、链分别设置规则,包括默认策略
……

$IPT -t filter -X
$IPT -t nat -X
$IPT -t filter -F
$IPT -t nat -F
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
$IPT -t nat -A POSTROUTING -s $LAN_NET -o $INET_IF -j SNAT --to-source $INET_IP
$IPT -t nat -A PREROUTING -i $INET_IF -d $INET_IP -p tcp --dport 80 -j DNAT --to-destination $LAN_WWW_IP
-t 清空原有规则
-P 设置默认策略
-t nat 其他具体规则

-
“主机型”防火墙脚本
针对本机进行保护
filter表中的INPUT、OUTPUT链

[root@localhost ~]# vi /opt/myipfw.hostonly
#!/bin/bash
 1. 定义基本变量
IPT= "/sbin/iptables"
……
 2 定义默认策略
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
3 设置filter表中的各种规则
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables防火墙(二)

标签:commit   参数   cookie   ref   routing   sbin   防火墙规则   响应   post   

原文地址:http://blog.51cto.com/13555423/2062704

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!