firewall
18
总安装量
12
周安装量
#19075
全站排名
安装命令
npx skills add https://github.com/chaterm/terminal-skills --skill firewall
Agent 安装分布
claude-code
10
opencode
10
gemini-cli
8
codex
7
antigravity
6
windsurf
6
Skill 文档
é²ç«å¢é ç½®
æ¦è¿°
iptablesãfirewalldãnftablesãufw é²ç«å¢é ç½®æè½ã
iptables
åºç¡å½ä»¤
# æ¥çè§å
iptables -L -n -v
iptables -L -n --line-numbers
iptables -t nat -L -n -v
# æ¸
空è§å
iptables -F
iptables -X
iptables -t nat -F
# é»è®¤çç¥
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 ESTABLISHED,RELATED -j ACCEPT
# å
许 SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# å
许 HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# å
许ç¹å® IP
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
# å
è®¸ç½æ®µ
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT
# æç»å
¶ä»
iptables -A INPUT -j DROP
å é¤è§å
# æè¡å·å é¤
iptables -D INPUT 3
# æè§åå é¤
iptables -D INPUT -p tcp --dport 80 -j ACCEPT
NAT é ç½®
# å¼å¯è½¬å
echo 1 > /proc/sys/net/ipv4/ip_forward
# SNAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# DNAT 端å£è½¬å
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.10:80
iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT
ä¿åè§å
# Debian/Ubuntu
iptables-save > /etc/iptables/rules.v4
iptables-restore < /etc/iptables/rules.v4
# CentOS/RHEL
service iptables save
firewalld
åºç¡å½ä»¤
# ç¶æ
systemctl status firewalld
firewall-cmd --state
# éè½½
firewall-cmd --reload
# æ¥çåºå
firewall-cmd --get-zones
firewall-cmd --get-default-zone
firewall-cmd --get-active-zones
æå¡ç®¡ç
# æ¥çæå¡
firewall-cmd --list-services
firewall-cmd --get-services
# æ·»å æå¡
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
# å 餿å¡
firewall-cmd --remove-service=http --permanent
端å£ç®¡ç
# æ¥ç端å£
firewall-cmd --list-ports
# æ·»å 端å£
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --add-port=5000-5100/tcp --permanent
# å é¤ç«¯å£
firewall-cmd --remove-port=8080/tcp --permanent
å¯è§å
# å
许ç¹å® IP
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept' --permanent
# å
è®¸ç½æ®µè®¿é®ç«¯å£
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept' --permanent
# æç» IP
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.100" reject' --permanent
ufw (Ubuntu)
åºç¡å½ä»¤
# å¯ç¨/ç¦ç¨
ufw enable
ufw disable
# ç¶æ
ufw status
ufw status verbose
ufw status numbered
è§å管ç
# å
许端å£
ufw allow 22
ufw allow 80/tcp
ufw allow 443/tcp
# å
许æå¡
ufw allow ssh
ufw allow http
# å
许 IP
ufw allow from 192.168.1.100
# å
è®¸ç½æ®µå°ç«¯å£
ufw allow from 192.168.1.0/24 to any port 3306
# æç»
ufw deny 23
# å é¤è§å
ufw delete allow 80
ufw delete 3
é»è®¤çç¥
ufw default deny incoming
ufw default allow outgoing
常è§åºæ¯
åºæ¯ 1ï¼Web æå¡å¨
# iptables
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -j DROP
# firewalld
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
åºæ¯ 2ï¼æ°æ®åºæå¡å¨
# åªå
许åºç¨æå¡å¨è®¿é®
iptables -A INPUT -s 192.168.1.10 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -s 192.168.1.11 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP
åºæ¯ 3ï¼éé鲿¤
# éå¶ SSH è¿æ¥é¢ç
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
æ éææ¥
| é®é¢ | ææ¥æ¹æ³ |
|---|---|
| è¿æ¥è¢«æ | æ£æ¥è§å顺åºãé»è®¤çç¥ |
| è§åä¸çæ | æ£æ¥ –permanentãreload |
| NAT ä¸å·¥ä½ | æ£æ¥ ip_forwardãFORWARD é¾ |
# æ¥ç计æ°
iptables -L -n -v
# æ¥å¿
iptables -A INPUT -j LOG --log-prefix "IPT_DROP: "
tail -f /var/log/messages | grep IPT_DROP
# è¿æ¥è·è¸ª
conntrack -L