Linux下SSH安全配置 不指定

jed , 2010-4-24 14:56 , 服务器技术 , 评论(0) , 阅读(5641) , Via 本站原创
ssh是一个好的LInux、Solairs、Unix、FreeBSD、等Unix系列操作系统的远程登录方式,当然任何东西都是好漏洞的,为了指定一个安全的SSH登录,我们可以用以下方法去制定一个安全的SSH,提高系统的安全性

1.限制ssh远程登录的时候直接以root帐号登录:

修改配置文件/etc/ssh/sshd_config,加上一个record: PermitRootLogin no

  这样设置后重启ssh service,/etc/init.d/sshd restart即可生效,生效后我们就不能直接以root的方式登录了,我们需要用一个普通的帐号来登录,然后用su来切换到root帐号,注意 su和su - 是有一点小小区别的。(据本人观察,关键在于环境变量的不同,su -的环境变量更全一些)

2.更改SSH的默认端口,

用过Linux的都知道,ssh的登录一般默认端口是22号,这样可能有黑客就喜欢去scan那些常用的端口,然后尝试用各种方法攻入我们的服务器,修改方法如下

仍然是修改/etc/ssh/sshd_config 加上一个record:Port 8022

然后重启ssh服务,我们以后要以ssh登录服务器的时候就需要用8022端口来连接我们的服务器了。

3. 只允许通过指定的网络接口来访问SSH服务,(如果一服务器有多个IP的时候)

仍然是修改/etc/ssh/sshd_config 加上一个record:ListenAddress 192.168.1.15

这样就只允许别人通过连接改服务器上的网络接口获得的IP192.168.1.15去连接该服务器的ssh服务了。

4.限制空密码登录

如果有的系统account设置的是空密码,如果ssh没有做相应的设置,那么登录ssh的时候就算帐号的密码是空的也是可以登录的,我们仍该设置上面的那个文件 ,加上一个record:PermitEmptyPasswords no即可

5. 只允许某些用户通过 ssh 访问主机. user@host 也可用于限制指定用户通过指定主机访问.

  AllowUsers alex ref me@hostname

仅允许alex ref 或者hostname这个机器上的me这个user去连接该服务器的ssh服务

6. 仅允许某个组的成员通过 ssh 访问主机. AllowGroups 和 AllowUsers 对于拒绝访问主机有同样的效果. 当称它们为 "DenyUsers" 和 "DenyGroups" 时不要觉得奇怪.

AllowGroups wheel admin

7.禁用版本1协议, 因为其设计缺陷, 很容易使密码被黑掉. 更多信息, 参阅 ssh协议问题报告 或 Xforce 通告.

Protocol 2

8.为用户连接到 ssh 服务器增加一个标题(它将从文件读取), 在一些国家, 登入给定系统前, 给出未经授权或者用户监视警告信息, 将会受到法律的保护.

  Banner /etc/some_file

Tags: , ,

linux下vsftp的设置 不指定

jed , 2010-4-14 13:33 , 服务器技术 , 评论(0) , 阅读(5367) , Via 本站原创
#不允许匿名登陆
anonymous_enable=NO

#启用本地用户登陆
local_enable=YES
write_enable=YES

#设置本地用户的文件生成掩码为022,默认为077
local_umask=022

#anon_upload_enable=YES
#anon_mkdir_write_enable=YES

#不显示该目录下的.message隐含文件的内容
#dirmessage_enable=YES

#启动上传和下载日志
xferlog_enable=YES

#启用ftp数据端口的连接请求
connect_from_port_20=YES

#屏蔽匿名用户相关配置
#chown_uploads=YES
#chown_username=whoever

#ftp日志文件位置及是否使用标准格式
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES

#空闲用户和会话空闲3分钟后中断
idle_session_timeout=180

#数据连接2分钟后中断
data_connection_timeout=120

#nopriv_user=ftpsecure
#async_abor_enable=YES

#启用ascii方式上传下载
ascii_upload_enable=NO
ascii_download_enable=NO

#简单的欢迎信息
ftpd_banner=Welcome to www.net.cn FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails

#设置用户只能在自家内浏览
chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list

# 使用ls-R命令已防止浪费大量的服务器资源
ls_recurse_enable=YES
pam_service_name=vsftpd

# /etc/vsftpd.user_list文件中所列用户不能访问ftp server
userlist_enable=YES

#以standalone 模式运行
listen=YES
tcp_wrappers=YES

# 给使用pasv模式的ftp用户开放的端口
pasv_max_port=40030  
pasv_min_port=40000  
Tags: ,

PHP5的php.ini时区设置问题 不指定

jed , 2010-3-26 16:44 , 服务器技术 , 评论(0) , 阅读(5016) , Via 本站原创
世界协调时间(Universal Time Coordinated,UTC)
GPS 系统中有两种时间区分,一为UTC,另一为LT(地方时)两者的区别为时区不同,UTC就是0时区的时间,地方时为本地时间,如北京为早上八点(东八区),UTC时间就为零点,时间比北京时晚八小时,以此计算即可


 格林尼治标准时间(GMT,旧译“格林威治平均时间”或“格林威治标准时间”)是指位于伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。
  理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能和实际的太阳时相差16分钟。
  地球每天的自转是有些不规则的,而且正在缓慢减速。所以,格林尼治时间已经不再被作为标准时间使用。现在的标准时间——协调世界时(UTC)——由原子钟提供。

UTC = Coordinated Universal Time. 中文名称为协调世界时.

GMT = Greenwich Mean Time. 中文名称为格林尼治(平)时(这里的"w"是不发音的,而且"Green"要读成"Gren")

UTC = GMT +/- 0.9 s
因此 UTC 间中需要进行 "闰秒" 以控制两者相差。

从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的,也就是显示的时间(无论用什么php命令)都是格林威治标准时间,和我们的时间(北京时间)差了正好8个小时,有以下3中方法可以恢复正常的时间。
1、最简单的方法就是不要用php5.1以上的版本;
2、如果要用5.1以上版本,而且不修改php.ini,则需要在关于时间的初始化的语句的上面加上date_default_timezone_set (XXX),或者使用date('Y-m-d G:i:T', strtotime('+8HOUR') )来获取日期时间;
3,一劳永逸,仅限能修改php.ini。打开php.ini把date.timezone前面的分号去掉,在=后面加XXX,重启http服务(如apache2或iis等)即可。
关于XXX,大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi(依次为重庆,上海,乌鲁木齐),港台地区可用:Asia/Maca* ,Asia/Hong_Kong ,Asia/Taipei(依次为澳门,香港,台北),还有新加坡:Asia/Singapore,以上没有北京,不过接着往下看,其他可用的值是:Etc/GMT-8,Singapore ,Hongkong,PRC。PRC是什么?PRC是中华人民共和国啊!(这个就是北京时间吧)以上都是php官方说明档里整理出来的GMT-8下面的地区,可能会有遗漏,如有需要再上官方文档里查看一下比较好

如此一来,按照默认的时间便为GMT时间。而我们一般是使用北京时间,可以设置为:date.timezone = PRC或date.timezone = Asia/Shanghai。即:

[Date]
; Defines the default timezone used by the date functions
date.timezone = Asia/Shanghai

记得不要设置为"Asia/Beijing",老外好象对上海感兴趣点,呵呵。

如果没有权限改php.ini,可以用函数date_default_timezone_set('PRC');或date_default_timezone_set('Asia/Shanghai');


php5.1x的时区问题导致相差八个小时!收藏
从php5.10开始,php中加入了时区的设置,在php中显示的时间都是格林威治标准时间,这就造成了我们中国的用户会差八个小时的问题!
相关设置是修改php.ini中的 date.timezone 参数:
[Date]
; Defines the default timezone used by the date functions
;date.timezone =

默认是关闭的,只需把注释去掉,改为即可
[Date]
; Defines the default timezone used by the date functions
date.timezone = PRC

其中PRC是“中华人民共和国”!
其他选项可以参考php手册。
不过这上面的亚洲地区漏掉了我们的首都北京,不知道老外是不是故意的!

如果没有修改php.ini的权限,只需要在调用时间日期函数的时候,调用 date_default_timezone_set(’PRC’) 即可!
也可以调用date_default_timezone_get()来查看当前的时区设置!

關於XXX,大陸內地可用的值是:
Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次為重慶,上海,烏魯木齊)
港台地區可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次為澳門,香港,台北)
台灣地区可設為:date.timezone = "Asia//Taipei"
還有新加坡:Asia/Singapore
Tags: , ,
1. 操作系统:      在Windows 2003
2. Apache 2.2.6   http://httpd.apache.org  
     安装到c:\apache2.2
3. PhP 5.2.4         http://www.php.net
    使用zip版本,释放到C:\php
4. 配置apache 的php DSO.
修改 httpd.conf
# For PHP 5 do something like this:
LoadModule php5_module "c:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php

# configure the path to php.ini
PHPIniDir "c:/php"

Copy c:\php.ini-dist 为php.ini ,修改php.ini ,
extension_dir = "c:\php"
把c:\php\ext目录下的php_mssql.dll 拷贝到c:\php
把 extension php_mssql.dll 注释取消

5. apache configtest 没问题。但是error_log中有警告未找到模块。使用phpinfo()看到php_mssql.dll加载是提示有错误未找到模块。一般都是因为php_mssql.dll需要用到的dll没有在路径中发现的原因。

6.使用borland 的tdump.exe 查看 php_mssql.dll 需要 ntwdblib.dll 支持.但是SQL Server 2005 native client 已经没有这个文件了。到SQL Server 2000里抓一个过来。放到windows\system32或者php目录.
apache2.2/bin目录也放一个。保证它哪里都能找到就是了。

7. 配置限制用户并发线程,使用Apache模块 mod_limitipconn
a:自己编译:
源码下载:http://dominia.org/djao/limit/win32/mod_ipconn.zip
编译环境:VS 2005 Windows XP 安装了Apache 2.2.6 lib 和include
b.直接下载,见上文链接

把已经编译好的mod_ipconn.dll 放到apache的安装目录下的modules子目录下。


在httpd.conf中增加如下配置信息:
LoadModule status_module modules/mod_status.so
ExtendedStatus On
LoadModule limitipconn_module modules/mod_limitipconn.dll

<IfModule mod_limitipconn.c>
<Location />
MaxConnPerIP 3
NoIPLimit images/*
</Location>
<Location /mp3>
MaxConnPerIP 1
OnlyIPLimit audio/mpeg video
</Location>
</IfModule>
重新启动apache即可.
用Flashget测试。如果超过3个连接线程,会出503错误。
所有配置成功.
--------------------------------------------------------------
VS2005 下编译 mod_limitipconn.dll详细步骤:
1.开发环境
Windows XP SP2简体中文版 + VS 2005 Team Suite 简体中文版 +SP1

2.安装apache 2.2.6 Win32版本(记得安装开发组件)

自httpd.apache.org 下载安装windows 版本的apache-2.2.6
假定安装目录为C:\apache

3.下载mod_ipconn win32源码:
http://dominia.org/djao/limit/win32/mod_ipconn.zip

4. 项目转换为Vs2005
解压缩后,使用vs2005打开项目文件,按提示转换vc6项目为vs2005项目文件。

5.配置apache头文件和lib库。

mod_ipconn属性页->配置属性->C/C++->常规->附加包含目录
输入安装的apache的include目录

mod_ipconn属性页->配置属性->链接器->附加依赖项
内容如下:
把apache的lib目录修改为自己的apache目录实际位置
odbc32.lib odbccp32.lib E:\server\Apache2\lib\libhttpd.lib E:\server\Apache2\lib\libapr.lib
另外,把 libapr.lib改为 libapr-1.lib


6.解决方案配置为Release版本

7.编译生成mod_limitipconn.dll 。

完成。

下载地址:
下载文件 (已下载 1027 次)



本示例将避免对图片的请求出现在访问日志中。 你可以随便改改就将它用于避免特定目录或特定主机的请求被记入日志。


SetEnvIf Request_URI \.gif image-request
SetEnvIf Request_URI \.jpg image-request
SetEnvIf Request_URI \.png image-request
CustomLog logs/access_log common env=!image-request

只记录php访问记录的设置

SetEnvIf Request_URI "^/.*\.php$" dontlog
CustomLog logs/access_log common env=dontlog



SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
SetEnvIf Request_URI "^/favicon.ico$" dontlog
SetEnvIf Request_URI "^/images/.*$" dontlog
SetEnvIf Request_URI "^/.*\.js$" dontlog
SetEnvIf Request_URI "^/.*\.css$" dontlog
SetEnvIf Request_URI "^/.*\.dwr$" dontlog


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~VirtualHost~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

NameVirtualHost 192.168.1.103:80


<VirtualHost 192.168.1.103:80>
    ProxyRequests On
    DocumentRoot /opt/project

    ServerName 192.168.1.103
    DirectoryIndex index.jsp
    
    RewriteEngine On
    RewriteRule ^(http|https)://.* - [F]
    
    ProxyPass /pic/ http://192.168.1.101/
    ProxyPass /report/ http://192.168.1.101:8081/report/
    ProxyPass / balancer://proxy/ stickysession=JSESSIONID
    <Proxy balancer://proxy>
          BalancerMember ajp://192.168.1.103:10003/  route=A loadfactor=1
          BalancerMember ajp://192.168.1.103:20003/  route=B loadfactor=1
          BalancerMember ajp://192.168.1.101:10003/  route=C loadfactor=1
          BalancerMember ajp://192.168.1.101:20003/  route=D loadfactor=1
    </Proxy>
    ErrorLog logs/error_log.log
    CustomLog "|/usr/local/httpd/bin/rotatelogs /usr/local/httpd/logs/access_%Y_%m_%d.log 86400 480" combined env=!dontlog
</VirtualHost>



语法SetEnv env-variable value  


语法SetEnvIf attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ...  


SetEnvIf指令根据客户端的请求属性设置环境变量。第一个参数attribute必须是下列三种类别之一:
一个HTTP请求头域(参见RFC2616);例如:Host, User-Agent, Referer, Accept-Language 。可以用一个正则表达式来进行匹配。下列请求属性之一: Remote_Host 远程主机名(若可用)Remote_Addr 远程主机IP地址Server_Addr 接收到请求的服务器IP地址(2.0.43及以后版本)Request_Method 所用的请求方法(GET, POST等等)Request_Protocol 请求所使用的协议及其版本("HTTP/0.9", "HTTP/1.0", "HTTP/1.1"等)Request_URI 在HTTP请求行中请求的资源(通常是URL中去除协议、主机以及查询字符串后剩余的部分)。列出的与该请求关联的环境变量名字中的一个。这将允许SetEnvIf指令基于预先匹配的结果进行测试。只有那些由较早的SetEnvIf[NoCase]指令定义的环境变量才可以按照这种方式测试。"较早的"意思是它们在更上层的作用域(比如全局范围)中被定义或者在同一作用域中较早出现。只有在请求的属性未能得到匹配并且attribute没有使用正则表达式的时候,环境变量才会被考虑。
如:不记录192.168.7.139的访问日志
首先设置环境变量 SetEnvIf Remote_Addr "192\.168\.7\.139" dontlog
使用上面设置的环境变量
CustomLog "logs/access_log" common env=!dontlog





SetEnvIfNoCase
说明: Sets environment variables based on attributes of the request without respect to case
语法: SetEnvIfNoCase attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ...
上下文: 服务器配置, 虚拟主机, 目录, .htaccess
覆盖项: FileInfo
状态: Base
模块: mod_setenvif
兼容性: Apache 1.3 and above


The SetEnvIfNoCase is semantically identical to the SetEnvIf directive, and differs only in that the regular expression matching is performed in a case-insensitive manner. For example:
This will cause the site environment variable to be set to "apache" if the HTTP request header field Host: was included and contained Apache.Org, apache.org, or any other combination.
SetEnvIfNoCase 当满足某个条件时,为变量赋值,一般结合其他指令使用。
如:
1。SetEnvIf Request_URI "/logo(.)+" local_ref=0
Allow from env=local_ref  当local_ref有值时,可以访问。
当满足条件时才记录日志。

改之前先建立一个登录的用户

1,只允许某个IP登录,拒绝其他所有IP
在 /etc/hosts.allow 写:
sshd: 192.168.1.207
在 /etc/hosts.deny 写:
sshd: ALL

2,禁止某个用户通过ssh登录
在/etc/ssh/sshd_conf添加
AllowUsers 用户名
或者
AllowGroups 组名
或者
DenyUsers 用户名
3、修改默认端口:默认Port为22,并且已经注释掉了;修改是把注释去掉,并修改成其它的端口。
4、禁止root用户远程登陆:修改PermitRootLogin,默认为yes且注释掉了;修改是把注释去掉,并改成no。
5、PermitEmptyPasswords   no不允许空密码用户login
Tags:

windows下如何卸载服务? 不指定

jed , 2009-6-24 22:09 , 服务器技术 , 评论(0) , 阅读(2751) , Via 本站原创
在查看“管理工具”→ “ 服务” 时会发现有一些被插件或者病毒安装的服务,首先想到的是禁用它,可是禁用后还是有些想法,比如删除文件、卸载服务。下面就简单地介绍一下如何卸载服务:

在“管理工具”→ “ 服务”里找到你要卸载的服务,双击打开它的属性,比如查看“卡巴斯基反病毒6.0个人版”的属性,可以看到如下描述:

服务名称:AVP
显示名称:卡巴斯基反病毒6.0个人版

然后打开注册表(运行regedit),依次打开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,
在Services下找到你要卸载的服务的名称,上例中即为AVP,删除整个AVP项,重启计算机后就把该服务完全卸载了。

另外,在卸载服务前也可以把关联的文件删除,在服务的属性中“可执行文件的路径”下即为其关联的文件。
Tags: ,
http://httpd.apache.org/docs/2.0/mod/mod_deflate.html

gzip安装问题 不指定

jed , 2009-4-30 08:32 , 服务器技术 , 评论(0) , 阅读(5066) , Via 本站原创
httpd: Syntax error on line 266 of /usr/local/apache2.2.0/conf/httpd.conf: module deflate_module is built-in and can't be loaded
  - 表示模块已内置,不必LoadModule了

tar.bz2的文件怎么解压缩?
- 在linux下面可以直接用 tar jxvf *.tar.bz2解压缩  
- 先去digistar.com/bzip2/下个bzip回来. 装上后 ,用 bzip2 -cd ***就可以解了.


mod_deflate.c在modules/metadata下没找到它,后来发现在modules/filters下
/usr/local/apache2.2.0/bin/apxs -i -a -c mod_deflate.c
提示出错:
Warning!  dlname not found in /usr/local/apache2.2.0/modules/mod_deflate.la.
Assuming installing a .so rather than a libtool archive.
chmod 755 /usr/local/apache2.2.0/modules/mod_deflate.so

后来使用这种方式解决:
gcc -shared -o mod_deflate.so mod_deflate.o
cp mod_deflate.so /usr/local/apache2.2.0/modules
/usr/local/apache2.2.0/bin/apxs -i -a -c mod_deflate.c
Tags: ,
分页: 28/40 第一页 上页 23 24 25 26 27 28 29 30 31 32 下页 最后页 [ 显示模式: 摘要 | 列表 ]