博威---云架构决胜云计算

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2030|回复: 0

iptables防火墙技术要点

[复制链接]
发表于 2007-12-28 19:49:25 | 显示全部楼层 |阅读模式
iptables防火墙技术要点
                    编写:姜道友
1.
内核要求.................................................................. 2

2.
流程图...................................................................... 2

3.
语法......................................................................... 2

4.
NAT.......................................................................... 3

5.
模块的加载:........................................................... 4

6.
循环执行:............................................................... 5

7.
vpn
相关规则............................................................ 5

8.
脚本编写.................................................................. 5





1.
内核要求

要求Linux内核在2.4以上,部分新的应用层检查功能要求在2.6内核中


2.
流程图
-->PREROUTING-->[ROUTE]-->FORWARD-->POSTROUTING-->

mangle
|

mangle
^ mangle


nat
|
filter

|
nat


|
|


|
|


v
|


INPUT
OUTPUT



| mangle

^ mangle


| filter

|
nat


v ------>local---
------->
| filter

其中:
£



filter
     顾名思义,用于过滤的时候



nat
        顾名思义,用于做 NAT 的时候

£



INPUT
      位于 filter 表,匹配目的 IP 是本机的数据包



FORWARD
    位于 filter 表,匹配穿过本机的数据包,



PREROUTING
位于 nat 表,用于修改目的地址(DNAT



POSTROUTING
:位于 nat 表,用于修改源地址  SNAT


3.
语法
iptables –nL –v查看防火墙的规则
iptables –nL –t nat –v 查看防火墙的NAT规则
iptables –nL –vv查看连接状态信息
iptables –A FORWARD
FORWARD链后面增加一个规则

iptables –I FORWARD
FORWARD链最前面插入一个规则

iptables –D FORWARD
FORWARD链删除相应的一个规则


iptables -P INPUT DROP设置INPUT链的默认为DROP
iptables –F 清空相应链中的所有规则
iptables –s 192.168.x.x/xx 匹配源地址
iptables –d 192.168.x.x/xx 匹配目的地址
iptables –p tcp匹配tcp协议
iptables –-sport匹配源端口 --dport匹配目的端口

iptables
-m state --state
状态

状态:NEWRELATEDESTABLISHEDINVALID

NEW
:有别于 tcp syn


ESTABLISHED
:连接态


RELATED
:衍生态,与 conntrack 关联(FTP


INVALID
:不能被识别属于哪个连接或没有任何状态

如:

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT


iptables
-m mac --mac-source MAC
匹配某个 MAC 地址

iptables -A INPUT -p tcp -m multiports --ports 21,22,25,80,110 -j ACCEPT 多端品匹配

4.
NAT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24
-j SNAT --to 1.1.1.1

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.1
5.
模块的加载:

modprobe ip_tables
> /dev/null 2>&1

modprobe ip_conntrack
> /dev/null 2>&1

modprobe iptable_nat
> /dev/null 2>&1

modprobe ip_nat_ftp
> /dev/null 2>&1

modprobe ip_conntrack_ftp
> /dev/null 2>&1

modprobe ip_conntrack_irc
> /dev/null 2>&1

modprobe ip_conntrack_h323
> /dev/null 2>&1

modprobe ip_nat_h323
> /dev/null 2>&1

modprobe ip_conntrack_irc
> /dev/null 2>&1

modprobe ip_nat_irc
> /dev/null 2>&1

modprobe ip_conntrack_mms
> /dev/null 2>&1

modprobe ip_nat_mms

> /dev/null 2>&1

modprobe ip_conntrack_pptp
> /dev/null 2>&1

modprobe ip_nat_pptp
> /dev/null 2>&1

modprobe ip_conntrack_proto_gre > /dev/null 2>&1
modprobe ip_nat_proto_gre
> /dev/null 2>&1

modprobe ip_conntrack_quake3
> /dev/null 2>&1

modprobe ip_nat_quake3
> /dev/null 2>&1


##############################################

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

echo 1 >/proc/sys/net/ipv4/conf/all/rp_filter
#echo 1 > /proc/sys/net/ipv4/ip_dynaddr
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
6.
循环执行:
如下脚本,只要在HTTP_LAN中加入IP地址,即可上网
HTTP_LAN="192.168.0.2 192.168.0.3 192.168.0.4"
################################################# ACCEPT http hosts

if [ "$ACCEPT_HTTP_LAN" != "" ] ; then


for LAN in ${ACCEPT_HTTP_LAN} ; do



$IPTABLES -A FORWARD -p tcp -i $LAN_IFACE
-s ${LAN} -m multiport --dport 80,443 -j ACCEPT




echo ""


echo ${LAN}
Access to Externel.....ACCEPT http port
[OK]


done

fi

echo -e "\033[1;034m \n"
echo "......................................................................."
echo "......................................................................."
echo "......................................................................."
echo ""
echo -e "\033[1;032m \n"

7.
vpn相关规则
iptables –A FORWARD –i-o ipsec+ 如果Linux网关上启用了VPN服务,在对VPN网络进行限制时,接口不能在eth0ppp0上做,而是在ipsec+上做(ipsec+代表ipsec0ipsec1……
8.
脚本编写
对于防火墙脚本,最好编写一个规则脚本文件运行,如:firewall.sh 运行时输入:./firewall.sh start 停止时:./firewall.sh stop即可。如果是网关,可以把此命令加入到/etc/rc.d/rc.local启用程序中;如果是ADSL拨号网关,可以把此命令加入到ip-up程序中。脚本实例请参考我的其它相关文章
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|boway Inc. ( 冀ICP备10011147号 )

GMT+8, 2024-11-22 07:17 , Processed in 0.113708 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表