6.8 iptables简单脚本:Web主机防护脚本

这一节通过编写一个简单的iptables脚本来熟悉iptables的语法规则。网络拓朴很简单,安装iptables的机器IP地址为:192.168.1.204,另一台机器的IP地址为:192.168.1.200,系统均为CentOS 6.4 x86_64。

普通的Web主机防护脚本比较容易实现,Web主机主要开放两个端口:80和22,其他端口则会关闭,另外由于这里没有涉及多少功能,所以模块的载入也很简单,只涉及了iptables的filter表的INPUT链,所以脚本的初始化也很简单。

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

可以按照编写iptables的流程顺序来编写脚本,脚本内容如下:

#/bin/bash

iptables -F

iptables -X

iptables -Z

modprobe ip_tables

modprobe nf_nat

modprobe nf_conntrack

iptables -P INPUT DROP

iptables -P FORWARD ACCEPT

iptables -P OUTPUT ACCEPT

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

iptables -A INPUT -p tcp -m multiport --dports 22,80 -j ACCEPT

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

这里的#iptables-P INPUT DROP符合我们写iptables的习惯,即开启iptables时默认拒绝一切连接,后面再通过-A参数来开放我们需要提供的端口。

iptables脚本开启后,可以用如下命令查看结果:

iptables –

nv -L

此命令显示结果如下:

Chain INPUT (policy DROP 3364 packets, 204K bytes)

pkts bytes target prot opt in out source destination

0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0

84 5372 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0

multiport dports 22,80

0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0

stateRELATED,ESTABLISHED

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 43 packets, 5532 bytes)

pkts bytes target prot opt in out source destination

0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0

iptables防火墙运行后,将尝试启动此机器的postfix服务,打开服务器端口25,然后通过内网在另外一台机器上telnet,命令如下:

telnet 192.168.1.204 25

命令显示结果如下:

Trying 192.168.1.204...

telnet: connect to address 192.168.1.204: Connection refused

最小化安装的CentOS 6.4 x86_64系统默认是没有Nmap的,可以通过yum命令来进行安装,命令如下:

yum -y install nmap

这时,在另一台机器上开启Nmap扫描,发现samba提供服务的端口已经被iptables屏蔽了,命令如下:

nmap -sT 192.168.1.204

此命令显示结果如下:

Starting Nmap 5.51 ( http://nmap.org ) at 2015-10-27 23:43 EDT

Nmap scan report for Fabric (192.168.1.204)

Host is up (0.00074s latency).

Not shown: 998 filtered ports

PORT STATE SERVICE

22/tcp open ssh

80/tcp open http

MAC Address: 00:16:3E:05:23:85 (Xensource)

Nmap done: 1 IP address (1 host up) scanned in 4.39 seconds