iptables防火墙
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iptables防火墙相关的知识,希望对你有一定的参考价值。
SNAT策略的典型应用环境
局域网主机共享单个公网IP地址接入Internet
SNAT策略的原理
源地址转换,Source Network Address Translation
修改数据包的源地址
局域网共享上网
未作SNAT转换时的情况
进行SNAT转换后的情况
前提条件
局域网各主机正确设置IP地址/子网掩码
局域网各主机正确设置默认网关地址
Linux网关支持IP路由转发
实现方法
编写SNAT转换规则
[[email protected] ~]# 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转换规则
[[email protected] ~]# 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”的形式指定目标地址
[[email protected] ~]# 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工具
[[email protected] ~]# 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
[[email protected] ~]# iptables-save > /opt/iprules_all.txt
-
导入(还原)规则
iptables-restore工具
可结合重定向输入指定规则来源
[[email protected] ~]# iptables-restore < /opt/iprules_all.txt
iptables服务
脚本位置:/etc/init.d/iptables
规则文件位置:/etc/sysconfig/iptables
[[email protected] ~]# service iptables start
iptables:应用防火墙规则: [确定]
[[email protected] ~]# service iptables stop
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:清除防火墙规则: [确定]
iptables:正在卸载模块: [确定]
[[email protected] ~]# 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链
[[email protected] ~]# 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防火墙的主要内容,如果未能解决你的问题,请参考以下文章