iptables

来源:互联网 发布:vscode md预览快捷键 编辑:程序博客网 时间:2024/04/19 11:48

一、iptables入门

     当今黑客入侵电脑有很多种途径,其中通过端口进行入侵比较普遍。特别是作为服务器的计算机,关闭不必要的端口,这是最简单的也是最常用的防御黑入侵的做法。用Linux作为服务器操作系统,使用Linux自带的iptables可以实现这功能。

 

   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 网络数据包经服务器路由

 

    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

 

 

二、只开启某个端
在配置服务器时候,通常是只打开某个特定的端口(服务需要的端口),关闭不需要的端口来提高服务器的安全性。

下面就用端口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 查看是否添加上去,

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 不接收

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 


 

原创粉丝点击