iptables开放22、80端口,以及允许本机访问本机所有端口协议

本文详细介绍了如何使用 iptables 命令进行防火墙规则设置,包括清除所有规则、允许 SSH 连接、开放 HTTP 服务及域名解析等常用操作,并提供了具体的命令实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iptables -F /* 清除所有规则 */
 iptables -A INPUT -p tcp --dport 22 -j ACCEPT /*允许包从22端口进入*/
 iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT /*允许从22端口进入的包返回*/
 iptables -A OUTPUT -p udp --dport 53 -j ACCEPT /* 域名解析端口,一般不开 */
 iptables -A INPUT -p udp --sport 53 -j ACCEPT /* 域名解析端口,一般不开 */
 iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT /*允许本机访问本机*/
 iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
 iptables -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT /*允许所有IP访问80端口*/
 iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
 iptables-save > /etc/sysconfig/iptables /*保存配置*/
 iptables -L /* 显示iptables列表 */

转载于:https://my.oschina.net/qihh/blog/62144

<think>首先,用户的问题是:“我想配置iptables规则以仅允许访问本机的22端口请问如何使用iptables配置规则只允许访问本地22端口”,他们提到了参考站内的引用[1],[2],[3]。关键点:-用户想配置iptables规则,只允许访问本机的22端口。-22端口通常是SSH服务。-规则需要确保只有访问22端口的流量被允许,其他所有流量被拒绝。从用户提供的引用中:-引用[1]提到了配置iptables规则限制端口访问,包括Redis的例子和一些相关资源。-引用[2]给出了iptables命令的通用参数,如`-p`、`-s`、`-d`、`--sport`、`--dport`、`-i`、`-o`。-引用[3]直接提到了设置iptables允许访问端口22。我的回答需要:-使用中文。-结构清晰,逐步解释。-遵守LaTeX格式:行内数学表达式用`$...$`,独立公式用`$$...$$`(但在这个上下文中可能不常用)。-生成相关问题在末尾。-在引用的段落末尾添加引用标识,如[^1]。回答结构:1.引言:解释目标和重要性(例如,只允许22端口访问可以增强系统安全)。2.列出当前默认规则(可选,但建议用户备份现有规则)。3.逐步配置规则:-清空现有规则(使用`iptables-F`)。-设置默认策略:拒绝所有输入、输出、转发流量(INPUT,OUTPUT,FORWARDchains默认设为DROP)。-添加允许22端口的规则:只允许TCP流量到端口22。-根据需要添加本地回环接口的允许(lo接口)。-考虑添加已建立连接的允许(ACCEPTESTABLISHED,RELATED)。4.保存规则以确保重启后生效(例如,在CentOS7上使用iptables-save和systemd)。5.测试规则。6.注意事项和潜在问题。生成相关问题:-根据用户查询,生成几个相关问题,如优化、常见错误、其他端口配置等。使用引用:-引用[1],[2],[3]来自用户消息,所以我应该自然地引用它们。例如,在解释参数时引用[2],在提到端口22时引用[3],在讨论持久化规则时引用[1]。确保LaTeX正确:如果有数学表达式使用,但这里可能主要是命令和代码块。例如,描述端口和规则时,如果有不等式或方程,用`$...$`。可能不是必需的,但如“规则匹配”之类的可以用。输出格式:-开始直接回答。-用代码块展示命令。-结束时添加相关问题。完整回答大纲:1.标题:配置iptables允许访问22端口。2.解释:简述iptables的作用和目标。3.步骤:-步骤1:备份当前规则(可选)。-步骤2:清空规则(`iptables-F`)。-步骤3:设置默认策略(`iptables-PINPUTDROP`,`iptables-PFORWARDDROP`,`iptables-POUTPUTDROP`)。-步骤4:添加允许本地回环接口的规则。-步骤5:添加允许22端口的规则(使用`--dport22`和`-ptcp`)。-步骤6:添加允许相关连接的规则(例如,`iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT`)。-步骤7:考虑允许输出流量(用户可能希望允许本机发起的连接)。-步骤8:保存规则(例如,`serviceiptablessave`或CentOS7特定方式)。4.示例代码块。5.注意事项:如锁住自己(如果从远程操作,确保规则正确)。6.引用相关部分。在引用中添加标识:[^1],[^2],[^3]。既然用户提供了这些引用,我应该在解释中引用它们。最终生成相关问题。</think> ### 配置iptables规则仅允许访问本地22端口 要配置iptables规则,确保只有访问本地22端口(SSH服务)的流量被允许,其他所有流量被拒绝,可以按以下步骤操作。22端口是SSH服务的默认端口,限制其他端口访问能显著提升系统安全性。操作前请确保您有root权限,并在直接连接服务器的环境中执行(避免规则错误导致SSH断开)[^1]。下面是一个详细、安全的配置流程。 #### 步骤1: 备份当前iptables规则(可选) 操作前备份现有规则,以防配置错误: ```bash iptables-save > /etc/iptables.bak ``` #### 步骤2: 清空现有规则并设置默认策略 先清空所有规则,然后设置INPUT、OUTPUT和FORWARD链的默认策略为`DROP`(拒绝所有流量)[^2]: ```bash iptables -F # 清空所有链规则 iptables -X # 删除用户自定义链 iptables -P INPUT DROP # 默认拒绝所有输入流量 iptables -P OUTPUT DROP # 默认拒绝所有输出流量 iptables -P FORWARD DROP # 默认拒绝所有转发流量 ``` #### 步骤3: 添加必要规则 逐步添加规则,仅放行22端口和基础流量: - **允许本地回环接口(lo)**:确保系统内部通信正常。 ```bash iptables -A INPUT -i lo -j ACCEPT # 允许输入到lo接口 iptables -A OUTPUT -o lo -j ACCEPT # 允许输出从lo接口 ``` - **允许22端口访问**:只接受TCP协议的22端口输入流量(SSH)[^3]。 ```bash iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许访问22端口 ``` - **允许已建立和相关连接**:避免阻断响应流量(如SSH会话)[^2]。 ```bash iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ``` - **允许OUTPUT链的DNS解析**:如果需要外部访问(如软件更新),添加DNS规则: ```bash iptables -A OUTPUT -p udp --dport 53 -j ACCEPT # 允许DNS查询 ``` #### 步骤4: 保存规则并确保开机生效 在CentOS 7中,需保存规则到配置文件并启用服务(其他系统类似): ```bash service iptables save # 保存规则到/etc/sysconfig/iptables systemctl enable iptables # 开机自启 systemctl start iptables # 立即生效 ``` > **注意**:如果系统使用firewalld(默认在CentOS 7),需先关闭它:`systemctl stop firewalld && systemctl disable firewalld`。iptables规则持久化操作见[^1]。 #### 步骤5: 验证规则 查看当前规则列表: ```bash iptables -L -n -v # 显示规则详情 ``` 输出应包含类似内容: ``` Chain INPUT (policy DROP) ACCEPT all -- * lo ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ... ``` 测试SSH连接:从另一台设备尝试 `ssh username@your_server_ip`,应成功连接。其他端口访问如HTTP(80端口)应被拒绝。 #### 注意事项 - **锁风险**:如果从远程配置,规则错误可能阻断SSH。建议在服务器本地操作,或在规则中添加临时IP允许(如 `iptables -A INPUT -p tcp -s your_ip --dport 22 -j ACCEPT`),配置完成后再移除[^1]。 - **性能影响**:iptables基于链式规则匹配,复杂度为 $O(n)$($n$ 是规则数),规则过多时可能影响网络性能。 - **安全增强**:结合 `--source`(`-s`)限制来源IP范围更安全,例如 `iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT` 只允许特定子网访问[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值