知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

iptables入门学习

发布时间:2014-09-05 15:12:45作者:知识屋

iptables入门学习
 
一、iptables入门
     当今黑客入侵电脑有很多种途径,其中通过端口进行入侵比较普遍。特别是作为服务器的计算机,关闭不必要的端口,这是最简单的也是最常用的防御黑入侵的做法。用Linux作为服务器操作系统,使用Linux自带的iptables可以实现这功能。
   www.zhishiwu.com  
   1、查看一下iptables策略的组成
[root@localhost ~]# 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  
 
得知, iptables 策略由3个部分组成:INPUT, FORWARD 和 OUTPUT
a.INPUT 网络数据包流向服务器
b.OUTPUT 网络数据包从服务器流出
c.FORWARD 网络数据包经服务器路由
   www.zhishiwu.com  
    2、关闭策略
关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放。
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT DROP
用命令 iptables -L -n 查看,得到:
[root@localhost ~]# iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination        
Chain FORWARD(policy DROP)
target     prot opt source               destination        
Chain OUTPUT(policy DROP)
target     prot opt source               destination  
    
这样的设置只是临时的, 重启服务器还是会恢复原来没有设置的状态(policy ACCEPT),要想重启后仍然生效需要
使用service iptables save 进行保存,会提示保存信息到 /etc/sysconfig/iptables,所以我们可以打开文件查看 vi /etc/sysconfig/iptables
    
DROP 可以这样理解:
    当INPUT =DROP,表示防火墙遇到数据就不接受它,不让它进入服务器
    当OUTPUT=DROP,表示防火墙阻止从服务器流出的数据
    当FORWARD=DROP,表示服务器不允许经服务器路由
 
    3、开启INPUT策略
# iptables -P INPUT  ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -P OUTPUT ACCEPT
   www.zhishiwu.com  
二、只开启某个端口
在配置服务器时候,通常是只打开某个特定的端口(服务需要的端口),关闭不需要的端口来提高服务器的安全性。
下面就用端口22来举个例子如何实现只允许端口22的访问,其他端口全部都不能访问的(端口22是用ssh软件访问Linux的端口)。
 
a、查看当前服务器端口开启情况:
通过netstat -tnl 查看当前服务器打开了哪些端口
[root@localhost ~]# netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:673                 0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:2207              0.0.0.0:*                   LISTEN      
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 ::1:631                     :::*                        LISTEN     
开启的端口挺多的,其中22(ssh)端口也是开启的
 
b、查看防火墙设置
通过命令:iptables -L -n 查看,得知防火墙 INPUT FORWARD OUTPUT 三个部分全部是 ACCEPT 的,也就是没有做任何限制
通过 SSH软件来链接服务器,可以成功链接上去。
 
c、关闭所有的端口
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT DROP
稍等会发现SSH链接断开了,说明已经关闭了端口。
 
d、只打开22端口
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
 
 iptables -L -n 查看是否添加上去,  www.zhishiwu.com  
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端口,用SSH测试,可以链接上去。
通过命令:service iptables save 进行保存
 
备注:
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
-A :添加一条 INPUT 的规则
-p :指定是什么协议 我们常用的tcp 协议,当然也有udp 例如53端口的DNS
--dport :目标端口 当数据从外部进入服务器为目标端口
反之 数据从服务器出去 则为数据源端口 使用 --sport
-j :指定是 ACCEPT 接收 或者 DROP 不接收
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜