iptables 是 CentOS 6.x系统自带的防火墙,功能强大。我们在开通了VPS后会安装一些组件或者运行一些不可描述的一键脚本,有些组件和脚本会自动修改防火墙设置,导致一些端口默认配置改变,最终导致我们无法进入vps管理面板或者是登入FTP管理文件。如果没有vps快照,会给人一种完蛋了,vps被玩崩了的感觉.
我自己就遇到过在vps上运行bbr一键脚本后直接导致宝塔面板无法登录,ftp又忘记了用户名字和密码,一时傻眼的情况.好在vps自身的ssh网页版本还可以登入,上去切换到root账户,清除重置防火墙的规则就复活了.下面记录一些操作方法:
一般来说如果说你的机器使用起来完全正常,但是就是无法链接上SSH,那么一般来说就是由于机器的防火墙设置把SSH的端口给屏蔽了,常见的错误提示有:
ssh: connect to host x.x.x.x port xx: Connection refused
其实设置也比较简单,简单的重新开启SSH对应端口的防火墙通行命令即可:
# 查看状态
$ service iptables status
# 查看规则
$ iptables -L -n
# 清除默认规则
$ iptables -F
$ iptables -X
$ iptables -Z
#####建立新的规则######
# 允许本地回环 127.0.0.1
$ iptables -A INPUT -i lo -p all -j ACCEPT
# 允许已经建立的所有连接
$ iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许所有向外发起的连接
$ iptables -A OUTPUT -j ACCEPT
# 拒绝 ping
$ iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j REJECT
# 允许 SSH 服务端口(一定要打开,不然就不能ssh了,端口修改成对应端口)
$ iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许 Web 服务端口
$ iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 拒绝其他所有未被允许的连接
$ iptables -A INPUT -j REJECT
$ iptables -A FORWARD -j REJECT
# 禁用ip
$ iptables -I INPUT -s 124.115.0.199 -j DROP
# 封IP段的命令
$ iptables -I INPUT -s 124.115.0.0/16 -j DROP
# 封整个段的命令是
$ iptables -I INPUT -s 194.42.0.0/8 -j DROP
# 封几个段的命令是
$ iptables -I INPUT -s 61.37.80.0/24 -j DROP
$ iptables -I INPUT -s 61.37.81.0/24 -j DROP
dport表示目的,sport表示来源,output表示本机出,input表示访问本机
然后就是保存和开机启动centos
# 保存
$ service iptables save
# 重启
$ service iptables restart
# 确认服务会随开机自动启动
$ chkconfig iptables on
对于ssh端口如果进行了修改我们也必须在ssh中连接端口进行更改哦,要不服务器没事是你端口上不去哦,同时尽量把ssh端口不要使用默认的22,咦避免被黑客攻击。
CentOS 从 7 开始默认用的是 firewalld 防火墙,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的。所以你只要停止firewalld服务即可:
sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service
如果你要改用iptables的话,需要安装iptables服务:
sudo yum install iptables-services
sudo systemctl enable iptables && sudo systemctl enable ip6tables
sudo systemctl start iptables && sudo systemctl start ip6tables
暂无评论