Ubuntu 16.0.4 下使用 一键安装 LNMP
wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.shlnmp
安装完成后使用 Navicat 连接一直报错 10060,但是用 SSH 可以连接。
原因是 LNMP 一键安装后没有安装防火墙,默认 3306 端口 DROP,请求连接后服务器丢弃数据造成连接请求超时。
解决方法:来自https://www.vpser.net/security/linux-iptables.htmlwww.vpser.net
1、安装 iptables 防火墙
如果没有安装 iptables 需要先安装,CentOS 执行:
yum install iptables -y
# CentOS7 需安装此 iptables 的 service 软件包
yum install iptables-services -y
CentOS 7上默认安装了 firewalld 建议关闭并禁用:
systemctl stop firewalld
systemctl mask firewalld
Debian/Ubuntu执行:
# 持久化 iptables 规则服务
apt-get install iptables -y
apt-get install iptables-persistent -y
2、清除已有 iptables 规则
iptables -F
iptables -X
iptables -Z
3、开放指定的端口
-A 和 -I 参数分别为添加到规则末尾和规则最前面。
# 允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的或相关连的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT
# 允许访问 22 端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许访问 80 端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 允许访问 443 端口
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许 FTP 服务的 21 和 20 端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
# 如果有其他端口的话,规则也类似,稍微修改上述语句就行
# 允许 ping
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# 禁止其他未允许的规则访问
iptables -A INPUT -j REJECT #(注意:如果22端口未加入允许规则,SSH链接会直接断开。)
iptables -A FORWARD -j REJECT
4、屏蔽 IP
# 如果只是想屏蔽IP的话“3、开放指定的端口”部分设置可以直接跳过。
# 屏蔽单个 IP 的命令是
iptables -I INPUT -s 123.45.6.7 -j DROP
# 封整个段即从 123.0.0.1 到 123.255.255.254 的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP
# 封 IP 段即从 123.45.0.1 到 123.45.255.254 的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP
# 封 IP 段即从 123.45.6.1 到 123.45.6.254 的命令是
iptables -I INPUT -s 123.45.6.0/24 -j DROP
5、屏蔽或允许某 IP 访问指定端口
# 屏蔽某 IP 访问指定端口,以 22 端口为例命令是
iptables -I INPUT -s 123.45.6.7 -p tcp --dport 22 -j DROP
# 允许某 IP 访问指定端口,以 22 端口为例命令是
iptables -I INPUT -p tcp --dport 22 -j DROP
iptables -I INPUT -s 123.45.6.7 -p tcp --dport 22 -j ACCEPT
6、查看已添加的 iptables 规则
iptables -L -n
# v:显示详细信息,包括每条规则的匹配包数量和匹配字节数
# x:在 v 的基础上,禁止自动单位换算(K/M)
# n:只显示 IP 地址和端口号,不将 ip 解析为域名
7、删除已添加的 iptables 规则
# 将所有 iptables 以序号标记显示
iptables -L -n --line-numbers
# 要删除 INPUT 里序号为 8 的规则(要删除 OUTPUT 的话就改成 OUTPUT,以此类推)
iptables -D INPUT 8
8、iptables 的开机启动及规则保存
CentOS 上可能会存在安装好 iptables 后,iptables 并不开机自启动,可以执行一下:
chkconfig --level 345 iptables on
CentOS 7 可执行:
systemctl enable iptables
将其加入开机启动。
CentOS上可以执行:
service iptables save
保存规则。
另外更需要注意的是 Debian/Ubuntu 上 iptables 是不会保存规则的,也是前面说的持久化 iptables 规则。
Debian 或 Ubuntu 16.04 或更高版本执行:
/etc/init.d/netfilter-persistent save
可以进行保存规则,
/etc/init.d/netfilter-persistent reload
可以将规则生效。
Ubuntu 14.04 之前版本执行:
/etc/init.d/iptables-persistent save
可以进行保存规则,
/etc/init.d/iptables-persistent reload
可以将规则生效。
开机启动的话执行:
systemctl enable netfilter-persistent.service
或
systemctl enable iptables-persistent.service
这样就完成了 Debian 或 Ubuntu 下的关机自动保存规则,开机自动加载规则的设置。