存档

‘聆听学linux’ 分类的存档

nginx日志分割 for linux

2012年2月15日 没有评论

默认情况下,nginx是不分割访问日志的,久而久之,网站的日志文件将会越来越大,占用空间不说,如果有问题要查看网站的日志的话,庞大的文件也将很难打开,于是便有了下面的脚本!

使用方法,先将以下脚本保存为 cutlog.sh,放在/root 目录下,然后给予此脚本执行的权限

chmod +x cutlog.sh

,然后使用crontab -e 将此脚本加入到计划任务中,

00 00 * * * /bin/bash /root/cutlog.sh

让此脚本每天凌晨0点0分执行。

#!/bin/bash
#function:cut nginx log files shell
#author: http://www.52listen.com
#设置您的网站访问日志保存的目录,我的统一放在了/home/wwwlogs目录下
log_files_path="/home/wwwlogs/"
log_files_dir=${log_files_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")
#设置你想切割的nginx日志文件名称,比如设置的日志文件名是52listen.com.log 的话,那这里直接填写 52listen.com 即可
log_files_name=(52listen.com access)
#设置nginx执行文件的路径。
nginx_sbin="/usr/local/nginx/sbin/nginx"
#设置你想保存的日志天数,我这里设置的是保存30天之前的日志
save_days=30
############################################
#Please do not modify the following script #
############################################
mkdir -p $log_files_dir
log_files_num=${#log_files_name[@]}
#cut nginx log files
for((i=0;i<$log_files_num;i++));do
mv ${log_files_path}${log_files_name[i]}.log ${log_files_dir}/${log_files_name[i]}_$(date -d "yesterday" +"%Y%m%d").log
done
#delete 30 days ago nginx log files
find $log_files_path -mtime +$save_days -exec rm -rf {} \;
$nginx_sbin -s reload
分类: 聆听学linux 标签: ,

Centos 6.0将光盘作为yum源

2012年1月7日 1 条评论

在使用Centos 的时候,用yum来安装软件包是再方便不过了,但是如果在无法连接互联网的情况下,yum就不好用了。
下面介绍一种方式,就是将Centos安装光盘作为yum源,然后使用yum来安装软件包。(以下步骤在Centos6.0系统上通过测试)

步骤1、首先将光盘挂载到系统的/media/cdrom 目录下

mkdir /media/cdrom       //在/media下建立cdrom目录,默认情况是没有的
mount /dev/cdrom /media/cdrom      //挂载光驱到/media/cdrom目录下

步骤2、进入到/etc/yum.repos.d 目录下,并执行以下操作

cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.bak      //将CentOS-Base.repo重命名
vi CentOS-Media.repo
修改其中的 gpgcheck参数,改为gpgcheck=0
修改其中的 enabled参数,改为enabled=1

然后保存退出。此时即可使用yum -y install 命令来安装软件包了。

分类: 聆听学linux 标签: ,

Linux服务器安装后的优化

2011年11月7日 没有评论

  我们的服务器并不是安装完成后就可直接托管到机房了,而是需要进行一系列的优化配置和安全配置等.

  1,关闭不需要的服务

  这个应该很容易理解的,凡是我们的系统不需要的服务,一概关闭,这样一个好处是减少内存和CPU时间的占用,另一个好处相对可以提高安全性.那么哪些服务是肯定要保留的呢?

  在linux机器上通常有四项服务是必须保留的

  iptables  linux下强大的防火墙,只要机器需要连到网上,哪里离得开它
  network  linux机器的网络,如果不上网可以关闭,只要上网当然要打开它
  sshd   这是openssh server,如果你的机器不是本地操作,而是托管到IDC机房,那么访问机器时需要通过这个sshd服务进行
  syslog  这是linux系统的日志系统,必须要有,否则机器出现问题时会找不到原因

  2,关闭不需要的tty

  请编辑你的/etc/inittab,找到如下一段:

  1:2345:respawn:/sbin/mingetty tty1
  2:2345:respawn:/sbin/mingetty tty2
  3:2345:respawn:/sbin/mingetty tty3
  4:2345:respawn:/sbin/mingetty tty4
  5:2345:respawn:/sbin/mingetty tty5
  6:2345:respawn:/sbin/mingetty tty6

  这段命令使init为你打开了6个控制台,分别可以用alt+f1到alt+f6进行访问.此6个控制台默认都驻留在内存中,事实上没有必要使用这么多的..你用ps auxf这个命令可以看到,是六个进程

  root 3004 0.0 0.0 1892 412 tty1 Ss+ Jun29 0:00 /sbin/mingetty tty1
  root 3037 0.0 0.0 2492 412 tty2 Ss+ Jun29 0:00 /sbin/mingetty tty2
  root 3038 0.0 0.0 2308 412 tty3 Ss+ Jun29 0:00 /sbin/mingetty tty3
  root 3051 0.0 0.0 1812 412 tty4 Ss+ Jun29 0:00 /sbin/mingetty tty4
  root 3056 0.0 0.0 2116 412 tty5 Ss+ Jun29 0:00 /sbin/mingetty tty5
  root 3117 0.0 0.0 2396 412 tty6 Ss+ Jun29 0:00 /sbin/mingetty tty6

  如何关闭这些进程?通常我们保留前2个控制台就可以了,把后面4个用#注释掉就可以了.然后无需重启机器,只需要执行 init q 这个命令即可

  q作为参数的含义:重新执行/etc/inittab中的命令

  3,如何关闭ipv6?

  ipv6目前我们还不需要,但系统安装完成后它会作为模块常驻核心,没有必要,可以用这个步骤来关闭它:

  首先编辑网络配置文件:

  vi /etc/sysconfig/network

  修改

  NETWORKING_IPV6=yes

  为

  NETWORKING_IPV6=no

  然后关闭其模块:vi /etc/modprobe.conf

  在文件中添加以下两行

  alias net-pf-10 off

  alias ipv6 off

  修改完成后需重启机器使之生效

  4,如何关闭atime?

  一个linux文件默认有3个时间:

  atime:对此文件的访问时间

  ctime:此文件inode发生变化的时间

  mtime:此文件的修改时间

  如果有多个小文件时通常没有必要记录文件的访问时间,这样可以减少磁盘的io,比如web服务器的页面上有多个小图片 如何进行设置呢?

  修改文件系统的配置文件:vi /etc/fstab

  在包含大量小文件的分区中使用noatime,nodiratime两项

  例如:

  /dev/md5 /data/pics1 ext3 noatime,nodiratime 0 0

  这样文件被访问时就不会再产生写磁盘的io

  5,一定要让你的服务器运行在level 3上

  做法:

  vi /etc/inittab

  id:3:initdefault:

  让服务器运行X是没有必要的

  6,优化sshd

  X11Forwarding no //不进行x图形的转发

  UseDNS no //不对IP地址做反向的解析

  7,优化shell

  修改命令history记录

  # vi /etc/profile

  找到 HISTSIZE=1000 改为 HISTSIZE=100

  然后 source /etc/profile

Centos系统安装后的一下初始化操作

2011年11月7日 没有评论

1、建立一个普通权限的用户
因为root用户对系统具有全权的操作权限,为了避免一些失误的操作,建议在一般情况下,以一般用户登录系统,必要的时候需要root操作权限时,再通过“su -”命令来登录为root用户进行操作。
useradd 52listen
passwd 52listen
usermod -G wheel 52listen
修改pam配置,使非wheel组用户不能使用su命令登录为root:
vi /etc/pam.d/su
找到
#auth required /lib/security/$ISA/pam_wheel.so use_uid
将行首的 # 去掉。
然后
vi /etc/login.defs
在文件末尾加上
SU_WHEEL_ONLY yes
2、安装yum加速工具,并更新系统
yum install yum-fastestmirror -y
yum upgrade -y
3、安装mlocate工具
yum install mlocate -y
4、root邮件的修改
在系统出现错误或有重要通知发送邮件给root的时候,让系统自动转送到我们通常使用的邮箱中,这样方便查阅相关报告和日志。
vi /etc/aliases
在文件末尾加上
root: 52listen@52listen.com
5、locate命令设置
vi /etc/updatedb.conf
在末尾增加
DAILY_UPDATE=yes
然后运行
updatedb
6、关闭不必要的服务
比如cups
/etc/init.d/cups stop
chkconfig cups off
除了以下服务以外,其他服务默认的都可以采用刚才的方法关闭:
atd
crond
irqbalance
lvm2-monitor
microcode_ctl
network
sendmail
sshd
syslog
7、停止ipv6
vi /etc/modprobe.conf
在文件末尾加上
alias net-pf-10 off
alias ipv6 off
8、关闭SELinux
vi /etc/selinux/config
将其中的
SELINUX=enforcing
改为
SELINUX=disabled
9、安装sudo工具
yum install sudo -y
安装好了以后,修改sudo的配置
vi /etc/sudousers

# %wheel ALL=(ALL) NOPASSWORD:ALL
去掉前面的 # , 然后保存文件。
这样修改了以后,只有所有属于wheel组的用户能执行sudo命令,并且执行sudo命令时只需要输入自己的密码即可。
10、修改SSH配置
vi /etc/ssh/sshd_config
增加ServerKey的强度
找到
#ServerKeyBits 768
改为
ServerKeyBits 1024
不允许root用户直接登录
#PermitRootLogin Yes
改为
PermitRootLogin no
禁止空密码登录
找到
#PermitEmptyPasswords no
去掉前面的 #
全部修改完了以后,重启服务器

Linux VPS禁止某个IP访问

2011年11月7日 没有评论

  今天在查看VPS的SSH登录记录吓了一跳,有几个IP连续登录SSH字典猜root密码,于是想到GFW掉他们

  /etc/hosts.allow和/etc/hosts.deny两个文件是控制远程访问设置的,通过他可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。

  如果请求访问的主机名或IP不包含在/etc/hosts.allow中,那么tcpd进程就检查/etc/hosts.deny。看请求访问的主机名或IP有没有包含在hosts.deny文件中。如果包含,那么访问就被拒绝;如果既不包含在/etc/hosts.allow中,又不包含在/etc/hosts.deny中,那么此访问也被允许。

  <daemon list>:<client list>[:<option>:<option>:...]

  daemon list 服务进程名列表,如telnet的服务进程名为in.telnetd

  client list 访问控制的客户端列表,可以写域名、主机名或网段,如.trubolinux.com.cn或者192.168.1.

  option 可选选项,这里可以是某些命令,也可以是指定的日志文件

  例子:hosts.allow

  in.telnetd:.52listen.com

  vsftpd:192.168.0.

  sshd:192.168.0.0/255.255.255.0

  /etc/hosts.allow里第一行52listen.com表示,只有52listen.com这个域里的主机允许访问TELNET服务,注意52listen.com前面的那个点(.)。

  /etc/hosts.allow里第二行表示,只有192.168.0这个网段的用户允许访问FTP服务,注意0后面的点(.)。

  /etc/hosts.allow里第三行表示,只有192.168.0这个网段的用户允许访问SSH服务,注意这里不能写为192.168.0.0/24。虽然在CISCO路由器种这两中写法是等同的。

  在/etc/hosts.deny里加上:

  sshd:62.75.214.93

  sshd:203.215.252.189

  sshd:219.143.200.169

  sshd:60.12.193.134

  sshd:201.83.220.44

  sshd:c953dc2c.virtua.com.br

  sshd:gera125.server4you.de

  把他们访问SSH的全部给拒绝了,Linux的GFW也很强。

Apache 虚拟主机 VirtualHost 配置

2011年11月7日 没有评论

  虚拟主机 (Virtual Host) 是在同一台机器搭建属于不同域名或者基于不同 IP 的多个网站服务的技术. 可以为运行在同一物理机器上的各个网站指配不同的 IP 和端口, 也可让多个网站拥有不同的域名.

  Apache 是世界上使用最广的 Web 服务器, 从 1.1 版开始支持虚拟主机. 本文将讲解在不同服务器 (Redhat Enterprise Linux, Ubuntu Linux, Windows) 上使用 Apache 搭建虚拟主机来搭建多个网站.

Redhat Enterprise Linux

Redhat Enterprise Linux (包括 CentOS Linux), 是使用最广的 Linux 服务器, 大量的网站应用都部署在其上.

1. 打开文件 /etc/httpd/conf/httpd.conf, 搜索 VirtualHost example, 找到代码如下:

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#<VirtualHost *:80>
#    ServerAdmin webmaster@dummy-host.example.com
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>

2. 仿照例子, 添加一段代码来指定某一域名的网站.

#
# DocumentRoot 是网站文件存放的根目录
# ServerName 是网站域名, 需要跟 DNS 指向的域名一致
#
<VirtualHost *:80>
    ServerAdmin zhao.wuz@alibaba-inc.com
    DocumentRoot /var/www/httpdocs/demo_aliluna_com
    ServerName demo.aliluna.com
    ErrorLog logs/demo.aliluna.com-error.log
    CustomLog logs/demo.aliluna.com-access.log common
</VirtualHost>

3. 重启 httpd 服务, 执行以下语句.

service httpd restart

Ubuntu Linux

Ubuntu 在 Linux 各发行版中, 个人用户数量最多的. 很多人在本机和虚拟机中使用. 但 Ubuntu 和 Redhat 的 VirtualHost 设置方法不相同.

1. 打开目录 /etc/apache2/sites-available/, 发现 default 和 default-ssl 两个文件, 其中 default 是 http 虚拟主机服务的配置文件, default-ssl 是配置 https 服务使用的. 可以复制一份 default 文件. 并修改配置文件名, 文件名必须与域名一致 (如: demo.aliluna.com)

2. 打开新建的配置文件, 修改 DocumentRoot, ServerName 和对应的配置目录. 例子如下:

#
# DocumentRoot 是网站文件存放的根目录
# ServerName 是网站域名, 需要跟 DNS 指向的域名一致
#
<VirtualHost *:80>
    ServerAdmin zhao.wuz@alibaba-inc.com
    DocumentRoot /var/www/httpdocs/demo_aliluna_com
    ServerName demo.aliluna.com
    ErrorLog ${APACHE_LOG_DIR}/demo.aliluna.com-error.log
    CustomLog ${APACHE_LOG_DIR}/demo.aliluna.com-access.log combined
</VirtualHost>

3. 通过 a2ensite 激活虚拟主机配置

sudo a2ensite demo.aliluna.com

4. 打开目录 /etc/apache2/sites-enabled/, 你会发现所有激活的虚拟主机, 可以通过 a2dissite 进行注销

sudo a2dissite demo.aliluna.com

5. 重启 Apache 服务, 激活虚拟主机

sudo /etc/init.d/apache2 restart

Windows

Windows 是市场占有率最高的 PC 操作系统, 也是很多人的开发环境. 其 VirtualHost 配置方法与 Linux 上有些差异, 以下方式适合原生 Apache, XAMPP 和 WAMP 套件.

1. 打开目录 {Apache2 安装目录}\conf\extra\, 找到 httpd-vhosts.conf 文件.

2. 仿照例子, 添加一段代码来指定某一域名的网站.

#
# DocumentRoot 是网站文件存放的根目录
# ServerName 是网站域名, 需要跟 DNS 指向的域名一致
#
<VirtualHost *:80>
    ServerAdmin zhao.wuz@alibaba-inc.com
    DocumentRoot "D:/workspace/php/demo_aliluna_com"
    ServerName demo.aliluna.com
    ErrorLog "logs/demo.aliluna.com-error.log"
    CustomLog "logs/demo.aliluna.com-access.log" common
</VirtualHost>

3. 打开 httpd.conf 文件, 添加如下语句.

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

4. 重启 Apache 服务.

Hyper-V安装Centos5.5网卡无法识别

2011年3月26日 没有评论

原因:因为Hyper-V虚拟机对Linux虚拟化技术支持的集成服务组件没有安装。
解决方法:
(特别注意–在我们安装虚拟linux操作系统时,确保C/C++ Compiler and Tools (也就是 c++开发工具包) 已经安装)
我们需要下载微软最新发布的用于 Hyper-V 虚拟机的 Linux 集成服务(Linux Integration Services) v2.1 版本组件,它在 Windows Server 2008 (R2)上为客户带来了更加完善的Linux 虚拟化技术支持。
下载地址:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=eee39325-898b-4522-9b4c-f4b5b9b64551
操作步骤:
1)下载后解压缩到Hyper-v的安装目录,在安装目录下有个ISO文件LinuxIC v21.iso,我们只需要把它加载到虚拟机的虚拟光驱内.
2)虚拟机系统加载ISO文件后,挂在CD
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom
复制光盘镜像所有文件到虚拟操作系统内
# mkdir /opt/linux_ic_v21_rtm
# cp –R /mnt/cdrom/* /opt/linux_ic_v21_rtm
复制好后开始编译安装组件,安装完成重启虚拟机
# cd /opt/linux_ic_v21_rtm/
# make
# make install
# reboot
重启好后,虚拟机系统就会认到网卡,我们配好IP和DNS就可以正常使用。
另:如果是64位linux操作系统我们还需要安装adjtimex.RPM
NOTE: If using the x64 version of Red Hat Enterprise Linux, follow these additional instructions:
1. Attach the Red Hat Enterprise Linux ISO that was used for installation in the virtual machine, and mount it using the following commands at a shell prompt:
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom
2. Install the adjtimex RPM for more accurate time keeping in the virtual machine:
# rpm –ivh /mnt/cdrom/Server/adjtimex-1.20-2.1.x86_64.rpm

新增 Virtual Machine 的时候,在 Configure Networking 的时候,可以先不用选网卡,因为默认添加的网卡linux认不出来,没有驱动。
建好虚拟机后先不用开机,先修改网卡设置。
打开新建虚拟机的settings
选择 Hardware -> Network Adapter,然后选remove,删除默认的网卡
接着再选 Hardware -> Add Hardware,增加一块Legacy Network Adapter ( 很关键 )
最后再回到 Hardware -> Network Adapter 选取网卡介面
最后这步完成后,你就可以顺利安装linux并联网了。
在Hyper-V中有两种形式的网卡Network Adapter 和Legacy Network Adapter
其中Network Adapter 是需要驱动的,可通过添加integration service安装,Linux下需要RPM包支持;而Legacy Network Adapter是不要驱动的。不过性能有差别Network Adapter 是10G的,Legacy Network Adapter只有100M。

分类: 聆听学linux 标签:

用iptables架设安全的vsftpd服务器

2010年12月8日 没有评论

在实际工作中,可用以下脚本架设一台很安全的内部FTP服务器;当然也可以配合Wireshark理解vsftpd的被动与主动的区别,以本机192.168.0.18为例,脚本如下:

#!/bin/bash
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
#开启ip转发功能
echo “1″ > /proc/sys/net/ipv4/ip_forward
#加载ftp需要的一些模块功能
modprobe ip_conntrack_ftp
modprobe ip_conntrack-tftp
modprobe ip_nat_ftp
modprobe ip_nat_tftp
#为了更安全,将OUTPUT默认策略定义为DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD ACCEPT
#开放本机的lo环回口,建议开放,不开放的会出现些莫名其妙的问题
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#下面的脚本是架设安全的vsftpd关健,后二句脚本是放行服务器向客户端作回应的和已建立连接的数据包,因被动FTP比较复杂,六次握手,所以这里采用状态来做
iptables -A INPUT -s 192.168.0.0/24 -p tcp –dport 21 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -p tcp –sport 21 -j ACCEPT
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state –state RELATED,ESTABLISHED -j ACCEPT

CentOS 5.2 服务器优化方案

2010年12月8日 没有评论
以下命令经过测试,都可以正常使用
1、关闭不需要的服务
# chkconfig –list
以下仅列出需要启动的服务,未列出的服务一律关闭:
crond
irqbalance (仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭)
microcode_ctl
network
random
sshd
syslog
2、对TCP/IP网络参数进行调整,加强抗SYN Flood能力
# vi /etc/sysctl.conf
添加这行代码:net.ipv4.tcp_syncookies = 1 (如果有的话就不用加)
# sysctl -p
3、 修改命令history记录
# vi /etc/profile
找到 HISTSIZE=1000 改为 HISTSIZE=50 (这条可根据实际情况而定)
4、 定时校正服务器时间
# yum install ntp
# crontab -e
加入一行:
*/5 * * * * ntpdate 210.72.145.44
#210.72.145.44为中国国家授时中心服务器地址
5、 因为是服务器,本着安全高效安全的原则,服务器里的文件越少越好;但建议开工具包含开发工具都选上,要不然很麻烦;centos系统还好说,红帽的升级折腾死人。
6、 停止打印服务
如果不准备提供打印服务,停止默认被设置为自动启动的打印服务。
[root@sample ~]#/etc/rc.d/init.d/cups stop ← 停止打印服务
Stopping cups:            [OK]  ← 停止服务成功,出现“OK”
[root@sample ~]#chkconfig cups off ← 禁止打印服务自动启动
[root@sample ~]#chkconfig –list cups ← 确认打印服务自启动设置状态
cups0:off 1:off 2:off 3:off 4:off 5:off 6:off ← 0-6都为off的状态就OK(当前打印服务自启动被禁止中)
7、停止ipv6,ipv6完全可以停掉
在CentOS默认的状态下,ipv6是被启用的状态。因为我们不使用ipv6,所以,停止ipv6,以最大限度保证安全和快速。
首先再次确认一下ipv6功能是不是被启动的状态。
[root@sample ~]#ifconfig -a ← 列出全部网络接口信息
eth0 Link encap:Ethernet HWaddr 00:0C:29:B6:16:A3
inet addr:192.168.0.13 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feb6:16a3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:84 errors:0 dropped:0 overruns:0 frame.:0
TX packets:93 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10288 (10.0 KiB) TX bytes:9337 (9.1 KiB)
Interrupt:185 Base address:0×1400
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame.:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:952 (952.0 b) TX bytes:952 (952.0 b)
sit0 Link encap:IPv6-in-IPv4 ← 确认ipv6是被启动的状态
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame.:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
然后修改相应配置文件,停止ipv6。
[root@sample ~]#vi /etc/modprobe.conf ← 修改相应配置文件,添加如下行到文尾:
alias net-pf-10 off
alias ipv6 off
echo “IPV6INIT=no” >> /etc/sysconfig/network-scripts/ifcfg-eth0
[root@sample ~]#shutdown -r now ← 重新启动系统,使设置生效
最后确认ipv6的功能已经被关闭。
[root@sample ~]#ifconfig -a ← 列出全部网络接口信息
eth0 Link encap:Ethernet HWaddr 00:0C:29:B6:16:A3
inet addr:192.168.0.13 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feb6:16a3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:84 errors:0 dropped:0 overruns:0 frame.:0
TX packets:93 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10288 (10.0 KiB) TX bytes:9337 (9.1 KiB)
Interrupt:185 Base address:0×1400lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame.:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:952 (952.0 b) TX bytes:952 (952.0 b)
确认ipv6的相关信息没有被列出,说明ipv6功能已被关闭(即不出现ipv6的字样)如果这样也达到禁止ipv4的效果,那就只有重新编译内核了,关于此问题的讨论见http://linux.chinaunix.net/bbs/thread-1050127-5-1.html。
8、优化内核,调整临时端口范围
vim /etc/sysctl.conf
net.ipv4.ip_local_port_range=1024 65535
不重启让内核立马生效
/sbin/sysctl -p
9、调整Linux的最大文件打开数,否则squid在高负载时执行性能将很低
vim /etc/security/limit.conf ,在最后一行添加
* soft nofile 65535
* hard nofile 70000
值得注意的是,通过命令ulimit -SHn 是改变不了linux系统的最大文件打开数的。

以下命令经过测试,都可以正常使用
1、关闭不需要的服务# chkconfig –list以下仅列出需要启动的服务,未列出的服务一律关闭:crondirqbalance (仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭)microcode_ctlnetworkrandomsshdsyslog
2、对TCP/IP网络参数进行调整,加强抗SYN Flood能力# vi /etc/sysctl.conf添加这行代码:net.ipv4.tcp_syncookies = 1 (如果有的话就不用加)# sysctl -p
3、 修改命令history记录# vi /etc/profile找到 HISTSIZE=1000 改为 HISTSIZE=50 (这条可根据实际情况而定)
4、 定时校正服务器时间# yum install ntp# crontab -e加入一行:*/5 * * * * ntpdate 210.72.145.44#210.72.145.44为中国国家授时中心服务器地址
5、 因为是服务器,本着安全高效安全的原则,服务器里的文件越少越好;但建议开工具包含开发工具都选上,要不然很麻烦;centos系统还好说,红帽的升级折腾死人。
6、 停止打印服务如果不准备提供打印服务,停止默认被设置为自动启动的打印服务。[root@sample ~]#/etc/rc.d/init.d/cups stop ← 停止打印服务Stopping cups:            [OK]  ← 停止服务成功,出现“OK”[root@sample ~]#chkconfig cups off ← 禁止打印服务自动启动[root@sample ~]#chkconfig –list cups ← 确认打印服务自启动设置状态cups0:off 1:off 2:off 3:off 4:off 5:off 6:off ← 0-6都为off的状态就OK(当前打印服务自启动被禁止中)
7、停止ipv6,ipv6完全可以停掉在CentOS默认的状态下,ipv6是被启用的状态。因为我们不使用ipv6,所以,停止ipv6,以最大限度保证安全和快速。首先再次确认一下ipv6功能是不是被启动的状态。[root@sample ~]#ifconfig -a ← 列出全部网络接口信息eth0 Link encap:Ethernet HWaddr 00:0C:29:B6:16:A3inet addr:192.168.0.13 Bcast:192.168.0.255 Mask:255.255.255.0inet6 addr: fe80::20c:29ff:feb6:16a3/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:84 errors:0 dropped:0 overruns:0 frame.:0TX packets:93 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:10288 (10.0 KiB) TX bytes:9337 (9.1 KiB)Interrupt:185 Base address:0×1400
lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:12 errors:0 dropped:0 overruns:0 frame.:0TX packets:12 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:952 (952.0 b) TX bytes:952 (952.0 b)sit0 Link encap:IPv6-in-IPv4 ← 确认ipv6是被启动的状态NOARP MTU:1480 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame.:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
然后修改相应配置文件,停止ipv6。[root@sample ~]#vi /etc/modprobe.conf ← 修改相应配置文件,添加如下行到文尾:alias net-pf-10 offalias ipv6 offecho “IPV6INIT=no” >> /etc/sysconfig/network-scripts/ifcfg-eth0[root@sample ~]#shutdown -r now ← 重新启动系统,使设置生效最后确认ipv6的功能已经被关闭。
[root@sample ~]#ifconfig -a ← 列出全部网络接口信息eth0 Link encap:Ethernet HWaddr 00:0C:29:B6:16:A3inet addr:192.168.0.13 Bcast:192.168.0.255 Mask:255.255.255.0inet6 addr: fe80::20c:29ff:feb6:16a3/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:84 errors:0 dropped:0 overruns:0 frame.:0TX packets:93 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:10288 (10.0 KiB) TX bytes:9337 (9.1 KiB)Interrupt:185 Base address:0×1400lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:12 errors:0 dropped:0 overruns:0 frame.:0TX packets:12 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:952 (952.0 b) TX bytes:952 (952.0 b)
确认ipv6的相关信息没有被列出,说明ipv6功能已被关闭(即不出现ipv6的字样)如果这样也达到禁止ipv4的效果,那就只有重新编译内核了,关于此问题的讨论见http://linux.chinaunix.net/bbs/thread-1050127-5-1.html。
8、优化内核,调整临时端口范围vim /etc/sysctl.confnet.ipv4.ip_local_port_range=1024 65535不重启让内核立马生效/sbin/sysctl -p
9、调整Linux的最大文件打开数,否则squid在高负载时执行性能将很低vim /etc/security/limit.conf ,在最后一行添加* soft nofile 65535* hard nofile 70000值得注意的是,通过命令ulimit -SHn 是改变不了linux系统的最大文件打开数的。

聆听_Linux VPS上查找后门程序

2010年11月4日 没有评论

聆听_Linux VPS上查找后门程序

linux系统下,每个进程都会有一个PID,而每一个PID都会在/proc目录下有一个相应的目录,这是Linux(当前内核2.6)系统的实现。

一般后门程序,在ps等进程查看工具里找不到,因为这些常用工具甚至系统库基本上已经被动过手脚(网上流传着大量的rootkit。假如是内核级的木马,那么该方法就无效了)。

因为修改系统内核相对复杂(假如内核被修改过,或者是内核级的木马,就更难发现了),所以在/proc下,基本上还都可以找到木马的痕迹。

思路:
在/proc中存在的进程ID,在 ps 中查看不到(被隐藏),必有问题。

for i in /proc/[0-9]* ; do

讨论:

检查系统(Linux)是不是被黑,其复杂程度主要取决于入侵者“扫尾工作”是否做得充足。对于一次做足功课的入侵来说,要想剔除干净,将是一件分精密、痛苦的事情,通常这种情况,需要用专业的第三方的工具(有开源的,比如tripwire,比如aide)来做这件事情。

而专业的工具,部署、使用相对比较麻烦,也并非所有的管理员都能熟练使用。

实际上Linux系统本身已经提供了一套“校验”机制,在检查系统上的程序没有被修改。比如rpm包管理系统提供的 -V 功能:

rpm -Va

即可校验系统上所有的包,输出与安装时被修改过的文件及相关信息。但是rpm系统也可能被破坏了,比如被修改过。