centos

centos iptables如何实践应用

小樊
41
2025-03-13 10:15:48
栏目: 智能运维

在CentOS系统中,iptables是一个强大的防火墙工具,用于配置和管理网络数据包的过滤、转发和地址转换规则。以下是一些基本的iptables实践应用步骤:

1. 安装iptables

首先,确保你的CentOS系统上已经安装了iptables。如果没有安装,可以使用以下命令进行安装:

sudo yum install iptables-services

2. 启动和启用iptables服务

安装完成后,启动iptables服务并设置为开机自启动:

sudo systemctl start iptables
sudo systemctl enable iptables

3. 查看当前iptables规则

使用以下命令查看当前的iptables规则:

sudo iptables -L -n -v

4. 添加规则

放通特定端口

例如,放通SSH(端口22)、HTTP(端口80)、HTTPS(端口443)等:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

允许特定IP访问

例如,允许来自IP地址为192.168.1.100的主机访问本机的80端口:

sudo iptables -A INPUT -s 192.168.1.100 -p tcp --dport 80 -j ACCEPT

允许已建立的连接

允许所有已建立的或相关的连接通过:

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

5. 删除规则

如果需要删除特定的规则,可以使用以下命令:

sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT

6. 保存iptables规则

修改iptables规则后,需要保存配置,以便在系统重启后生效:

sudo service iptables save

7. 重启iptables服务

保存规则后,重启iptables服务以应用更改:

sudo service iptables restart

8. 关闭iptables服务

如果需要临时关闭iptables服务,可以使用以下命令:

sudo systemctl stop iptables

9. 永久关闭iptables服务

如果需要永久关闭iptables服务,可以禁用并停止它:

sudo systemctl disable iptables
sudo systemctl stop iptables

高级应用示例

限制连接数

限制80端口单个IP的最大连接数为10:

sudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP

数据转发

例如,将本地80端口的数据转发给192.168.1.2:8080:

sudo iptables -t nat -A PREROUTING -d 192.168.1.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:8080

使用脚本自动化配置

可以使用脚本自动化iptables配置,例如:

#!/bin/bash

# 支持CentOS系统
support_distro() {
    if [ -z "$(egrep -i 'centos' /etc/issue)" ]; then
        echo "Sorry, iptables script only support centos system now."
        exit 1
    fi
}

# 配置iptables
support_distro

# 获取SSH端口
SSH_PORT=$(grep "Port" /etc/ssh/sshd_config | sed 's/Port\s//g') || echo 22

# 获取DNS服务器IP
NAMESERVER1=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
NAMESERVER2=$(cat /etc/resolv.conf | grep nameserver | awk '{print $3}')

# 配置iptables规则
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport $SSH_PORT -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
iptables -A OUTPUT -p udp -m udp -d $NAMESERVER1 --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp -m udp -d $NAMESERVER2 --dport 53 -j ACCEPT

# 保存规则并重启iptables
service iptables save
service iptables restart

echo "iptables configure completed."

通过以上步骤和示例,你可以在CentOS系统中实践应用iptables,配置和管理防火墙规则,以保护你的服务器免受网络攻击。

0
看了该问题的人还看了