记录一下日常可能用到的系统检测方案及命令
1. 服务器是否被暴力破解
Debian 和 Ubuntu 存储在 /var/log/auth.log
RedHat 和 CentOS 存储在 /var/log/secure
1.查看 root 用户登录成功的IP及次数看看是否有不熟悉的 IP 地址
grep "Accepted password for root" /var/log/secure | awk '{print 11}' | sort | uniq -c | sort -nr | more
2.查看尝试暴力破解 root 账户的IP及次数
grep "Failed password for root" /var/log/secure | awk '{print11}' | sort | uniq -c | sort -nr | more
3.查看尝试暴力破解用户名的IP及次数
grep "Failed password for invalid user" /var/log/secure | awk '{print $13}' | sort | uniq -c | sort -nr | more
2. 隐藏系统信息
默认情况下,登录提示信息包括Linux发行版的名称、版本、内核版本和主机名等信息,这些信息对于黑客入侵是很有帮助的,因此,出于服务器的安全考虑,需要将这些信息修改或注释掉。应该只显示一个“login:”提示符。
操作时删除 /etc/issue和/etc/issue.net
文件中的内容即可。
[root@localhost ~]# vim /etc/issue issue文件是用户从本地登录时看到的提示(注释或删除内容)
[root@localhost ~]# vim /etc/issue.net issue.net文件是用户从网络登录(如telnet、ssh)系统时看到的登录提示(注释或删除内容)。
3. 禁ping设置
在 /etc/rc.d/rc.local
文件增加:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
,防止别人ping自己的系统,从而增加系统的安全性。
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
4. 防止IP欺骗
在 /etc/host.conf
文件增加一行:nospoof on
,防止IP欺骗。
5. 使用以下命令对系统进行系统安全检查。
# Whoami 当前用户?
# W 所有登录用户包括网络登录的?
# Who 所有登录用户包括网络登录的?
# history 历史命令记录
# clear 清屏
# last 曾经登录的用户
# top 活动进程
# netstat 查看网络状态
6. 定期检查系统中的日志
(1)/var/log/messages
日志文件。检查 /var/log/messages
日志文件,查看外部用户的登录情况。
(2)history文件。检查用户主目录 /home/username
下的历史文件,即 .history
文件。
7. 分区保护
在Linux系统中,可以将不同的应用安装在不同的分区上,每个分区分别进行不同的配置,可以将关键分区设置为只读,这样可以大大提高Linux文件系统的安全。Linux文件系统可以分为几个主要的分区,一般情况下至少需要建立 /boot、/lib、/sbin、/usr/local、/var和/home
等分区。
/usr
可以安装成只读,并且可以被认为是不可修改的,如果 /usr
中有任何文件发生了改变,那么系统将立即发出安全报警。
/boot、/lib和/sbin
的安装和设置也一样,在安装时尽量将它们设为只读。
不过有些分区是不能设为只读的,比如 /var
。
[root@localhost /]# chattr +i /usr 加i属性使得root用户也不能在/BIN 创建改变文件
[root@localhost /]# lsattr -d /usr 验证i属性加成功否?
8. 用户管理
查看用户列表:cat /etc/passwd
查看组列表:cat /etc/group
userdel sync
userdel shutdown
# 需要删除的多余用户共有:sync shutdown halt uucp operator games gopher
groupdel adm
groupdel games
# 需要删除的多余用户组共有:adm lp games dip
Linux中的帐号和口令是依据 /etc/passwd 、/etc/shadow、 /etc/group 、/etc/gshadow 这四个文档的,所以需要更改其权限提高安全性:
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshado
如果还原,把 +i 改成 -i ,再执行一下上面四条命令。
注:i属性:不允许对这个文件进行修改,删除或重命名,设定连结也无法写入或新增数据!只有 root 才能设定这个属性。
9. 查看当前网络通信IP
#当前网络IP及请求连接数
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
#当前80端口通信IP,排查是否CC攻击
netstat -an|grep ':80' -c
#端口抓包分析
tcpdump -nn port 80 or port 443
10. CentOS7防⽕墙放⾏或限制指定IP和端⼝(firewall)
CentOS7默认没有安装iptables,可以⼿动安装iptables;也可以通过CentOS7已带的firewall配置防⽕墙。
1.查看firewalld.service服务状态
systemctl status firewalld
2.查看firewall运⾏状态
firewall-cmd --state
3.⼿动启动/停⽌/重启firewalld.service服务
# 启动firewalld
service firewalld start
# 停⽌firewalld
service firewalld stop
# 重启firewalld
service firewalld restart
4.展⽰当前配置的firewall规则
firewall-cmd --list-all
5.端⼝(端⼝段)的查询/开放
# 查询端⼝是否开放
firewall-cmd --query-port=8080/tcp
# 新建永久规则,开放8080端⼝(TCP协议)
firewall-cmd --permanent --add-port=8080/tcp
# 移除上述规则
firewall-cmd --permanent --remove-port=8080/tcp
# 新建永久规则,批量开放⼀段端⼝(TCP协议)
firewall-cmd --permanent --add-port=9001-9100/tcp
6.IP(IP段)的开放
# 新建永久规则,开放192.168.1.1单个源IP的访问
firewall-cmd --permanent --add-source=192.168.1.1
# 新建永久规则,开放192.168.1.0/24整个源IP段的访问
firewall-cmd --permanent --add-source=192.168.1.0/24
# 移除上述规则
firewall-cmd --permanent --remove-source=192.168.1.1
7.系统服务的开放
# 开放http服务
firewall-cmd --permanent --add-service=http
# 移除上述规则
firewall-cmd --permanent --remove-service=http
8.⾃定义复杂规则(注意是否与已有规则冲突)
# 允许指定IP访问本机8080端⼝
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" accept'
# 允许指定IP段访问本机8080-8090端⼝
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="8080-8090" accept'
# 禁⽌指定IP访问本机8080端⼝
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" reject'
9.任何修改操作,配置完成后,需要重新装载firewall。可重新启动firewalld服务。
firewall-cmd --reload
service firewalld restart
持续更新…..