0°

Linux系统安全加固

系统方面:

1.BIOS

2.SSH安全

3.删除/etc/motd

4.禁用代码编译

5.禁用所有特殊账户

6.chmod危险文件

7.关闭不用的服务和端口

8.内核加固(sysctl.conf)

9./tmp,/var/tmp,/dev/shm分区的安全

10.限制 crontab 及 at 的使用

11.指定允许root登陆的TTY设备

12.选择一个安全的密码

13.检查Rootkit

14.安装补丁

15.Nessus漏洞扫描器

16.利用capability特征加强Linux系统安全

17.防范arp嗅探

18.防范cc攻击

19.端口限制

1.BIOS

在系统启动的时候设置一个BIOS密码

2.SSH安全

SSH是一个协议,利用它可以登录到一个远程系统或远程执行系统命令,

默认允许root登录,并且sshv1存在缺陷,我们应该在

sshd_config禁止root访问和使用sshv2来让ssh更加安全。

方法:

vi /etc/ssh/sshd_config

把协议改为2

PermitRootLogin = no

重启sshd /etc/rc.d/init.d/sshd restart

一些没必要的转发、dns等等不需要的一律关闭

3.删除/etc/motd

4.禁用代码编译

可以禁用代码编译并且只把编译的权限分配给一个用户组

方法:

添加编译用户组 /usr/sbin/groupadd compiler ,cd /usr/bin

把常见的编译器所属组赋给编译用户组

chgrp compiler *cc*

chgrp compiler *++*

chgrp compiler ld

chgrp compiler as

设置mysqlaccess的访问

chgrp root mysqlaccess

设置权限

chmod 750 *cc*

chmod 750 *++*

chmod 750 ld

chmod 750 as

chmod 755 mysqlaccess

把用户添加到组里

修改/etc/group

compiler:x:520:user1,user2

5.禁用所有特殊账户

你应该从系统中删除所有默认用户和组

例如news,lp,sync,shutdown,uucp,games,halt 等

方法:

删除账户userdel name

删除组 groupdel name

锁定特定账户:/usr/sbin/usermod -L -s /bin/false user

6.chmod危险文件

这可能是限制不具有root权限的用户执行下面这些命令

方法:

chmod 700 /bin/ping

chmod 700 /usr/bin/finger

chmod 700 /usr/bin/who

chmod 700 /usr/bin/w

chmod 700 /usr/bin/locate

chmod 700 /usr/bin/whereis

chmod 700 /sbin/ifconfig

chmod 700 /usr/bin/pico

chmod 700 /usr/bin/vi

chmod 700 /usr/bin/which

chmod 700 /usr/bin/gcc

chmod 700 /usr/bin/make

chmod 700 /bin/rpm

chmod 700 /etc/passwd

chmod 700 /etc/shadow

7.关闭不用的服务和端口

8.内核加固(sysctl.conf)

sysctl.conf用来加固内核,目的是避免DOS和欺骗攻击

方法:

sysctl kern.ipc.maxsockets=100000 ##增加并发的socket,对于ddos很有用

sysctl kern.ipc.somaxconn=65535 ##打开文件数

sysctl net.inet.tcp.msl=2500 ##timeout时间

到/proc/sys目录或sysctl -a命令了解下当前配置的大概情况

然后vi /etc/sysctl.conf

添加如下内容:

# Kernel sysctl configuration file for Red Hat Linux

#

# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and

# sysctl.conf(5) for more details.

# Controls IP packet forwarding

net.ipv4.ip_forward = 0

# Controls source route verification

net.ipv4.conf.default.rp_filter = 1

# Controls the System Request debugging functionality of the kernel

kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename.

# Useful for debugging multi-threaded applications.

kernel.core_uses_pid = 1

#Prevent SYN attack

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_syn_backlog = 2048

net.ipv4.tcp_synack_retries = 2

# Disables packet forwarding

net.ipv4.ip_forward=0

# Disables IP source routing

net.ipv4.conf.all.accept_source_route = 0

net.ipv4.conf.lo.accept_source_route = 0

net.ipv4.conf.eth0.accept_source_route = 0

net.ipv4.conf.default.accept_source_route = 0

# Enable IP spoofing protection, turn on source route verification

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.lo.rp_filter = 1

net.ipv4.conf.eth0.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1

# Disable ICMP Redirect Acceptance

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.lo.accept_redirects = 0

net.ipv4.conf.eth0.accept_redirects = 0

net.ipv4.conf.default.accept_redirects = 0

# Enable Log Spoofed Packets, Source Routed Packets, Redirect Packets

net.ipv4.conf.all.log_martians = 1

net.ipv4.conf.lo.log_martians = 1

net.ipv4.conf.eth0.log_martians = 1

# Disables IP source routing

net.ipv4.conf.all.accept_source_route = 0

net.ipv4.conf.lo.accept_source_route = 0

net.ipv4.conf.eth0.accept_source_route = 0

net.ipv4.conf.default.accept_source_route = 0

# Enable IP spoofing protection, turn on source route verification

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.lo.rp_filter = 1

net.ipv4.conf.eth0.rp_filter = 1

14

net.ipv4.conf.default.rp_filter = 1

# Disable ICMP Redirect Acceptance

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.lo.accept_redirects = 0

net.ipv4.conf.eth0.accept_redirects = 0

net.ipv4.conf.default.accept_redirects = 0

# Disables the magic-sysrq key

kernel.sysrq = 0

# Modify system limits for Ensim WEBppliance

fs.file-max = 65000

# Decrease the time default value for tcp_fin_timeout connection

net.ipv4.tcp_fin_timeout = 15

# Decrease the time default value for tcp_keepalive_time connection

net.ipv4.tcp_keepalive_time = 1800

# Turn off the tcp_window_scaling

net.ipv4.tcp_window_scaling = 0

# Turn off the tcp_sack

net.ipv4.tcp_sack = 0

# Turn off the tcp_timestamps

net.ipv4.tcp_timestamps = 0

# Enable TCP SYN Cookie Protection

net.ipv4.tcp_syncookies = 1

# Enable ignoring broadcasts request

net.ipv4.icmp_echo_ignore_broadcasts = 1

# Enable bad error message Protection

net.ipv4.icmp_ignore_bogus_error_responses = 1

# Log Spoofed Packets, Source Routed Packets, Redirect Packets

net.ipv4.conf.all.log_martians = 1

# Set maximum amount of memory allocated to shm to 256MB

kernel.shmmax = 268435456

# Improve file system performance

vm.bdflush = 100 1200 128 512 15 5000 500 1884 2

# Improve virtual memory performance

vm.buffermem = 90 10 60

# Increases the size of the socket queue (effectively, q0).

net.ipv4.tcp_max_syn_backlog = 1024

# Increase the maximum total TCP buffer-space allocatable

net.ipv4.tcp_mem = 57344 57344 65536

# Increase the maximum TCP write-buffer-space allocatable

net.ipv4.tcp_wmem = 32768 65536 524288

15

# Increase the maximum TCP read-buffer space allocatable

net.ipv4.tcp_rmem = 98304 196608 1572864

# Increase the maximum and default receive socket buffer size

net.core.rmem_max = 524280

net.core.rmem_default = 524280

# Increase the maximum and default send socket buffer size

net.core.wmem_max = 524280

net.core.wmem_default = 524280

# Increase the tcp-time-wait buckets pool size

net.ipv4.tcp_max_tw_buckets = 1440000

# Allowed local port range

net.ipv4.ip_local_port_range = 16384 65536

# Increase the maximum memory used to reassemble IP fragments

net.ipv4.ipfrag_high_thresh = 512000

net.ipv4.ipfrag_low_thresh = 446464

# Increase the maximum amount of option memory buffers

net.core.optmem_max = 57344

# Increase the maximum number of skb-heads to be cached

net.core.hot_list_length = 1024

## DO NOT REMOVE THE FOLLOWING LINE!

## nsobuild:20051206

重启后生效

/sbin/sysctl -p

sysctl -w net.ipv4.route.flush=1

9./tmp,/var/tmp,/dev/shm分区的安全

/tmp,/var/tmp,/dev/shm目录是不安全的,任何用户都可以执行脚本。

最好的解决办法是挂载ncexec和nosuid选项的参数

方法:

/tmp目录:

cd /dev

创建 100M (“count”) 的存储文件:

dd if=/dev/zero of=tmpMnt bs=1024 count=100000

设为一个扩展的文件系统:

/sbin/mke2fs /dev/tmpMnt (“…is not a block special device. continue?”回答yes)

备份现有临时文件:

cp -R /tmp/ /tmp_backup

用noexec挂载新文件系统:

mount -o loop,rw,nosuid,noexec /dev/tmpMnt /tmp

chmod 0777 /tmp

把备份的文件拷贝回去:

cp -R /tmp_backup/* /tmp/

删除备份:

rm -rf /tmp_backup

修改/etc/fstab 添加下面的条目使其在引导时仍然有效

/dev/tmpMnt /tmp ext2 loop,rw,nosuid,noexec 0 0

/var/tmp目录:

mv /var/tmp /var/tmpbak

ln -s /tmp /var/tmp

cp /var/tmpbak/* /tmp/

/dev/shm目录:

编辑/etc/fstab

把 none /dev/shm tmpfs defaults,rw 0 0

改为none /dev/shm tmpfs defaults,nosuid,noexec,rw 0 0

10.限制 crontab 及 at 的使用

使用者可以用 crontab 和 at 指令来安排自己定时执行的工作。一般的使用者并不需要拥有 crontab 或 at 的执行权,我们可以为这个指令设限,只允许必要的使用者执行。如果要限制使用 crontab,只需要在 /var/cron 目录中,加入 allow 或是 deny 这个档即可。例如,我们只允许少数几个使用者执行 crontab,我们可以新增 /var/cron/allow 这个档,内容为该使用者的名称。相对的,如果我们要限制少数几个使用者执行 crontab,只要编辑 /var/cron/deny 这个档即可。而指令 at 的限制也是一样,不同的只是允许执行 at 指令的名单是 /var/at/at.allow,而 拒绝的名单是 /var/at/at.deny。

11.指定允许root登陆的TTY设备

12.选择一个安全的密码

13.检查Rootkit

14.安装补丁

更新官方打补丁。

依旧存在俩个致命漏洞,普通用户直接获取root权限,和普通用户重启服务器的攻击,需要按照官方打上补丁,攻击方法和漏洞修补稍后写出

15.Nessus漏洞扫描器

检查系统是否存在其他没被注意到的漏洞,可以用其他工具扫描,比如:appscan、wvs

16.虽然我们可以直接修改/proc/sys/kernel/cap-bound来删除系统的某中能力,但是这样毕竟非常的不方便。有一个程序lcap可以帮助我们更方便的从系统中删除指定的能力。它可以从http://home.netcom.com/~spoon/lcap/下载。编译之后就可以直接使用。如果不带参数,lcap可以列出系统当前支持的各种能力:

 

[root@nixe0n lcap-0.0.6]# ./lcap

Current capabilities: 0xFFFFFEFF

0) *CAP_CHOWN          1) *CAP_DAC_OVERRIDE

2) *CAP_DAC_READ_SEARCH     3) *CAP_FOWNER

4) *CAP_FSETID         5) *CAP_KILL

6) *CAP_SETGID         7) *CAP_SETUID

8) CAP_SETPCAP         9) *CAP_LINUX_IMMUTABLE

10) *CAP_NET_BIND_SERVICE    11) *CAP_NET_BROADCAST

12) *CAP_NET_ADMIN       13) *CAP_NET_RAW

14) *CAP_IPC_LOCK        15) *CAP_IPC_OWNER

16) *CAP_SYS_MODULE       17) *CAP_SYS_RAWIO

18) *CAP_SYS_CHROOT       19) *CAP_SYS_PTRACE

20) *CAP_SYS_PACCT       21) *CAP_SYS_ADMIN

22) *CAP_SYS_BOOT        23) *CAP_SYS_NICE

24) *CAP_SYS_RESOURCE      25) *CAP_SYS_TIME

17.arp嗅探

双向绑定,arpon

18.cc攻击

防火墙处理

19.端口限制

对外开放的端口只有80,还是个反向的代理(比如:nginx,nginx保留日志),SSH端口做IP限制,如果有必要用denyhosts,fan2ban,都可以

20.防火墙的严格限制

 

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!