在Linux系统中,可以将不同的应用安装在不同的分区上,每个分区分别进行不同的配置,可以将关键分区设置为只读,这样可以大大提高Linux文件系统的安全。Linux文件系统可以分为几个主要的分区,一般情况下至少需要建立/boot
、/lib
、/sbin
、/usr/local
、/var
和/home
等分区。
/usr
可以安装成只读,并且可以被认为是不可修改的,如果/usr
中有任何文件发生了改变,那么系统将立即发出安全报警。
/boot
、/lib
和/sbin
的安装和设置也一样,在安装时尽量将它们设为只读。
不过有些分区是不能设为只读的,比如/var
。
[hyh@localhost ~]$su - root 切换root用户
Password:
[root@localhost ~]# cd /
[root@localhost /]# ls 查看根目录有哪些分区
[root@localhost /]# ls -l 查看分区的权限位
[root@localhost /]# ls -ld /usr 查看usr分区的权限位
[root@localhost /]# ls -ld /var查看var分区的权限位
[root@localhost /]# ls -ld /bin查看bin分区的权限位
[root@localhost /]# touch /bin/test.txt root用户在/BIN 分区创建新文件test.txt
[root@localhost /]# ls /bin 验证创建成功否?
[root@localhost /]# chattr +i /bin 加i属性使得root用户也不能在/BIN 创建改变文件
[root@localhost /]# lsattr -d /bin 验证i属性加成功否?
[root@localhost /]# touch /bin/test2.txt 验证root已不能创建文件?
在ext3
文件系统中有“不可变
”和“只添加
”这两种文件属性,使用他们可以进一步提高文件的安全级别。标记为“不可变
”的文件不能被修改,根用户也不能修改。标记为“只添加
”的文件可以被修改,但是只能在它的后面添加新内容,根用户也是如此。可以使用lsattr
命令查看这些属性,可以使用chattr
命令来修改文件的这些属性。
比如系统管理员可以将log
文件属性设置为“只添加
”。
[root@localhost log]# chattr +a /var/log/yum.log “a”属性yum.log文件属性设置为“只添加”
[root@localhost log]# lsattr /var/log/yum.log 验证文件属性
[root@localhost ~]# echo "hello,alice" >> /var/log/yum.log 向yum.log 添加数据"hello,alice"
[root@localhost ~]# vi /var/log/yum.log 验证添加成功否?
[root@localhost ~]# cat /var/log/yum.log 浏览文件内容
Linux中有两种服务类型:一种是仅在有需要时才执行的服务;另一种是一直在执行的服务。
(1)需要时才执行的服务。早期的Linux版本中,每一个不同的网络服务都有一个服务程序在后台运行,现在的版本用统一的xinetd
服务器程序担此重任。
xinetd(eXtendedInterNET services Daemon)
被称为“扩展的超级服务器”(之前是inetd
),其作用是根据网络请求装入网络程序。xinetd
同时监视多个网络端口,一旦接收到外界传来的连接信息,就执行相应的TCP或UDP网络服务。要取消不必要的服务可以修改/etc/xinetd.conf
文件。
[root@localhost ~]# vi /etc/xinetd.conf 修改文件
(2)一直在执行的服务。这类服务在系统启动时就开始执行,需要修改/etc/rc.d/rc5.d/
中的文件,比如提供文件服务的NFS服务器
和提供NNTP新闻服务
的news服务器都属于这类服务,如果没有必要,最好将这些服务取消。
(3)/etc/services
文件使得服务器和客户端的程序能够将服务的名字转成端口号,只有root
用户才有权修改这个文件,而且通常情况下这个文件是没有必要修改的,因为这个文件中已经包含了常用的服务所对应的端口号。为了提高安全性,可以执行#chattr +i /etc/services
命令,避免该文件未经授权的删除和修改。
[root@localhost rc5.d]# vi /etc/services
[root@localhost rc5.d]#chattr +i /etc/services 使得包括root在内的任何用户都不能改变services文件设置
默认情况下,登录提示信息包括Linux发行版的名称、版本、内核版本和主机名等信息,这些信息对于黑客入侵是很有帮助的,因此,出于服务器的安全考虑,需要将这些信息修改或注释掉。应该只显示一个“login:
”提示符。
操作时删除/etc/issue
和/etc/issue.net
文件中的内容即可。
[root@localhost rc5.d]# vi /etc/issue issue文件是用户从本地登录时看到的提示(注释或删除内容)
[root@localhost rc5.d]# vi /etc/issue.net issue.net文件是用户从网络登录(如telnet、ssh)系统时看到的登录提示(注释或删除内容)。
在/etc/securetty
文件指定了允许root用户登录的tty
设备,由/bin/login
程序读取,其格式是一个被允许的名字列表,可以编辑/etc/securetty
且注释掉如下所示的行:
# vi /etc/securetty
console
tty1
# tty2
# tty3
# tty4
...
可以使用tcp_wrappers
来阻止一些外部入侵。最好的策略就是先阻止所有的主机,然后再建立允许访问该系统的主机列表。
(1)编辑/etc/hosts.deny
文件,加入:ALL: ALL@ALL, PARANOID
(2)编辑/etc/hosts.allow
文件,加入允许访问的主机列表,比如:ftp: 202.196.0.101 ztg.edu.com
,202.196.0.101
是允许访问ftp服务的IP地址,ztg.edu.com
是允许访问ftp服务的主机名。
(3)使用tcpdchk
命令检查tcp wrapper
的设置是否正确。
(1)/var/log/messages
日志文件。检查/var/log/messages
日志文件,查看外部用户的登录情况。
(2)history
文件。检查用户主目录/home/username
下的历史文件,即“.history
”文件。
在/etc/rc.d/rc.local
文件增加:“echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
”,防止别人ping自己的系统,从而增加系统的安全性。
vi /etc/rc.d/rc.local
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
在/etc/host.conf
文件增加一行:“nospoof on
”,防止IP欺骗。
rm
,rmdir
,reboot
)。[root@localhost /]# rm –r /var/log/ yum.log 删除文件
[root@localhost /]#cd /var/log
[root@localhost log]# rm -rf * 强行删除当前目录内所有文件(非常不安全!)
[root@localhost log]# whereisrm
[root@localhost log]# ls -l /bin/rm
-rwxr-xr-x. 1 root root 58960 Nov 22 2013 /bin/rm
#Whoami 当前用户?
#W 所有登录用户包括网络登录的?
#Who 所有登录用户包括网络登录的?
#history 历史命令记录
#clear 清屏
#last 曾经登录的用户
#top 活动进程
#netstat 查看网络状态