如何看Linux服务器是否被攻击

如何看Linux服务器是否被攻击,第1张

以下几种方法检测linux服务器是否被攻击:
1、检查系统密码文件
首先从明显的入手,查看一下passwd文件,ls –l /etc/passwd查看文件修改的日期。
2、查看一下进程,看看有没有奇怪的进程
重点查看进程:ps –aef | grep inetd inetd是UNIX系统的守护进程,正常的inetd的pid都比较靠前,如果看到输出了一个类似inetd –s
/tmp/xxx之类的进程,着重看inetd
–s后面的内容。在正常情况下,LINUX系统中的inetd服务后面是没有-s参数的,当然也没有用inetd去启动某个文件;而solaris系统中
也仅仅是inetd
–s,同样没有用inetd去启动某个特定的文件;如果使用ps命令看到inetd启动了某个文件,而自己又没有用inetd启动这个文件,那就说明已经有人入侵了系统,并且以root权限起了一个简单的后门。
3、检查系统守护进程
检查/etc/inetdconf文件,输入:cat /etc/inetdconf | grep –v “^#”,输出的信息就是这台机器所开启的远程服务。
一般入侵者可以通过直接替换inxxx程序来创建一个后门,比如用/bin/sh 替换掉intelnetd,然后重新启动inetd服务,那么telnet到服务器上的所有用户将不用输入用户名和密码而直接获得一个rootshell。
4、检查网络连接和监听端口
输入netstat -an,列出本机所有的连接和监听的端口,查看有没有非法连接。
输入netstat –rn,查看本机的路由、网关设置是否正确。
输入 ifconfig –a,查看网卡设置。
5、检查系统日志
命令last |
more查看在正常情况下登录到本机的所有用户的历史记录。但last命令依赖于syslog进程,这已经成为入侵者攻击的重要目标。入侵者通常会停止系
统的syslog,查看系统syslog进程的情况,判断syslog上次启动的时间是否正常,因为syslog是以root身份执行的,如果发现
syslog被非法动过,那说明有重大的入侵事件。
在linux下输入ls –al /var/log
检查wtmp utmp,包括messgae等文件的完整性和修改时间是否正常,这也是手工擦除入侵痕迹的一种方法。
6、检查系统中的core文件
通过发送畸形请求来攻击服务器的某一服务来入侵系统是一种常规的入侵方法,典型的RPC攻击就是通过这种方式。这种方式有一定的成功率,也就是说并不能
100%保证成功入侵系统,而且通常会在服务器相应目录下产生core文件,全局查找系统中的core文件,输入find / -name core
–exec ls –l {} \; 依据core所在的目录、查询core文件来判断是否有入侵行为。
7、检查系统文件完整性
检查文件的完整性有多种方法,通常通过输入ls –l
文件名来查询和比较文件,这种方法虽然简单,但还是有一定的实用性。但是如果ls文件都已经被替换了就比较麻烦。在LINUX下可以用rpm –V
`rpm –qf 文件名`
来查询,查询的结果是否正常来判断文件是否完整。在LINUX下使用rpm来检查文件的完整性的方法也很多,这里不一一赘述,可以man
rpm来获得更多的格式。

我自己的电脑上有一段源代码,就是基于TCP聊天小代码,能进行相互之间的消息接受。我的代码是直接传输字符串的,不是16进制滴。嗯,也贴出来看看吧!
运行服务器,c1,c2就可以了,c1与c2可进行通信。
Clientjava
import javanet;
public class Client{
static byte num=1;
private int portNum;
public Client(int portnum){
thisportNum=portnum;
Systemoutprintln("您是第"+num+"位客服端");
num++;
}
public void sentMessage(String me){
//都是向服务器发信息端口号1999
try{
DatagramSocket ds=new DatagramSocket();
DatagramPacket dp=new DatagramPacket(megetBytes(),melength(),InetAddressgetByName("127001"),1999);
dssend(dp);
dsclose();
}catch(Exception e){
eprintStackTrace();
}
}
public String receiveMessage(){
String str="";
try{
DatagramSocket ds=new DatagramSocket(thisportNum);//表示哦自己的接收端口号是1999
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,1024);
dsreceive(dp);
str=new String(dpgetData(),0,dpgetLength());
dsclose();
}catch(Exception e){
eprintStackTrace();
}
return str;
}
}
c1java
import javautil;
public class c1 implements Runnable{
Client cl;
boolean goon=true;
Scanner sc=new Scanner(Systemin);
public c1(){
cl=new Client(2000);
Systemoutprintln("这里是2000客户端\n你可以发送信息。请输入要发送的信息。out退出");
new Thread(this)start();
while(thisgoon==true){
say();
}
if(goon==false){
Systemexit(0);
}
}
public static void main(String[] args){
new c1();
}
public void say(){
String mess=scnextLine();
Systemoutprintln("是否发送y/n");
String key=scnextLine();
if(keyequals("y")){
Systemoutprintln("信息信息发送中……");
try{
clsentMessage(mess);
}catch(Exception e){
eprintStackTrace();
}
}
else if(keyequals("out")){
goon=false;
}
}
public void run(){
while(thisgoon==true){
String sst="";
try{
sst=clreceiveMessage();
}catch(Exception e){
eprintStackTrace();
}
if(sstlength()>0){
Systemoutprintln(sst);
}
try{
Threadsleep(100);
}catch(InterruptedException e){
eprintStackTrace();
}
}
Systemoutprintln("程序结束!");
}
}
c2java
import javautil;
public class c2 implements Runnable{
Client cl;
boolean goon=true;
Scanner sc=new Scanner(Systemin);
public c2(){
cl=new Client(2001);
Systemoutprintln("这里是2001客户端\n你可以发送信息。请输入要发送的信息。out退出");
new Thread(this)start();
while(goon==true){
say();
}
if(goon==false){
Systemexit(0);
}
}
public static void main(String[] args){
new c2();
}
public void say(){
String mess=scnextLine();
Systemoutprintln("是否发送y/n");
String key=scnextLine();
if(keyequals("y")){
Systemoutprintln("信息信息发送中……");
try{
clsentMessage(mess);
}catch(Exception e){
eprintStackTrace();
}
}
else if(keyequals("out")){
thisgoon=false;
}
}
public void run(){
while(thisgoon==true){
String sst="";
try{
sst=clreceiveMessage();
}catch(Exception e){
eprintStackTrace();
}
if(sstlength()>0){
Systemoutprintln(sst);
}
try{
Threadsleep(100);
}catch(InterruptedException e){
eprintStackTrace();
}
}
Systemoutprintln("聊天关闭!");
}
}
Serverjava
import javanet;
import javautil;
public class Server implements Runnable{
private String message;
boolean work=true;
byte tm=10;
String[] clomessage={"信息:正在断开网络连接","","\n","信息:设置保存中……","","","完成\n","信息:欢迎下次使用\n","信息:完成\n","Goodbye!"};
public Server(){
new Thread(this)start();
Systemoutprintln("本程序为服务端Server");
Scanner sc=new Scanner(Systemin);
Systemoutprintln("输入命令out关闭服务器");
String clo=scnextLine();
if(cloequals("out")){
Systemoutprintln("正在关闭服务器……");
setwork(false);
Systemexit(0);
}
}
public static void main(String[] args){
new Server();

}

public void setwork(boolean bo)
{
thiswork=bo;
}
public void setMessage(String str){
thismessage=str;
}
public String getMessage(){
return thismessage;
}
public void sentMessage(){
String mes=thisgetMessage();
try{
DatagramSocket ds=new DatagramSocket();
DatagramPacket dp=new DatagramPacket(mesgetBytes(),meslength(),InetAddressgetByName("127001"),2000);
DatagramPacket dp2=new DatagramPacket(mesgetBytes(),meslength(),InetAddressgetByName("127001"),2001);
dssend(dp);
dssend(dp2);
dsclose();
Systemoutprintln("信息发送至:127001:2000 & 127001:2001");
thissetMessage("");
}catch(Exception e){
eprintStackTrace();
}
}
public void receiveMessage() throws Exception{
try{
DatagramSocket ds=new DatagramSocket(1999);//表示哦自己的接收端口号是1999
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,1024);
dsreceive(dp);
String str=new String(dpgetData(),0,dpgetLength());
if(strlength()>0){
thissetMessage(str);
Systemoutprintln("信息:Server从"+dpgetAddress()getHostAddress()+"主机(端口号:"+dpgetPort()+")收到信息:"+thisgetMessage());
}

dsclose();
}catch(Exception e){
eprintStackTrace();
}
}
public void run(){
while(tm>0){
if(work==false){
tm--;
Systemoutprint(clomessage[9-tm]);
}
try{
receiveMessage();//时刻接受信息
}catch(Exception e){
eprintStackTrace();
}
if(thisgetMessage()length()>0){//如果接收到信息则发送信息
try{
sentMessage();
}catch(Exception e){
eprintStackTrace();
}
try{
Threadsleep(100);
}catch(InterruptedException e){
eprintStackTrace();
}
}
}
}
}
呵呵,请指教啊!

机器人$conf_mess(脉冲信号)就可以复位。
通过外部自动启停,复位机器人的信号需要在示教器里配置,路径:
登陆用户组“Safety Maintenance”权限---配置---外部自动运行---把输入端和输出端的信号配置完成。

如您无法使用iMessage,可以在设置→信息中开启iMessage,可以使用手机号Apple ID进行接收,发送短信时,如果您选择的联系人已经激活iMessage,iPhone将自动使用iMessage发送。发送iMessage信息是不收短信费的,需要使用有效的无线网络或蜂窝数据进行收发。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13436228.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-05
下一篇 2023-08-05

发表评论

登录后才能评论

评论列表(0条)

保存