
我们可以通过iptables命令来设置netfilter的过滤机制。
iptables里有3张表:
> Filter(过滤器),进入Linux本机的数据包有关,是默认的表。
> NAT(地址转换),与Linux本机无关,主要与Linux主机后的局域网内计算机相关。
> Mangle(破坏者),这个表格主要是与特殊的数据包的路由标志有关(通常不用涉及到这个表的修改,对这个表的修改破坏性很大,慎改之)。
每张表里都还有多条链:
Filter:INPUT, OUTPUT, FORWARD
NAT:PREROUTING, POSTROUTING, OUTPUT
Mangle:PREROUTING, OUTPUT, INPUT, FORWARD
iptables命令的使用
基本格式:iptables [-t table] -CMD chain CRETIRIA -j ACTION
-t table:3张表中的其中一种filter, nat, mangle,如果没有指定,默认是filter。
CMD: *** 作命令。查看、添加、替换、删除等。
chain:链。指定是对表中的哪条链进行 *** 作,如filter表中的INPUT链。
CRETIRIA:匹配模式。对要过滤的数据包进行描述
ACTION: *** 作。接受、拒绝、丢弃等。
查看
格式:iptables [-t table] -L [-nv]
修改
添加
格式:iptables [-t table] -A chain CRETIRIA -j ACTION
将新规则加入到表table(默认filter)的chain链的最后位置
插入
格式:iptables [-t table] -I chain pos CRETIRIA -j ACTION
将新规则插入到table表(默认filter)chain链的pos位置。原来之后的规则都往后推一位。pos的有效范围为:1 ~ num+1
替换
格式:iptables [-t table] -R chain pos CRETIRIA -j ACTION
用新规则替换table表(默认filter)chain链的pos位置的规则。pos的有效范围为:1 ~ num
删除
格式:iptables [-t table] -D chain pos
删除table表(默认filter)chain链的pos位置的规则。pos的有效范围为:1 ~ num
包匹配(CRETIRIA)
上面没有介绍CRETIRIA的规则,在这小节里详细介绍。包匹配就是用于描述需要过滤的数据包包头特殊的字段。
指定网口:
-i :数据包所进入的那个网络接口,例如 eth0、lo等,需与INPUT链配合
-o: 数据包所传出的那么网络接口,需与OUTPUT链配合
指定协议:
-p:tcp, udp, icmp或all
指定IP网络:
-s:来源网络。可以是IP或网络
IP: 1921680100
网络: 19216800/24 或 19216800/2552552550 均可
可以在前加 ! 表示取反
-d:目标网格。同 -s
指定端口:
--sport:指定来源端口。可以是单个端口,还可以是连续的端口,例如:1024:65535。
--dport:指定目标端口。同--sport
注意:要指定了tcp或udp协议才会有效。
指定MAC地址:
-m mac --mac-source aa:bb:cc:dd:ee:ff
指定状态:
-m state --state STATUS
STATUS可以是:
> INVALID,无效包
> ESTABLISHED,已经连接成功的连接状态
> NEW,想要新立连接的数据包
> RELATED,这个数据包与主机发送出去的数据包有关,(最常用)
例如:只要已建立连接或与已发出请求相关的数据包就予以通过,不合法数据包就丢弃
-m state --state RELATED,ESTABLISHED
ICMP数据比对
ping *** 作发送的是ICMP包,如果不想被ping到,就可以拒绝。
--icmp-type TYPE
TYPE如下:
8 echo-request(请求)
0 echo-reply(响应)
注意:需要与 -p icmp 配合使用。
*** 作(ACTION)
DROP,丢弃
ACCEPT,接受
REJECT,拒绝
LOG,跟踪记录,将访问记录写入 /var/log/messages
保存配置
将新设置的规则保存到文件
格式:iptables-save [-t table]
将当前的配置保存到 /etc/sysconfig/iptables
其它
格式:iptables [-t table] [-FXZ]
-F :请除所有的已制订的规则
-X :除掉所有用户“自定义”的chain
-Z :将所有的统计值清0如果159226是一个公网IP,那本来就能访问外部了。
如果你说的是对端服务器上的防火墙设置,把下面内容写入一个文本,再用sh调用就可了
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dport 22,389 -m state --state NEW -j ACCEPTLinux下开启/关闭防火墙命令
1、永久性生效,重启后不会复原。
开启: chkconfig iptables on
关闭: chkconfig iptables off
2、 即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop
需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭 *** 作。linux下要使用iptables限制只有指定的ip才能访问本机则需要先设置一个默认的规则
iptables有默认的规则,它可以适用于所有的访问
因为只有指定或特定的ip地址才能访问本机
所以可以将默认的规则设置为所有访问全部阻止(当然这里需要注意下,如果你要设置的机器是在远端,比如vps则需要注意在设置默认规则的同时要将与该服务器链接的ip添加进白名单,否则在设置完默认阻止后你也无法访问这台服务器,也无法再进行 *** 作了,我们可以使用分号;或者&&来在同一个命令行下来完成默认阻止和将自己的ip添加进白名单,假如你的ip地址为1234则可以这样输入iptables -P INPUT DROP;iptables -A INPUT -s 1234 -p tcp -j ACCEPT,或者也可以指定一个端口)
设置默认规则后则可以添加白名单了
比如允许2345访问则可以
iptables -A INPUT -s 2345 -p tcp -j ACCEPT
如果要限定的不是整个服务器而只是该服务器中的某个服务
比如web服务(一般端口在80,>1.入门 *** 作
Suse
进入命令窗口
ctrl
alt
+
f1-f6
回到桌面
ctrl
alt
+
f7
(也可能是f8)
2.配置Suse
静态IP地址
Suse的
网络配置
文件存放在:/etc/sysconfig/network目录下,其中的类似ifcfg-eth-id-00:40:ca:c7:04:fc这样的文件是以太网卡的配Linux中的防火墙有多种,一般指的iptables。
1
Linux防火墙(Iptables)重启系统生效
1
2
开启:
chkconfig
iptables
on
关闭:
chkconfig
iptables
off
2Linux防火墙(Iptables)
即时生效,重启后失效
1
2
开启:
service
iptables
start
关闭:
service
iptables
stop
3其它linux防火墙,请自行参考说明文档。一般对于Linux下的服务都可以用以上命令执行开启和关闭 *** 作,而防火墙通常都以服务形式运行,因此也算是一个通用的方法。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)