-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 24000 -j ACCEPT
-A RH-Firewall-1-INPUT -s 121.10.120.24 -p tcp -m tcp –dport 18612 -j ACCEPT
假如你的IPTABLES根底知识还不了解,主张先去看看。
开端装备
咱们来装备一个filter表的防火墙。
(1)检查本机关于IPTABLES的设置状况
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destinaTIon
Chain FORWARD (policy ACCEPT)
target prot opt source desTInaTIon
Chain OUTPUT (policy ACCEPT)
target prot opt source desTInation
Chain RH-Firewall-1-INPUT (0 references)
target prot opt source destination
ACCEPT all — 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp — 0.0.0.0/0 0.0.0.0/0 icmp type 255
ACCEPT esp — 0.0.0.0/0 0.0.0.0/0
ACCEPT ah — 0.0.0.0/0 0.0.0.0/0
ACCEPT udp — 0.0.0.0/0 224.0.0.251 udp dpt:5353
ACCEPT udp — 0.0.0.0/0 0.0.0.0/0 udp dpt:631
ACCEPT all — 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
REJECT all — 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
能够看出我在装置linux时,挑选了有防火墙,并且开放了22,80,25端口。
假如你在装置linux时没有挑选发动防火墙,是这样的
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
什么规矩都没有。
(2)铲除原有规矩。
不论你在装置linux时是否发动了防火墙,假如你想装备归于自己的防火墙,那就铲除现在filter的一切规矩。
[root@tp ~]# iptables -F 铲除预设表filter中的一切规矩链的规矩
[root@tp ~]# iptables -X 铲除预设表filter中运用者自定链中的规矩
咱们在来看一下
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
什么都没有了吧,和咱们在装置linux时没有发动防火墙是相同的。(提早说一句,这些装备就像用指令装备IP相同,重起就会失掉效果),怎样保存。
[root@tp ~]# /etc/rc.d/init.d/iptables save
这样就能够写到/etc/sysconfig/iptables文件里了。写入跋文得把防火墙重起一下,才干起效果。
[root@tp ~]# service iptables restart
现在IPTABLES装备表里什么装备都没有了,那咱们开端咱们的装备吧
(3)设定预设规矩
[root@tp ~]# iptables -P INPUT DROP
[root@tp ~]# iptables -P OUTPUT ACCEPT
[root@tp ~]# iptables -P FORWARD DROP
上面的意思是,当超出了IPTABLES里filter表里的两个链规矩(INPUT,FORWARD)时,不在这两个规矩里的数据包怎样处理呢,那便是DROP(抛弃)。应该说这样装备是很安全的。咱们要操控流入数据,而关于OUTPUT链,也便是流出的包咱们不必做太多约束,而是采纳ACCEPT,也便是说,不在着个规矩里的包怎样办呢,那便是经过。
能够看出INPUT,FORWARD两个链选用的是答应什么包经过,而OUTPUT链选用的是不答应什么包经过。
这样设置仍是挺合理的,当然你也能够三个链都DROP,但这样做我认为是没有必要的,并且要写的规矩就会添加。但假如你只想要有限的几个规矩是,如只做WEB服务器。仍是引荐三个链都是DROP.
注:假如你是长途SSH登陆的话,当你输入第一个指令回车的时分就应该掉了。由于你没有设置任何规矩。
怎样办,去本机操作呗!
(4)添加规矩。
首要添加INPUT链,INPUT链的默许规矩是DROP,所以咱们就写需求ACCETP(经过)的链
为了能选用长途SSH登陆,咱们要敞开22端口。
[root@tp ~]# iptables -A INPUT -p tcp –dport 22 -j ACCEPT
[root@tp ~]# iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT (注:这个规矩,假如你把OUTPUT 设置成DROP的就要写上这一部,好多人都是望了写这一部规矩导致,一直无法SSH.在长途一下,是不是好了。
其他的端口也相同,假如敞开了web服务器,OUTPUT设置成DROP的话,相同也要添加一条链:
[root@tp ~]# iptables -A OUTPUT -p tcp –sport 80 -j ACCEPT ,其他同理。)
假如做了WEB服务器,敞开80端口。
[root@tp ~]# iptables -A INPUT -p tcp –dport 80 -j ACCEPT
假如做了邮件服务器,敞开25,110端口。
[root@tp ~]# iptables -A INPUT -p tcp –dport 110 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp –dport 25 -j ACCEPT
假如做了FTP服务器,敞开21端口
[root@tp ~]# iptables -A INPUT -p tcp –dport 21 -j ACCEPT
[root@tp ~]# iptables -A INPUT -p tcp –dport 20 -j ACCEPT
假如做了DNS服务器,敞开53端口
[root@tp ~]# iptables -A INPUT -p tcp –dport 53 -j ACCEPT
假如你还做了其他的服务器,需求敞开哪个端口,照写就行了。
上面主要写的都是INPUT链,但凡不在上面的规矩里的,都DROP
答应icmp包经过,也便是答应ping,
[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)
答应loopback!(否则会导致DNS无法正常封闭等问题)
IPTABLES -A INPUT -i lo -p all -j ACCEPT (假如是INPUT DROP)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(假如是OUTPUT DROP)
下面写OUTPUT链,OUTPUT链默许规矩是ACCEPT,所以咱们就写需求DROP(抛弃)的链。
削减不安全的端口衔接
[root@tp ~]# iptables -A OUTPUT -p tcp –sport 31337 -j DROP
[root@tp ~]# iptables -A OUTPUT -p tcp –dport 31337 -j DROP
有些些特洛伊木马会扫描端口31337到31340(即黑客语言中的 elite 端口)上的服务。已然合法服务都不运用这些非标准端口来通讯,堵塞这些端口能够有效地削减你的网络上或许被感染的机器和它们的长途主服务器进行独立通讯的时机
还有其他端口也相同,像:31335、27444、27665、20034 NetBus、9704、137-139(smb),2049(NFS)端口也应被制止,我在这写的也不全,有爱好的朋友应该去查一下相关材料。
当然收支更安全的考虑你也能够包OUTPUT链设置成DROP,那你添加的规矩就多一些,就像上边添加
答应SSH登陆相同。照着写就行了。
下面写一下愈加详尽的规矩,便是约束到某台机器
如:咱们只答应192.168.0.3的机器进行SSH衔接
[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp –dport 22 -j ACCEPT
假如要答应,或约束一段IP地址可用 192.168.0.0/24 表明192.168.0.1-255端的一切IP.
24表明子网掩码数。但要记得把 /etc/sysconfig/iptables 里的这一行删了。
-A INPUT -p tcp -m tcp –dport 22 -j ACCEPT 由于它表明一切地址都能够登陆。
或选用指令方法:
[root@tp ~]# iptables -D INPUT -p tcp –dport 22 -j ACCEPT
然后保存,我再说一边,反是选用指令的方法,只在其时收效,假如想要重起后也起效果,那就要保存。写入到/etc/sysconfig/iptables文件里。
[root@tp ~]# /etc/rc.d/init.d/iptables save
这样写 !192.168.0.3 表明除了192.168.0.3的ip地址
其他的规矩衔接也相同这么设置。
在下面便是FORWARD链,FORWARD链的默许规矩是DROP,所以咱们就写需求ACCETP(经过)的链,对正在转发链的监控。
敞开转发功用,(在做NAT时,FORWARD默许规矩是DROP时,有必要做)
[root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state –state RELATED,ESTABLISHED -j ACCEPT
[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
丢掉坏的TCP包
[root@tp ~]#iptables -A FORWARD -p TCP ! –syn -m state –state NEW -j DROP
处理IP碎片数量,避免进犯,答应每秒100个
[root@tp ~]#iptables -A FORWARD -f -m limit –limit 100/s –limit-burst 100 -j ACCEPT
设置ICMP包过滤,答应每秒1个包,约束触发条件是10个包。
[root@tp ~]#iptables -A FORWARD -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT
我在前面只所以答应ICMP包经过,便是由于我在这里有约束。
二,装备一个NAT表放火墙
1,检查本机关于NAT的设置状况
[root@tp rc.d]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all — 192.168.0.0/24 anywhere to:211.101.46.235
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我的NAT现已装备好了的(仅仅供给最简略的署理上网功用,还没有添加防火墙规矩)。关于怎样装备NAT,参阅我的另一篇文章
当然你假如还没有装备NAT的话,你也不必铲除规矩,由于NAT在默许状况下是什么都没有的
假如你想铲除,指令是
[root@tp ~]# iptables -F -t nat
[root@tp ~]# iptables -X -t nat
[root@tp ~]# iptables -Z -t nat
2,添加规矩
添加根本的NAT地址转化,(关于怎么装备NAT能够看我的另一篇文章),
添加规矩,咱们只添加DROP链。由于默许链满是ACCEPT.
避免外网用内网IP诈骗
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
假如咱们想,比方阻挠MSN,QQ,BT等的话,需求找到它们所用的端口或许IP,(个人认为没有太大必要)
例:
制止与211.101.46.253的一切衔接
[root@tp ~]# iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP
禁用FTP(21)端口
[root@tp ~]# iptables -t nat -A PREROUTING -p tcp –dport 21 -j DROP
这样写规模太大了,咱们能够更准确的界说。
[root@tp ~]# iptables -t nat -A PREROUTING -p tcp –dport 21 -d 211.101.46.253 -j DROP
这样只禁用211.101.46.253地址的FTP衔接,其他衔接还能够。如web(80端口)衔接。
依照我写的,你只需找到QQ,MSN等其他软件的IP地址,和端口,以及根据什么协议,只需照着写就行了。
最终:
drop不合法衔接
[root@tp ~]# iptables -A INPUT -m state –state INVALID -j DROP
[root@tp ~]# iptables -A OUTPUT -m state –state INVALID -j DROP
[root@tp ~]# iptables-A FORWARD -m state –state INVALID -j DROP
答应一切现已树立的和相关的衔接
[root@tp ~]# iptables-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# iptables-A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# /etc/rc.d/init.d/iptables save
这样就能够写到/etc/sysconfig/iptables文件里了。写入跋文得把防火墙重起一下,才干起效果.
[root@tp ~]# service iptables restart
别忘了保存,不可就写一部保存一次.你能够一边保存,一边做试验,看看是否到达你的要求,
上面的一切规矩我都试过,没有问题.
写这篇文章,用了我将近1个月的时刻.查找材料,自己做试验,期望对我们有所协助.如有不全及不完善的当地还请提出。
由于本篇文章以装备为主。关于IPTABLES的根底知识及指令指令阐明等我会尽快传上,当然你能够去网上查找一下,仍是许多的。
Linux防火墙iptables学习笔记
一、概要
1、防火墙分类
①包过滤防火墙(pack filtering)在网络层对数据包进行挑选过滤,选用拜访操控列表(Access control table-ACL)检查数据流的源地址,意图地址,源和意图端口,IP等信息。
②署理服务器型防火墙
2、iptables根底
①规矩(rules):网络管理员预界说的条件
②链(chains): 是数据包传达的途径
③表(tables):内置3个表filter表,nat表,mangle表别离用于完成包过滤网络地址转化和包重构的功用
④filter表是体系默许的,INPUT表(进入的包),FORWORD(转发的包),OUTPUT(处理本地生成的包),filter表只能对包进行授受和丢掉的操作。
⑤nat表(网络地址转化),PREROUTING(修正行将到来的数据包),OUTPUT(修正在路由之前本地生成的数据包),POSTROUTING(修正行将出去的数据包)
⑥mangle表,PREROUTING,OUTPUT,FORWORD,POSTROUTING,INPUT
3、其它
iptables是依照次序读取规矩
防火墙规矩的装备主张
Ⅰ 规矩力求简略
Ⅱ 规矩的次序很重要
Ⅲ 尽量优化规矩
Ⅳ 做好笔记
二、装备
1、iptables指令格局
iptables [-t 表] -指令 匹配 操作 (大小写灵敏)
动作选项
ACCEPT 接纳数据包
DROP 丢掉数据包
REDIRECT 将数据包从头转向到本机或另一台主机的某一个端口,一般功用完成通明署理或对外开放内网的某些服务
SNAT 源地址转化
DNAT 意图地址转化
MASQUERADE IP假装
LOG 日志功用
2、界说规矩
①先回绝一切的数据包,然后再答应需求的数据包
iptalbes -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
②检查nat表一切链的规矩列表
iptables -t nat -L
③添加,刺进,删去和替换规矩
iptables [-t 表名] 《-A|I|D|R》 链名 [规矩编号] [-i|o 网卡称号] [-p 协议类型] [-s 源ip|源子网] [–sport 源端口号] [-d 意图IP|方针子网] [–dport 方针端口号] [-j 动作]
参数:-A 添加
-I 刺进
-D 删去
-R 替换
三、比如
①iptables -t filter -A INPUT -s 192.168.1.5 -i eth0 -j DROP
制止IP为192.168.1.5的主机从eth0拜访本机②iptables -t filter -I INPUT 2 -s 192.168.5.0/24 -p tcp –dport 80 -j DROP
制止子网192.168.5.0拜访web服务③iptables -t filter -I INPUT 2 -s 192.168.7.9 -p tcp –dport ftp -j DROP
制止IP为192.168.7.9拜访FTP服务
④iptables -t filter -L INPUT
检查filter表中INPUT链的规矩
⑤iptables -t nat -F
删去nat表中的一切规矩
⑥iptables -I FORWARD -d wwww.playboy.com -j DROP
制止拜访www.playboy.com网站
⑦iptables -I FORWARD -s 192.168.5.23 -j DROP
制止192.168.5.23上网