龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 操作系统 > LINUX系统 >

linux中iptables 防火墙简单设置

时间:2012-12-29 08:41来源:未知 作者:admin 点击:
分享到:
般装好的服务器都是没有设置防火墙的,现在我们假设就设置了ssh,开放20端口,其它的都没有设置,那我们到底应该怎么简单快速的做呢?怎么能够快速的设置好apache的访问呢? 用vim打
般装好的服务器都是没有设置防火墙的,现在我们假设就设置了ssh,开放20端口,其它的都没有设置,那我们到底应该怎么简单快速的做呢?怎么能够快速的设置好apache的访问呢?

用vim打开/etc/sysconfig/iptables,我们先来看一下最终设置好apache80端口访问是什么样:

 代码如下

1、:RH-Firewall-1-INPUT - [0:0]

这里可以理解为定义了一个链RH-Firewall-1-INPUT

 代码如下
2、-A INPUT -j RH-Firewall-1-INPUT和-A FORWARD -j RH-Firewall-1-INPUT

这里是把INPUT和FORWARD的所有包都转发到RH-Firewall-1-INPUT,这是重点,也就意味着,只要定义好RH-Firewall-1-INPUT,就定义好了INPUT和FORWARD两个链

 代码如下
3、-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

允许80端口的数据包传输,这里的参数都很简单,去百度查一下就知道了


好了,就这么简单,一个80端口的防火墙设置就弄好了~~

 

那么如何屏蔽来自某个特定国家的 IP 呢?

方法很容易,先到 IPdeny 下载以国家代码编制好的 IP 地址列表,

比如下载 cn.zone:

# wget http://www.ipdeny.com/ipblocks/data/countries/cn.zone

有了国家的所有 IP 地址,要想屏蔽这些 IP 就很容易了,直接写个脚本逐行读取 cn.zone 文件并加入到 iptables 中:

 代码如下

#!/bin/bash
# Block traffic from a specific country
# written by vpsee.com

COUNTRY = “cn”
IPTABLES = /sbin/iptables
EGREP = /bin/egrep

if [ "$(id -u)" != "0" ]; then
echo “you must be root” 1>&2
exit 1
fi

resetrules() {
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
}

resetrules

for c in $COUNTRY
do
country_file = $c.zone

IPS = $($EGREP -v “^#|^$” $country_file)
for ip in $IPS
do
echo “blocking $ip”
$IPTABLES -A INPUT -s $ip -j DROP
done
done

exit 0


精彩图集

赞助商链接