http://blog.chinaunix.net/uid-20786165-id-3167391.html

http://blog.chinaunix.net/uid-8389195-id-1741610.html

Linux的日志系统与审核系统

最近在读倪继利的《Linux安全体系分析与编程》,想把一些笔记发出来,这是第一篇。
Linux的日志系统主要就是syslog系统构架,其实现是内核函数printk将消息写入一个环形缓冲区中,供高层的sys_syslog系统调用读取。代码部分在linux/kernel/printk.c
相关链接:http://lxr.linux.no/linux+v3.1.6/kernel/audit.c
Linux的审核系统提供了一种记录系统安全信息的方法,为系统管理员在用户违反系统安全规则时提供及时的警告信息。内核其他线程通过内核审计API写入套接字缓冲区队列audit_skb_queue中,内核线程kauditd通过netlink机制将审计消息定向发送给用户控件的审计后台auditd的主线程,auditd主线程再通过事件队列将审计消息传给审计后台的写log文件线程,写入log文件。另一方面,审计后台还通过一个与套接字绑定的管道将审计消息发送给dispatcher应用程序。代码部分主要在 linux/kernel/audit.c
auditd在Debian里默认没有安装启动,需要通过aptitude install auditd开启。
《Linux安全体系分析与编程》部分章节下载见 http://www.linuxidc.com/Linux/2012-02/53191.htm

Linux audit的作用:帮助你了解,分析发生在你系统中的事情。
Linux 的组成:
    audit 内核模块----->监听系统调用,记录有价值事件
    audit daemon(auditd)----->把记录事件写入磁盘(/var/log/audit/audit.log)
    audit 命令行工具(aureport,ausearch等)------>帮助分析audit日志

内核审计缓冲区管理机制

内核审计系统将审计消息写入审计用的缓冲区(称为审计缓冲区)。由于审计信息是通过netlink机制发往用户空间后台进程的,因此,审计缓冲区包括了结构sk_buff描述的套接字缓冲区,套接字缓冲区用来存储用于发送的审计消息记录。

审计缓冲区的结构定义如下(在linux26/kernle/audit.c中):

struct audit_buffer {
struct list_head list;
struct sk_buff *skb;/*格式化的套接字缓冲区,准备用于发送审计消息 */
/*每个进程的审计上下文,包括进程的状态、时间和uid等,与进程上下文相关,可以为空 */
struct audit_context *ctx;
gfp_t gfp_mask;//缓存区的标识,如:__GFP_WAIT
};

审计套接字缓冲区组成链表,用于存入填充了审计消息的审计套接字缓冲区指针,链表定义如下(在linux26/kernle/audit.c中):

static struct sk_buff_head audit_skb_queue;

审计套接字缓冲区链表用于存入审计消息,当链表中的缓冲区个数超过上限时,当前进程需要等待用户空间的后台进程将审计消息写入log文件,直到缓冲区个数小于上限值为止。

内核审计系统还使用空闲审计缓冲区链表audit_freelist 存放空闲的审计缓冲区,存放的个数上限为AUDIT_MAXFREE。这样,维持一定数据的空闲缓冲区数,对于频繁操作的审计系统来说,可以减少缓冲区的分配与释放次数,提高系统性能。

当申请审计缓冲区时,系统先查看链表audit_freelist是否存在空闲的审计缓冲区;如果存在,就从链表中取下一个返回给申请者。如果链表中没有空闲审计缓冲区,就分配一个审计缓冲区。

当调用函数audit_buffer_free释放审计缓冲区时,先检查空闲审计缓冲区链表audit_freelist的空闲审计缓冲区是否超过 上限;如果没有超过上限,就将审计缓冲区放入链表audit_freelist,留给以后使用。否则,释放缓冲区。函数 audit_buffer_free释放审计缓冲区时,每次都释放它包含的套接字缓冲区。

空闲审计缓冲区链表的定义列出如下:

#define AUDIT_MAXFREE  (2*NR_CPUS)
static LIST_HEAD(audit_freelist);

Linux 系統中已經 syslog 了,syslog 會記錄系統狀態、如硬體的警告或應用軟體的記錄等。但是syslog屬於應用層,且僅只於此一應用而已,沒辦法記錄太多資訊。因此,audit 誕生以取代 syslog 的責任,來記錄核心層的事件:檔案的讀寫、系統呼叫、權限的狀態等。

在Linux/UNIX 中,审计工作主要由auditd 服务来完成。Auditd可以对整个操作系统的以下行为做审计
账户管理
文件系统管理
权限管理
网络配置管理
日志文件操作管理

audit 的設定檔為 /etc/audit/audit.rules,主要分為三種類別:

• Basic audit system parameters
• File and directory watches
• System call audits

# basic audit system parameters
-D    (刪除舊記錄,預設-D)
-b 8192  (buffer大小,預設256,改為8192)
-f 1  (失敗控制旗標,可設為 0 (silent), 1 (印出錯誤,預設), and 2 (panic, 把系統關閉—非正常關閉,所以會有資料遺失的風險).
-e 1 (生失效,0為失效,1為生效(預設)
# some file and directory watches
-w /var/log/audit/   (觀查目錄 /var/log/audit/)
-w /etc/auditd.conf -p rxwa    (觀查檔案 /etc/auditd.conf,-p 設定權限為rxw及a屬性變更)
-w /etc/audit.rules -p rxwa
-w /etc/passwd -p rwxa
-w /etc/sysconfig/
# an example system call rule
-a entry,always -S umask

對於設定檔有幾點要說明:
• 目錄觀察的詳細度比檔案觀察低
• 無法使用任何的pathname globbing,如?或*
• 只能設定已存在的檔案,若設定觀察目錄而有新增檔案,新檔案只會在下次 audit 重啟後才會加入

利用 -k 產生 key string,以供ausearch 直接索引
-w /etc/var/log/audit/ -k LOG_audit

audit daemon的主要配置文件有两个,一个是/etc/sysconfig/auditd, 另一个是/etc/audit/auditd.conf.
/etc/sysconfig/auditd---->配置auditd运行时的环境
    AUDITD_LANG--->auditd运行时的locale
    AUDITD_DISABLE_CONTEXTS---->不监控系统调用
/etc/audit/auditd.conf---->配置auditd运行时的功能,格式val = value
    log_file, log_format, log_group--->log_file标示日志存放路径,log_format标示日志记录格式,log_group 日志的属主。log_format有两种格式一种是raw,记录内核发送的原始格式,一种是nolog,也就是日志不会被写到硬盘。注:如果你想使用aureport生成报告的话,请使用raw格式。
    priority_boost--->设置auditd的优先启动级,默认是4,具有较高的优先级启动,0的话是正常顺序启动。

ps aux的显示来观察auditd的启动优先级
root 3318 0.0 0.0 12516 764 ? S<sl Mar25 0:00 auditd
S<sl S表示进程正在睡眠,<表示具有较高的优先级,s表示多进程l表示多线程

flush and freq ---->flush的可选值为none(日志不写到磁盘), incremental (日志写到磁盘,freq指定多少记录开始写到磁盘),data(保持部分数据和磁盘的一直同步),sync(每次记录都写到磁盘)。freq和 incremental 可选值一起使用,表示多少条记录一组写到磁盘。对于高等级的业务系统设置为DATA
    num_logs ------>指定log的数目,数目要求是正数,如果数目小于2,表示不会rotate日志,大于2,也就是达到指定大小会rotate日志。 max_log_file_action 指定rotate行为。
    dip_qos and dipatcher--->

disp_qos = lossy 控制调度程序与审计守护进程之间的通信类型。有效值为lossy和lossless 建议使用缺省值
    dispatcher = /sbin/audispd 当启动这个守护进程时,由审计守护进程自动启动程序。所有守护进程都传递给这个程序。 建议使用缺省值
    name_format and name---->name_format 可以为none(不使用名字),fqd(DNS解析的详细名字),numeric(IP地址),user(使用name选项指定的字符串)
    max_log_file and   max_log_file_action ---->max_log_file 指定当文件大小达到设定的M值,执行action,action可选为ignore(不处理),rotate(压缩分文件),syslog(发warning信息),suspend(暂停auditd),keep_logs(rotate log 保留所有log)
    space_left and space_left_action---->space_left指定space M 值触发action。space_left_action 执行的动作(具体参看man auditd.conf)
    action_mail_acct--->设定warning 发送的email地址
    admin_space_left and admin_space_left_action ----->遗留空间 用法同space_left
    disk_full_action------>同 space_left_action,执行盘空间满的行为。如果含有这个审计文件的分区已满,则采取这个动作
    disk_error_action---->同 space_left_action, 监测磁盘错误发生时作出某些action
    tcp_listen_port, tcp_listen_queue, tcp_client_ports and tcp_client_max_idle--->从其他audit发来的事件参数。

  enable_krb5 = no 是否启用kerberos认证 建议使用缺省值
    krb5_principal = auditd Kerberos认证校验值 建议使用缺省值
    ##krb5_key_file= /etc/audit/audit.key Kerberos生成的验证key存放位置 建议使用缺省值

配置audit的规则,也就是说我们要audit什么样的事件,具体什么事件需要audit来监控跟实际的应用有关。这里主要介绍audit的规则配置工具auditctl和文件配置方法/etc/audit/audit.rules.
这里首先介绍auditctl的应用,具体使用指南查看man auditctl。auditctl的man 描述说明这个工具主要是用来控制audit系统行为,获取audit系统状态,添加或者删除audit系统的规则。控制audit系统行为和获取audit系统状态参数:
    -s 或者auditd 状态 auditctl -s 显示:AUDIT_STATUS: enabled=1 flag=1 pid=2792 rate_limit=0 backlog_limit=320 lost=0 backlog=0
    -e [0|1|2] 设置audit使能标识, 0 表示临时关闭audit,1 表示启用audit,2表示锁住audit规则配置文件,这条命令一般设这在audit.rules的最后一条,任何人试图修改audit规则都会被记录,并且禁止修改。我们先运行auditctl -e 1 显示:AUDIT_STATUS: enabled=1 flag=1 pid=2792 rate_limit=0 backlog_limit=320 lost=0 backlog=0;我们运行auditctl -e 0 显示AUDIT_STATUS: enabled=0 flag=1 pid=2792 rate_limit=0 backlog_limit=320 lost=0 backlog=0 这里我们看到不同的参数只是修改了enabled项
    -f [0|1|2]控制失败标识。也就flag位,这个位的主要作用是This option lets you determine how you want the kernel  to  handle  critical  errors
    -r 设置速率,也就是每秒钟消息数目,非0的话如果系统在1秒钟大于设定的值,就会触发系统flag标识的行为
    -b 设置backlog_limit
audit系统规则设置:
文件系统audit设置:
    -w path path是一个文件或者目录的绝对路径。
    -p [r|w|x|a] 和-w一起使用,监测用户对这个目录的读 写 执行 或者属性变化如时间戳变化。
    -k 指定一个key,在ausearch的时候使用
系统调用的监控:
    -a 添加一条系统调用监控规则
    -S 后面接需要监测的系统调用的名称
显示规则和移除规则:
    -D 删除所有规则
    -d 删除一条规则和-a对应
    -W 删除一条规则和-w对应
    -l 列出所有规则

Linux、Unix 系统审计重点位置
-w /var/log/audit/ -k LOG_audit
-w /etc/audit/ -p wa -k CFG_audit
-w /etc/sysconfig/auditd -p wa -k CFG_auditd.conf
-w /etc/libaudit.conf -p wa -k CFG_libaudit.conf
-w /etc/audisp/ -p wa -k CFG_audisp
-a entry,always -F arch=b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr
-a entry,always -F arch=b32 -S mknod -S mknodat
-a entry,always -F arch=b32 -S mount -S umount -S umount2
-w /etc/cups/ -p wa -k CFG_cups
-w /etc/init.d/cups -p wa -k CFG_initd_cups
-w /etc/netlabel.rules -p wa -k CFG_netlabel.rules
-w /etc/racoon/racoon.conf -p wa -k CFG_racoon.conf
-w /etc/racoon/psk.txt -p wa -k CFG_racoon_keys
-w /etc/racoon/certs/ -p wa -k CFG_racoon_certs
-w /etc/selinux/config -p wa -k CFG_selinux_config
-w /etc/selinux/mls/ -p wa -k CFG_MAC_policy
-w /usr/share/selinux/mls/ -p wa -k CFG_MAC_policy
-w /etc/selinux/semanage.conf -p wa -k CFG_MAC_policy
-a entry,always -F arch=b32 -S adjtimex -S settimeofday -S clock_settime
-w /usr/sbin/stunnel -p x
-w /etc/security/rbac-self-test.conf -p wa -k CFG_RBAC_self_test
-w /etc/aide.conf -p wa -k CFG_aide.conf
-w /etc/cron.allow -p wa -k CFG_cron.allow
-w /etc/cron.deny -p wa -k CFG_cron.deny
-w /etc/cron.d/ -p wa -k CFG_cron.d
-w /etc/cron.daily/ -p wa -k CFG_cron.daily
-w /etc/cron.hourly/ -p wa -k CFG_cron.hourly
-w /etc/cron.monthly/ -p wa -k CFG_cron.monthly
-w /etc/cron.weekly/ -p wa -k CFG_cron.weekly
-w /etc/crontab -p wa -k CFG_crontab
-w /var/spool/cron/root -k CFG_crontab_root
-w /etc/group -p wa -k CFG_group
-w /etc/passwd -p wa -k CFG_passwd
-w /etc/gshadow -k CFG_gshadow
-w /etc/shadow -k CFG_shadow
-w /etc/security/opasswd -k CFG_opasswd
-w /etc/login.defs -p wa -k CFG_login.defs
-w /etc/securetty -p wa -k CFG_securetty
-w /var/log/faillog -p wa -k LOG_faillog
-w /var/log/lastlog -p wa -k LOG_lastlog
-w /var/log/tallylog -p wa -k LOG_tallylog
-w /etc/hosts -p wa -k CFG_hosts
-w /etc/sysconfig/network-scripts/ -p wa -k CFG_network
-w /etc/inittab -p wa -k CFG_inittab
-w /etc/rc.d/init.d/ -p wa -k CFG_initscripts
-w /etc/ld.so.conf -p wa -k CFG_ld.so.conf
-w /etc/localtime -p wa -k CFG_localtime
-w /etc/sysctl.conf -p wa -k CFG_sysctl.conf
-w /etc/modprobe.conf -p wa -k CFG_modprobe.conf
-w /etc/PAM.d/ -p wa -k CFG_pam
-w /etc/security/limits.conf -p wa -k CFG_pam
-w /etc/security/pam_env.conf -p wa -k CFG_pam
-w /etc/security/namespace.conf -p wa -k CFG_pam
-w /etc/security/namespace.init -p wa -k CFG_pam
-w /etc/aliases -p wa -k CFG_aliases
-w /etc/postfix/ -p wa -k CFG_postfix
-w /etc/ssh/sshd_config -k CFG_sshd_config
-w /etc/stunnel/stunnel.conf -k CFG_stunnel.conf
-w /etc/stunnel/stunnel.pem -k CFG_stunnel.pem
-w /etc/vsftpd.ftpusers -k CFG_vsftpd.ftpusers
-a exit,always -F arch=b32 -S sethostname
-w /etc/issue -p wa -k CFG_issue
-w /etc/issue.net -p wa -k CFG_issue.net

目前的推送方式在使用syslog服务来完成审计内容向安全管理平台发送的任务,那么首先要配置相应的日志级别发送到指定的安全管理平台。
利用tail查看审计的日志,把tail的结果重定向给logger,重新打标记之后发送给syslog中的相应的日志级别。由syslog发送到安全管理平台中
tail -f /var/log/audit/audit.log |logger -it stationlog -p local3.notice&
为了使得开机启动 把这条命令写入到/etc/rc.local中

[root@localhost audit]# auditctl  -l
No rules

[root@localhost audit]# auditctl  -s
AUDIT_STATUS: enabled=1 flag=1 pid=985 rate_limit=0 backlog_limit=320 lost=0 backlog=0
[root@localhost audit]# ps -ef|grep audi
root       771     2  0 03:51 ?        00:00:00 [kauditd]  内核模块
root       985     1  0 03:51 ?        00:00:00 auditd    用户进程
root      1317  1238  0 06:12 pts/0    00:00:00 grep audi

审计(audit)是linux安全体系的重要组成部分,他是一种“被动”的防御体系。
在内核里有内核审计模块,核外有核外的审计后台进程auditd。
应用程序给内核发送审计消息,内核的审计模块再把消息转发给用户空间的后台进程auditd处理。
大概就是这么回事,我不是太深入,如果需要更多的内容,自己去查阅相关资料。如果没有好的资料,我推荐一本,《linux安全体系分析与编程》作者倪继利 。
审计说穿了就是把和系统安全有关的事件记录下来:谁谁谁在什么时候做了什么事,结果是啥。
审计的消息来源主要有两方面:
1.内核(我不太确定)、应用程序(audit-libs-devel包里面有编程接口)产生的。
2.系统管理员添加的审计规则,匹配规则的事件都将被记录下来。
规则添加:

1 添加文件监视:
该规则能监视文件被读、写、执行、修改文件属性的操作,并记录
auditctl -w /etc/passwd -p rwax
上述命令记录/etc/passwd 被读、写、执行修改属性的操作

2 系统调用入口监视(entry链表)
该规则在进入系统调用的时候触发,记录此时的执行上下文
auditctl -a entry,always -F UID=root -S mkdir
上述命令记录uid为root的用户调用mkdir系统调用的情况

3 系统调用出口(exit链表)
同系统调用入口规则,不同的是在退出系统调用的时候被触发

4 任务规则(task表)
该规则在调用fork() 或者clone()产生新进程的时候触发,因此,该规则适用的“域”仅仅是此时可见的,例如uid gid pid 等等。(参见man auditctl和这里
auditctl -a task,always -F uid=root

5 可信应用程序规则(user表)
按照各种资料上的说法,这里的user表是用来过滤消息的,内核传递给审计后台进程之前先查询这个表。
但是,不管怎么设置规则都达不到这个效果。如下:
auditctl -a user,always -F uid=root
添加上述规则,发现root的行为被记录。这样添加规则还是被记录:
auditctl -a user,never -F uid=root
后来发现我的CentOS里面system-config-audit上面,该链表被命名为“可信应用程序”。受此启发写了个小程序,向审计内核里写消息,发现这样的消息被过滤了。
这点需要进一步验证。

6 过滤规则(exclude表)
这个表是用来过滤消息的,也就是不想看到的消息可以在这里写规则进行过滤。
例如:不想看到用户登陆类型的消息,可以如下添加规则:
auditctl -a exclude,always -F msgtype=USER_LOGIN
这里过滤是以“消息类型”为对象的。

man auditctl
man auditd.conf
man audit.rules

auditctl -a exit,always -S open -S truncate -F dir=/etc -F success=0

auditctl -a exit,always -S open -F auid=510

auditctl -a exit,always -S all -F pid=1005

auditctl -a exit,always -F path=/etc/shadow -F perm=wa

auditctl -w /etc/ -p wa
auditctl -a exit,always -F dir=/etc/ -F perm=wa
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面的图片说明了Linux Audit的各个组成之间是如何相互作用的:
linux的审计功能(audit)(转) - llei - llei的学习笔记linux的审计功能(audit)(转) - llei - llei的学习笔记
图片上实线代表数据流,虚线代表组件关之间的控制系
auditd
Audit 守护进程负负责把内核产生的信息写入到硬盘上,这些信息是由应用程序和系统活动所触发产生的。Audit守护进程如何启动取决于它的配置文件,/etc /sysconfig/auditd。Audit系统函数的启动受文件/etc/audit/auditd.conf的控制。有关auditd更多的信息参照第三节:配置Audit守护进程。
auditctl
auditctl功能用来控制Audit系统,它控制着生成日志的各种变量,以及内核审计的各种接口,还有决定跟踪哪些事件的规则。关于auditctl的更多信息参照第四节:用auditctl控制Audit系统。
audit rules
在/etc/audit/audit.rules中包含了一连串auditctl命令,这些命令在audit系统被启用的时候被立即加载。更所关于审计规则的信息请参看第五节:给audit系统传递变量
aureport
aureport的功能是能够从审计日志里面提取并产生一个个性化的报告,这些日志报告很容易被脚本化,并能应用于各种应用程序之中,如去描述结果,更多信息参看第六节:理解审计日志和生成审计报告
ausearch
这个功能能让我们从审计日志之中通过关键词或者是格式化录入日志中的其它特征变量查询我们想要看到的信息。详细信息请参看第七节:用ausearch查询audit守护进程的的日志。
audispd
这是一个审计调度进程,它可以为将审计的信息转发给其它应用程序,而不是只能将审计日志写入硬盘上的审计日志文件之中。
autrace
这个功能更总类似于strace,跟踪某一个进程,并将跟踪的结果写入日志文件之中。更多详细信息请参看第八节:用autrace分析进程

/etc/audisp
/etc/audisp/audispd.conf
/etc/audisp/plugins.d
/etc/audisp/plugins.d/af_unix.conf
/etc/audisp/plugins.d/syslog.conf
/etc/audit
/etc/audit/audit.rules
/etc/audit/auditd.conf
/etc/rc.d/init.d/auditd
/etc/sysconfig/auditd
/sbin/audispd
/sbin/auditctl
/sbin/auditd
/sbin/aureport
/sbin/ausearch
/sbin/autrace
/usr/bin/aulast
/usr/bin/aulastlog
/usr/bin/ausyscall
/usr/bin/auvirt

type=CRYPTO_KEY_USER     msg=audit(1410606795.368:1907135): user pid=21049 uid=0 auid=0 ses=1 msg='op=destroy kind=server fp=91:81:25:ac:cb:fc:07:aa:07:47:18:e2:17:57:61:bc direction=? spid=21049 suid=0              exe="/usr/sbin/sshd" hostname=? addr=192.168.2.83 terminal=? res=success'
type=CRYPTO_SESSION     msg=audit(1410606795.368:1907136): user pid=21048 uid=0 auid=0 ses=1 msg='op=start direction=from-client cipher=blowfish-cbc ksize=128 spid=21049 suid=74 rport=54438 laddr=192.168.2.109 lport=22      exe="/usr/sbin/sshd" hostname=? addr=192.168.2.83 terminal=? res=success'
type=CRYPTO_SESSION     msg=audit(1410606795.368:1907137): user pid=21048 uid=0 auid=0 ses=1 msg='op=start direction=from-server cipher=blowfish-cbc ksize=128 spid=21049 suid=74 rport=54438 laddr=192.168.2.109 lport=22      exe="/usr/sbin/sshd" hostname=? addr=192.168.2.83 terminal=? res=success'
type=USER_AUTH         msg=audit(1410606795.691:1907138): user pid=21048 uid=0 auid=0 ses=1 msg='op=PAM:authentication acct="root"                                                 exe="/usr/sbin/sshd" hostname=192.168.2.83 addr=192.168.2.83 terminal=ssh res=success'
type=USER_ACCT         msg=audit(1410606795.691:1907139): user pid=21048 uid=0 auid=0 ses=1 msg='op=PAM:accounting acct="root"                                                 exe="/usr/sbin/sshd" hostname=192.168.2.83 addr=192.168.2.83 terminal=ssh res=success'

linux服务之audit的更多相关文章

  1. 第11章 Linux服务管理

    1. 服务分类 (1)Linux的服务 ①Linux中绝大多数的服务都是独立的,直接运行于内存中.当用户访问时,该服务直接响应用户,其好处是服务访问响应速度快.但不利之处是系统中服务越多,消耗的资源越 ...

  2. Linux服务管理总结

    简介与分类 系统的运行级别 运行级别 含义 0 关机 1 单用户模式,可以想象为windows的安全模式,主要用于系统修复 2 不完全的命令行模式,不含NFS服务 3 完全的命令行模式,就是标准字符界 ...

  3. 在 CentOS7 上将自定义的 jar 包注册为 linux 服务 service

    在 CentOS7 上将自定义的 jar 包注册为 linux 服务 service 1.在 /etc/rc.d/init.d/ 目录下创建一个名字和服务名完全相同的 shell 脚本文件 joyup ...

  4. linux笔记:linux服务管理

    linux服务的分类: 启动和自启动: 查询已经安装的服务: RPM包的默认安装路径: 独立服务的启动: 独立服务的自启动: 基于xinetd的服务的管理: xinetd服务的自启动: 源码包安装服务 ...

  5. Linux学习笔记(19) Linux服务管理

    1. 服务的分类 Linux服务可分为RPM包默认安装的服务和源码包安装的服务.前者可细分为独立的服务(直接作用于内存中)和基于xinetd服务.xinetd本身是独立的服务,其唯一的功能是管理其他服 ...

  6. [Linux]服务管理:rpm包, 源码包

    --------------------------------------------------------------------------------------------------- ...

  7. linux服务器之LVS、Nginx和HAProxy负载均衡器对比

    linux服务器之LVS.Nginx和HAProxy负载均衡器对比. LVS特点:  1.抗负载能力强,使用IP负载均衡技术,只做分发,所以LVS本身并没有多少流量产生:  2.稳定性.可靠性好,自身 ...

  8. 《如何将windows上的软件包或文件上传到linux服务上》

    昨天晚上朋友让我帮他简单的搭建个环境,他公司让他做款软件测试温度的,他自己搞的是嵌入式,在公司担任的是软件工程师,应届毕业生.也可能他们搞嵌入式的对这个linux系统不太熟,不会把windows上的软 ...

  9. linux服务端的网络编程

    常见的Linux服务端的开发模型有多进程.多线程和IO复用,即select.poll和epoll三种方式,其中现在广泛使用的IO模型主要epoll,关于该模型的性能相较于select和poll要好不少 ...

随机推荐

  1. BZOJ 1271 秦腾与教学评估

    二分. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...

  2. iOS9的适配

    1.大部分社交平台接口不支持https协议. 问题描述:在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据.对ShareSDK来说,具体表现可能是,无法授权.分享 ...

  3. 利用 Postfix 抵擋垃圾信

    reject_unknown_client               //add 20151117

  4. 10、SQL基础整理(约束2)

    约束 除主键约束.外键约束外 唯一约束(主键列.索引列的候选索引)   设计---右键---索引/键---需要修改的列----是唯一的----忽略重复键 代码方式: cid  varchar (20) ...

  5. HDU 1080

    http://acm.hdu.edu.cn/showproblem.php?pid=1080 二维最长公共子序列 #include <iostream> #include <cstd ...

  6. Gmail邮箱添加域名解析

    主机记录  MX   服务器地址 优先级@  MX   ASPMX.L.GOOGLE.COM. 10@  MX   ALT1.ASPMX.L.GOOGLE.COM. 20@  MX   ALT2.AS ...

  7. EditText 控件

    <EditText android:layout_width="fill_parent" android:layout_height="wrap_content&q ...

  8. 暴力枚举——Help Me with the Game

      Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3394   Accepted: 2172 Description You ...

  9. Boot Repair-能一键修复ubuntu启动/引导项的软件(告别命令行)

    如果你是windows+ubuntu的双系统,那么重装windows之后(非ghost 方式),是会直接进入windows的,之前的grub引导菜单会被抹掉,想要修复ubuntu的启动菜单的话,通常需 ...

  10. OpenCV: Canny边缘检测算法原理及其VC实现详解(转载)

    原文地址:http://blog.csdn.net/likezhaobin/article/details/6892176 原文地址:http://blog.csdn.net/likezhaobin/ ...