在CentOS系统中,iptables是一个强大的防火墙工具,用于配置和管理网络数据包的过滤、转发和地址转换规则。以下是一些基本的iptables实践应用步骤:
首先,确保你的CentOS系统上已经安装了iptables。如果没有安装,可以使用以下命令进行安装:
sudo yum install iptables-services
安装完成后,启动iptables服务并设置为开机自启动:
sudo systemctl start iptables
sudo systemctl enable iptables
使用以下命令查看当前的iptables规则:
sudo iptables -L -n -v
例如,放通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地址为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
如果需要删除特定的规则,可以使用以下命令:
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT
修改iptables规则后,需要保存配置,以便在系统重启后生效:
sudo service iptables save
保存规则后,重启iptables服务以应用更改:
sudo service iptables restart
如果需要临时关闭iptables服务,可以使用以下命令:
sudo systemctl stop 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,配置和管理防火墙规则,以保护你的服务器免受网络攻击。