免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3180 | 回复: 0
打印 上一主题 下一主题

一个简单的IPTABLES脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-19 13:03 |只看该作者 |倒序浏览
以下脚本内容是我自己做实验时候的脚本,有两个top图,第一个是真实top,而第二个是试验时使用的虚拟机环境,有详细的描述怎样去搭建环境,希望给大家一些帮助!已经经过我的test了,没有问题。\r\n请多提建议阿!呵呵!-\r\n\r\n\r\n#!/bin/sh\r\n# \r\n# DESCRIPTION: This IPTABLES shell script is setting for IPTABLES LAB. So, \r\n#  it\'s sharing for everyone. And please contact me if you find \r\n#  any bugs in this script.\r\n# VERSION: 2.1\r\n# BUGS:  Report bugs to ancharn@yahoo.com.cn\r\n# SEE ALSO: iptables( (see manual page for details)\r\n# AUTHOR:  Eric Cheung, 12/10/2006.\r\n#\r\n\r\n# START OF SCRIPT\r\n#\r\n# SECTION I: TOP Map\r\n# ------------------\r\n# The REAL TOP MAP:\r\n# The following top map is REALLY map.\r\n#                                                                                          ######\r\n#                                                                         |-----> eth0 #        #\r\n#                                                                         |                ######\r\n#                                                                         |         192.168.3.180 (Web \\\r\n#                                                                         |                               Server) \r\n#  WAN                             FireWall                      |               \r\n# ######                             ######                   | #######          \r\n# #    # <---------------> eth0 #       # eth1 <------- # DMZ #\r\n# ######                            ######                    | #######         \r\n#                          62.36.21.254    192.168.3.54   | \r\n#                                                                         |                 ######\r\n#                                                                         |-----> eth0 #         #\r\n#                                                                                           ######\r\n#                                                                                 192.168.3.153 (DNS \\\r\n#                                                                                                     Server)\r\n#\r\n# ------------------\r\n# The LAB TOP MAP:\r\n# The following top map is LAB map (make by above top) for us to practice.\r\n#\r\n#  WAN                                           FireWall                                  LAN\r\n# ######                                          ######                                     ###### \r\n# # Win# VMNet1<-------------->eth0  #           # eth1<------------>eth0 #         #\r\n# ######                                         ######                                     ######\r\n# 62.36.21.1                      62.36.21.254 | 192.168.3.54          192.168.3.180(153)\r\n#\r\n# Description: The FireWall and LAN hosts are Linux OS, and WAN host is \\\r\n#   Windows host, the FireWall\'s NICs eth0 and eth1 and LAN\'s NIC \\\r\n#  eth0 connect to Windows NIC VMNet1. Windows host\'s default \\\r\n#  route is 62.36.21.254, and FireWall\'s default gateway is \\\r\n#  62.36.21.1, the LAN host\'s default gateway is 192.168.3.54. \\\r\n#   The LAN host is WEB server/FTP server/DNS server. \r\n#\r\n#\r\n# SECTION II: MODPROBE FILTER\r\n# ---------------------------\r\n#\r\n echo ;echo \"Starting iptables ...... \";echo \r\n echo -n \"  Open ip_forward ......  \"\r\n echo \"1\" > /proc/sys/net/ipv4/ip_forward\r\n echo \"Done.\"\r\n echo -n \"  Set rp_filter ...... \"\r\n for f in /proc/sys/net/ipv4/conf/*/rp_filter\r\n do \r\n   echo 1 > $f\r\n done\r\n echo \"Done.\"\r\n # -------------------------- MODPROBE ---------------------------- #\r\n echo -n \"  Modprobe now ...... \"\r\n      # set kernel version.\r\n KERNELVERSION=`uname -r`\r\n modprobe ` ( cd /lib/modules/$KERNELVERSION/kernel/net/ipv4/netfilter ; ls ) | awk -F . \'{print $1}\' `\r\n echo \"Done.\" \r\n\r\n# \r\n# SECTION III: SETTING IPTABLES \r\n# -----------------------------\r\n echo \"  Setting iptables policies ...... \"\r\n echo -n \"    Flush iptables ...... \"\r\n echo \"Done.\"\r\niptables -Z\r\niptables -Z -t nat\r\niptables -F\r\niptables -F -t nat\r\niptables -X\r\niptables -X -t nat\r\n echo -n \"    Setting iptables default policies ...... \"\r\niptables -P INPUT DROP\r\niptables -P FORWARD DROP\r\n echo \"Done.\"\r\n\r\n# Phase 1: Set your server\'s firewall.\r\n  # the kernel\'s firewall settings.\r\n  #\r\n  # TCP Flooding\'s setting. This setting is NOT good for high-loading servers.\r\n echo 1 >/proc/sys/net/ipv4/tcp_syncookies\r\n  #\r\n  # unset reply of ping.\r\n echo \"1\" >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts\r\n  #\r\n  # record some problems packets.\r\n for i in /proc/sys/net/ipv4/conf/*/log_martians; do\r\n   echo \"1\" > $i\r\n done\r\n  #\r\n  # unset the routing from source.\r\n for i in /proc/sys/net/ipv4/conf/*/accept_source_route ; do\r\n   echo \"0\" > $i\r\n done\r\n  #\r\n  # unset the setting of redirect routing.\r\n for i in /proc/sys/net/ipv4/conf/*/accept_redirects ; do\r\n   echo \"0\" > $i\r\n done\r\n  # \r\n  # unset send_redirect.\r\n  for i in /proc/sys/net/ipv4/conf/*/send_redirects; do\r\n   echo \"0\" > $i\r\n done\r\n#\r\n# Phase 2: Other settings.\r\n  #\r\n  # set allow ping packet INPUT(OUTPUT) firewallself.\r\n echo -n \"    Setting ping to firewallself ...... \"\r\niptables -A INPUT -i eth+ -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 1 -j ACCEPT\r\niptables -A OUTPUT -o eth+ -p icmp --icmp-type echo-reply -m limit --limit 1/s --limit-burst 1 -j ACCEPT\r\n  echo \"Done.\"\r\n  #\r\n  # set LAN can access Internet with 62.36.21.254 ip address from eth0 \\\r\n  # interface.\r\n echo -n \"    Setting SNAT: LAN to Internet ...... \"\r\niptables -A POSTROUTING -t nat -s 192.168.3.0/24  -o eth0 -j SNAT --to 62.36.21.254\r\n echo \"Done.\"\r\n  #\r\n  # set DNS query for Internet and LAN.\r\n echo -n \"    Setting DNAT: DNS query ...... \"\r\niptables -A PREROUTING -t nat -i eth0 -p udp --dport 53 -j DNAT --to 192.168.3.153\r\niptables -A FORWARD -i eth0  -p udp --dport 53 -j ACCEPT\r\niptables -A FORWARD -i eth0  -p udp --sport 53 -j ACCEPT\r\niptables -A FORWARD -o eth0 -p udp --sport 53 -j ACCEPT\r\niptables -A FORWARD -o eth0 -p udp --dport 53 -j ACCEPT\r\n echo \"Done.\"\r\n  #\r\n  # Publish 192.168.3.180 machine (Web Server) to Internet.\r\n echo -n \"    Setting DNAT: HTTP server ...... \"\r\niptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128\r\niptables -A PREROUTING -t nat -i eth0 -d 62.36.21.254 -p tcp --dport 80 -j DNAT --to 192.168.3.180\r\niptables -A FORWARD -i eth0 -o eth1 -d 192.168.3.180 -p tcp --dport 80 -j ACCEPT\r\niptables -A FORWARD -o eth0 -i eth1 -p tcp --sport 80 -s 192.168.3.180 -m state --state RELATED,ESTABLISHED -j ACCEPT\r\n   echo \"Done.\"\r\n  #\r\n  #  Publish 192.168.3.180 machine (FTP Server) to Internet.\r\n echo -n \"    Setting DNAT: FTP server ...... \"\r\niptables -A PREROUTING -t nat -d 62.36.21.254 -i eth0 -p tcp --dport 21 -j DNAT --to 192.168.3.180\r\niptables -A PREROUTING -t nat -d 62.36.21.254 -i eth0 -p tcp --dport 20 -j DNAT --to 192.168.3.180\r\niptables -A FORWARD -d 192.168.3.180 -p tcp --dport 21 -o eth1 -i eth0 -j ACCEPT\r\niptables -A FORWARD -s 192.168.3.180 -p tcp --sport 21 -i eth1 -o eth0 -j ACCEPT\r\niptables -A FORWARD -s 192.168.3.180 -p tcp --sport 20 -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT\r\niptables -A FORWARD -d 192.168.3.180 -p tcp --dport 20 -o eth1 -i eth0 -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT\r\n echo \"Done.\"\r\n#\r\n# Phase 3: Additional settings.\r\n echo -n \"    Setting additional settings ...... \"\r\n  # syn flood\r\niptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT\r\n  # port scan\r\niptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT\r\n  # ping flood\r\niptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT\r\n  # tcp fragment flood\r\niptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT\r\n echo \"Done.\"\r\n echo; echo \"End of iptables.\" ; echo\r\n# END OF SCRIPT
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP