VPS 安全:WEB 服务器常用 IPTABLES 规则

最近因为自己一台VPS的问题一直在不断的查找VPS安全的资料。下面分享一个常用的iptables规则

IPT=”/sbin/iptables”

$IPT –delete-chain

$IPT –flush

$IPT -P INPUT DROP #1

$IPT -P FORWARD DROP #1

$IPT -P OUTPUT DROP #1

$IPT -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT #2

$IPT -A INPUT -p tcp -m tcp –dport 80 -j ACCEPT #3

$IPT -A INPUT -p tcp -m tcp –dport 22 -j ACCEPT #3

$IPT -A INPUT -p tcp -m tcp –dport 21 -j ACCEPT #3

$IPT -A INPUT -p tcp -m tcp –dport 873 -j ACCEPT #3

$IPT -A INPUT -i lo -j ACCEPT #4

$IPT -A INPUT -p icmp -m icmp –icmp-type 8 -j ACCEPT #5

$IPT -A INPUT -p icmp -m icmp –icmp-type 11 -j ACCEPT #5

$IPT -A OUTPUT -m state –state RELATED,ESTABLISHED -j ACCEPT #6

$IPT -A OUTPUT -p udp -m udp –dport 53 -j ACCEPT #7

$IPT -A OUTPUT -o lo -j ACCEPT #4

$IPT -A OUTPUT -p tcp -m tcp –dport 80 -j ACCEPT #8

$IPT -A OUTPUT -p tcp -m tcp –dport 25 -j ACCEPT #9

$IPT -A OUTPUT -p icmp -m icmp –icmp-type 8 -j ACCEPT #10

$IPT -A OUTPUT -p icmp -m icmp –icmp-type 11 -j ACCEPT #10

service iptables save

service iptables restart

#1、设置INPUT,FORWARD,OUTPUT链默认target为DROP,也就是外部与服务器不能通信。

#2、设置当连接状态为RELATED和ESTABLISHED时,允许数据进入服务器。

#3、设置外部客户端连接服务器端口80,22,21,873。

#4、允许内部数据循回。

#5、允许外部ping服务器 。

#6、设置状态为RELATED和ESTABLISHED的数据可以从服务器发送到外部。

#7、允许服务器使用外部dns解析域名。

#8、设置服务器连接外部服务器端口80。

#9、允许服务器发送邮件。

#10、允许从服务器ping外部

这样禁用了除ssh、http、ftp等外的所有端口,当然我们可能用到其他端口以供管理,比如说我们在lnmp下常用PureFTPd来管理FTP,这样的话我们首先要编辑下 /etc/proftpd.conf,配置以下内容:

PassivePorts 25000 26000 #(端口号,可自行选择)

然后再上面的代码中还需要添加一行:

$IPT -A INPUT -p tcp -m tcp –dport 25000:26000 –syn -j ACCEPT #这里的25000和26000必须为你添加的端口号

另外也有人可能会用到VNC,那就继续添加一行:

$IPT -A INPUT -p tcp -m tcp –dport 5901 –syn -j ACCEPT#5901为你的vnc端口

等所有的端口都配置好以后,将脚本存储为iptables.sh,上传至VPS,执行sh iptables.sh即可自动配置防火墙。

这样,相信大家有点找到规律了,其他端口可以根据自己的需要选择开放然后重新执行脚本即可~

评论

此博客中的热门博文

FreeBSD安装Pure-FTPd及user manager for PureFTPd

debian lighttpd php ssl

解决nginx出现File not found的问题