Category: Linux

使用 rsync 或 unison 备份或同步支持 ssh 的 web 主机

By admin, 2010年03月27日 9:07 上午

使用 web 主机而非 VPS 的站长,站点的备份或同步常常是一个问题。很多站点只能使用 ftp 做单向备份,基于较弱的元信息来判定文件是否需要重新下载,缺乏校验、压缩、增量传输等高级特性。有的服务商在 web 控制面板中提供备份功能,或允许上传简单的 cron 脚本,但这些途径通常只适合备份整站或指定目录,而不方便以增量方式传输更新过的内容。Linux 下成熟的镜像同步工具是 rsync,如果你的 web 主机允许 ssh 登录,则可以考虑使用 rsync 或其它类似工具。

网上有很多说法认为 web 主机不允许跑 daemon、不允许开自定义端口,故而无法使用 rsync。其实不然,rsync 可以仅通过 ssh 连接而不需要开放额外的端口,服务端也可以借助 sshd 来启动而不需要作为 daemon 运行。我们需要的只是 ssh 登录以及运行自己上传的程序的权限。我使用的 Godaddy Economy Plan Hosting (Linux) 即属于这种情况。

Godaddy 的 web 主机不提供 rsync 程序,我们可以从本地上传一个。需要注意上传的 rsync 二进制文件应该与你的 web 主机的平台一致,连接 libc、libpopt 等库的版本一致。对于使用 x86 版 CentOS 5.2 的 Godaddy 主机,我也直接在相同版本的 CentOS 中提取了一个 rsync 上传。这时,在客户端使用“-e”参数指定连接方式为 ssh,用“–rsync-path”参数指定服务端 rsync 所在的位置,即可借助 ssh 连接传输数据了。

rsync -vzrtopgl –progress –delete -e ssh –rsync-path=/[remote_home_dir]/bin/rsync [username]@[hostname]:/[remote_home_dir]/html/ /[local_home_dir]/

如果客户端为 Windows,则可以使用 Win32 下移植的 cwRsync,这个工具基于 cygwin 库但不需要安装整个 cygwin 环境,它同时包含了 Win32 版的 OpenSSH 客户端。上述命令无须修改即可在 Windows 下运行。

rsync 解决了文件的单向的备份或镜像功能,但如果需要双向同步,更适合的工具是 unison。unison 使用 OCaml 语言开发,基于 rsync 算法对两端文件进行比较,将它们更新到一致的状态(最新的、不冲突的版本)。unison 可借助 socket、ssh 等连接方式,并支持多种操作系统。与 rsync 类似,我们需要向 web 主机上传一个 unison 二进制文件。官方只提供了最新版的源代码,需要自行下载到本地编译(事先安装 OCaml 编译器及 etags 工具)。服务端部署之后,客户端配置文件([config_name].prf)为:

root = /[local_home_dir]/html/

root = ssh://[username]@[hostname]//[remote_home_dir]/html/

servercmd = /[remote_home_dir]/bin/unison

在客户端执行 ./unison [config_name] 即可完成双向同步。注意 unison 要求服务端和客户端的主次版本号一致。

如果客户端为 Windows,同样可以使用来自 cwRsync 的 ssh 命令。如果嫌这个 ssh 外加 cygwin 库的体积太大(~5M),另一种替代的方案是使用 Putty 提供的 Plink 工具。这是一个小巧的 Win32 ssh 客户端(276K),由于运行参数与 OpenSSH 不同,因此需要写一个批处理文件(ssh.bat)来封装:

@Plink.exe [hostname] -l [username] -pw [password] “/[remote_home_dir]/bin/unison -server”

并在 unicon 配置文件中指定 ssh 命令:

sshcmd = ssh.bat

此时运行 unicon,即可使用 Plink 进行 ssh 连接。

无论使用 OpenSSH 的 ssh 还是 Putty 的 Plink,都可以借助公钥认证方式避免密码的输入。这样有利于定时备份和同步的自动化执行。具体方法不再赘述。

修改kloxo免费虚拟主机控制面板默认IP主页Kloxo Default Page方法

By admin, 2010年03月26日 10:45 上午

通常,虚拟主机的控制面板有cp、da两种世界上最出名的可以使用,不过他们都是需要收费的,世界上当然也会有免费的午餐,所以kloxo免费的虚拟主机控制面板就诞生了。

点击在新窗口中浏览此图片
    安装了kloxo之后,所有的PHP环境都是一起自动配置好的,所以新手就不用再去命令行下在繁琐的配置php环境了。不过安装好后默认使用ip浏览的话会出现kloxo自己的主页,也就是Kloxo Default Page,那么我们要如何修改这个主页呢?今天小石头就为大家带来了修改的方法。

    方法如下:首先使用sftp软件通过ssh登陆到VPS系统当中,进入根目录,如下图所示:
点击在新窗口中浏览此图片

    然后进入home目录,如下图所示:
点击在新窗口中浏览此图片

      然后进入kloxo目录,如下图所示:
点击在新窗口中浏览此图片

      最后的default目录就是默认的kloxo ip网页,在这里修改掉index.html文件就可以使得ip访问的页面修改了。
点击在新窗口中浏览此图片

    kloxo是一款免费的虚拟主机管理软件,他的使用也是非常简单的,只要你用心去钻研了,终究会得到回报的。

vsftpd-for-LNMP 安装使用

By admin, 2010年03月23日 5:44 下午

下载vsftpd-for-LNMP.zip:执行 wget http://blog.licess.cn/uploads/200903/vsftpd-for-LNMP.zip

unzip vsftpd-for-LNMP.zip

cd vsftpd-for-LNMP

chmod +x installvsftpd.sh

./installvsftpd.sh

安装完毕后即可使用你的SSH的帐号和密码登录,也可以修改/etc/vsftpd.chroot限制用户在家目录里。默认添加了adminftp用户,但是没有设置密码,可以执行passwd adminftp 来设置密码,或者userdel admintpd 删除用户。

执行 adduser -d /web/www/user1 -s /sbin/nologin user1 来添加一个不能SSH登录的FTP帐号,家目录为/web/www/user1 但是没有限制,添加限制,请修改/etc/vsftpd.chroot 添加要限制的用户。

修改 /etc/xinetd.d/vsftpd           disable                 = yes

配置文件:

# 默认配置文件: /etc/vsftpd.conf
#
#
#     下面是配置的选项及说明
#
#

######### 核心设置 ###########

# 允许本地用户登录
local_enable=YES

# 本地用户的写权限
write_enable=YES

# 使用FTP的本地文件权限,默认为077
# 一般设置为022
local_umask=022

# 切换目录时
# 是否显示目录下.message的内容
dirmessage_enable=YES

#验证方式
#pam_service_name=vsftpd

# 启用FTP数据端口的数据连接
connect_from_port_20=YES

# 以独立的FTP服务运行
listen=yes

# 修改连接端口
listen_port=21

######### 匿名登录设置 ###########

# 允许匿名登录
anonymous_enable=NO

# 如果允许匿名登录
# 是否开启匿名上传权限
#anon_upload_enable=YES

# 如果允许匿名登录
# 是否允许匿名建立文件夹并在文件夹内上传文件
#anon_mkdir_write_enable=YES

# 如果允许匿名登录
# 匿名帐号可以有删除的权限
#anon_other_write_enable=yes

# 如果允许匿名登录
# 匿名的下载权限
# 匿名为Other,可设置目录/文件属性控制
#anon_world_readable_only=no

# 如果允许匿名登录
# 限制匿名用户传输速率,单位bite
#anon_max_rate=30000

######### 用户限制设置 ###########

#### 限制登录

# 用userlist来限制用户访问
#userlist_enable=yes

# 名单中的人不允许访问
#userlist_deny=no

# 限制名单文件放置的路径
#userlist_file=/etc/vsftpd_userlist_deny.chroot

#### 限制目录

# 限制所有用户都在家目录
chroot_local_user=yes

# 调用限制在家目录的用户名单
chroot_list_enable=YES

# 限制在家目录的用户名单所在路径
#chroot_list_file=/etc/vsftpd/vsftpd.chroot

######### 日志设置 ###########

# 日志文件路径设置
xferlog_file=/var/log/vsftpd.log

# 激活上传/下载的日志
xferlog_enable=YES

# 使用标准的日志格式
#xferlog_std_format=YES

######### 安全设置 ###########

# 用户空闲超时,单位秒
#idle_session_timeout=600

# 数据连接空闲超时,单位秒
#data_connection_timeout=120

# 将客户端空闲1分钟后断开
#accept_timeout=60

# 中断1分钟后重新连接
#connect_timeout=60

# 本地用户传输速率,单位bite
#local_max_rate=50000

# FTP的最大连接数
max_clients=200

# 每IP的最大连接数
max_per_ip=5

######### 被动模式设置 ###########

# 是否开户被动模式
pasv_enable=yes

# 被动模式最小端口
pasv_min_port=5000

# 被动模式最大端口
pasv_max_port=6000

######### 其他设置 ###########

# 欢迎信息
ftpd_banner=Welcome to Ftp Server!

申请KLOXO/Lxadmin通行证的方法

By admin, 2010年03月13日 8:14 上午

免费版的KLOXO/Lxadmin在安装后限制绑定域名数量为40个,如果想要无限制怎么办呢?

这就需要KLOXO/Lxadmin的授权通行证了

申请通行证的教程如下:

1.到官方:http://lxlabs.com/register 注册个账户

The Username you would Prefer: (你希望的用户名)

Contact Email Address: (你的Email地址)

填写完后点击”Register”

随后你会收到一封邮件,里面有你的”用户名”和”密码”
2.打开https://client.lxlabs.com:5557/login/

这里好像没有SSL证书,不过没关系只要你点击”继续浏览此网站(不推荐)。”就可以了.

3.进入后如图设置
点击Kloxo Licenses

再点击 Add Kloxo License

在 Ipaddress出 填入你要授权的ip 后点add

.回到你的Kloxo面板选择高级中的”授权更新”,然后点击”Update License From Lxlabs”

重新安装KLOXO/Lxadmin

By admin, 2010年03月13日 4:10 上午

KLOXO/Lxadmin给弄挂了这么办?

很多朋友不知道该怎么办.难道重装系统?这也太麻烦了吧!

那就重装KLOXO/Lxadmin吧!

方法如下:

rm -rf /var/lib/mysql/
rpm -e mysql-server
yum -y install mysql-server

然后重新安装:centos安装kloxo控制面板教程

CentOS安全设置

By admin, 2010年01月29日 4:14 上午

1、CentOS或Red Had Enterprise Linux 4 的用户要首先要打开SElinux,方法是修改/etc/selinux/config文件中的SELINUX=”" 为enforcing 。它可以保证你的系统不会非正常的崩溃。有些人认为应该关闭,我强烈不推荐,当然只是将centos用来玩玩,不是用于实际服务器则无所谓了。

2、启用iptables 防火墙,对增加系统安全有许多好处。设置好防火墙的规则。

3、执行setup 关闭那些不需要的服务 ,记住少开一个服务,就少一个危险。

4、禁止Control-Alt-Delete 键盘关闭命令
在”/etc/inittab” 文件中注释掉下面这行(使用#):
ca::ctrlaltdel:/sbin/shutdown -t3 -r now 
改为:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now 
为了使这项改动起作用,输入下面这个命令:
# /sbin/init q

5、给”/etc/rc.d/init.d” 下script文件设置权限
给执行或关闭启动时执行的程序的script文件设置权限。
# chmod -R 700 /etc/rc.d/init.d/* 
这表示只有root才允许读、写、执行该目录下的script文件。

6、修改”/etc/host.conf”文件
“/etc/host.conf”说明了如何解析地址。编辑”/etc/host.conf”文件(vi /etc/host.conf),加入下面这行:
# Lookup names via DNS first then fall back to /etc/hosts. 
order bind,hosts 
# We have machines with multiple IP addresses. 
multi on 
# Check for IP address spoofing. 
nospoof on 
第一项设置首先通过DNS解析IP地址,然后通过hosts文件解析。第二项设置检测是否”/etc/hosts”文件中的主机是否拥有多个IP地址(比如有多个以太口网卡)。第三项设置说明要注意对本机未经许可的电子欺骗。

7、使”/etc/services”文件免疫
使”/etc/services”文件免疫,防止未经许可的删除或添加服务:
# chattr +i /etc/services

8.阻止你的系统响应任何从外部/内部来的ping请求。
既然没有人能ping通你的机器并收到响应,你可以大大增强你的站点的安全性。你可以加下面的一行命令到/etc/rc.d/rc.local,以使每次启动后自动运行。
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

9、对你的系统上所有的用户设置资源限制可以防止DoS类型攻击(denial of service attacks)
如最大进程数,内存数量等。例如,对所有用户的限制象下面这样:
vi /etc/security/limits.conf

下面的代码示例中,所有用户每个会话都限制在 10 MB,并允许同时有四个登录。第三行禁用了每个人的内核转储。第四行除去了用户 bin 的所有限制。ftp 允许有 10 个并发会话(对匿名 ftp 帐号尤其实用);managers 组的成员的进程数目限制为 40 个。developers 有 64 MB 的 memlock 限制,wwwusers 的成员不能创建大于 50 MB 的文件。

清单 3. 设置配额和限制

* hard rss 10000
* hard maxlogins 4
* hard core 0
bin -
ftp hard maxlogins 10
@managers hard nproc 40
@developers hard memlock 64000
@wwwusers hard fsize 50000

要激活这些限制,您需要在 /etc/pam.d/login 底部添加下面一行: session required /lib/security/pam_limits.so。

10、注释掉不需要的用户和用户组。
vipw
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpm:x:37:37::/var/lib/rpm:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
netdump:x:34:34:Network Crash Dump user:/var/crash:/bin/bash
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
sshd:x:74:74:Privilerpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
pcap:x:77:77::/var/arpwatch:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin
pegasus:x:66:65:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
htt:x:100:101:IIIMF Htt:/usr/lib/im:/sbin/nologin
wangjing:x:500:500::/home/wangjing:/bin/bash
mysql:x:101:102:MySQL server:/var/lib/mysql:/bin/bash
apache:x:48:48:Apache:/var/www:/sbin/nologin
ge-separated SSH:/var/empty/sshd:/sbin/nologin

对于不需要的用户全部加 # 注释掉。注意,我不建议直接删除,当你某种原因需要某个用户时,自己重新会很麻烦。

vi /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
tty:x:5:
disk:x:6:root
lp:x:7:daemon,lp
mem:x:8:
kmem:x:9:
wheel:x:10:root
mail:x:12:mail
news:x:13:news
uucp:x:14:uucp
man:x:15:
games:x:20:
gopher:x:30:
dip:x:40:
ftp:x:50:
lock:x:54:
nobody:x:99:
users:x:100:
dbus:x:81:
floppy:x:19:
vcsa:x:69:
rpm:x:37:
haldaemon:x:68:
utmp:x:22:
netdump:x:34:
nscd:x:28:
slocate:x:21:
sshd:x:74:
rpc:x:32:
rpcuser:x:29:
nfsnobody:x:65534:
mailnull:x:47:
smmsp:x:51:
pcap:x:77:
xfs:x:43:
ntp:x:38:
gdm:x:42:
pegasus:x:65:
htt:x:101:
wangjing:x:500:
mysql:x:102:
apache:x:48:

对于不需要的用户组全部加 # 注释掉。注意,我不建议直接删除,当你某种原因需要某个用户组时,自己重新会很麻烦。

11、用chattr命令给下面的文件加上不可更改属性。
[root@deep]# chattr +i /etc/passwd
[root@deep]# chattr +i /etc/shadow
[root@deep]# chattr +i /etc/group
[root@deep]# chattr +i /etc/gshadow

注意执行这个操作后,以root身份都不能向系统增加用户或者修改密码了。如果我们要增加用户或者修改密码的。应该先用chattr -i /etc/passwd等命令解除不可写设置,再进行操作。

12、改变sshd缺省端口
SSHD的默认端口就是 22 ,地球人都知道,通常黑客在没有准确目标的情况下要寻找 Linux机器的最好方法就是扫描所有开放了 22 端口的机器,然后放在一个列表里,一个个去探求它的漏洞。
比如 nmap4 的新功能 nmap -v -iR 10000 -P0 -p 22 可随机在10000个IP里去寻找开放了 22 端口的机器。当然也可以有目标的把日本或者其他国家的ip段添上再扫描。
通常是按照服务对应的常规端口去扫描,除非用全端口1-65535,但除非是针对性的对一台机器扫描,否则这样效率不高。
把默认端口改变成60022的步骤如下:
vi /etc/ssh/sshd_config

找到#Port 22,标识默认使用22端口,如果需要更改为8888则去掉前面的 # 注释符号,修改为:Port 60022
然后重启服务进程
# /etc/init.d/sshd restart

sshd_config其他安全选项
把 #PermitRootLogin yes 改为 PermitRootLogin no 可防止 root 远程登陆
把 #Protocol 1,2 改 Protocol 2 ,不用 SSH protocol 1 协议,只用 2

当然还有一些选项,视需要而定,比如:Banner的伪造、登陆失败后的的锁定时间、是否允许空口令帐号登陆、服务器密钥的位数等、允许登陆的用户和IP等。

13、 内核参数调整
sysctl -w net.ipv4.conf.default.accept_source_route=0
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
#sysctl -w net.ipv4.icmp_echo_ignore_all=1
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
sysctl -w net.ipv4.ip_conntrack_max=65535
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_syn_retries=1
sysctl -w net.ipv4.tcp_fin_timeout=5
sysctl -w net.ipv4.tcp_synack_retries=1
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.route.gc_timeout=100
sysctl -w net.ipv4.tcp_keepalive_time=500
sysctl -w net.ipv4.tcp_max_syn_backlog=10000

14、经常检查系统日志。系统日志主要位于/var/log/目录下。防患于未然。

通过以上设置你的系统一般来说就比较安全了。当然安全与不安全是道与魔的斗争。

CentOS的安全配置

By admin, 2010年01月29日 4:09 上午

  一、系统安全记录文件

  操作系统内部的记录文件是检测是否有网络入侵的重要线索。如果您的系统是直接连到Internet,您发现有很多人对您的

  系统做Telnet/FTP登录尝试,可以运行”#more /var/log/secure | grep refused”来检查系统所受到的攻击,以便采取相应

  的对策,如使用SSH来替换Telnet/rlogin等。

  二、启动和登录安全性

  1.BIOS安全

  设置BIOS密码且修改引导次序禁止从软盘启动系统。

  2.用户口令

  用户口令是Linux安全的一个基本起点,很多人使用的用户口令过于简单,这等于给侵入者敞开了大门,虽然从理论上说

  ,只要有足够的时间和资源可以利用,就没有不能破解的用户口令,但选取得当的口令是难于破解的。较好的用户口令是那些

  只有他自己容易记得并理解的一串字符,并且绝对不要在任何地方写出来。

  修改改密码长度需要编译login.defs文件

  vi /etc/login.defs

  PASS_MIN_LEN 8

  3.注释掉不需要的用户和用户组

  应该禁止所有默认的被操作系统本身启动的并且不必要的账号,当您第一次安装系统时就应该这么做,Linux提供了很多

  默认账号,而账号越多,系统就越容易受到攻击。

  vi /etc/passwd

  #userdel adm

  #userdel lp

  #userdel sync

  #userdel shutdown

  #userdel halt

  #userdel news

  #userdel uucp

  #userdel operator

  #userdel games

  #userdel gopher

  #userdel ftp

  vi /etc/group

  #groupdel adm

  #groupdel lp

  #groupdel news

  #groupdel uucp

  #groupdel games

  #groupdel dip

  #groupdel pppusers

  4.口令文件

  chattr命令给下面的文件加上不可更改属性,从而防止非授权用户获得权限。

  # chattr +i /etc/passwd

  # chattr +i /etc/shadow

  # chattr +i /etc/group

  # chattr +i /etc/gshadow

  5.禁止Ctrl Alt Delete重新启动机器命令

  修改/etc/inittab文件,将”ca::ctrlaltdel:/sbin/shutdown -t3 -r now”一行注释掉。然后重新设

  置/etc/rc.d/init.d/目录下所有文件的许可权限,运行如下命令:

  # chmod -R 700 /etc/rc.d/init.d/*

  这样便仅有root可以读、写或执行上述所有脚本文件。

  6.限制su命令

  如果您不想任何人能够su作为root,可以编辑/etc/pam.d/su文件,增加如下两行:

  auth sufficient /lib/security/pam_rootok.so debug

  auth required /lib/security/pam_wheel.so group=isd

  这时,仅isd组的用户可以su作为root。此后,如果您希望用户admin能够su作为root,可以运行如下命令:

  # usermod -G10 admin

  7.删减登录信息

  默认情况下,登录提示信息包括Linux发行版、内核版本名和服务器主机名等。对于一台安全性要求较高的机器来说这样

  泄漏了过多的信息。可以编辑/etc/rc.d/rc.local将输出系统信息的如下行注释掉。

  # This will overwrite /etc/issue at every boot. So, make any changes you

  # want to make to /etc/issue here or you will lose them when you reboot.

  # echo “” > /etc/issue

  # echo “$R” >> /etc/issue

  # echo “Kernel $(uname -r) on $a $(uname -m)” >> /etc/issue

  # cp -f /etc/issue /etc/issue.net

  # echo >> /etc/issue

  然后,进行如下操作:

  # rm -f /etc/issue

  # rm -f /etc/issue.net

  # touch /etc/issue

  # touch /etc/issue.net

  8、更改SSH端口,最好改为10000以上,别人扫描到端口的机率也会下降

  不允许使用低版本的SSH协议

  vi /etc/ssh/ssd_config

  将#protocol 2,1改为

  protocol 2

  将PORT改为1000以上端口

  vi /etc/ssh/sshd_config

  Port 10000

  同时,创建一个普通登录用户,并取消直接root登录

  useradd ‘username’

  passwd ‘username’

  vi /etc/ssh/sshd_config

  PermitRootLogin no #取消root直接远程登录

  9、关闭那些不需要的服务 ,记住少开一个服务,就少一个危险。

  以下仅列出需要启动的服务,未列出的服务一律关闭:

  #setup

  acpid

  anacron

  cpuspeed

  crond

  irqbalance \\仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭。

  microcode_ctl

  network

  random

  sendmail

  sshd

  syslog

  yum-updatesd

  10、启用iptables 防火墙,对增加系统安全有许多好处。设置好防火墙的规则。

  vi /etc/sysconf/iptables

  *filter

  :INPUT DROP [0:0]

  :FORWARD DROP [0:0]

  :OUTPUT ACCEPT [0:0]

  # allow local loopback connections

  -A INPUT -i lo -j ACCEPT

  # drop INVALID connections

  -A INPUT -m state –state INVALID -j DROP

  -A OUTPUT -m state –state INVALID -j DROP

  -A FORWARD -m state –state INVALID -j DROP

  # allow all established and related

  -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

  # add anymore rules here

  COMMIT

  三、限制网络访问

  1.NFS访问

  如果您使用NFS网络文件系统服务,应该确保您的/etc/exports具有最严格的访问权限设置,也就是意味着不要使用任何

  通配符、不允许root写权限并且只能安装为只读文件系统。编辑文件/etc/exports并加入如下两行。

  /dir/to/export host1.mydomain.com(ro,root_squash)

  /dir/to/export host2.mydomain.com(ro,root_squash)

  /dir/to/export 是您想输出的目录,host.mydomain.com是登录这个目录的机器名,ro意味着mount成只读系统,

  root_squash禁止root写入该目录。为了使改动生效,运行如下命令。

  # /usr/sbin/exportfs -a

  2.Inetd设置

  首先要确认/etc/inetd.conf的所有者是root,且文件权限设置为600。设置完成后,可以使用”stat”命令进行检查。

  # chmod 600 /etc/inetd.conf

  然后,编辑/etc/inetd.conf禁止以下服务。

  ftp telnet shell login exec talk ntalk imap pop-2 pop-3 finger auth

  如果您安装了ssh/scp,也可以禁止掉Telnet/FTP。为了使改变生效,运行如下命令:

  #killall -HUP inetd

  默认情况下,多数Linux系统允许所有的请求,而用TCP_WRAPPERS增强系统安全性是举手之劳,您可以修

  改/etc/hosts.deny和/etc/hosts.allow来增加访问限制。例如,将/etc/hosts.deny设为”ALL: ALL”可以默认拒绝所有访问

  。然后在/etc/hosts.allow文件中添加允许的访问。例如,”sshd: 192.168.1.10/255.255.255.0 gate.openarch.com”表示

  允许IP地址192.168.1.10和主机名gate.openarch.com允许通过SSH连接。

  配置完成后,可以用tcpdchk检查:

  # tcpdchk

  tcpchk是TCP_Wrapper配置检查工具,它检查您的tcp wrapper配置并报告所有发现的潜在/存在的问题。

  3.登录终端设置

  /etc/securetty文件指定了允许root登录的tty设备,由/bin/login程序读取,其格式是一个被允许的名字列表,您可以

  编辑/etc/securetty且注释掉如下的行。

  tty1

  # tty2

  # tty3

  # tty4

  # tty5

  # tty6

  这时,root仅可在tty1终端登录。

  4.避免显示系统和版本信息。

  如果您希望远程登录用户看不到系统和版本信息,可以通过一下操作改变/etc/inetd.conf文件:

  telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h

  加-h表示telnet不显示系统信息,而仅仅显示”login:”。

  5.修改相应配置文件停止ipv6。

  #vi /etc/modprobe.conf

  alias net-pf-10 off

  alias ipv6 off

  #shutdown -r now

  四、防止攻击

  1.阻止ping 如果没人能ping通您的系统,安全性自然增加了。为此,可以在/etc/rc.d/rc.local文件中增加如下一行

  :

  #echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

  2.防止IP欺骗

  编辑host.conf文件并增加如下几行来防止IP欺骗攻击。

  order bind,hosts

  multi off

  nospoof on

  3.防止DoS攻击

  对系统所有的用户设置资源限制可以防止DoS类型攻击。如最大进程数和内存使用数量等。例如,可以

  在/etc/security/limits.conf中添加如下几行:

  * hard core 0

  * hard rss 5000

  * hard nproc 20

  然后必须编辑/etc/pam.d/login文件检查下面一行是否存在。

  session required /lib/security/pam_limits.so

  上面的命令禁止调试文件,限制进程数为50并且限制内存使用为5MB。

  经过以上的设置,您的Linux服务器已经可以对绝大多数已知的安全问题和网络攻击具有免疫能力,但一名优秀的系统管

  理员仍然要时刻注意网络安全动态,随时对已经暴露出的和潜在安全漏洞进行修补。

  五、内核参数调整

  #vi /etc/sysctl.conf

  sysctl -w net.ipv4.conf.default.accept_source_route=0

  sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1

  #sysctl -w net.ipv4.icmp_echo_ignore_all=1

  sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1

  sysctl -w net.ipv4.ip_conntrack_max=65535

  sysctl -w net.ipv4.tcp_syncookies=1

  sysctl -w net.ipv4.tcp_syn_retries=1

  sysctl -w net.ipv4.tcp_fin_timeout=5

  sysctl -w net.ipv4.tcp_synack_retries=1

  sysctl -w net.ipv4.tcp_syncookies=1

  sysctl -w net.ipv4.route.gc_timeout=100

  sysctl -w net.ipv4.tcp_keepalive_time=500

  sysctl -w net.ipv4.tcp_max_syn_backlog=10000

rsync的一些更安全的用法

By admin, 2010年01月24日 7:13 上午

总的来说,开在873端口之后,只要加上验证口令,安全性就有保障了,但毕竟多开一个端口,而且rsync的密码是明文方式存储的,相对来说,还是有被监听的可能。根据不同的情况采用下述不同方案,相对来说,安全性更高一些

1。如果只是本机备份,不需要启动darmon,直接用
引用
/usr/bin/rsync -vzrtopglq –size-only –progress –delete /data/htdocs  /backup
2。如果只是内网中的机器互备,可以让rsync只监听在内网的ip上
启动daemon的时候,用参数 –address 可以让rsync只监听在内网的192.168.0.10这个ip上
引用
rsync –daemon –address 192.168.0.10
3。通过公网备份的话,可以将rsync监听在非873端口,增加安全性
启动daemon的时候,用参数 –port 可以让rsync监听在 非873端口
引用
rsync –daemon –port 1873
4。如果还觉得不够安全,可以不启用daemon,通过ssh做备份,更安全和方便一些
在客户端是用命令
引用
/usr/bin/rsync -vzrtopgl –size-only –progress –delete -e ssh root@www.admin99.net:/usr/local/httpd/htdocs/ /backup/admin99

即可以通过ssh端口来做备份,rsync会调用远端的rsync命令来处理相关操作

如果远端机器的ssh开在非22端口的话,可以通过 -p参数来指定ssh的端口
引用
/usr/bin/rsync -vzrtopgl –size-only –progress –delete -e ‘ssh -p1089′  root@www.admin99.net:/usr/local/httpd/htdocs/ /backup/admin99

如果不想每次备份都手工输入ssh的密码的话,可以参考这里使用scp、ssh等不用输入密码

mysql定时自动备份

By admin, 2010年01月23日 6:14 下午

查看系统时间

date

编辑自动执行任务

crontab -e

编辑内容如下
15 18 * * * /home/mysqlbackup.sh

15是分钟 18是小时

/var/www/html/mysqlbackup.sh 脚本路径
附:MYSQL自动备份脚本 每次备份自动删除10天之前的数据

#!/bin/sh
filename=`date   +%Y%m%d`
myPath=”/home/mysqlbackup/$filename/”
if [ ! -d "$myPath" ]; then
    mkdir “$myPath”
fi
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`
for dbname in $DBLIST
do
mysqldump -u root -p  $dbname | gzip > $myPath$dbname.gz
done

# rm old file before ten days
tendate=`date -d “-10 day”  +%Y%m%d`
filelist=`ls -p /var/www/html/mysqlbackup | grep / | tr -d /`
for fnames in $filelist
do
if [ "$fnames" -lt "$tendate" ]; then
rm -rf /var/www/html/mysqlbackup/$fnames
fi
done

mysql之my.cnf参数详解

By admin, 2010年01月23日 6:10 下午

调整MySQL运行参数,修改/etc/my.cnf文件调整mysql运行参数重启MySQL后生效,在MySQL4版本以后,一部分内部变量可以在MySQL运行时设置,不过重启MySQL就失效了。
mysqld程序–目录和文件
basedir      = path          # 使用给定目录作为根目录(安装目录)。
datadir      = path          # 从给定目录读取数据库文件。
pid-file     = filename      # 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统);

[mysqld]
socket = /tmp/mysql.sock     # 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件)
port             = 3306      # 指定MsSQL侦听的端口
key_buffer       = 384M      # key_buffer是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。
索引块是缓冲的并且被所有的线程共享,key_buffer的大小视内存大小而定。
table_cache      = 512       # 为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。可以避免频繁的打开数据表产生的开销
sort_buffer_size = 2M        # 每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。
注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100×6=600MB
read_buffer_size = 2M        # 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
query_cache_size = 32M       # 指定MySQL查询结果缓冲区的大小
read_rnd_buffer_size    = 8M # 改参数在使用行指针排序之后,随机读用的。
myisam_sort_buffer_size =64M # MyISAM表发生变化时重新排序所需的缓冲
thread_concurrency      = 8  # 最大并发线程数,取值为服务器逻辑CPU数量×2,如果CPU支持H.T超线程,再×2
thread_cache            = 8  # #缓存可重用的线程数
skip-locking                 # 避免MySQL的外部锁定,减少出错几率增强稳定性。
[mysqldump]
max_allowed_packet      =16M # 服务器和客户端之间最大能发送的可能信息包

[myisamchk]
key_buffer   = 256M
sort_buffer  = 256M
read_buffer  = 2M
write_buffer = 2M

其他可选参数:
back_log = 384
指定MySQL可能的连接数量。
当MySQL主线程在很短时间内接收到非常多的连接请求,该参数生效,主线程花费很短时间检查连接并且启动一个新线程。
back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。
如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。
试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。
max_connections = n
MySQL服务器同时处理的数据库连接的最大数量(默认设置是100)。超过限制后会报 Too many connections 错误
key_buffer_size = n
用来存放索引区块的RMA值(默认设置是8M),增加它可得到更好处理的索引(对所有读和多重写)
record_buffer:
每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。
如果你做很多顺序扫描,你可能想要增加该值。默认数值是131072(128K)
wait_timeout:
服务器在关闭它之前在一个连接上等待行动的秒数。
interactive_timeout:
服务器在关闭它前在一个交互连接上等待行动的秒数。
一个交互的客户被定义为对 mysql_real_connect()使用 CLIENT_INTERACTIVE 选项的客户。
默认数值是28800,可以把它改为3600。
skip-name-resolve
禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。
但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求!
log-slow-queries = slow.log
记录慢查询,然后对慢查询一一优化
skip-innodb
skip-bdb
关闭不需要的表类型,如果你需要,就不要加上这个

# > SHOW VARIABLES LIKE ‘%query_cache%’;
# > SHOW STATUS LIKE ‘Qcache%’;
如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况;
如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;
如果Qcache_free_blocks的值非常大,则表明缓冲区中碎片很多。

##########################################
######      max_allowed_packet      ######
##########################################
通信信息包是发送至MySQL服务器的单个SQL语句,或发送至客户端的单一行。
在MySQL 5.1服务器和客户端之间最大能发送的可能信息包为1GB。
当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出“信息包过大”错误,并关闭连接。对于某些客户端,如果通信信息包过大,在执行查询期间,了能回遇到“丢失与MySQL服务器的连接”错误。
客户端和服务器均有自己的max_allowed_packet变量,因此,如你打算处理大的信息包,必须增加客户端和服务器上的该变量。
如果你正在使用mysql客户端程序,其max_allowed_packet变量的默认值为16MB。要想设置较大的值,可用下述方式启动mysql:
mysql> mysql –max_allowed_packet=32M
它将信息包的大小设置为32MB。
服务器的默认max_allowed_packet值为1MB。如果服务器需要处理大的查询,可增加该值(例如,如果准备处理大的BLOB列)。例如,要想将该设置为16MB,可采用下述方式启动服务器:
mysql> mysqld –max_allowed_packet=16M

也能使用选项文件来设置max_allowed_packet。要想将服务器的该变量设置为16MB,可在选项文件中增加下行内容:
[mysqld]
max_allowed_packet=16M
增 加该变量的值十分安全,这是因为仅当需要时才会分配额外内存。例如,仅当你发出长查询或mysqld必须返回大的结果行时mysqld才会分配更多内存。 该变量之所以取较小默认值是一种预防措施,以捕获客户端和服务器之间的错误信息包,并确保不会因偶然使用大的信息包而导致内存溢出。
如果你正是用大的BLOB值,而且未为mysqld授予为处理查询而访问足够内存的权限,也会遇到与大信息包有关的奇怪问题。如果怀疑出现了该情况,请尝试在mysqld_safe脚本开始增加ulimit -d 256000,并重启mysqld。
##########################################
#####   MySQL怎样打开和关闭数据库表  #####
##########################################
table_cache, max_connections和max_tmp_tables影响服务器保持打开的文件的最大数量。如果你增加这些值的一个或两个,你可以遇到你的操作 系统每个进程打开文件描述符的数量上强加的限制。然而,你可以能在许多系统上增加该限制。请教你的OS文档找出如何做这些,因为改变限制的方法各系统有很 大的不同。
table_cache与max_connections有关。例如,对于200个打开的连接,你应该让一张表的缓冲至少有200 * n,这里n是一个联结(join)中表的最大数量。

Panorama Theme by Themocracy