最近使用阿里云ECS,发现既然没有提供安全组,能让小白用户方便的配置下允许外网访问的端口。 默认所有绑定到外网ip或四个零的端口,外网都可以访问,然后,看看iptables文档,自己来配下咯。
安装iptables
Debian
安装:
$ sudo apt-get install iptables
Debian系统中不需要启动iptables。
CentOS
安装:
$ sudo yum install iptables -y
启动:
$ sudo service iptables start
配置iptables
配置指令Debian、CentOS都一样。
这两段抄的kkyun blog
清除防火墙规则:
```
#首先在清除前要将policy INPUT改成ACCEPT,表示接受一切请求。
#这个一定要先做,不然清空后可能会悲剧
$ sudo iptables -P INPUT ACCEPT
#清空默认所有规则
$ sudo iptables -F
#清空自定义的所有规则
$ sudo iptables -X
#计数器置0
$ sudo iptables -Z
```
常用配置:
```
# 允许来自于lo接口的数据包
# 如果没有此规则,你将不能通过127.0.0.1访问本地服务,例如ping 127.0.0.1
$ sudo iptables -A INPUT -i lo -j ACCEPT
# ssh端口22
$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# FTP端口21
$ sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
# web服务端口80
$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# tomcat
$ sudo iptables -A INPUT -p tcp --dport xxxx -j ACCEPT
# mysql
$ sudo iptables -A INPUT -p tcp --dport xxxx -j ACCEPT
#允许icmp包通过,也就是允许ping
$ sudo iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
#允许所有对外请求的返回包
#本机对外请求相当于OUTPUT,对于返回数据包必须接收啊,这相当于INPUT了
$ sudo iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
#如果要添加内网ip信任(接受其所有TCP请求)
$ sudo iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
#过滤所有非以上规则的请求
$ sudo iptables -P INPUT DROP
#要封停一个IP,使用下面这条命令:
$ sudo iptables -I INPUT -s ***.***.***.*** -j DROP
#要解封一个IP,使用下面这条命令:
$ sudo iptables -D INPUT -s ***.***.***.*** -j DROP
```
保存iptables配置
iptables配置好在当前环境生效,但,重启系统就不再可用。 所以,我们需要将iptables配置信息保存下来,并在下次系统开机时自动加载。
Debian
重启时自动加载iptables配置信息:
$ sudo apt-get install iptables-persistent
CentOS
保存iptables配置信息:
$ sudo service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
重启自动运行iptables:
$ sudo chkconfig iptables on