采芝林官网:iptables防火墙技术要点

来源:百度文库 编辑:偶看新闻 时间:2024/04/26 06:30:59
1. 内核要求.................................................................. 22. 流程图...................................................................... 23. 语法......................................................................... 24. NAT.......................................................................... 35. 模块的加载:........................................................... 46. 循环执行:............................................................... 57. vpn相关规则............................................................ 58. 脚本编写.................................................................. 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 表,用于修改目的地址(DNATPOSTROUTING:位于 nat 表,用于修改源地址 SNAT3. 语法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链的默认为DROPiptables –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 状态状态:NEWRELATEDESTABLISHEDINVALIDNEW:有别于 tcp synESTABLISHED:连接态RELATED:衍生态,与 conntrack 关联(FTPINVALID:不能被识别属于哪个连接或没有任何状态如:iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPTiptables -m mac --mac-source MAC 匹配某个 MAC 地址iptables -A INPUT -p tcp -m multiports --ports 21,22,25,80,110 -j ACCEPT 多端品匹配4. NATiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADEiptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.15. 模块的加载:modprobe ip_tables > /dev/null 2>&1modprobe ip_conntrack > /dev/null 2>&1modprobe iptable_nat > /dev/null 2>&1modprobe ip_nat_ftp > /dev/null 2>&1modprobe ip_conntrack_ftp > /dev/null 2>&1modprobe ip_conntrack_irc > /dev/null 2>&1modprobe ip_conntrack_h323 > /dev/null 2>&1modprobe ip_nat_h323 > /dev/null 2>&1modprobe ip_conntrack_irc > /dev/null 2>&1modprobe ip_nat_irc > /dev/null 2>&1modprobe ip_conntrack_mms > /dev/null 2>&1modprobe ip_nat_mms > /dev/null 2>&1modprobe ip_conntrack_pptp > /dev/null 2>&1modprobe ip_nat_pptp > /dev/null 2>&1modprobe ip_conntrack_proto_gre > /dev/null 2>&1modprobe ip_nat_proto_gre > /dev/null 2>&1modprobe ip_conntrack_quake3 > /dev/null 2>&1modprobe ip_nat_quake3 > /dev/null 2>&1##############################################echo 1 > /proc/sys/net/ipv4/ip_forwardecho 1 > /proc/sys/net/ipv4/tcp_syncookiesecho 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responsesecho 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_broadcastsecho 1 > /proc/sys/net/ipv4/conf/all/log_martians6. 循环执行:如下脚本,只要在HTTP_LAN中加入IP地址,即可上网HTTP_LAN="192.168.0.2 192.168.0.3 192.168.0.4"################################################# ACCEPT http hostsif [ "$ACCEPT_HTTP_LAN" != "" ] ; thenfor LAN in ${ACCEPT_HTTP_LAN} ; do$IPTABLES -A FORWARD -p tcp -i $LAN_IFACE -s ${LAN} -m multiport --dport 80,443 -j ACCEPTecho ""echo ${LAN} Access to Externel.....ACCEPT http port [OK]donefiecho -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程序中。