netstat -tuln
或 ss -tuln
systemctl disable <service_name>
# 默认拒绝所有入站连接
iptables -P INPUT DROP
iptables -P FORWARD DROP
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 按需开放特定端口(示例:SSH)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
firewall-cmd --permanent --add-service=ssh # 仅示例
firewall-cmd --reload
ufw default deny incoming
ufw allow ssh
ufw enable
# 防止端口扫描(限制连接速率)
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j DROP
# 对ICMP(ping)请求限速
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
# 安装
sudo apt install fail2ban # Debian/Ubuntu
sudo yum install fail2ban # CentOS/RHEL
# 配置示例(/etc/fail2ban/jail.local)
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
# 安装knockd
sudo apt install knockd
# 配置示例(/etc/knockd.conf)
[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 5
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
# /etc/hosts.allow
sshd: 192.168.1.0/24
sshd: .example.com
# /etc/hosts.deny
ALL: ALL
# 编辑SSH配置文件
sudo nano /etc/ssh/sshd_config
# 修改Port行
Port 22222 # 改为非标准端口
# 重启服务
sudo systemctl restart sshd
sudo apt install iftop
sudo apt install nethogs
sudo apt install vnstat
#!/bin/bash
# 监控异常连接尝试
netstat -ant | awk '{print $5}' | grep -v "Address" | grep -v "::" | cut -d: -f1 | sort | uniq -c | sort -n
定期更新系统:
sudo apt update && sudo apt upgrade # Debian/Ubuntu
sudo yum update # CentOS/RHEL
禁用root SSH登录:
# 在/etc/ssh/sshd_config中设置
PermitRootLogin no
使用SSH密钥认证:
ssh-keygen -t rsa -b 4096
ssh-copy-id user@server
安装安全增强工具:
sudo apt install aide rkhunter chkrootkit # 入侵检测工具
配置SELinux/AppArmor:
# 检查SELinux状态
sestatus
# 启用SELinux(如未启用)
sudo nano /etc/selinux/config
# 设置为 enforcing
SELINUX=enforcing
发现攻击时的处理流程:
常用命令:
# 查看当前连接
netstat -antp
# 封锁IP
iptables -A INPUT -s <攻击IP> -j DROP
# 查找异常进程
ps aux | grep -i '可疑进程名'
通过实施以上措施,您可以显著提高Linux服务器的安全性,减少遭受端口扫描和各类网络攻击的风险。请记住,安全是一个持续的过程,需要定期审查和更新防护策略。