当前位置 : 首页 » 文章分类 :  开发  »  Linux-iptables

Linux-iptables

Linux 防火墙 iptables
https://www.netfilter.org/


朱双印 老师的 iptables 系列文章很经典
https://www.zsythink.net/archives/1199

iptables简介

iptables 的前身叫 ipfirewall (内核1.x时代),这是一个作者从 freeBSD 上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。但是 ipfirewall 工作功能极其有限(它需要将所有的规则都放进内核当中,这样规则才能够运行起来,而放进内核,这个做法一般是极其困难的)。当内核发展到 2.x 系列的时候,软件更名为 ipchains, 它可以定义多条规则,将他们串起来,共同发挥作用。而现在,它叫做 iptables, 可以将规则组成一个列表,实现绝对详细的访问控制功能。


CentOS yum安装iptables

centos 最小化安装也自带 iptables 防火墙,如果系统中没有 iptables, 可使用 yum 安装:
yum install iptables

安装完 iptables 后配置文件默认在 /etc/sysconfig/iptables

如何检查系统中是否有iptables?
centos6 及以下 service iptables status 查看 iptables 防火墙状态,如果提示 iptables:unrecognized service 则表示系统尚未安装。
centos7 及以上 systemctl status iptables 查看 iptables 防火墙状态,显示 Loaded: not-found (Reason: No such file or directory) 说明未安装。


CentOS7离线安装iptables

1、下载 iptables 和 iptables-service rpm 安装包,上传到服务器

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/iptables-1.4.21-35.el7.x86_64.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/iptables-services-1.4.21-35.el7.x86_64.rpm

2、安装 iptables 和 iptables-service
2.1、查看是否已安装 iptables

# rpm -qa |grep iptables
iptables-1.4.21-16.el7.x86_64

发现已安装 iptables-1.4.21-16.el7.x86_64

2.2、升级 iptables 并安装 iptables-service

rpm -U iptables-1.4.21-35.el7.x86_64.rpm
rpm -i iptables-services-1.4.21-35.el7.x86_64.rpm

2.3、查看是否安装

# rpm -qa|grep iptables
iptables-1.4.21-35.el7.x86_64
iptables-services-1.4.21-35.el7.x86_64

启停iptables

启动防火墙

centos6 及以下 service iptables start 启动 iptables
centos7 及以上 systemctl start iptables 启动 iptables

停止防火墙

centos6 及以下 service iptables stop 停止 iptables
centos7 及以上 systemctl stop iptables 停止 iptables


设置开机启动防火墙

centos6 及以下 chkconfig iptables off 关闭 iptables 开机自启动
执行 chkconfig 命令,iptables 行0-6全是off说明成功关闭:

iptables           0:off    1:off    2:off    3:off    4:off    5:off    6:off

centos7 及以上 systemctl disable iptables 关闭 iptables 开机自启动


k8s环境中的iptables

kube-proxy 只修改了filter和nat表,它对iptables的链进行了扩充,自定义了 KUBE-SERVICES,KUBE-NODEPORTS,KUBE-POSTROUTING,KUBE-MARK-MASQ和KUBE-MARK-DROP 五个链,并主要通过为 KUBE-SERVICES 链(附着在PREROUTING和OUTPUT)增加 rule 来配制 traffic routing 规则


开放所有端口

如无其它规则,全部accept,将所有端口,入站、出站、转发都可访问

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -L查看iptables规则

centos7 及之后

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy DROP)
target     prot opt source               destination
DOCKER-USER  all  --  anywhere             anywhere
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

centos6 及之前,查看防火墙配置 /etc/init.d/iptables statusservice iptables status
结果为:

Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

iptables -L INPUT 查看input规则


开放指定端口

添加规则开放80端口:
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
保存配置:
/etc/rc.d/init.d/iptables saveservice iptables save
显示

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

或者使用vi打开/etc/sysconfig/iptables文件修改手动添加

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

重启防火墙:
service iptables restart
再次查看防火墙状态可见多了一条

1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80

表明80端口开启成功


上一篇 Xenon

下一篇 Linux-FirewallD

阅读
评论
1.1k
阅读预计5分钟
创建日期 2022-03-30
修改日期 2022-03-30
类别

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论