iptables防火墙加强系统安全性的实例分享

发布时间:2020-07-11编辑:脚本学堂
本文介绍下,在linux系统中,使用iptables包过滤防火墙,实现加强系统安全的配置实例,有需要的朋友参考下。

本节内容:
iptables防火墙配置,加固系统安全。

需求:
关闭所有对外服务的端口,只允许ssh服务的22端口接受外面的请求。

首先,在测试服务器上进入root权限,查看iptables:
 

复制代码 代码示例:
root@host2:~# iptables -vnL --line-numbers 
Chain INPUT (policy ACCEPT 105 packets, 10480 bytes) 
num   pkts bytes target     prot opt in     out     source               destination          
1        0     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:53 
2        0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53 
3        0     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:67 
4        0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:67 
 
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) 
num   pkts bytes target     prot opt in     out     source               destination          
1        0     0 ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24     state RELATED,ESTABLISHED 
2        0     0 ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0            
3        0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0            
4        0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable 
5        0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable 
 
Chain OUTPUT (policy ACCEPT 25 packets, 3380 bytes) 
num   pkts bytes target     prot opt in     out     source               destination

-v 是输出详细信息
-n 指的是显示地址和端口号
-L 指显示链里面的规则

--line-number参数用来显示行号,删除的时候很有用 

从上面的结果可以看到,策略上允许所有的输入连接。

现在先删除所有的规则:
 

复制代码 代码示例:
iptables -F

然后,策略上关闭所有的进入请求:
 

复制代码 代码示例:
iptables -P INPUT DROP

再添加ssh端口的访问支持:
 

复制代码 代码示例:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT 

试一下从另外一台机器链接,ssh登录没问题,除了开始要等一会儿。

注意,这样的设置会导致不能从这台机器连接外网,有两种方法解决:
1.如果为了绝对的安全,可以临时手动打开策略,用完后再关闭。
 

复制代码 代码示例:
iptables -P INPUT ACCEPT
//DO SOMETHING
iptables -P INPUT DROP

2.添加一个规则,允许已经建立的连接接收进来的数据
 

复制代码 代码示例:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 

连接是从本机向外发起的,我们的规则没有限制,连接建立后,就可以从外部网络拉取数据。

根据自己的需要再添加其他的端口吧。

如果想限制有限的机器向服务器发起请求,可以用-s参数,比如:
 

复制代码 代码示例:
iptables -A INPUT -p tcp -s 10.112.18.0/0 --dport 27017 -j ACCEPT 

仅在10.112.18.0/0网段的机器才能连接上本机的27017端口。
如果仅仅想本机访问,用下面的命令:
 

复制代码 代码示例:
iptables -A INPUT -p tcp -s 127.0.0.1 --dport 27017 -j ACCEPT 

ubuntu下的详细iptables操作可以参考:
https://help.ubuntu.com/community/IptablesHowTo

保存iptables规则,参考如下步骤:

1,安装
 

复制代码 代码示例:
apt-get install iptables-persistent

2,保存规则文件
 

复制代码 代码示例:
service iptables-persistent save 
 

重启即可。

说明:
iptables-persistent是一个开机启动脚本,在/etc/init.d/目录下。