需求:配置只能在局域网内访问本机(服务器),本机(服务器)不能访问外网。
禁止Filewalld开机启动
为了防止与iptables冲突,必须先禁止Filewalld开机启动。
-
连接CentOS7.9实例(注意:使用Xshell等工具连接会在配置规则中断开,建议直接VNC连接或服务器终端打开)
-
执行如下命令,查看服务状态。
systemctl status firewalld -
系统显示类似如下,active字段表示服务处于运行状态,inactive字段表示服务处于关闭状态。
-
当服务处于active状态,运行以下命令关闭Firewalld服务。
systemctl stop firewalld -
执行如下命令,禁止Filewalld开机启动。
systemctl disable firewalld
安装iptables
执行如下命令,安装iptables。
yum install -y iptables-services
启动iptables并设置为开机启动
-
执行如下命令,启动iptables。
systemctl start iptables -
执行如下命令,查看iptables是否成功启动。
systemctl status iptables -
系统显示类似如下,说明iptables已经成功启动。
-
执行如下命令,设置iptables开机启动。
systemctl enable iptables.service -
设置完成后,执行如下命令,重启实例验证配置。
systemctl reboot
查看并修改iptables默认规则
执行iptables -L 或 iptables -L -n命令,查看iptables默认规则,发现在默认规则下,INTPUT链允许来自任何主机的访问。可以参考如下步骤修改默认规则。
如果之前已经设置过规则,建议执行如下命令,备份原有的iptables文件,避免之前设置的规则丢失。
cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
首先,我们需要清空所有已经存在的iptables规则,然后设置默认策略为DROP,这样我们就可以开始设置我们自己的规则了。
-
清空所有已经存在的iptables规则:
iptables -F
iptables -X
iptables -Z -
设置默认策略为DROP:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP -
允许来自于任何地方的回应和错误包通过:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -
允许本机访问本机:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT -
允许局域网访问:
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
请根据实际情况替换192.168.1.0/24为你的局域网网段。 -
允许外网通过22端口访问本机:(不需要可不执行此步骤,如需要放开别的特定端口也是这个命令)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT -
保存iptables规则:
service iptables save
-
重启iptables服务:
service iptables restart
以上就是在Linux下设置只能局域网访问,不能外网访问,外网只放开22端口的方法。
删除规则
#查看开放了那些入站规则,并且显示行号
iptables -L INPUT --line-numbers
#删除指定一行的规则
iptables -D INPUT 1
#出站规则也差不多
iptables -L OUTPUT–line-numbers
#删除指定一行的规则
iptables -D OUTPUT 1
关闭iptables,启动firewalld
关闭iptables
systemctl stop iptables
查看状态
systemctl status iptables
启动firewalld
systemctl start firewalld
查看状态
systemctl status firewalld