本文目录一览:
- 1、如何在 64 位 Ubuntu 15.10 中编译最新版 32 位 Wine 1.7.53
- 2、安装jsvc
- 3、java编程:听说有个叫网络嗅探器的东西,请问原理是 怎么做出来的啊?
- 4、centos7 2t以上的硬盘怎么写自动安装kickstart
- 5、如何在 Linux 系统上安装 Suricata 入侵检测系统
如何在 64 位 Ubuntu 15.10 中编译最新版 32 位 Wine 1.7.53
下载源码包(直接下载地址在此)并解压 tar -xf wine-1.7.53。然后,安装如下依赖。
sudoapt-get install build-essential gcc-multilib libx11-dev:i386 libfreetype6-dev:i386 libxcursor-dev:i386 libxi-dev:i386 libxshmfence-dev:i386 libxxf86vm-dev:i386 libxrandr-dev:i386 libxinerama-dev:i386 libxcomposite-dev:i386 libglu1-mesa-dev:i386 libosmesa6-dev:i386 libpcap0.8-dev:i386 libdbus-1-dev:i386 libncurses5-dev:i386 libsane-dev:i386 libv4l-dev:i386 libgphoto2-dev:i386 liblcms2-dev:i386 gstreamer0.10-plugins-base:i386 libcapi20-dev:i386 libcups2-dev:i386 libfontconfig1-dev:i386 libgsm1-dev:i386 libtiff5-dev:i386 libmpg123-dev:i386 libopenal-dev:i386 libldap2-dev:i386 libgnutls-dev:i386 libjpeg-dev:i386
现在切换到 wine-1.7.53 解压后的文件夹,并输入:
./configure
make
sudomake install
同样地,你也可以给配置脚本指定 prefix 参数。以普通用户安装 wine:
./configure --prefix=$HOME/usr/bin
make
make install
这种情况下,Wine 将会安装在$HOME/usr/bin/wine,所以请检查$HOME/usr/bin在你的PATH变量中。
安装jsvc
安装jsvc(利用tomcat方式):
进入tomcat下面的bin目录:
[root@tomcat ~]# cd /opt/tomcat/bin/
[root@tomcat bin]# tar xf commons-daemon-native.tar.gz
[root@tomcat bin]# cd commons-daemon-1.0.15-native-src/unix/
[root@tomcat unix]# ./configure --with-java=$JAVA_HOME
...
*** All done ***
Now you can issue "make"
[root@tomcat unix]# make
编译完成后,会在当前文件夹生成一个jsvc的文件,将它拷贝到/opt/tomcat/bin/下:
tomcat目录可自行设置
[root@tomcat unix]# cp jsvc /opt/tomcat/bin/
安装jsvc(无tomcat方式,利用commons-daemon-native.tar.gz和commons-daemon-1.1.0.jar)
将commons-daemon-native.tar.gz放到某个目录,这里放到/opt/jsvc
[root@localhost jsvc]# cd /opt/jsvc
[root@localhost jsvc]# ll
total 404
-rw-r--r--. 1 root root 25145 Aug 15 23:03 commons-daemon-1.1.0.jar
drwxr-xr-x. 4 root root 109 Aug 15 23:03 commons-daemon-1.1.0-native-src
-rw-r--r--. 1 root root 207125 Aug 15 23:03 commons-daemon-1.1.0-native-src.tar.gz
-rwxr-xr-x. 1 root root 174312 Aug 15 23:05 jsvc
解压commons-daemon-1.1.0-native-src.tar.gz
[root@localhost jsvc]# tar -xvf commons-daemon-1.1.0-native-src.tar.gz
commons-daemon-1.1.0-native-src/LICENSE.txt
commons-daemon-1.1.0-native-src/RELEASE-NOTES.txt
commons-daemon-1.1.0-native-src/NOTICE.txt
commons-daemon-1.1.0-native-src/README
commons-daemon-1.1.0-native-src/unix/
commons-daemon-1.1.0-native-src/unix/man/
commons-daemon-1.1.0-native-src/unix/native/
commons-daemon-1.1.0-native-src/unix/support/
commons-daemon-1.1.0-native-src/unix/configure.in
commons-daemon-1.1.0-native-src/unix/INSTALL.txt
commons-daemon-1.1.0-native-src/unix/man/jsvc.1.xml
commons-daemon-1.1.0-native-src/unix/man/README
commons-daemon-1.1.0-native-src/unix/native/debug.c
commons-daemon-1.1.0-native-src/unix/native/.indent.pro
commons-daemon-1.1.0-native-src/unix/native/locks.h
commons-daemon-1.1.0-native-src/unix/native/help.c
commons-daemon-1.1.0-native-src/unix/native/replace.c
commons-daemon-1.1.0-native-src/unix/native/java.c
commons-daemon-1.1.0-native-src/unix/native/replace.h
commons-daemon-1.1.0-native-src/unix/native/help.h
commons-daemon-1.1.0-native-src/unix/native/signals.c
commons-daemon-1.1.0-native-src/unix/native/jsvc-unix.c
commons-daemon-1.1.0-native-src/unix/native/location.h
commons-daemon-1.1.0-native-src/unix/native/locks.c
commons-daemon-1.1.0-native-src/unix/native/home.h
commons-daemon-1.1.0-native-src/unix/native/debug.h
commons-daemon-1.1.0-native-src/unix/native/java.h
commons-daemon-1.1.0-native-src/unix/native/version.h
commons-daemon-1.1.0-native-src/unix/native/arguments.h
commons-daemon-1.1.0-native-src/unix/native/dso.h
commons-daemon-1.1.0-native-src/unix/native/home.c
commons-daemon-1.1.0-native-src/unix/native/Makefile.in
commons-daemon-1.1.0-native-src/unix/native/location.c
commons-daemon-1.1.0-native-src/unix/native/signals.h
commons-daemon-1.1.0-native-src/unix/native/dso-dlfcn.c
commons-daemon-1.1.0-native-src/unix/native/dso-dyld.c
commons-daemon-1.1.0-native-src/unix/native/jsvc.h
commons-daemon-1.1.0-native-src/unix/native/arguments.c
commons-daemon-1.1.0-native-src/unix/Makedefs.in
commons-daemon-1.1.0-native-src/unix/support/config.guess
commons-daemon-1.1.0-native-src/unix/support/apsupport.m4
commons-daemon-1.1.0-native-src/unix/support/config.sub
commons-daemon-1.1.0-native-src/unix/support/apfunctions.m4
commons-daemon-1.1.0-native-src/unix/support/apjava.m4
commons-daemon-1.1.0-native-src/unix/Makefile.in
commons-daemon-1.1.0-native-src/unix/configure
commons-daemon-1.1.0-native-src/unix/man/fetch.sh
commons-daemon-1.1.0-native-src/unix/support/mkdist.sh
commons-daemon-1.1.0-native-src/unix/support/install.sh
commons-daemon-1.1.0-native-src/unix/support/buildconf.sh
commons-daemon-1.1.0-native-src/windows/
commons-daemon-1.1.0-native-src/windows/apps/
commons-daemon-1.1.0-native-src/windows/apps/prunmgr/
commons-daemon-1.1.0-native-src/windows/apps/prunsrv/
commons-daemon-1.1.0-native-src/windows/include/
commons-daemon-1.1.0-native-src/windows/resources/
commons-daemon-1.1.0-native-src/windows/xdocs/
commons-daemon-1.1.0-native-src/windows/src/
commons-daemon-1.1.0-native-src/windows/apps/prunmgr/prunmgr.c
commons-daemon-1.1.0-native-src/windows/apps/prunmgr/Makefile
commons-daemon-1.1.0-native-src/windows/apps/prunmgr/prunmgr.manifest
commons-daemon-1.1.0-native-src/windows/apps/prunmgr/prunmgr.h
commons-daemon-1.1.0-native-src/windows/apps/prunsrv/prunsrv.manifest
commons-daemon-1.1.0-native-src/windows/apps/prunsrv/Makefile
commons-daemon-1.1.0-native-src/windows/apps/prunsrv/prunsrv.c
commons-daemon-1.1.0-native-src/windows/apps/prunsrv/prunsrv.h
commons-daemon-1.1.0-native-src/windows/include/console.h
commons-daemon-1.1.0-native-src/windows/include/cmdline.h
commons-daemon-1.1.0-native-src/windows/include/apxwin.h
commons-daemon-1.1.0-native-src/windows/include/Makefile.inc
commons-daemon-1.1.0-native-src/windows/include/javajni.h
commons-daemon-1.1.0-native-src/windows/include/gui.h
commons-daemon-1.1.0-native-src/windows/include/handles.h
commons-daemon-1.1.0-native-src/windows/include/service.h
commons-daemon-1.1.0-native-src/windows/include/registry.h
commons-daemon-1.1.0-native-src/windows/include/log.h
commons-daemon-1.1.0-native-src/windows/include/rprocess.h
commons-daemon-1.1.0-native-src/windows/resources/license.rtf
commons-daemon-1.1.0-native-src/windows/xdocs/index.xml
commons-daemon-1.1.0-native-src/windows/src/javajni.c
commons-daemon-1.1.0-native-src/windows/src/mclib.h
commons-daemon-1.1.0-native-src/windows/src/console.c
commons-daemon-1.1.0-native-src/windows/src/service.c
commons-daemon-1.1.0-native-src/windows/src/handles.c
commons-daemon-1.1.0-native-src/windows/src/utils.c
commons-daemon-1.1.0-native-src/windows/src/registry.c
commons-daemon-1.1.0-native-src/windows/src/mclib.c
commons-daemon-1.1.0-native-src/windows/src/private.h
commons-daemon-1.1.0-native-src/windows/src/cmdline.c
commons-daemon-1.1.0-native-src/windows/src/gui.c
commons-daemon-1.1.0-native-src/windows/src/rprocess.c
commons-daemon-1.1.0-native-src/windows/src/log.c
commons-daemon-1.1.0-native-src/windows/README
commons-daemon-1.1.0-native-src/windows/apps/prunmgr/prunmgr.rc
commons-daemon-1.1.0-native-src/windows/apps/prunsrv/prunsrv.rc
commons-daemon-1.1.0-native-src/windows/resources/susers.bmp
commons-daemon-1.1.0-native-src/windows/resources/commons.bmp
commons-daemon-1.1.0-native-src/windows/resources/procruns.ico
commons-daemon-1.1.0-native-src/windows/resources/procrunr.ico
commons-daemon-1.1.0-native-src/windows/resources/procrunw.ico
[root@localhost jsvc]# ls
commons-daemon-1.1.0.jar commons-daemon-1.1.0-native-src commons-daemon-1.1.0-native-src.tar.gz
进入commons-daemon-1.1.0-native-src/unix目录
[root@localhost jsvc]# cd *src
[root@localhost commons-daemon-1.1.0-native-src]# ls
LICENSE.txt NOTICE.txt README RELEASE-NOTES.txt unix windows
[root@localhost commons-daemon-1.1.0-native-src]# cd unix
[root@localhost unix]# ls
configure configure.in INSTALL.txt Makedefs.in Makefile.in man native support
查找当前环境java_home目录
[root@localhost unix]# find / -name java
/etc/pki/ca-trust/extracted/java
/etc/pki/java
/etc/alternatives/java
/var/lib/alternatives/java
/usr/bin/java
/usr/local/zookeeper-3.4.12/contrib/loggraph/src/java
/usr/local/zookeeper-3.4.12/contrib/fatjar/src/java
/usr/local/zookeeper-3.4.12/contrib/ZooInspector/src/java
/usr/local/zookeeper-3.4.12/recipes/election/src/java
/usr/local/zookeeper-3.4.12/recipes/queue/src/java
/usr/local/zookeeper-3.4.12/recipes/lock/src/java
/usr/local/zookeeper-3.4.12/src/contrib/rest/src/java
/usr/local/zookeeper-3.4.12/src/contrib/loggraph/src/java
/usr/local/zookeeper-3.4.12/src/contrib/zooinspector/src/java
/usr/local/zookeeper-3.4.12/src/contrib/fatjar/src/java
/usr/local/zookeeper-3.4.12/src/recipes/election/src/java
/usr/local/zookeeper-3.4.12/src/recipes/queue/src/java
/usr/local/zookeeper-3.4.12/src/recipes/lock/src/java
/usr/local/zookeeper-3.4.12/src/java
/usr/java
/usr/java/jdk1.8.0_171-amd64/bin/java
/usr/java/jdk1.8.0_171-amd64/jre/bin/java
检查java环境是否正确
[root@localhost unix]# ./configure --with-java=/usr/java/jdk1.8.0_171-amd64
*** Current host ***
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking cached host system type... ok
*** C-Language compilation tools ***
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for ranlib... ranlib
checking for strip... strip
*** Host support ***
checking C flags dependant on host system type... ok
*** Java compilation tools ***
checking JAVA_HOME... /usr/java/jdk1.8.0_171-amd64
checking for JDK os include directory... linux
gcc flags added
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sys/capability.h usability... no
checking sys/capability.h presence... no
checking for sys/capability.h... no
configure: WARNING: cannot find headers for libcap
*** Writing output files ***
configure: creating ./config.status
config.status: creating Makefile
config.status: creating Makedefs
config.status: creating native/Makefile
*** All done ***
Now you can issue "make"
输入make命令进行编译
[root@localhost unix]# make
(cd native; make all)
make[1]: Entering directory `/opt/jsvc/commons-daemon-1.1.0-native-src/unix/native'
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk1.8.0_171-amd64/include -I/usr/java/jdk1.8.0_171-amd64/include/linux -c jsvc-unix.c -o jsvc-unix.o-libcapwindows
jsvc-unix.c: In function ‘run_controller’:
jsvc-unix.c:1304:20: warning: assignment from incompatible pointer type [enabled by default]
act.sa_handler = controller;
^
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk1.8.0_171-amd64/include -I/usr/java/jdk1.8.0_171-amd64/include/linux -c arguments.c -o arguments.o-libcapwindows
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk1.8.0_171-amd64/include -I/usr/java/jdk1.8.0_171-amd64/include/linux -c debug.c -o debug.o-libcapwindows
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk1.8.0_171-amd64/include -I/usr/java/jdk1.8.0_171-amd64/include/linux -c dso-dlfcn.c -o dso-dlfcn.o-libcapwindows
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk1.8.0_171-amd64/include -I/usr/java/jdk1.8.0_171-amd64/include/linux -c dso-dyld.c -o dso-dyld.o-libcapwindows
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk1.8.0_171-amd64/include -I/usr/java/jdk1.8.0_171-amd64/include/linux -c help.c -o help.o-libcapwindows
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk1.8.0_171-amd64/include -I/usr/java/jdk1.8.0_171-amd64/include/linux -c home.c -o home.o-libcapwindows
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk1.8.0_171-amd64/include -I/usr/java/jdk1.8.0_171-amd64/include/linux -c java.c -o java.o-libcapwindows
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk1.8.0_171-amd64/include -I/usr/java/jdk1.8.0_171-amd64/include/linux -c location.c -o location.o-libcapwindows
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk1.8.0_171-amd64/include -I/usr/java/jdk1.8.0_171-amd64/include/linux -c replace.c -o replace.o-libcapwindows
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk1.8.0_171-amd64/include -I/usr/java/jdk1.8.0_171-amd64/include/linux -c locks.c -o locks.o-libcapwindows
gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -Wall -Wstrict-prototypes -I/usr/java/jdk1.8.0_171-amd64/include -I/usr/java/jdk1.8.0_171-amd64/include/linux -c signals.c -o signals.o-libcapwindows
ar cr libservice.a arguments.o debug.o dso-dlfcn.o dso-dyld.o help.o home.o java.o location.o replace.o locks.o signals.o-libcapwindows
ranlib libservice.a
gcc jsvc-unix.o libservice.a -ldl -lpthread -o ../jsvc
make[1]: Leaving directory `/opt/jsvc/commons-daemon-1.1.0-native-src/unix/native'
编译完成,查看目录会生成jsvc文件,将jsvc拷贝到上级目录
[root@localhost unix]# ls
config.log config.nice config.status configure configure.in INSTALL.txt jsvc Makedefs Makedefs.in Makefile Makefile.in man native support-libcapwindows
[root@localhost unix]# cp jsvc ../../
java编程:听说有个叫网络嗅探器的东西,请问原理是 怎么做出来的啊?
Sniffer啊,自己去查,不想大片转贴了。
主要原理是利用网卡的混杂模式,和以太网自身的特点进行的。
java写的话用 JPACAP
Jpcap是一个能够抓取与发送网络数据包的Java组件。可以使用Jpcap从一个网络接口获取数据包,然后在Java中对它们进行分析和显示。同样也可以通过一个网络接口发送任意数据包。Jpcap当前能够 捕获以太网,IPv4,IPv6,ARP/RARP,TCP,UDP和ICMPv4数据包。-libcapwindows
Jpcap实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,Jpcap调用wincap/libcap,而给Java语言提供一个公共的接口,从而实现了平台无关性。在官方网站上声明,Jpcap支持FreeBSD3.x,Linux RedHat6.1, Fedora Core4,Solaris,and Microsoft Windows 2000/XP等系统。-libcapwindows
Jpcap的整个结构大体上跟wincap/libpcap是很相像的,例如NetworkInterface类对应wincap的 typedef struct_ADAPTER ADAPTER,getDeviceList()对应pcap_findalldevs()等等。-libcapwindows
Jpcap主要的类有如下几个:
1.NetworkInterface
该类的每一个实例代表一个网络设备,一般就是网卡。这个类只有一些数据成员,除了继承自java.lang.Object的基本方法以外,没有定义其它方法。
2.JpcapCaptor
该类提供了一系列静态方法实现一些基本的功能。该类一个实例代表建立了一个与指定设备的链接,可以通过该类的实例来控制设备,例如设定网卡模式、设定过滤关键字等等。
3.JpcapSender
该类专门用于控制数据包的发送。
4.Packet
这个是所有其它数据包类的父类。Jpcap所支持的数据包有:
ARPPacket、DatalinkPacket、EthernetPacket、ICMPPacket、IPPacket、TCPPacket、UDPPacket。
centos7 2t以上的硬盘怎么写自动安装kickstart
方法/步骤
1
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行。-libcapwindows
2
服务器或者电脑都支持PXE启动(从网卡启动),在BIOS上默认是有安装DHCP客户端和tftp客户端,所以可以利用这个来实现网络自动化安装。 从网卡启动,dhcp获取到IP,然后tftp去传递linux的内核,并启动内核。内核启动就会去加载ks文件,我们只要把安装的内容写入ks文件中就可以了。(其中ks文件中会有挂载nfs共享的RHEL/Centos安装所需的包)-libcapwindows
3
安装dhcp服务:
yum -y install dhcp
如下图:
4
配置dhcp服务:
cd /etc/dhcp/
vim dhcpd.conf
ddns-update-style none;
#固定格式
subnet 192.168.122.0 netmask 255.255.255.0 {
#定义dhcp应用的网络
option routers 192.168.122.90;
#设置路由
option subnet-mask 255.255.255.0;
#设置掩码
option domain-name "example.com";
#设置所属的域
option domain-name-servers 192.168.122.11;
#设置名字服务器的IP,如果没有名字服务器推出来的主机名跟预期的不一样
pool {
range 192.168.122.12 192.168.122.89;
}
#设置地址池,可以设置多个地址池
filename "/pxelinux.0";
#设置文件共享
next-server 192.168.122.11;
#设置共享的服务器
host centos6_1 {
hardware ethernet 52:54:00:e4:da:aa;
fixed-address 192.168.122.12;
}
}
#IP与MAC绑定,这个事先要知道MAC,不知道IP就会随机分配
如下图:
5
service dhcpd start #启动dhcp服务tail -f /var/log/messages #跟踪日志,查看是否报错
netstat -lntup | grep 67 #查看端口是否启动
6
安装tftp-server:
yum -y install tftp-server
tftp在centos6是依赖于xinetd服务的,所以使用yum安装,依赖会被自动安装
如下图:
7
配置tftp服务:
vim /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
8
设置tftp的共享配置文件:
cd /var/lib/tftpboot/
mkdir pxelinux.cfg
cd pxelinux.cfg
vim default
default linux
prompt 0
timeout 2
label linux
kernel vmlinuz
append ksdevice=eth0 load_ramdisk=1 initrd=initrd.img network ks=
9
启动xinetd服务,就启动了tftp服务
service xinetd start
netstat -lntpd | grep 69 #查看端口是否启动
需要下载pxelinux.0放在/var/lib/tftpboot/的目录下,或者安装syslinux,也会有这个文件的
yum -y install syslinux
安装完,文件路径是:/usr/share/syslinux/pxelinux.0
将光盘里面的ioslinux目录下的vmlinuz和initrd.img复制到/var/lib/tftpboot/
确定这个目录的所有文件都有读执行的权限就可以了
service rpcbind restart #重启端口映射服务service xinetd restart #重启xinetd服务
10
安装httpd服务:
yum -y groupinstall "Web Server" #终端显示语言是英文
或者
yum -y groupinstall "万维网服务器" #终端显示语言是中文
启动服务:service httpd start
11
安装nfs:
yum -y install nfs-utils
vim /etc/exports
/var/ftp/pub 192.168.122.0/24(ro,sync,no_root_squash)
启动服务:
service rpcbind restart #重启端口映射服务
service nfs start
12
kickstart的文件可以手动写,也可以使用system-config-kickstart命令来生成,需要安装system-config-kickstart.noarch这个包。
system-config-kickstart
最后保存的文件可以复制到/var/www/html/下 workstartion.cfg
text
install
keyboard us
lang en_US
selinux --enforcing
#langsupport --default en_US en_US
network --bootproto dhcp
nfs --server=192.168.122.11 --dir=/var/ftp/pub
# Partition 19028M
%include /tmp/partitioning
#mouse genericps/2 --emulthree
#mouse generic3ps/2
#mouse genericwheelusb --device input/mice
timezone Asia/Shanghai --utc
#timezone US/Central --utc
#timezone US/Mountain --utc
#timezone US/Pacific --utc
graphical
#skipx
rootpw centos
auth --useshadow --passalgo=md5
firstboot --disable
firewall --disabled
bootloader --location=mbr
reboot
%packages
@basic-desktop
@desktop-debugging
@desktop-platform
@fonts
@general-desktop
@graphical-admin-tools
@input-methods
@legacy-x
@remote-desktop-clients
@x11
# KDE is huge...install it if you wish
#@ KDE
#@ Windows File Server
#@ Web Server
elinks
openssh
openssh-server
openssh-clients
vim-enhanced
samba-common
samba-client
gimp
gimp-data-extras
enscript
libcap
ntp
coreutils
elfutils
elfutils-libelfs
gimp-print-plugin
gnome-icon-theme
gstreamer
gstreamer-tools
#libgnomeprint22
#libgnomeprintui22
libgsf
libIDL
libraw1394
nautilus-cd-burner
openmotif
pyorbit
startup-notification
ttmkfdir
firefox
mutt
vnc
gcc
%post
# Set the time, then set the hardware clock
ntpdate -b 192.168.122.254
hwclock --systohc --utc
# Non-destructive rebuild approach
CURRENT="5"
if [ -x /usr/bin/links ]; then httpget="/usr/bin/links";
elif [ -x /usr/bin/lyn
如何在 Linux 系统上安装 Suricata 入侵检测系统
由于安全威胁持续不断,配备入侵检测系统(IDS)已成为如今数据中心环境下最重要的要求之一。然而,随着越来越多的服务器将网卡升级到10GB/40GB以太网技术,我们越来越难在大众化硬件上以线速实施计算密集型入侵检测。扩展IDS性能的一个方法就是使用多线程IDS。在这种IDS下,大量耗用CPU资源的深度数据包检查工作负载并行化处理,分成多个并发任务。这种并行化检查机制可以充分发扬多核硬件的优势,轻松扩展IDS的处理能力。这方面的两个知名的开源工具就是Suricata()和Bro()。-libcapwindows
我在本教程中将演示如何在Linux服务器上安装和配置Suricata IDS。
在Linux上安装Suricata IDS
不妨用源代码构建Suricata。你先要安装几个所需的依赖项,如下所示。
在Debian、Ubuntu或Linux Mint上安装依赖项
$ sudo apt-get install wget build-essential libpcre3-dev libpcre3-dbg automake autoconf libtool libpcap-dev libnet1-dev libyaml-dev zlib1g-dev libcap-ng-dev libjansson-dev-libcapwindows
在CentOS、Fedora或RHEL上安装依赖项
$ sudo yum install wget libpcap-devel libnet-devel pcre-devel gcc-c++ automake autoconf libtool make libyaml-devel zlib-devel file-devel jansson-devel nss-devel-libcapwindows
一旦你安装了所有必需的程序包,现在可以安装Suricata了,如下所示。
首先,从下载最新的Suricata源代码,编译代码。截至本文撰稿时,最新版本是2.0.8。
$ wget
$ tar -xvf suricata-2.0.8.tar.gz
$ cd suricata-2.0.8
$ ./configure --sysconfdir=/etc --localstatedir=/var
这是配置的示例输出结果。
Suricata Configuration:
AF_PACKET support: yes
PF_RING support: no
NFQueue support: no
NFLOG support: no
IPFW support: no
DAG enabled: no
Napatech enabled: no
Unix socket enabled: yes
Detection enabled: yes
libnss support: yes
libnspr support: yes
libjansson support: yes
Prelude support: no
PCRE jit: yes
LUA support: no
libluajit: no
libgeoip: no
Non-bundled htp: no
Old barnyard2 support: no
CUDA enabled: no
现在编译并安装它。
$ make
$ sudo make install
Suricata源代码随带默认的配置文件。不妨安装这些默认的配置文件,如下所示。
$ sudo make install-conf
正如你所知,要是没有IDS规则集,Suricata毫无用处。颇为方便的是,Makefile随带IDS规则安装选项。想安装IDS规则,运行下面这个命令即可。
$ sudo make install-rules
上述规则安装命令会从EmergingThreats.net()安装可用的社区规则集的最新快照,并将它们存储在/etc/suricata/rules下。
首次配置Suricata IDS
现在就可以配置Suricata了。配置文件位于/etc/suricata/suricata.yaml。使用文本编辑工具打开文件,以便编辑。
$ sudo vi /etc/suricata/suricata.yaml
下面是一些基本的设置,供你开始入门。
“default-log-dir”关键字应该指向Suricata日志文件的位置。
default-log-dir: /var/log/suricata/
在“vars”这部分下面,你会找到Suricata使用的几个重要变量。“HOME_NET”应该指向由Suricata检查的本地网络。“!$HOME_NET”(被分配给EXTERNAL_NET)指本地网络以外的任何网络。“XXX_PORTS”表明不同服务所使用的一个或多个端口号。请注意:不管使用哪个端口, Suricata都能自动检测HTTP流量。所以,正确指定HTTP_PORTS变量并不是很重要。-libcapwindows
vars:
HOME_NET: "[192.168.122.0/24]"
EXTERNAL_NET: "!$HOME_NET"
HTTP_PORTS: "80"
SHELLCODE_PORTS: "!80"
SSH_PORTS: 22
“host-os-policy”这部分用来防范一些利用操作系统的网络堆栈的行为(比如TCP重组)来规避检测的常见攻击。作为一项应对措施,现代IDS想出了所谓的“基于目标的”检测,检查引擎根据流量的目标操作系统,对检测算法进行微调。因而,如果你知道每个本地主机运行什么操作系统,就可以将该信息提供给Suricata,从而有望提高其检测速度。这时候用到了“host-os-policy“部分。在该例子中,默认的IDS策略是Linux;如果不知道某个IP地址的操作系统信息,Suricata就会运用基于Linux的检查策略。如果捕获到192.168.122.0/28和192.168.122.155的流量,Suricata就会运用基于Windows的检查策略。-libcapwindows
host-os-policy:
# 这些是Windows机器。
windows: [192.168.122.0/28, 192.168.122.155]
bsd: []
bsd-right: []
old-linux: []
# 将Linux作为默认策略。
linux: [0.0.0.0/0]
old-solaris: []
solaris: ["::1"]
hpux10: []
hpux11: []
irix: []
macos: []
vista: []
windows2k3: []
在“threading”这部分下面,你可以为不同的Suricata线程指定CPU亲和性(CPU affinity)。默认情况下,CPU亲和性被禁用(“set-cpu-affinity: no”),这意味着Suricata线程将被安排在任何可用的CPU核心上。默认情况下,Suricata会为每个CPU核心创建一个“检测”线程。你可以调整这个行为,只要指定“detect-thread-ratio: N”。这会创建N x M个检测 线程,其中M是指主机上CPU核心的总数。-libcapwindows
threading:
set-cpu-affinity: no
detect-thread-ratio: 1.5
就上述线程设置而言,Suricata会创建1.5 x M个检测线程,其中M是系统上CPU核心的总数。
想了解关于Suricata配置的更多信息,你可以阅读默认的配置文件本身,为了便于理解,加有大量注释。
使用Suricata执行入侵检测
现在可以试着运行Suricata了。在启动它之前,还有一个步骤要完成。
如果你使用pcap捕获模式,强烈建议关闭Suricata侦听的那个网卡上的任何数据包卸载功能(比如LRO/GRO),因为那些功能可能会干扰数据包实时捕获。
下面介绍如何关闭网络接口eth0上的LRO/GRO:
$ sudo ethtool -K eth0 gro off lro off
请注意:视使用的网卡而定,你可能会看到下列警示信息,可以忽视这个信息。它只是意味着你的网卡不支持LRO。
Cannot change large-receive-offload
Suricata支持多种运行模式。运行模式决定了不同的线程如何用于IDS。下面这个命令列出了所有可用的运行模式。
$ sudo /usr/local/bin/suricata --list-runmodes
Suricata使用的默认运行模式是autofp(代表“自动流绑定负载均衡模式”)。在这种模式下,来自每一路流的数据包被分配给单一的检测线程。流被分配给了未处理数据包数量最少的线程。
最后,不妨启动Suricata,看看它的实际运行情况。
$ sudo /usr/local/bin/suricata -c /etc/suricata/suricata.yaml -i eth0 --init-errors-fatal
在这个例子中,我们监控一个8核系统上的网络接口eth0。如上所示,Suricata创建了13个数据包处理线程和3个管理线程。数据包处理线程包括1个PCAP数据包捕获线程和12个检测线程(相当于8 x 1.5)。这意味着,一个捕获线程捕获的数据包经负载均衡处理后,变成了IDS面前的12个检测线程。管理线程是一个流管理器和两个计数器/统计相关线程。-libcapwindows
下面是Suricata进程的线程视图(由htop描绘)。
Suricata检测日志存储在/var/log/suricata目录下。
$ tail -f /var/log/suricata/fast.log
04/01/2015-15:47:12.559075 [**] [1:2200074:1] SURICATA TCPv4 invalid checksum [**] [Classification: (null)] [Priority: 3] {TCP} 172.16.253.158:22 - 172.16.253.1:46997-libcapwindows
04/01/2015-15:49:06.565901 [**] [1:2200074:1] SURICATA TCPv4 invalid checksum [**] [Classification: (null)] [Priority: 3] {TCP} 172.16.253.158:22 - 172.16.253.1:46317-libcapwindows
04/01/2015-15:49:06.566759 [**] [1:2200074:1] SURICATA TCPv4 invalid checksum [**] [Classification: (null)] [Priority: 3] {TCP} 172.16.253.158:22 - 172.16.253.1:46317-libcapwindows
为了易于导入,还有JSON格式的日志:
$ tail -f /var/log/suricata/eve.json
{"timestamp":"2015-04-01T15:49:06.565901","event_type":"alert","src_ip":"172.16.253.158","src_port":22,"dest_ip":"172.16.253.1","dest_port":46317,"proto":"TCP","alert":{"action":"allowed","gid":1,"signature_id":2200074,"rev":1,"signature":"SURICATA TCPv4 invalid checksum","category":"","severity":3}}-libcapwindows
{"timestamp":"2015-04-01T15:49:06.566759","event_type":"alert","src_ip":"172.16.253.158","src_port":22,"dest_ip":"172.16.253.1","dest_port":46317,"proto":"TCP","alert":{"action":"allowed","gid":1,"signature_id":2200074,"rev":1,"signature":"SURICATA TCPv4 invalid checksum","category":"","severity":3}}-libcapwindows