系统环境: CentOS 7 x64
闲来无事,想着给网站服务器上装上某个服务作为备用梯子,一时懒得手动编辑配置,用了233大佬的一键脚本(来源:233blog)没想到给自己挖了个大坑。。
为什么呢,倒不是说这个脚本不好使,对俺来说坑爹的地方在于,这个脚本把CentOS 7自带的防火墙 firewalld
换成了 iptables
!之前配置的规则都得重新写,而且最蛋疼的地方在于,之前为了安全,俺还把ssh连接的默认端口22给改了,然后直接没办法ssh连接到服务器了。。
不过还好DigitalOcean还是比较人性化的,提供了网页端的控制台连接,虽然延迟非常感人,不过好歹能用了不是,先把ssh端口改回22再说。。
终于能用putty连了回去,下一步就是重新配置一下iptables。
首先看下现在的防火墙规则是啥样:
然后结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:443
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
|
可以看到除了网站用的80,443端口以外只开了ssh默认的22端口,难怪ssh连不上了,先加上自定义的ssh端口(假设修改为666):
1
| iptables -I INPUT 9 -m state --state NEW -p tcp --dport 666 -j ACCEPT
|
其中 -I
参数代表插入到具体某一行,原本该行的内容会向后移动一个顺位(个人强迫症,想对齐hhh)。不需要指定位置的话使用 -A
参数直接插到对应规则链最后一行就OK了。
然后删掉原本的22端口放行规则:
好了看下修改后的状态:
输出如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:443
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:666
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
|
完美!接下来还要保存到配置文件中,不然修改仅本次有效,一旦iptables服务或服务器系统重启后还会变回修改前的状态。
保存并重启iptables服务:
1
| service iptables save && service iptables restart
|