iptables防火墙开放、关闭某端口

开放某端口:iptables -I INPUT -p tcp --dport 80 -j ACCEPT

关闭某端口 : iptables -D INPUT -p tcp --dport 80 -j ACCEPT

屏蔽某个IP请求 : iptables -I INPUT -s 192.168.0.1 -j DROP (屏蔽单个IP192.168.0.1)

屏蔽IP某段请求 : iptables -I INPUT  -s 192.168.0.0/16  -j DROP(屏蔽单个IP192.168.0.0-192.168.255.255)

屏蔽整个IP段请求 :iptables -I INPUT -s 192.168.0.0/16   -j DROP(屏蔽单个IP192.0.0.0-192.255.255.255)

添加iptables配置项:service iptables save  

重新启动服务:service iptables restart

 

查看状态:iptables -L -n

 

iptables 参数选项:

-t<表>:指定要操纵的表;

-A:向规则链中添加条目;

-D:从规则链中删除条目;

-i:向规则链中插入条目;

-R:替换规则链中的条目;

-L:显示规则链中已有的条目;

-F:清楚规则链中已有的条目;

-Z:清空规则链中的数据包计算器和字节计数器;

-N:创建新的用户自定义规则链;

-P:定义规则链中的默认目标;

-h:显示帮助信息;

-p:指定要匹配的数据包协议类型;

-s:指定要匹配的数据包源ip地址;

-j<目标>:指定要跳转的目标;

-i<网络接口>:指定数据包进入本机的网络接口;

-o<网络接口>:指定数据包要离开本机所使用的网络接口。

Linux Iptables命令列表: 用iptables -ADC 来指定链的规则,-A添加 -D删除 -C 修改 iptables - [RI] chain rule num rule-specification[option] 用iptables - RI 通过规则的顺序指定 iptables -D chain rule num[option] 删除指定规则 iptables -[LFZ] [chain][option] 用iptables -LFZ 链名 [选项] iptables -[NX] chain 用 -NX 指定链 iptables -P chain target[options] 指定链的默认目标 iptables -E old-chain-name new-chain-name -E 旧的链名 新的链名 用新的链名取代旧的链名 说明 Iptalbes 是用来设置、维护和检查Linux内核的IP包过滤规则的。 可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作'target'(目标),也可以跳向同一个表内的用户定义的链。 TARGETS 防火墙的规则指定所检查包的特征,和目标。如果包不匹配,将送往该链中下一条规则检查;如果匹配,那么下一条规则由目标值确定.该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT[通过], DROP[删除], QUEUE[排队], 或者 RETURN[返回]。 ACCEPT 表示让这个包通过。DROP表示将这个包丢弃。QUEUE表示把这个包传递到用户空间。RETURN表示停止这条链的匹配,到前一个链的规则重新开始。如果到达了一个内建的链(的末端),或者遇到内建链的规则是RETURN,包的命运将由链准则指定的目标决定。
<think>好的,用户现在问的是如何在iptables防火墙中允许22端口。之前他们问过怎么关闭Kali的防火墙,现在可能是在配置过程中遇到了问题,需要开放特定端口,比如SSH用的22端口。用户可能是想远程管理他们的Kali系统,或者运行某个服务需要使用这个端口。 首先,我得确定用户对iptables的了解程度。之前的回答里已经提到了关闭iptables的方法,但现在他们需要的是允许特定端口,而不是完全关闭防火墙,这说明用户可能已经意识到完全关闭防火墙的风险,所以转而选择更安全的做法,只开放必要的端口。 接下来,我需要回忆iptables的基本结构和常用命令iptables的规则链包括INPUT、OUTPUT、FORWARD,用户需要允许22端口,应该是在INPUT链中添加规则,因为这是控制进入系统的流量。22端口通常用于SSH,所以用户可能想允许SSH连接。 然后,要确认iptables的默认策略。如果默认策略是DROP,那么添加允许22端口的规则就足够了。但如果默认策略是ACCEPT,可能还需要其他规则来限制不必要的流量,不过用户的问题只是允许22,所以可能不需要涉及修改默认策略,除非特别说明。 需要考虑TCP和UDP协议,不过SSH通常使用TCP,所以应该指定协议为TCP。如果用户不确定,可能需要提醒他们检查服务使用的协议。 另外,用户可能需要持久化这些规则,因为iptables的规则默认在重启后会丢失。之前提到过使用iptables-persistent或者保存到规则文件,这里需要再次强调这一点,避免用户配置后重启失效。 还要注意语法是否正确,比如使用-A INPUT来追加规则,-p指定协议,--dport指定目标端口,-j ACCEPT指定动作。如果有防火墙前面有其他规则可能会影响这条规则的生效,比如如果有拒绝所有的规则在允许22之前,那么规则顺序会有问题,需要确保允许规则在拒绝之前。不过一般来说,默认策略如果是ACCEPT的话,可能不会有问题,但用户如果之前修改过规则,可能需要检查规则顺序。 用户可能还会遇到无法连接的问题,这时候需要提示他们检查iptables规则是否生效,服务是否监听正确端口,以及是否有其他防火墙(如ufw或nftables)在干扰。此外,SELinux或AppArmor也可能影响连接,但Kali默认可能没有启用这些,不过还是可以提及一下。 最后,提供验证步骤,比如使用iptables -L命令查看规则,用nmap或telnet测试端口是否开放,确保用户能够确认配置成功。同时,安全建议也是必要的,提醒用户只开放必要端口,使用密钥认证等增强SSH安全的措施。</think>在 `iptables` 防火墙中允许 **22 端口**(通常用于 SSH 服务)的操作步骤如下: --- ### **1. 临时允许 22 端口(重启失效)** ```bash # 允许 TCP 协议 22 端口的传入流量(SSH 默认使用 TCP): sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 如果需允许 UDP 协议的 22 端口(极少用到,通常不需要): sudo iptables -A INPUT -p udp --dport 22 -j ACCEPT ``` --- ### **2. 持久化规则(重启后仍生效)** `iptables` 规则默认在系统重启后会丢失,需保存规则: #### **方法 1:使用 `iptables-persistent` 工具** ```bash # 安装工具(如果未安装): sudo apt install iptables-persistent -y # 保存当前规则: sudo iptables-save > /etc/iptables/rules.v4 sudo ip6tables-save > /etc/iptables/rules.v6 ``` #### **方法 2:手动保存与加载** ```bash # 保存规则到文件: sudo iptables-save > /root/iptables-backup # 重启后恢复规则: sudo iptables-restore < /root/iptables-backup ``` --- ### **3. 验证规则是否生效** ```bash # 查看当前 iptables 规则: sudo iptables -L INPUT -n --line-numbers # 预期输出中应包含类似以下行: # ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ``` --- ### **4. 额外配置(可选)** #### **限制来源 IP(增强安全性)** 仅允许特定 IP 访问 22 端口(例如 `192.168.1.100`): ```bash sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT ``` #### **设置默认策略(谨慎操作)** 如果默认策略是 `DROP`,需确保允许 22 端口的规则在拒绝规则之前: ```bash # 设置默认策略为 DROP(仅推荐在严格安全需求时使用): sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT # 允许已建立的连接和本地回环: sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A INPUT -i lo -j ACCEPT ``` --- ### **5. 测试 SSH 连接** 使用另一台机器测试 22 端口是否开放: ```bash telnet <你的IP> 22 # 或 nmap -p 22 <你的IP> ``` --- ### **注意事项** 1. **规则顺序**:`iptables` 规则按顺序匹配,确保允许 22 端口的规则在拒绝规则之前。 2. **防火墙默认策略**:如果默认策略是 `DROP`,需明确允许必要流量。 3. **IPv6 支持**:若需允许 IPv6 流量,使用 `ip6tables` 命令并保存到 `rules.v6`。 4. **服务状态**:确保 SSH 服务已启动: ```bash sudo systemctl status ssh ``` --- ### **推荐安全实践** - 尽量使用 **密钥认证** 替代密码登录 SSH。 - 结合工具如 `fail2ban` 防御暴力破解。 - 非必要时不要长期开放 22 端口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值