iptables学习笔记

1、概念

iptables有2个表:filter和nat。前者用于过滤,后者是nat用的。

iptables还有4个链:INPUT、FORWARD、PREROUTING、POSTROUTING。

前两者对应于filter表,INPUT匹配目的IP是本机的数据包,FILTER匹配穿过本机的数据包。

PREROUTING位于NAT表,用于修改目的地址(DNAT);POSTROUTING用于修改源地址(SNAT)。

2、基本命令

命令的格式是:

iptables  -t  [表名]  [操作命令]  [操作的链名]  [规则号码(可选)]  [匹配条件(可选)]  -j  [匹配后的动作]

(1)操作命令

操作命令有:-A -I -D -R -P -F。

-A:追加到最后一条规则,如:iptables -t filter -A INPUT -j DROP。匹配所有本机数据包,丢弃。

-I:插入一条规则,如:iptables -t filter -A INPUT 3 -j DROP。在filter表中插入为第3条记录,作用同上。

-D:删除一条规则,如:iptables -D INPUT 3。在filter表中删除第3条规则。

-R:替换规则,用的不多,不学习了。

-P:设置某个链的默认动作,如:iptables -P INPUT DROP。如果没有匹配规则,则按此处理,丢弃所有包。

-F:清空规则,但仍保留默认规则!设置过-P后,一定小心使用-F!

-L:查询。

(2)匹配条件

-i <网络接口(入)>,如:-i eth0,匹配从eth0进来的所有数据。

-o <网络接口(出)>,如:-o eth0,匹配从eth0出去的所有数据。

-s <来源地址(主要为IP)>,如:-s 192.168.0.1,匹配来自192.168.0.1的数据包。

-d <目的地址(主要为IP)>,如:-d 192.168.0.2,匹配发往192.168.0.2的数据包。

-p <协议(tcp/udp/icmp)>,如:-p tcp;-p udp;-p icmp 8。最后一个8表示icmp类型即ping。

–sport <源端口>,如:–sport  1000,匹配源端口是1000的。

–dport <目的端口>,如:–dport  1000:3000,匹配目的端口是1000到3000的。

上述匹配条件可以组合使用,但是port必须配合p使用!

(3)处理动作

-j ACCEPT,允许数据包通过本链路(不再继续匹配)。

-j DROP,阻止通过本链(不再继续匹配)。

-j SNAT –to IP(IP池),源地址NAT转换,对应POSTROUTING链。如将内网192.168.0.0地址修改成1.1.1.1(地址 池):iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT 1.1.1.1(1.1.1.1-1.1.1.10地址池)

-j DNAT –to IP(IP池),目的地址NAT转换,对应PREROUTING链。类似SNAT,不再举例。

(4)附加模块

-m state,匹配状态,NEW(区别于TCP)、ESTABLISTHED(已连接)、RELEASED、INVALID(无法识别)。

-m mac –macsource MACADDRESS,匹配MAC地址。iptables -A FORWARD -m –mac-source xx:xx:xx:xx:xx:xx -j DROP。

-m limmit,用一定速率匹配,-m limit –limit 50/s,只是匹配,非限制。

-m multiport,匹配多个端口

3、简单的服务器防护

#四号程序员, http://www.coder4.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
#clean
/sbin/iptables -F
#allow lo
/sbin/iptables -A INPUT -i lo -j ACCEPT
#allow already connected
/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#allow all output
/sbin/iptables -A OUTPUT -j ACCEPT
#white list ip
/sbin/iptables -A INPUT -s xx.xx.xx.xx -j ACCEPT
#ping/http/https/ssh
/sbin/iptables -A INPUT -p icmp --icmp- type 8 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#default drop
/sbin/iptables -A INPUT -j REJECT
/sbin/iptables -A FORWARD -j REJECT

继续参考:http://www.vpser.net/security/linux-iptables.html

屏蔽IP

#四号程序员, http://www.coder4.com
1
2
3
4
5
6
7
8
9
10
11
12
#如果只是想屏蔽IP的话“3、开放指定的端口”可以直接跳过。
#屏蔽单个IP的命令是
/sbin/iptables -I INPUT -s 123.45.6.7 -j DROP
#封整个段即从123.0.0.1到123.255.255.254的命令
/sbin/iptables -I INPUT -s 123.0.0.0 /8 -j DROP
#封IP段即从123.45.0.1到123.45.255.254的命令
/sbin/iptables -I INPUT -s 124.45.0.0 /16 -j DROP
#封IP段即从123.45.6.1到123.45.6.254的命令是
/sbin/iptables -I INPUT -s 123.45.6.0 /24 -j DROP

查看、删除已经添加的规则

#四号程序员, http://www.coder4.com
1
2
3
4
5
6
#查看
/sbin/iptables -L -n
#删除
#格式 iptables -L -n --line-numbers

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux系统中,可以使用iptables命令实现端口转发。iptables是用于实现防火墙、数据转发等功能的工具。iptables具有不同的表(tables),每个表都包含多个链(chains),每条链都包含一个或多个规则(rules)。 要在Linux系统中进行端口转发,可以使用以下命令: 1. 端口转发到本地其他端口: iptables -t nat -A PREROUTING -p tcp --dport [源端口号] -j REDIRECT --to-port [目标端口号] 例如,要将本机的2222端口转发到本机的22端口,可以使用以下命令: iptables -t nat -A PREROUTING -p tcp --dport 2222 -j REDIRECT --to-port 22 2. 端口转发到其他机器: iptables -t nat -A PREROUTING -d [本机IP地址] -p tcp --dport [源端口号] -j DNAT --to-destination [目标IP地址]:[目标端口号] iptables -t nat -A POSTROUTING -d [目标IP地址] -p tcp --dport [目标端口号] -j SNAT --to [本机IP地址] 例如,要将本机的192.168.172.130的8000端口转发到192.168.172.131的80端口,可以使用以下命令: iptables -t nat -A PREROUTING -d 192.168.172.130 -p tcp --dport 8000 -j DNAT --to-destination 192.168.172.131:80 iptables -t nat -A POSTROUTING -d 192.168.172.131 -p tcp --dport 80 -j SNAT --to 192.168.172.130 注意,以上命令只是示例,实际使用时需要根据实际情况进行相应的修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Linux端口转发的几种常用方法](https://blog.csdn.net/u010680373/article/details/124779749)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [iptables学习笔记:端口转发之“外网访问内网”](https://blog.csdn.net/subfate/article/details/52659446)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值