linux中iptables 防火墙简单设置

作者:袖梨 2022-11-14

用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

相关文章

精彩推荐