linux防火墙shell脚本,Linux学习之定制防火墙shell脚本

本文介绍了一个定制化的防火墙规则设置脚本,通过一系列命令行操作实现了对进出流量的有效管理和控制。该脚本不仅可以配置基本的防火墙策略,还能够加载特定模块支持更复杂的功能,并允许用户自定义规则以满足特定需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定制防火墙规则

#!/bin/bash

# 请先输入您的相关参数,不要输入错误了!

EXTIF="eth0"

# 这个是可以连上 Public IP

的网络接口

INIF="eth1"

# 内部 LAN 的连接接口;若无则写成

INIF=""

INNET="192.168.100.0/24"

#

若无内部网域接口,请填写成 INNET=""

export EXTIF INIF INNET

# 第一部份,针对本机的防火墙设定!

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

# 1. 先设定好核心的网络功能:

echo "1" >

/proc/sys/net/ipv4/tcp_syncookies

echo "1" >

/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

for i in

/proc/sys/net/ipv4/conf{accept_source_route,accept_redirects,send_redirects};

do

echo "0" > $i

done

# 2. 清除规则、设定默认政策及开放 lo 与相关的设定值

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin;

export PATH

iptables -F

iptables -X

iptables -Z

iptables -P INPUT

DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD

ACCEPT

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -m state --state

RELATED,ESTABLISHED -j ACCEPT

# 3. 启动额外的防火墙 script 模块

if [ -f

/usr/local/virus/iptables/iptables.deny ];

then

sh

/usr/local/virus/iptables/iptables.deny

fi

if [ -f /usr/local/virus/iptables/iptables.allow ];

then

sh /usr/local/virus/iptables/iptables.allow

fi

if [ -f

/usr/local/virus/httpd-err/iptables.http ];

then

sh

/usr/local/virus/httpd-err/iptables.http

fi

# 4. 允许某些类型的 ICMP 封包进入

AICMP="0 3 3/4 4 11 12 14 16

18"

for tyicmp in $AICMP ;do

iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j

ACCEPT done

# 5. 允许某些服务的进入,请依照你自己的环境开启

# iptables -A INPUT -p TCP -i $EXTIF --dport 21 --sport

1024:65534 -j ACCEPT # FTP

# iptables -A INPUT -p TCP -i $EXTIF --dport 22 --sport

1024:65534 -j ACCEPT # SSH

# iptables -A INPUT -p TCP -i $EXTIF --dport 25 --sport

1024:65534 -j ACCEPT # SMTP

# iptables -A INPUT -p UDP -i $EXTIF

--dport 53 --sport 1024:65534 -j ACCEPT #

DNS

# iptables -A INPUT -p TCP -i $EXTIF --dport 53 --sport

1024:65534 -j ACCEPT # DNS

# iptables -A INPUT -p TCP -i $EXTIF --dport 80 --sport

1024:65534 -j ACCEPT # WWW

# iptables -A INPUT -p TCP -i $EXTIF --dport 110 --sport

1024:65534 -j ACCEPT # POP3

# iptables -A INPUT -p TCP -i $EXTIF

--dport 443 --sport 1024:65534 -j ACCEPT # HTTPS

# 第二部份,针对后端主机的防火墙设定!

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

# 1. 先加载一些有用的模块

modules="ip_tables iptable_nat

ip_nat_ftp ip_nat_irc ip_conntrack ip_conntrack_ftp

ip_conntrack_irc" for mod in $modules do testmod=`lsmod | grep

"^${mod} " | awk '{print $1}'`

if [ "$testmod" == "" ]; then

modprobe $mod

fi

done

# 2. 清除 NAT table 的规则吧!

iptables -F -t

nat

iptables -X -t nat

iptables -Z -t nat

iptables -t nat -P PREROUTING ACCEPT

iptables -t nat -P POSTROUTING

ACCEPT

iptables -t nat -P OUTPUT ACCEPT

# 3. 若有内部接口的存在 (双网卡) 开放成为路由器,且为 IP

分享器!

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

iptables -A INPUT -i $INIF -j

ACCEPT

echo "1" >

/proc/sys/net/ipv4/ip_forward

if [ "$INNET" != ""

]; then

for innet in $INNET ;do

iptables

-t nat -A POSTROUTING -s $innet -o $EXTIF -j

MASQUERADE

done

fi

fi

# 如果你的 MSN 一直无法联机,或者是某些网站 OK 某些网站不

OK,

# 可能是 MTU 的问题,那你可以将底下这一行给他取消批注来启动 MTU

限制范围

# iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST

SYN -m tcpmss  --mss 1400:1536 -j

TCPMSS--clamp-mss-to-pmtu

# 4. NAT 服务器后端的 LAN

内对外之服务器设定

# iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport

80  -j DNAT --to-destination 192.168.1.210:80 #

WWW

# 5. 特殊的功能,包括 Windows 远程桌面所产生的规则,假设桌面主机为

1.2.3.4

# iptables -t nat -A PREROUTING -p tcp

-s 1.2.3.4 --dport 6000  -j DNAT --to-destination

192.168.100.10

# iptables -t nat -A PREROUTING -p tcp

-s 1.2.3.4 --sport 3389 -j DNAT --to-destination

192.168.100.20

# 6. 最终将这些功能储存下来吧!

/etc/init.d/iptables save

开放允许规则:

[root@www iptables]#vim iptables.allow

#!/bin/bash

# 底下则填写你允许进入本机的其他网域或主机啊!

iptables -A INPUT -i $EXTIF -s

140.116.44.0/24 -j ACCEPT

# 底下则是关于抵挡的档案设定法!

阻止规则:

[root@www iptables]# vim

iptables.deny

#!/bin/bash

# 底下填写的是『你要抵挡的那个咚咚!』

iptables -A INPUT -i $EXTIF -s

140.116.44.254 -j DROP

[root@www iptables]# chmod 700 iptables.*

开机启动

[root@www ~]# vim /etc/rc.d/rc.local

....(其他省略)....

# 1. Firewall

/usr/local/virus/iptables/iptables.rule

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值