iptables 管理防火墙
概要: 利用iptables工具管理网络防火墙
创建时间: 2022.12.20 22:03:32
更新时间: 2023.08.08 23:25:18
安装iptables工具
Bash |
---|
| yum install iptables-services -y
|
管理防火墙
打开防火墙iptables
Bash |
---|
| systemctl start iptables.service
|
查看iptables状态
Bash |
---|
| systemctl status iptables.service
|
关闭防火墙
Bash |
---|
| systemctl stop iptables.service
|
重启防火墙
Bash |
---|
| systemctl restart iptables.service
|
管理开机启动防火墙
开启开机自启动
Bash |
---|
| systemctl enable iptables.service
|
关闭开机自启动
Bash |
---|
| systemctl disable iptables.service
|
配置iptables
Bash |
---|
| vim /etc/sysconfig/iptables
|
如果要放行22、80、666、8000四个端口,可以进行如下编辑
Bash |
---|
| # sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8000 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 666 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
|
常用iptables命令
查看现有规则
语法:iptables [-t 表名] -L
,默认filter
表,-v
表示为详细模式
Bash |
---|
| iptables -vL -t filter
iptables -vL -t nat
iptables -vL -t mangle
iptables -vL -t raw
iptables -vL -t security
|
清除某一条规则
Bash |
---|
| iptables -L -n --line-numbers # 将所有iptables以序号标记显示
iptables -D INPUT 2 # 删除INPUT里序号为2的规则
|
清除现有规则
Bash |
---|
| # 默认是fileter表,下同
iptables -F # 清空规则链中已有的条目
iptables -X # 清空规则链中的数据包计算器和字节计数器
iptables -Z
|
开放特定端口
提示
iptables生效规则
前面的覆盖后面的,第1条覆盖第2条,依此类推
对外开放本机的15387
端口,插入到第一条
Bash |
---|
| iptables -I INPUT -p tcp --dport 15387 -j ACCEPT
|
对外开放本机的15387
端口,添加到最后一条
Bash |
---|
| iptables -A INPUT -p tcp --dport 15387 -j ACCEPT
|
常用的开放端口如下
Bash |
---|
| iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT # 允许本机访问本机
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许已建立的连接通行
iptables -A OUTPUT -j ACCEPT # 允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许访问22端口 ssh
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许访问80端口 http
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许访问80端口 https
iptables -A INPUT -p tcp --dport 21 -j ACCEPT # 允许访问21端口 ftp
iptables -A INPUT -p tcp --dport 20 -j ACCEPT # 允许访问20端口 ftp
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT # 允许访问3306端口 mysql
iptables -A INPUT -j reject # 禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT # 禁止其他未允许的规则访问
|
关闭特定端口
如果要禁止外部访问本机的15387
端口,和开放类似,但需要将ACCEPT
改为DROP
Bash |
---|
| iptables -A INPUT -p tcp --dport 15387 -j DROP
|
屏蔽特定IP访问
Bash |
---|
| iptables -I INPUT -s 123.45.6.7 -j DROP # 屏蔽特定IP
iptables -I INPUT -s 123.0.0.0/8 -j DROP # 屏蔽整个IP段:123.0.0.1到123.255.255.254
iptables -I INPUT -s 124.45.0.0/16 -j DROP # 屏蔽部分IP段:123.45.0.1到123.45.255.254
iptables -I INPUT -s 123.45.6.0/24 -j DROP # 屏蔽部分IP段:123.45.6.1到123.45.6.254
|
参考