iptables规则示例之只允许本地访问特定端口
一、背景说明
Iptables 指的是用来管理Linux防火墙的命令程序,通常位于/sbin/iptables,属于“用户态”(UserSpace,又称用户空间)的防火墙管理体系; IPtables 是工作在用户空间中,定义规则的工具,本身并不算是防火墙。我们可以理解为一个客户端工具,用户通过ipatbles这个客户端,将用户的安全设定执行到对应的"安全框架"中,这个"安全框架"才是真正的防火墙,位于内核空间中,这个框架的名字叫netfilter。
小结:
-
iptables 本身不是防火墙,只是一个命令行工具,位于用户空间,通过这个命令行工具来操作netfilter。
-
netfilter 才是防火墙真正的安全框架,位于内核空间。
二、常用命令
说明: iptables 防火墙的策略匹配顺序为从上向下,当有多条相互排斥的策略在一起时,上面的策略先匹配,并且一旦策略匹配数据包就放行或阻止掉了,下面的策略不会再生效。 # 查看 iptables 现有规则 iptables -L -n # 查看每个规则chain的序列号。 iptables -L -n --line-number # 根据序列号删除指定一条防火墙规则,如:删除INPUT 表的第三条已添加规则,这里3代表第几行规则 iptables -D INPUT 3 # 清空所有默认规则 iptables -F # 清空所有自定义规则 iptables -X # 所有计数器归 0 iptables -Z # 允许来自于 lo 接口的数据包(本地访问) iptables -A INPUT -i lo -j ACCEPT # 开放22端口(-A 将规则追加在原有规则的最后一条 -I 将新添加的规则加在原有规则的第一条) iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 禁止访问80端口 iptables -A INPUT -p tcp --dport 80 -j DROP # 允许ping iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT # 允许接受本机请求之后的返回数据 RELATED ,是为 FTP 设置的 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # 同时开放22和80端口 iptables -I INPUT -p tcp -m multiport --dport 22,80 -j ACCEPT # 开放5000-6000端口 iptables -I INPUT -p tcp --dport 5000:6000 -j ACCEPT # 允许某个网段的ip访问 ptables -I INPUT -p all -s 0.0.0.0/0 -j ACCEPT # 允许某个ip的8080端口访问 iptables -I INPUT -s 0.0.0.0 -p tcp --dport 8080 -j ACCEPT # 禁止某台主机的tcp访问访问 iptables -I INPUT -p tcp -s 0.0.0.0 -j DROP # iptables 禁止指定 IP 段访问 iptables -I INPUT -s 117.41.187.0/24 -j DROP # 只允许访问本机80端口(其他端口都禁止访问 iptables -A INPUT -p tcp ! --dport 80 -j DROP # 禁止服务器访问此IP地址 iptables -I OUTNPUT -d 114.232.9.171 -j DROP 删除规则: iptables -t filter -D INPUT 2 //删除filter表中INPUT链中的第二条规则 iptables -D INPUT -s 192.168.1.100 -j ACCEPT //删除源地址为192.168.1.100,动作为ACCEPT的规则 iptables -F INPUT //删除filter表中INPUT链 iptables -F //删除所有的规则(慎用)
三、实例演示
3.1 演示目的
限制只允许 本机ip 和 127.0.0.1访问,禁止其他IP访问本机的服务,以redis为例。
3.2 演示环境
IP | 备注 | |
---|---|---|
测试服务器 | 192.168.101.26 | centos7.4 |
加固服务器 | 192.168.108.103 | centos7.4 |
3.2 效果演示
加固前
在 测试服务器 上进行远程连接,发现可以直接连接 加固服务器 。
[root@wangzy redis-7.0.11]# ./src/redis-cli -h 192.168.108.103 -p 6379 192.168.108.103:6379>
加固后
在 测试服务器 上进行远程连接,发现不可以直接连接 加固服务器 ,但是加固服务身份可以正常连接
测试服务器远程 拒绝连接 展示
加固服务器本身可以 正常连接 展示
3.3 加固过程
3.2.1 安装服务并添加开机自启动
# 查看iptables.service是否安装,若未安装则进行安装 systemctl status iptables.service # 安装 iptables-services yum -y install iptables-services # 启动iptables systemctl start iptables.service # 查看iptables.service是否启动 systemctl status iptables.service # 加入开机自启动 systemctl enable iptables.service
3.2.2 添加策略
实现的效果为:只有本地加固服务器可以访问,远程服务器禁止访问6379端口。
# 注意前后顺序不能换,ip根据实际IP进行修改 ## 注:iptables匹配规则:匹配即停止(-I插入到最前面,-A追加到追后面) iptables -I INPUT -p tcp --dport 6379 -j DROP iptables -I INPUT -s 192.168.108.103 -p tcp --dport 6379 -j ACCEPT iptables -I INPUT -s 127.0.0.1 -p tcp --dport 6379 -j ACCEPT
# 查看规则
# 查看 iptables 现有规则
iptables -L -n
# 保存上述规则 service iptables save # 查看配置文件,看是否把临时文件加载进来 cat /etc/sysconfig/iptables
添加后
保存规则后看配置文件是否生效,防止开机后失效
结语:此次为临时文稿,更多详细内容后续更新或查看我的今日头条号。