`
leng_cn
  • 浏览: 301949 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Iptables的常用防火墙配置

阅读更多
本脚本环境为eth0外网,eth1内网;

#!/bin/sh

#外网网卡

EXT_IF="eth0"

FW_IP="61.137.85.21"

#内网网卡

INT_IF="eth1"

LAN_IP="192.168.0.1"

LAN_IP_RANGE="192.168.0.0/255.255.255.0"

#加阅模块,一般已内建

#Module loading.

#echo "modprobe modules"

#modprode ip_tables

#modprode ip_nat_ftp

#modprode ip_conntrack

#modprobe ip_conntrack_ftp

#启用转发(forward)功能

echo "enabling IP FORWARDING......"

echo "1" >; /proc/sys/net/ipv4/ip_forward

#规则初始化,设置默认都为drop

echo "enabling iptables rules"

#reset the default policies in the tables

iptables -F

iptables -X

iptables -F -t mangle

iptables -X -t mangle

iptables -F -t nat

iptables -X -t nat

iptables -Z -t nat

#set policies

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT DROP

###-----------------------------------------------------------------###

#过虑蠕虫病毒

#444/445/69/135/139

###-----------------------------------------------------------------###

iptables -A FORWARD -p tcp --dport 4444 -j DROP

iptables -A FORWARD -p udp --dport 4444 -j DROP

iptables -A FORWARD -p tcp --dport 445 -j DROP

iptables -A FORWARD -p udp --dport 445 -j DROP

iptables -A FORWARD -p tcp --dport 69 -j DROP

iptables -A FORWARD -p udp --dport 69 -j DROP

iptables -A FORWARD -p tcp --dport 135 -j DROP

iptables -A FORWARD -p udp --dport 135 -j DROP

iptables -A FORWARD -p tcp --dport 139 -j DROP

iptables -A FORWARD -p udp --dport 139 -j DROP

#允许ping localhost,ping 192.168.0.1/2

#allow loopback access

iptables -A INPUT -p icmp -i lo -j ACCEPT

iptables -A OUTPUT -p icmp -o lo -j ACCEPT

#打开内对内连接

#iptables -A INPUT -i lo -j ACCEPT

#允许代理和内网客户机相互传输数据(包括ping)

#allow ping LAN

iptables -A INPUT -p ALL -i $INT_IF -s $LAN_IP_RANGE -j ACCEPT

iptables -A OUTPUT -p ALL -o $INT_IF -d $LAN_IP_RANGE -j ACCEPT

#允许外网的网卡与内网相互通讯.接受数据只接受响应封包,否则不予放行.发送数据没有限制.

iptables -A INPUT -p ALL -i $INT_IF -s $LAN_IP_RANGE -j ACCEPT

iptables -A INPUT -p ALL -i $INT_IF -s $LAN_IP_RANGE -j ACCEPT

#拒绝外部使用内网进行欺骗

#deny local cheat

iptables -A INPUT -i $EXT_IF -s 192.168.0.0/16 -j DROP

iptables -A INPUT -i $EXT_IF -s 10.0.0.0/8 -j DROP

iptables -A INPUT -i $EXT_IF -s 172.16.0.0/12 -j DROP

iptables -A INPUT -i $EXT_IF -s 127.0.0.0/8 -j DROP

#从LAN进入防火墙主机的dhcp封包,不于放行,只有防火墙担任DHCP时才放行

#deny DHCP_packets from LAN

iptables -A INPUT -p udp -i $INT_IF --dport 67 --sport 68 -j DROP

###-----------------------------------------------------------------------------------###

#配置向外方向的TCP规则,其中,--state ESTABLISHED ,NEW参数指定要检查哪个状态.

#ESTABLISHED标志匹配属于已有的TCP连接的封包.

#NEW标志指定试图创建一条新的TCP连接的第一个封包,这条规则指明属于新建的和已建立的

#TCP连接的封包将会通过eth0端口向外发送.

###-----------------------------------------------------------------------------------###

iptables -A OUTPUT -o $EXT_IF -p tcp -m state --state ESTABLISHED,NEW -j ACCEPT

###----------------------------------------------------------------------------------###

#配置封包从一个端口转发到另一个端口

###----------------------------------------------------------------------------------###

iptables -A FORWARD -i $INT_IF -j ACCEPT

# same to above 和上面的规则功能相同

#iptables -A FORWARD -i $EXT_IF -m state --state ESTABLISHED,RELATED -j ACCEPT

###-------------------------------------------------------------------------------------###

#检查到达外部网络接口的封包状态.属于已有TCP连接的封包都允许通过

# 从WAN到LAN的封包仅放行回应封包

###-------------------------------------------------------------------------------------###

iptables -A INPUT -i $EXT_IF -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

# 限制过滤规则的比对频率为每分钟平均流量三个封包(超过上限的封包将暂停比对),

#并将瞬间流量设定为一次最多处理三个封包(超过上限的封包将丢弃不予处理),

#这类封包通常是黑客用来进行阻断式攻击

iptables -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level INFO --log-prefix "IPT INPUT packets died:"

###-------------------------------------------------------------------------###

#不管来自哪里的ip碎片都进行控制,允许每秒通过100个碎片

###-------------------------------------------------------------------------###

iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

###-------------------------------------------------------------------------###

#icmp包通过的控制,防止icmp黑客攻击

###-------------------------------------------------------------------------###

iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

###-------------------------------------------------------------------------###

# 防止DDOS

###-------------------------------------------------------------------------###

#iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

###-------------------------------------------------------------------------###

# UDP包一律放行

# allow UDP

###-------------------------------------------------------------------------###

iptables -A FORWARD -p udp -d $LAN_IP_RANGE -i $EXT_IF -j ACCEPT

###-------------------------------------------------------------------------###

#根据mac屏蔽主机上网

###-------------------------------------------------------------------------###

#iptables -t nat -I PREROUTING -m mac --mac-source 4C:00:10:D8:57:F3 -j DROP

###-----------------------------------------------------###

# 开放内部主机可以telnet至外部主 telnet port 23

###-----------------------------------------------------###

#没必要打开23端口

#iptables -A OUTPUT -o $EXT_IF -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 23 -j ACCEPT

#iptables -A INPUT -i $EXT_IF -p tcp ! --syn -s any/0 --sport 23 -d $FW_IP --dport 1024:65535 -j ACCEPT

###-----------------------------------------------------###

# 开放邮包转送通道 open SMTP port 25

###-----------------------------------------------------###

#以下是别人可以送信给你

iptables -A INPUT -i $EXT_IF -p tcp -s any/0 --sport 1024:65535 -d $FW_IP --dport 25 -j ACCEPT

iptables -A OUTPUT -o $EXT_IF -p tcp ! --syn -s $FW_IP --sport 25 -d any/0 --dport 1024:65535 -j ACCEPT

#以下是你可以送信给别人

iptables -A OUTPUT -o $EXT_IF -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 25 -j ACCEPT

iptables -A INPUT -i $EXT_IF -p tcp ! --syn -s any/0 --sport 25 -d $FW_IP --dport 1024:65525 -j ACCEPT

###-----------------------------------------------------###

# 开放对外离线下载信件的通道 POP3 port 110

###-----------------------------------------------------###

iptables -A OUTPUT -o $EXT_IF -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 110 -j ACCEPT

iptables -A INPUT -i $EXT_IF -p tcp ! --syn -s any/0 --sport 110 -d $FW_IP --dport 1024:65535 -j ACCEPT

###-----------------------------------------------------###

# 开放浏览网页的通道 http port 80

###-----------------------------------------------------###

iptables -A OUTPUT -o $EXT_IF -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 80 -j ACCEPT

iptables -A INPUT -i $EXT_IF -p tcp ! --syn -s any/0 --sport 80 -d $FW_IP --dport 1024:65535 -j ACCEPT

###-----------------------------------------------------###

# 开放查询外部网络的DNS主机 DNS port:53

###-----------------------------------------------------###

#第一次会用udp封包来查询

iptables -A OUTPUT -o $EXT_IF -p udp -s $FW_IP --sport 1024:65535 -d any/0 --dport 53 -j ACCEPT

iptables -A INPUT -i $EXT_IF -p udp -s any/0 --sport 53 -d $FW_IP --dport 1024:65535 -j ACCEPT

#若有错误,会改用tcp包来查询

iptables -A OUTPUT -o $EXT_IF -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 53 -j ACCEPT

iptables -A INPUT -i $EXT_IF -p tcp ! --syn -s any/0 --sport 53 -d $FW_IP --dport 1024:65535 -j ACCEPT

#开放这台主机上的DNS和外部的DNS主机互动查询:使用udp

iptables -A OUTPUT -o $EXT_IF -p udp -s $FW_IP --sport 53 -d any/0 --dport 53 -j ACCEPT

iptables -A INPUT -i $EXT_IF -p udp -s any/0 --sport 53 -d $FW_IP --dport 53 -j ACCEPT

#开放这台主机上的DNS和外部的DNS主机互动查询:使用udp

iptables -A OUTPUT -o EXT_IF -p tcp -s $FW_IP --sport 53 -d any/0 --dport 53 -j ACCEPT

iptables -A INPUT -i EXT_IF -p tcp ! --syn -s any/0 --sport 53 -d $FW_IP --dport 53 -j ACCEPT

###------------------------------------------------------------------------###

#开放内部主机可以SSH至外部的主机 SSH port:22

###------------------------------------------------------------------------###

iptables -A OUTPUT -o $EXT_IF -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 22 -j ACCEPT

iptables -A INPUT -i $EXT_IF -p tcp ! --syn -s any/0 --sport 22 -d $FW_IP --dport 1024:65535 -j ACCEPT

#以下是SSH protocol比较不同的地方

iptables -A OUTPUT -o $EXT_IF -p tcp -s $FW_IP --sport 1020:1023 -d any/0 --dport 22 -j ACCEPT

iptables -A INPUT -i $EXT_IF -p tcp ! --syn -s any/0 --sport 22 -d $FW_IP --dport 1020:1023 -j ACCEPT

###------------------------------------------------------------------------###

###开放内部网络,可以ftp至外部主机

###------------------------------------------------------------------------###

#以下是打开命令 channel 21

iptables -A OUTPUT -o $EXT_IF -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 21 -j ACCEPT

iptables -A INPUT -i $EXT_IF -p tcp ! --syn -s any/0 --sport 21 -d $FW_IP --dport 1024:65535 -j ACCEPT

#以下是打开资料 channel 20

iptables -A INPUT -i $EXT_IF -p tcp -s any/0 --sport 20 -d $FW_IP --dport 1024:65535 -j ACCEPT

iptables -A OUTPUT -o $EXT_IF -p tcp ! --syn -s $FW_IP --sport 1024:65535 -d any/0 --dport 20 -j ACCEPT

#以下是打开 passive mode FTP 资料通道

iptables -A OUTPUT -o $EXT_IF -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 1024:65535 -j ACCEPT

iptables -A INPUT -i $EXT_IF -p tcp ! --syn -s any/0 --sport 1024:65535 -d $FW_IP --dport 1024:65535 -j ACCEPT

#-------------------------------------NAT------------------------------------------------

#透明代理设定:将WWW服务转向squid

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

###-------------------------------------------------------------------------###

#启动内部对外部转址:源网络地址转换SNAT

###-------------------------------------------------------------------------###

iptables -t nat -A POSTROUTING -o $EXT_IF -s $LAN_IP_RANGE -j SNAT --to $FW_IP

###-------------------------------------------------------------------------###

#启动外部对内部转址(设置内网WWWW服务器映射)DNAT

###-------------------------------------------------------------------------###

iptables -t nat -A PREROUTING -i $EXT_IF -p tcp -d $FW_IP --dport 80 -j DNAT --to 192.168.0.16:80

双线原理是一样的:

如果内网1[或者外网]是192.168.1.0/24

内网2[或者外网]是192.168.2.0/24

只要改相应部分就行了

#启动内部对外部转址:源网络地址转换SNAT

###-------------------------------------------------------------------------###

iptables -t nat -A POSTROUTING -o $EXT_IF -s 192.168.1.0/24 -j SNAT --to $FW_IP

iptables -t nat -A POSTROUTING -o $EXT_IF -s 192.168.2.0/24 -j SNAT --to $FW_IP

分享到:
评论

相关推荐

    Linux系统Iptables的常用防火墙配置方法

    Linux系统Iptables的常用防火墙配置方法

    linux iptables防火墙配置

    ### Linux iptables防火墙配置详解 #### 一、iptables与Linux防火墙的演进 Linux系统自诞生以来,其防火墙功能经历了多个阶段的发展。在2.0版内核时代,包过滤机制由`ipfw`承担,配套的管理工具为`ipfwadm`;到了...

    详解Linux iptables常用防火墙规则

    如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。 防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些...

    iptables 与firewalld 防火墙.docx

    iptables 与 firewalld 防火墙配置使用方法 iptables 和 firewalld 是 Linux 系统中两种常用的防火墙解决方案,用于过滤不合法的流量,保护内网安全。本文将对比 iptables 和 firewalld 的配置使用方法,并详细介绍...

    linux防火墙iptables常用规则.docx

    ### Linux防火墙iptables常用规则详解 #### 一、iptables基础操作与配置 ##### 删除现有规则 在使用iptables之前,我们通常需要先清除已有的规则,以便于重新建立新的规则集。这可以通过`iptables -F`命令来实现。...

    ansible-iptables:使用iptables进行防火墙设置的Ansible角色

    iptables 使用iptables配置防火墙。 该角色支持入口和出口过滤。 启用出口过滤后,将自动允许某些常用协议。 这包括: 对/etc/resolv.conf的名称服务器的DNS请求软件包管理(Gentoo,Debian,Alpine)要求需要使用...

    centos6 iptables常用操作

    ### CentOS 6 iptables 常用操作及规则配置 #### 概述 在Linux系统中,`iptables`是一款强大的工具,用于管理网络流量并控制数据包过滤规则。CentOS 6作为一款广泛使用的服务器操作系统,其内置的`iptables`功能...

    iptables常用命令和使用

    ### iptables常用命令详解 #### 一、iptables简介 **iptables** 是一款强大的包过滤防火墙工具,它允许用户通过定义一系列复杂的规则来控制进出主机的数据包。此工具需要Linux内核版本至少为2.4及以上,对于2.6及...

    Linux教程PPT课件(shell命令、Apache服务器配置、iptables防火墙等等).zip

    Linux具有如下优点: Ø 稳定、免费或者花费少 Ø 安全性高 Ø 多任务,多用户 Ø 耗资源少 Ø 由于内核小,所以它可以支持多种电子产品,如:Android手机、...iptables防火墙; gvim编辑器使用; dns域名服务器等等。

    一键配置CentOS iptables防火墙的Shell脚本分享

    ### 一键配置CentOS iptables防火墙Shell脚本解析 #### 概述 本文将详细介绍一个用于一键配置CentOS系统中的iptables防火墙的Shell脚本。该脚本可以帮助用户简化新装系统的iptables配置过程,使其更加高效且易于...

    linux服务器JDK配置+防火墙配置+服务器之间SSH免密配置.pdf

    文档中涉及的几个关键配置项包括JDK配置、防火墙配置和SSH免密配置,下面将详细介绍这些配置知识点。 首先,JDK配置是开发和运行Java应用的基础。在Linux环境中安装Java 1.8或更高版本的JDK是常用的操作,安装完成...

    运维技术课程 Linux学习教程 第14讲 iptables防火墙 共27页.pptx

    【课程大纲】 ...第14讲 iptables防火墙 共27页.pptx 网络设置 共26页.pptx 网络文件共享-ftp 共22页.pptx 网络文件共享-nfs 共19页.pptx 网络文件共享-samba 共22页.pptx 网络文件共享-ssh 共32页.pptx

    iptables指南 1.1.19

    rc.firewall是iptables防火墙配置的一个实例,它涉及一系列参数配置、模块加载、/proc设置、规则位置优化、缺省策略设置和自定义链设置。rc.firewall的实际应用包括INPUT链、FORWARD链、OUTPUT链、PREROUTING链和...

    手把手教你Linux关闭防火墙命令.pdf

    防火墙配置是防火墙的重要部分,用于定义防火墙的行为。例如,在 Fedora 系统中,可以使用 /etc/init.d/iptables stop 命令关闭防火墙,而在 Ubuntu 系统中,可以使用 iptables -P INPUT ACCEPT 命令关闭防火墙。 ...

    Iptables 指南 1.1.19

    7. 防火墙配置实例 rc.firewall 7.1. 关于rc.firewall 7.2. rc.firewall详解 7.2.1. 参数配置 7.2.2. 外部模块的装载 7.2.3. proc的设置 7.2.4. 规则位置的优化 7.2.5. 缺省策略的设置 7.2.6. 自定义链的设置 7.2.7....

    Iptables 中文指南

    7. 防火墙配置实例 rc.firewall 7.1. 关于rc.firewall 7.2. rc.firewall详解 7.2.1. 参数配置 7.2.2. 外部模块的装载 7.2.3. proc的设置 7.2.4. 规则位置的优化 7.2.5. 缺省策略的设置 7.2.6. 自定义链的...

    iptables权威指南

    - **rc.firewall**:提供了一个实际的iptables防火墙配置脚本实例。 - **参数配置**:详细解释了配置文件中的各个参数的意义和作用。 - **外部模块的装载**:介绍如何加载必要的iptables模块。 - **proc的设置**...

    linux开启redis端口的防火墙.docx

    在 Linux 中,常用的防火墙软件有 UFW(Uncomplicated Firewall)和 iptables。UFW 是一个简洁易用的防火墙工具,它提供了一个易于使用的命令行接口来配置防火墙规则。 在本文档中,我们将介绍如何使用 UFW 来开启 ...

Global site tag (gtag.js) - Google Analytics