linux中iptables配置⽂件及命令详解详解iptables配置⽂件
直接改iptables配置就可以了:vim /etc/sysconfig/iptables。
1、关闭所有的 INPUT FORWARD OUTPUT 只对某些端⼝开放。
下⾯是命令实现:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
再⽤命令 iptables -L -n 查看是否设置好,好看到全部 DROP 了
这样的设置好了,我们只是临时的,重启服务器还是会恢复原来没有设置的状态
还要使⽤ service iptables save 进⾏保存
看到信息 firewall rules 防⽕墙的规则其实就是保存在 /etc/sysconfig/iptables
可以打开⽂件查看 vi /etc/sysconfig/iptables
2、
下⾯我只打开22端⼝,看我是如何操作的,就是下⾯2个语句(⼀下为命令⾏模式)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
再查看下 iptables -L -n 是否添加上去, 看到添加了
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:22
现在Linux服务器只打开了22端⼝,⽤测试⼀下是否可以链接上去。
可以链接上去了,说明没有问题。
最后别忘记了保存对防⽕墙的设置
通过命令:service iptables save 进⾏保存
重启iptables
service iptables save && service iptables restart
关闭防⽕墙
chkconfig iptables off && service iptables stop
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
针对这2条命令进⾏⼀些讲解吧
-A 参数就看成是添加⼀条 INPUT 的规则
-p 指定是什么协议我们常⽤的tcp 协议,当然也有udp 例如53端⼝的DNS
到时我们要配置DNS⽤到53端⼝⼤家就会发现使⽤udp协议的
⽽ --dport 就是⽬标端⼝当数据从外部进⼊服务器为⽬标端⼝
⽽ --dport 就是⽬标端⼝当数据从外部进⼊服务器为⽬标端⼝
反之数据从服务器出去则为数据源端⼝使⽤ --sport
-j 就是指定是 ACCEPT 接收或者 DROP 不接收
3、禁⽌某个IP访问
1台Linux服务器,2台windows xp 操作系统进⾏访问
Linux服务器ip 192.168.1.99
xp1 ip: 192.168.1.2
xp2 ip: 192.168.1.8
下⾯看看我2台xp 都可以访问的
192.168.1.2 这是 xp1 可以访问的,
192.168.1.8 xp2 也是可以正常访问的。
那么现在我要禁⽌ 192.168.1.2 xp1 访问, xp2 正常访问,
下⾯看看演⽰
通过命令 iptables -A INPUT -p tcp -s 192.168.1.2 -j DROP
这⾥意思就是 -A 就是添加新的规则,怎样的规则呢?由于我们访问⽹站使⽤tcp的,
我们就⽤ -p tcp , 如果是 udp 就写udp,这⾥就⽤tcp了, -s就是来源的意思,
ip来源于 192.168.1.2 ,-j 怎么做我们拒绝它这⾥应该是 DROP
好,看看效果。好添加成功。下⾯进⾏验证⼀下是否⽣效
⼀直出现等待状态最后该页⽆法显⽰,这是 192.168.1.2 xp1 的访问被拒绝了。
再看看另外⼀台 xp 是否可以访问,是可以正常访问的 192.168.1.8 是可以正常访问的
4、如何删除规则
⾸先我们要知道这条规则的编号,每条规则都有⼀个编号
通过 iptables -L -n --line-number 可以显⽰规则和相对应的编号
num target prot opt source destination
1 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
2 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
3 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
多了 num 这⼀列,这样我们就可以看到刚才的规则对应的是编号2
那么我们就可以进⾏删除了
iptables -D INPUT 2
删除INPUT链编号为2的规则。
再 iptables -L -n 查看⼀下已经被清除了。
5、过滤⽆效的数据包
假设有⼈进⼊了服务器,或者有病毒⽊马程序,它可以通过22,80端⼝像服务器外传送数据。它的这种⽅式就和我们正常访问22,80端⼝区别。它发向外发的数据不是我们通过访问⽹页请求⽽回应的数据包。
下⾯我们要禁⽌这些没有通过请求回应的数据包,统统把它们堵住掉。
iptables 提供了⼀个参数是检查状态的,下⾯我们来配置下 22 和 80 端⼝,防⽌⽆效的数据包。iptabl
es -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
可以看到和我们以前使⽤的:
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
多了⼀个状态判断。
同样80端⼝也⼀样,现在删掉原来的2条规则,
iptables -L -n --line-number 这个是查看规则⽽且带上编号。我们看到编号就可以
删除对应的规则了。
iptables -D OUTPUT 1 这⾥的1表⽰第⼀条规则。
当你删除了前⾯的规则,编号也会随之改变。看到了吧。
好,我们删除了前⾯2个规则,22端⼝还可以正常使⽤,说明没问题了
下⾯进⾏保存,别忘记了,不然的话重启就会还原到原来的样⼦。
service iptables save 进⾏保存。
Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
其实就是把刚才设置的规则写⼊到 /etc/sysconfig/iptables ⽂件中。
6、DNS端⼝53设置
下⾯我们来看看如何设置iptables来打开DNS端⼝,DNS端⼝对应的是53
⼤家看到我现在的情况了吧,只开放22和80端⼝,我现在看看能不能解析域名。
le 输⼊这个命令后,⼀直等待,说明DNS不通
出现下⾯提⽰:
;; connection timed out; no servers could be reached
ping ⼀下域名也是不通
[root@localhost ~le
ping: unknown le
我这⾥的原因就是 iptables 限制了53端⼝。
有些服务器,特别是Web服务器减慢,DNS其实也有关系的,⽆法发送包到DNS服务器导致的。下⾯演⽰下如何使⽤ iptables 来设置DNS 53这个端⼝,如果你不知道域名服务端⼝号,你
可以⽤命令 : grep domain /etc/services
[root@localhost ~grep domain /etc/services
domain 53/tcp # name-domain server
domain 53/udp
domaintime 9909/tcp # domaintime
domaintime 9909/udp # domaintime
看到了吧,我们⼀般使⽤ udp 协议。
好了,开始设置。。。
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
这是我们 ping ⼀个域名,数据就是从本机出去,所以我们先设置 OUTPUT,
我们按照ping这个流程来设置。
然后 DNS 服务器收到我们发出去的包,就回应⼀个回来
然后 DNS 服务器收到我们发出去的包,就回应⼀个回来
iptables -A INPUT -p udp --sport 53 -j ACCEPT
同时还要设置
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
好了,下⾯开始测试下,可以⽤ iptables -L -n 查看设置情况,确定没有问题就可以测试了
[root@localhost ~iptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:22 state ESTABLISHED ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:80 state ESTABLISHED ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:53
可以测试⼀下是否 DNS 可以通过iptables 了。
[root@localhost ~le
le is an alias for le.
le has address 64.233.189.104
le has address 64.233.189.147
le has address 64.233.189.99
正常可以解析 google 域名。
ping ⽅⾯可能还要设置些东西。
⽤ nslookup 看看吧
[root@localhost ~nslookup
> le
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
le canonical name = le.
Name: le
Address: 64.233.189.147
Name: le
Address: 64.233.189.99
Name: le
Address: 64.233.189.104
Address: 64.233.189.104
说明本机DNS正常, iptables 允许53这个端⼝的访问。
7、iptables对ftp的设置
现在我开始对ftp端⼝的设置,按照我们以前的视频,添加需要开放的端⼝
ftp连接端⼝有2个 21 和 20 端⼝,我现在添加对应的规则。
[root@localhost rootiptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@localhost rootiptables -A INPUT -p tcp --dport 20 -j ACCEPT
[root@localhost rootiptables -A OUTPUT -p tcp --sport 21 -j ACCEPT
[root@localhost rootiptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
好,这样就添加完了,我们⽤浏览器访问⼀下ftp,出现超时。
所以我刚才说 ftp 是⽐较特殊的端⼝,它还有⼀些端⼝是数据传输端⼝,
例如⽬录列表,上传,下载⽂件都要⽤到这些端⼝。
⽽这些端⼝是任意端⼝。。。这个任意真的⽐较特殊。
如果不指定什么⼀个端⼝范围, iptables 很难对任意端⼝开放的,
如果iptables允许任意端⼝访问,那和不设置防⽕墙没什么区别,所以不现实的。
那么我们的解决办法就是指定这个数据传输端⼝的⼀个范围。
下⾯我们修改⼀下ftp配置⽂件。
我这⾥使⽤vsftpd来修改演⽰,其他ftp我不知道哪⾥修改,⼤家可以资料。
[root@localhost rootvi /f
在配置⽂件的最下⾯加⼊
pasv_min_port=30001
pasv_max_port=31000
然后保存退出。
这两句话的意思告诉vsftpd, 要传输数据的端⼝范围就在30001到31000 这个范围内传送。这样我们使⽤ iptables 就好办多了,我们就打开 30001到31000 这些端⼝。
[root@localhost rootiptables -A INPUT -p tcp --dport 30001:31000 -j ACCEPT
[root@localhost rootiptables -A OUTPUT -p tcp --sport 30001:31000 -j ACCEPT
[root@localhost rootservice iptables save
最后进⾏保存,然后我们再⽤浏览器范围下 ftp。可以正常访问
⽤个账号登陆上去,也没有问题,上传⼀些⽂件上去看看。
看到了吧,上传和下载都正常。。再查看下 iptables 的设置
[root@localhost rootiptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
linux vi命令详解菜鸟教学
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论