只允许指定的ip访问本机的指定端口22

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               
只允许指定的ip访问本机的指定端口22:允许的的ip:192.168.1.123, 192.168.1.124, 192.168.1.100,其他ip都禁止访问。 切换到root用户1、在tcp协议中,禁止所有的ip访问本机的22端口。iptables -I INPUT -p tcp --dport 22 -j DROP 2、允许192.168.1.123访问本机的22端口iptables -I INPUT -s 192.168.1.123 -p tcp --dport 22 -j ACCEPT 3、允许192.168.1.124访问本机的22端口iptables -I INPUT -s 192.168.1.124 -p tcp --dport 22 -j ACCEPT 4、允许192.168.1.100访问本机的22端口iptables -I INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT 注意以上4条命令的顺序不能错。以上是临时设置。2.然后保存iptables# service iptables save3.重启防火墙#service iptables restart在此说一下关于启动和关闭防火墙的命令:1) 重启后生效开启: chkconfig iptables on关闭: chkconfig iptables off2) 即时生效,重启后失效开启: service iptables start关闭: service iptables stop v-test-nfs01:/root# cat /etc/sysconfig/iptables# Generated by iptables-save v1.4.7 on Sun Sep 18 10:11:50 2016*filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [112:11126]-A INPUT -s 115.236.160.82/32 -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j DROP  -A INPUT -s 115.236.160.82/32 -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT//只允许 115.236.160.xx 访问 22号端口[root@nfs01 ~]# cat /etc/sysconfig/iptables# Generated by iptables-save v1.4.7 on Sun Sep 18 10:58:51 2016*filter:INPUT ACCEPT [765:46540]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [795:1138932]-A INPUT -s 115.236.160.xx/32 -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j DROP -A INPUT -s 121.42.0.15/32 -j DROP COMMIT# Completed on Sun Sep 18 10:58:51 2016

           

给我老师的人工智能教程打call!http://blog.youkuaiyun.com/jiangjunshow
这里写图片描述
<think>好的,我现在需要帮助用户配置Linux防火墙,只允许特定IP访问SSH的22端口。首先,我得回忆一下关于firewalld的相关知识,确保步骤正确,避免用户被锁在外面。 用户提到使用firewall-cmd,所以应该是在使用firewalld作为防火墙管理工具的系统,比如CentOS或RHEL。首先,确认防火墙是否已经启用。如果用户之前没启用过,可能需要先启动并设置开机自启。但根据引用[1]和[2],启用防火墙时特别要注意先添加规则,否则可能无法远程连接。所以必须提醒用户先添加允许特定IP的规则,再调整默认设置。 接下来,用户需要允许特定IP访问22端口。常规步骤可能是先添加富规则(rich rule),允许指定IP访问22端口,然后再拒绝其他所有流量到22端口。但顺序很重要,因为防火墙规则是按顺序匹配的。需要确保允许规则在拒绝规则之前,否则会被拒绝规则先拦截。 引用[3]中提到使用firewall-cmd来允许某个IP访问指定端口,所以具体的命令应该是使用--add-rich-rule参数。例如,允许IP 192.168.1.100访问22端口的命令是: sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept' 然后,需要拒绝其他所有IP访问22端口。这可以通过将ssh服务(默认关联22端口)的默认访问设置为拒绝,或者直接添加拒绝规则。但根据引用[2]的处理思路,先关闭端口访问,再设置特定IP允许。可能更安全的做法是,先移除现有的允许规则,然后添加允许特定IP的规则,最后明确拒绝其他IP。 另外,引用[1]警告在启用防火墙前必须添加远程端口规则,否则可能导致无法连接。因此,在用户执行这些命令之前,必须确保当前会话不会中断,或者用户有其他方式访问服务器,比如通过本地控制台或另一个已允许IP。 完成所有规则添加后,需要重新加载防火墙使设置生效,使用sudo firewall-cmd --reload。然后验证规则是否正确,使用--list-all查看当前配置。 可能还需要考虑IPv6的情况,如果用户网络中有IPv6地址,需要在规则中指定family为ipv6,或者分别处理。但用户问题中没有特别提到,可能暂时只需处理IPv4。 另外,用户可能需要永久生效,所以每个添加规则的命令都需要加上--permanent参数,或者最后再使用--runtime-to-permanent保存。但通常直接使用--permanent更直接,然后reload。 最后,生成相关问题时要考虑用户可能的后续疑问,比如如何撤销设置、添加多个IP、处理不同端口或服务,以及防火墙的其他管理命令等。确保问题覆盖用户可能需要的扩展知识。</think>### 配置Linux防火墙仅允许特定IP访问SSH端口22 #### 步骤详解 1. **启用防火墙并检查状态** 确保防火墙处于运行状态,避免配置失效: ```bash sudo systemctl start firewalld # 启动防火墙 sudo systemctl enable firewalld # 设置开机自启 sudo firewall-cmd --state # 查看状态(应为"running") ``` 2. **添加允许特定IP访问22端口的规则** 假设允许IP为`192.168.1.100`,使用富规则(rich rule)精确控制访问: ```bash sudo firewall-cmd --permanent --add-rich-rule=' rule family="ipv4" source address="192.168.1.100/32" port port="22" protocol="tcp" accept' ``` 说明: - `--permanent`:规则永久生效 - `source address`:支持CIDR格式(如`/24`表示一个网段) - 若需允许多个IP,重复执行此命令并修改地址即可[^3]。 3. **禁止其他所有IP访问22端口** 显式拒绝非指定IP的SSH连接请求: ```bash sudo firewall-cmd --permanent --add-rich-rule=' rule family="ipv4" port port="22" protocol="tcp" reject' ``` **注意**: - 规则的匹配顺序遵循“先允许后拒绝”逻辑,确保允许规则在拒绝规则之前生效[^2]。 4. **重新加载配置并验证** 应用规则并检查配置: ```bash sudo firewall-cmd --reload # 重新加载防火墙 sudo firewall-cmd --list-all # 查看全部规则 ``` 输出中应包含类似内容: ```bash ports: 22/tcp rich rules: rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept rule family="ipv4" port port="22" protocol="tcp" reject ``` #### 重要提示 - **操作风险**:若当前通过SSH远程连接服务器,需确保至少有一个允许IP规则已生效,否则可能立即断开连接。建议在物理终端或带外管理界面操作[^1]。 - **临时放行IP**:若误操作导致锁定,可通过本地终端执行`sudo firewall-cmd --add-source=IP地址 --zone=trusted`临时恢复访问
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值