Linux网络访问黑/白名单服务
编辑/etc/hosts.deny和/etc/hosts.allow文件配合使用完成网络IP的屏蔽.
sshd:10.1.5.*:allow
sshd:10.2.5.*:allow
以上写法表示允许10.1.5和10.2.5两个ip段连接sshd服务(这必然需要hosts.deny这个文件配合使用),当然:allow完全可以省略的
如果管理员集中在一个IP那么这样写是比较省事的
all:10.1.5.10//他表示接受10这个ip的所有请求!
service xinetd restart
首先列出iptables在linux内核中涉及的五个位置:
1.内核空间中:从一个网络接口进来,到另一个网络接口去的
2.数据包从内核流入用户空间的
3.数据包从用户空间流出的
4.进入/离开本机的外网接口
5.进入/离开本机的内网接口
这五个位置也被称为五个钩子函数(hook functions),也叫五个规则链。
1.PREROUTING (路由前)
2.INPUT (数据包流入口)
3.FORWARD (转发管卡)
4.OUTPUT(数据包出口)
5.POSTROUTING(路由后)
这是NetFilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。
$iptables -L -v -n --line-numbers
-L INPUT,PREROUTING(prerouting,input,output,forward,postrouting五张默认链)
-t mangle,filter (查看过滤规则等信息,iptables中有raw,mangle,nat,filter四张表)
如果想要地址不经过域名的转换,那么添加参数-n
每一条规则前添加序号,那么在命令后面添加参数--line
$iptables -L -n
查看状态:
service iptables status
通过它可以设置linux防火墙,查看过滤规则等信息,iptables中有raw,mangle,nat,filter四张表,prerouting,input,output,forward,postrouting五张默认链,因此,本文将说明如何通过iptables查看系统的规则信息。
给服务器设置iptables防火墙白名单
①清空iptables的配置,即还原到初始状态 //注意:执行以下操作后,所有远程连接都会失效,因此不适用于远程配置
>iptables -F //删除INPUT,OUTPUT,FORWARD三个链的配置
>iptables -X //删除所有用户配置的规则
②配置接入、输出、转接三个链
>iptables -P INPUT DROP //限制接入端
>iptables -P OUTPUT ACCEPT //开放输出端
>iptables -P FORWARD ACCEPT //开放中转端
③加入白名单
>iptables -A INPUT -s 192.111.51.45 -p all -j ACCEPT //开放所有端口给指定ip:192.111.51.45
>iptables -A INPUT -s 192.111.51.44 -p all -j ACCEPT //开放所有端口给本机
>iptables -A INPUT -s 192.111.1.51 -p all -j ACCEPT //开放所有端口给指定ip:192.111.1.51
删除规则,(删除多余的规则)
>iptables -D INPUT 2 //删除INPUTl链的第二条规则
黑名单机制 # iptables -I INPUT -p tcp --dport 80 -j REJECT
比如:不允许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 --line-number //查看当前iptables的规则及所有过滤的条目(白名单显示在这里)
⑤保存有效配置
>iptables save //保存设置
>iptables-save /etc/iptables.rule //保存设置到文件中
>cat /etc/iptables.rule //查看配置文件
⑥从配置文件中载入配置,iptables生效
>iptables-restore < /etc/iptables.rule
iptables配置文件在系统的/etc/sysconfig/iptables-config
修改完iptables配置文件还需要通过命令:
service iptables save 进行保存
service iptables save && service iptables restart 重启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
网友评论