【linux工具之iptables 脚本】

转自:

一个iptables脚本

#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin
RC_SQUID=/etc/rc.d/init.d/squid
# 對外連線
EXTIF="eth1"
# 對內連線
INTIF="eth0"
INNET="192.168.100.1/24"
# 針對 NAT & DHCP
NATNET="eth2"
NTNET="192.168.21.1/24"
#掛入相關 module 
/sbin/modprobe ip_tables 
/sbin/modprobe ip_nat_ftp 
/sbin/modprobe ip_conntrack 
/sbin/modprobe ip_conntrack_ftp 
# 先清除所有的防火牆規則
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
/sbin/iptables -F -t nat
/sbin/iptables -X -t nat
/sbin/iptables -Z -t nat
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
# 開放特定Port
/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 22 -j DROP # SSH
/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 25 -j ACCEPT # SMTP
/sbin/iptables -A INPUT -p UDP -i $EXTIF --dport 53 -j ACCEPT # DNS
/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 53 -j ACCEPT # DNS
/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 80 -j ACCEPT # WWW
/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 110 -j ACCEPT # POP3
/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 113 -j ACCEPT # AUTH
/sbin/iptables -A INPUT -p TCP -i $INTIF --dport 137 -j ACCEPT # SMB
/sbin/iptables -A INPUT -p TCP -i $INTIF --dport 138 -j ACCEPT # SMB
/sbin/iptables -A INPUT -p TCP -i $INTIF --dport 139 -j ACCEPT # SMB
/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 7021 -j ACCEPT # VFTP
/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 6080 -j ACCEPT # WWW 
/sbin/iptables -P OUTPUT ACCEPT 
/sbin/iptables -P FORWARD DROP 
/sbin/iptables -t filter -A FORWARD -i eth1 -o eth2 -m state --state ESTABLISHED,RELATE -j ACCEPT 
/sbin/iptables -t filter -A FORWARD -i eth2 -o eth1 -p tcp -s 192.168.100.0/24 --dport 6080 -j ACCEPT 
# 啟動所有介面的來源 IP 查核 
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ] 
then 
for f in /proc/sys/net/ipv4/conf/*/rp_filter 
do 
echo 1 〉 $f 
done 
fi 
# 防止 sync flood 攻擊 
/sbin/iptables -N synfoold 
/sbin/iptables -A synfoold -p tcp --syn -m limit --limit 1/s -j RETURN 
/sbin/iptables -A synfoold -p tcp -j REJECT --reject-with tcp-reset 
/sbin/iptables -A INPUT -p tcp -m state --state NEW -j synfoold 
# 防止 Ping of Death 
/sbin/iptables -N ping 
/sbin/iptables -A ping -p icmp --icmp-type echo-request -m limit --limit 1/second -j RETURN 
/sbin/iptables -A ping -p icmp -j REJECT 
/sbin/iptables -I INPUT -p icmp --icmp-type echo-request -m state --state NEW -j ping 
# 防止惡意掃描 
/sbin/iptables -A INPUT -i $EXTIF -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP 
/sbin/iptables -A INPUT -i $EXTIF -p tcp --tcp-flags ALL ALL -j DROP 
/sbin/iptables -A INPUT -i $EXTIF -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP 
/sbin/iptables -A INPUT -i $EXTIF -p tcp --tcp-flags ALL NONE -j DROP 
/sbin/iptables -A INPUT -i $EXTIF -p tcp --tcp-flags SYN,RST SYN,RST -j DROP 
/sbin/iptables -A INPUT -i $EXTIF -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP 
# 來自內部的連線一律放行 
/sbin/iptables -A INPUT -i $INTIF -j ACCEPT
/sbin/iptables -A INPUT -i $NATNET -j ACCEPT
# 重導 www 請求至 Squid (透通代理) 
# 如果您有架設 Proxy Server 可以將註解拿掉 
# 這樣可以強迫使用者使用 Proxy 而不必修改 Client 端設定 
/sbin/iptables -t nat -A PREROUTING -i $NATNET -p tcp --dport 80 -j REDIRECT --to -port 6080 
# 啟動 IP 偽裝 
/sbin/iptables -t nat -A POSTROUTING -s $NATNET -o $EXTIF -j MASQUERADE 
# 阻擋指定的網卡號碼 
# 這是 Kernel 2.4 系列新功能,主要防止 Client 非法搶 IP 
# /sbin/iptables -A INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP 
# 最後擋掉其他外部連線要求 
/sbin/iptables -A INPUT -i $NATNET -m state --state NEW,INVALID -j DROP 
/sbin/iptables -A FORWARD -i $NATNET -m state --state NEW,INVALID -j DROP 
# 防止超量攻擊 
echo 1 〉 /proc/sys/net/ipv4/tcp_syncookies 
# 啟動 IP 轉送 
echo 1 〉 /proc/sys/net/ipv4/ip_forward

时间: 2024-07-30 21:58:01

【linux工具之iptables 脚本】的相关文章

【linux工具之iptables】

iptables 原理 iptables官网 iptables 配置手册1 iptables 配置手册2 iptables 笔记 netfilter/iptables全攻略 <--推荐

单服务器防护linux iptables脚本

#!/bin/bashiptables -Fiptables -P INPUT DROPiptables -P OUTPUT ACCEPTiptables -P FORWARD DROP/sbin/iptables -A INPUT -i eth1 -m multiport -p tcp --dport 5060,6060,5070,1720,3720,1719,2719,3719,1202,80 -j ACCEPT/sbin/iptables -A INPUT -i eth1 -m multi

Linux防火墙之iptables入门

一.防火墙的概念 什么是防火墙?防火墙是一台或一组设备,用以在网络间实施访问控制策略:事实上一个防火墙能够包含OSI模型中的很多层,并且可能会涉及进行数据包过滤的设备,它可以实施数据包检查和过滤,在更高的层次中对某应用程序实现某一策略,或做更多类似的事情.防火墙的功能主要是隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则定义的行为进行处理的一组功能组件,基本上的实现都是默认情况下关闭所有的访问,只开放允许访问的策略:防火墙分主机防火墙.网络防火墙.硬件防

Linux下添加shell脚本使得nginx日志每天定时切割压缩

Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常时查日志,还是使用"GoAccess"等工具对日志进行分析都将会变得非常麻烦.因此,每天定时对nginx日志进行切割压缩就非常有必要了 二 实现 我的实现思路是每天晚上接近12点时定时执行脚本.其脚本内容就是将当前的nginx日志先按照当天日期进行重命名接着进行压缩,最后是新建空白的ngi

【转载更新】Linux工具之AWK 3.高级知识

原文:http://blog.hexu.org/archives/41.shtml#id2874788 awk编程 14.1. 变量 在awk中,变量不需要定义就可以直接使用,变量类型可以是数字或字符串.赋值格式:Variable = expression,如$ awk ‘$1 ~/test/{count = $2 + $3; print count}’ test,上式的作用是,awk先扫描第一个域,一旦test匹配,就把第二个域的值加上第三个域的值,并把结果赋值给变量count,最后打印出来.

Linux工具参考篇(网摘)

Linux工具参考篇 原文出处:[Linux Tools Quick Tutorial] 1. gdb 调试利器 2. ldd 查看程序依赖库 3. lsof 一切皆文件 4. ps 进程查看器 5. pstack 跟踪进程栈 6. strace 跟踪进程中的系统调用 7. ipcs 查询进程间通信状态 8. top linux下的任务管理器 9. free 查询可用内存 10. vmstat 监视内存使用情况 11. iostat 监视I/O子系统 12. sar 找出系统瓶颈的利器 13.

【转载 更新】Linux工具之AWK 2.基础知识

1. awk简介 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具.它在命令行中使用,但更多是作为脚本来使用.awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作.如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指

linux下定时执行脚本

cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业.由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动.关闭这个服务: 1.cron的启动 /sbin/service crond start //启动服务/sbin/service crond stop //关闭服务/sbin/service crond restart //重启服务/sbin/service crond reload //重新载入配置 你也可以将这个服务在系统启动的时候自动启动:

Linux命令:iptables网络防火墙

Linux命令:iptables 网络防火墙 一.iptables的发展: iptables的前身叫ipfirewall (内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具.但是ipfirewall工作功能极其有限(它需要将所有的规则都放进内核当中,这样规则才能够运行起来,而放进内核,这个做法一般是极其困难的).当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用,而现在,