前言
- 对于Liunx运维一知半解,遇到一些实际问题仍需要搜索解决,并做好笔记。
- 操作系统Centos
遇到的问题
- 有一台服务器(这里称为server01)的内存占用过高
- 查看日志文件,发现被未知IP强行使用ssh访问
内存使用过高
1、查看内存的使用率
可以参考:
(1)free命令
(2)top命令
2、发现journald占用内存过高
(1)journald相关知识
journald.conf, journald.conf.d — 日志服务配置文件
常用命令
追踪日志
要主动追踪当前正在编写的日志,大家可以使用-f标记。方式同样为tail -f:
# journalctl -f
显示近期日志
要显示特定数量的记录,大家可以使用-n选项,具体方式为tail -n。
# journalctl -n 20
要获得早9:00到指令发出前这段时间内的报告
# journalctl --since 09:00
(2)rsyslogd、systemd-journald内存占用高解决方案
参考资料:
修改rsyslogd服务配置文件
# vim /usr/lib/systemd/system/rsyslog.service
在Service配置中添加MemoryAccounting=yes,MemoryMax=80M,MemoryHigh=8M三项来限制服务内存使用率
[Unit]
Description=System Logging Service
;Requires=syslog.socket
Wants=network.target network-online.target
After=network.target network-online.target
Documentation=man:rsyslogd(8)
Documentation=http://www.rsyslog.com/doc/
[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/rsyslog
ExecStart=/usr/sbin/rsyslogd -n $SYSLOGD_OPTIONS
Restart=on-failure
UMask=0066
StandardOutput=null
Restart=on-failure
MemoryAccounting=yes
MemoryMax=80M
MemoryHigh=8M
[Install]
WantedBy=multi-user.target
;Alias=syslog.service
通常情况下rsyslogd大小只有5M,所以将内存上限设置为8M,然后将绝对内存限制为80M。
重启服务
# systemctl daemon-reload
# systemctl restart rsyslog
修改Journal的配置/etc/systemd/journald.conf
重启服务
# systemctl restart systemd-journald
Storage选项
通过查看man手册,#man 5 journald.conf 你会发现,Storage=的值可以是volatile, persistent, auto, none,但是,默认的是auto,
volatile代表日志只存在内存中,即/run/log/journal/
persistent代表日志只存在磁盘中,即/var/log/journal/
auto代表日志存在磁盘中,或者内存中,取决于你是否创建/var/log/journal/目录,部分系统是需要手动>mkdir -p /var/log/journal/,# systemctl restart systemd-journald
来解放内存。
none,表示,日志不保留,全部drop,当你决定不使用systemd-journald的时候,你可以使用
Liunx禁止未知IP访问
参考资料:
1、/etc/hosts.allow文件 和 /etc/hosts.deny文件
(1)修改/etc/hosts.allow文件
#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
#
sshd:210.13.218.*:allow
sshd:222.77.15.*:allow
all:218.24.129.110 #表示接受110这个ip的所有请求!
in.telnetd:140.116.44.0/255.255.255.0
in.telnetd:140.116.79.0/255.255.255.0
in.telnetd:140.116.141.99
in.telnetd:LOCAL
smbd:192.168.0.0/255.255.255.0 #允许192.168.0.网段的IP访问smbd服务
#sendmail:192.168.1.0/255.255.255.0
#pop3d:192.168.1.0/255.255.255.0
#swat:192.168.1.0/255.255.255.0
pptpd:all EXCEPT 192.168.0.0/255.255.255.0
httpd:all
vsftpd:all
以上写法表示允许210和222两个ip段连接sshd服务(这必然需要hosts.deny这个文件配合使用),当然:allow完全可以省略的。
ALL要害字匹配所有情况,EXCEPT匹配除了某些项之外的情况,PARANOID匹配你想控制的IP地址和它的域名不匹配时(域名伪装)的情况。
(2)配置/etc/hosts.deny
#
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. In particular
# you should know that NFS uses portmap!
sshd:all:deny
in.telnet:ALL
ALL:ALL EXCEPT 192.168.0.1/255.255.255.0,192.168.1.21,
202.10.5.0/255.255.255.0
注意看:sshd:all:deny表示拒绝了所有sshd远程连接。:deny可以省略。
(3)启动服务
注意修改完后:
# service xinetd restart
才能让刚才的更改生效。
2、iptalbes来限制IP访问网站
todo
总结与注意事项
总结
- 目前只是比较简单的尝试,没有使用复杂的配置,如果要更加好的优化,那还有待研究
注意事项
1、修改/etc/hosts.deny报错:warning: /etc/hosts.allow, line 20: missing newline or line too long
- 原因:修改文件后,最后不是以换行符结尾的。
- 解决办法:在文件最后一行换行,并保存。