我将要安装“leiningen”,它是 clojure 编程语言的 bash 脚本,有很多用处......系统,使其永久且稳定可用。
我不认为 /home 中的任何地方都有意义,但我不知道应该使用哪个目录/目录。
/usr/共享?
我有一个脚本编写者使用代理来攻击我正在服务的网站。
我注意到他们倾向于通过带有某个通用用户代理字符串的软件访问该站点(即http://www.itsecteam.com/en/projects/project1_page2.htm“Havij高级 sql 注入软件”带有 user_agent 字符串的Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Havij
)。我知道任何值得称道的破解软件都可能能够修改它的用户代理字符串,但我对脚本编写者在某些时候必须处理该功能感到满意。
那么,是否有任何软件可以通过匹配用户代理字符串来自动阻止访问和永久列入黑名单?
我在使用 Apache2 的 Debian 网络服务器上的 PHP 会话mod_php
似乎随机失败,说没有空间来编写它们:
sudo tail -60 /var/log/apache2/error.log
[Fri Jan 30 15:55:35 2015] [error] [client xxx.xxx.xxx.xxx] PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: open(/tmp/sess_555555555555555555, O_RDWR) failed: No space left on device (28) in /path/to-first-session-use/core/bootstrap.php on line 18
Run Code Online (Sandbox Code Playgroud)
当我尝试:
ls /tmp
Run Code Online (Sandbox Code Playgroud)
它只是永远挂起,所以这很糟糕。
但是当我检查可用空间并检查 inode 使用是否合理时......
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 150G 121G 22G 85% /
tmpfs 2.0G 0 2.0G 0% /lib/init/rw
udev 10M 16K 10M 1% /dev
tmpfs 2.0G 4.0K 2.0G 1% …
Run Code Online (Sandbox Code Playgroud) 我继承了一个非常不安全的 php web 应用程序,有 sql 注入的历史。我无法立即修复脚本,我宁愿需要它们运行才能使网站运行,并且有太多的 php 脚本需要首先从 php 端处理。但是,我确实可以完全控制服务器和服务器上的软件,包括完全控制 mysql 数据库及其用户。
让我们估计它总共有 300 个脚本、40 个半私有脚本和 20 个私有/安全脚本。
所以我的问题是如何最好地保护数据,隐含假设来自 php 端的 sql 注入(例如在 300 个脚本列表中的某个地方)是不可避免的?
我的初稿计划是在 mysql 数据库中创建多层不同权限的用户。这样我可以先保护最需要保护的数据和脚本(“私有/安全”类别),然后是第二层数据库表和脚本(“半私有”),最后处理整个 php 应用程序的其余部分(最终保护主要处理“公共”信息的数据库表的结果,例如,即使只是查看主页也需要的东西)。
因此,3 个数据库用户(公共、半私有和安全),三个不同的脚本组(安全脚本、半私有脚本和公共脚本)中的每一个都有不同的用户连接。通过这种方式,我可以阻止从“公共”或“半私有”访问“安全”,以及从“公共”访问“半私有”。我应该考虑其他替代方案吗?如果要采用分层访问系统,那么哪种方法最好?
我有一个虚拟专用服务器,我希望在其上托管多个网站,并提供对另一个 Web 开发人员的访问。我不在乎对他施加太多限制,尽管我不介意将他将开发的站点与我将开发的服务器上的其他站点隔离开来。
我想要的主要是确保我将来保留对服务器的控制权。我想保留创建/提升/降级和其他不涉及网络软件的管理功能的能力。例如,如果我让他成为管理员,他可以 sudo su - 并成为 root 并从我那里删除 root 控制。
我需要他不能:
我希望他仍然能够:
/etc/
我从来没有真正设置过一个好的 sudoers 文件,所以简单的示例设置会非常有用,即使它们与我上面希望的设置有点相似。
编辑:我还没有最终确定权限,所以标准的、有用的 sudo 设置当然是一个选项,上面的列表更多的是我希望我能做的,我不知道可以完成那个设置。我敢肯定,人们已经解决了这个类型的问题之前,但不知何故,我想一起去,而不是事情我已经有些本土的一些测试。
所以我试图在 postgresql 中散列一些密码,我为 postgresql 找到的唯一散列解决方案是 pgcrytpo 包的一部分(http://www.postgresql.org/docs/8.3/static/pgcrypto.h)。 html ) 应该在 postgresql-contrib ( http://www.postgresql.org/docs/8.3/static/contrib.html ) 中。
所以我安装了 postgresql-contrib,(sudo apt-get install postgresql-contrib),重新启动了我的服务器(作为重新启动 postgresql 的简单方法)。
但是,我仍然无法访问应该在 postgresql-contrib 中的任何散列函数,例如:
ninjawars=# select crypt('global salt' || 'new password' || 'user created date', gen_salt('sha256'));
ERROR: function gen_salt(unknown) does not exist
ninjawars=# select digest('test', 'sha256') from players limit 1;
ERROR: function digest(unknown, unknown) does not exist
ninjawars=# select hmac('test', 'sha256') from players limit 1;
ERROR: function hmac(unknown, unknown) does not exist
Run Code Online (Sandbox Code Playgroud)
那么如何在 ubuntu 上的 postgresql 中散列密码呢?
在我的日志观察记录中,这些情况一直在稳步增长:
408 Request Timeout
null: 694 Time(s)
Run Code Online (Sandbox Code Playgroud)
在我的网络服务器上。
以下是/var/log/apache2/access.log
访问日志中的一些贡献请求:
ip - - date requestsfor"-"? httpcode bytes referrer useragent
75.149.117.146 - - [28/Jan/2013:17:49:47 -0500] "-" 408 0 "-" "-"
65.55.215.247 - - [28/Jan/2013:17:57:40 -0500] "-" 408 0 "-" "-"
205.157.206.75 - - [28/Jan/2013:18:00:21 -0500] "-" 408 0 "-" "-"
Run Code Online (Sandbox Code Playgroud)
正常访问请求示例当然有更多相关信息,如下所示:
ip - - date request-for httpcode bytes referrer useragent
66.251.23.171 - - [28/Jan/2013:17:45:41 -0500] "GET /images/al/al-mb0608tn.jpg HTTP/1.1" 200 4085 "http://example.com/brands.php?F=S&BrandCode=AL" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; …
Run Code Online (Sandbox Code Playgroud) linux ×2
ubuntu ×2
apache-2.2 ×1
blacklist ×1
debian ×1
directory ×1
inode ×1
installation ×1
logging ×1
mysql ×1
php ×1
postgresql ×1
scripting ×1
security ×1
session ×1
sql ×1
sudo ×1
tmp ×1
useragent ×1
web-server ×1