科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用Linux系统防火墙功能抵御网络攻击 (3)

用Linux系统防火墙功能抵御网络攻击 (3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

虚拟主机服务商在运营过程中可能会受到黑客攻击,常见的攻击方式有SYN,DDOS等。通过更换IP,查找被攻击的站点可能避开攻击,但是中断服务的时间比较长。比较彻底的解决方法是添置硬件防火墙

作者:huayuan 来源:赛迪网技术社区 2007年10月21日

关键字: 操作系统 网络攻击 防火墙 Linux

  • 评论
  • 分享微博
  • 分享邮件

用ipchains阻断攻击来源,有两种方法。一种是加入到/etc/sysconfig/ipchains里,然后重启动ipchains服务。另一种是直接用ipchains命令加。屏蔽之后,可能还需要重新启动被攻击的服务,是已经建立的攻击连接失效。加入/etc/sysconfig/ipchains假定要阻止的是218.202.8.151到80的连接,编辑/etc/sysconfig/ipchains文件,在output ACCEPT行下面加入:

-A input -s 218.202.8.151 -d 0/0 http -y -j REJECT

保存修改,重新启动ipchains:

/etc/init.d/ipchains restart

如果要阻止的是218.202.8的整个网段,加入:

-A input -s 218.202.8.0/255.255.255.0 -d 0/0 http -y -j REJECT

直接用命令行

加入/etc/sysconfig/ipchains文件并重起ipchains的方法,比较慢,而且在ipchains重起的瞬间,可能会有部分连接钻进来。最方便的方法是直接用ipchains命令。假定要阻止的是218.202.8.151到80的连接,命令:

ipchains -I input 1 -p tcp -s 218.202.8.151 -d 0/0 http -y -j REJECT

如果要阻止的是218.202.8的整个网段,命令:

ipchains -I input 1 -p tcp -s 218.202.8.0/255.255.255.0 -d 0/0 http -y -j REJECT

其中,-I的意思是插入,input是规则连,1是指加入到第一个。您可以编辑一个shell脚本,更方便地做这件事,命令:

vi blockit

内容:

#!/bin/sh
if [ ! -z "$1" ] ; then
echo "Blocking: $1"
ipchains -I input 1 -p tcp -s "$1" -d 0/0 http -y -j REJECT
else
echo "which ip to block?"
fi

保存,然后:

chmod 700 blockit

使用方法:

./blockit 218.202.8.151
./blockit 218.202.8.0/255.255.255.0

上述命令行方法所建立的规则,在重起之后会失效,您可以用ipchains-save命令打印规则:

ipchains-save

输出:

:input ACCEPT
:forward ACCEPT
:output ACCEPT
Saving `input'.
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -i lo -j ACCEPT
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 110:110 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 80:80 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 22:22 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 88:88 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 89:89 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 90:90 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 91:91 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 8180:8180 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 443:443 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 21:21 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 25:25 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 22:22 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 53:53 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 9095:9095 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 8007:8007 -p 6 -j ACCEPT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 53:53 -p 17 -j ACCEPT
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 0:1023 -p 6 -j REJECT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 2049:2049 -p 6 -j REJECT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 0:1023 -p 17 -j REJECT
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 2049:2049 -p 17 -j REJECT
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 6000:6009 -p 6 -j REJECT -y
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 7100:7100 -p 6 -j REJECT -y

您需要把其中的"Saving `input'."去掉,然后把其他内容保存到/etc/sysconfig/ipchains文件,这样,下次重起之后,建立的规则能够重新生效。

3. 如果使用iptables

RH 8.0以上开始启用iptables替代ipchains,两者非常类似,也有差别的地方。

* 启用iptables

如果/etc/sysconfig/下没有iptables文件,可以创建:

# Firewall configuration written by lokkit
# Manual customization of this file is not recommended.
# Note: ifup-post will punch the current nameservers through the
# firewall; such entries will *not* be listed here.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Lokkit-0-50-INPUT - [0:0]
-A INPUT -j RH-Lokkit-0-50-INPUT
-A RH-Lokkit-0-50-INPUT -i lo -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport ftp -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport ssh -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport http -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport smtp -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport pop3 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport mysql -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 2001 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport domain -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport domain -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 0:1023 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 2049 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 0:1023 -j REJECT
-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 2049 -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 6000:6009 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 7100 --syn -j REJECT
COMMIT

以上配置允许了ftp, ssh, http, smtp, pop3, mysql, 2001(Prim@Hosting ACA端口),domain端口。

* 启动iptables

/etc/init.d/iptables start

* 设置iptables为自动启动

chkconfig --level 2345 iptables on

* 用iptables屏蔽IP

iptables -I RH-Lokkit-0-50-INPUT 1 -p 
tcp -m tcp -s 213.8.166.227 --dport 80 --syn -j REJECT

注意到,和ipchains的区别是:-I 后面跟的规则名称的参数和ipchains不同,不是统一的input,而是在/etc/sysconfig/iptables里定义的那个多了-m tcp.指定端口的参数是--dport 80。多了--syn参数,可以自动检测sync攻击。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章