Linux系统使用iptables创建可访问白名单
目前由于项目要求需要修复一些linux系统的漏洞,部分使用了iptables的功能,因此研究了一下iptables的原理,并讲述创建系统访问白名单的过程。
1.iptables的工作机制
2.iptables规则写法
iptables定义规则的方式比较复杂: 格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION -t table :3个filter nat mangle COMMAND:定义如何对规则进行管理 chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的 CRETIRIA:指定匹配标准 -j ACTION :指定如何进行处理
比如:不允许202.110.0.0/24的进行访问。 iptables -t filter -A INPUT -s 202.110.0.0/16 -p udp --dport 53 -j DROP 当然你如果想拒绝的更彻底: iptables -t filter -R INPUT 1 -s 202.110.0.0/16 -p udp --dport 53 -j REJECT iptables -L -n -v #查看定义规则的详细信息
3.iptables配置文件
iptables配置文件在系统的/etc/sysconfig/目录下,主要记录系统中iptables的规则,下面是定义某些ip为系统可访问白名单的配置,主要是在INPUT (数据包流入口)这个规则下拦截白名单以外的ip进行具体端口的访问:
# Generated by iptables-save v1.4.7 on Sun Sep 18 11:49:08 2016 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [382404:29851692] #定义白名单变量名 -N whitelist #设置白名单ip段 -A whitelist -s 120.25.122.0 -j ACCEPT -A whitelist -s 120.25.122.1 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j whitelist -A INPUT -i lo -j ACCEPT #开放http/https端口外界访问 -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT #系统远程连接及数据库端口规定白名单ip才可访问 -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j whitelist -A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j whitelist -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j whitelist -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j whitelist -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
修改完iptables配置文件还需要通过命令: service iptables save 进行保存 service iptables save && service iptables restart 重启iptables
上一篇:
IDEA上Java项目控制台中文乱码