常用的Linux系统查看系统信息命令

[root@server ~] # uname –a                                             # 查看内核/操作系统/CPU信息的linux系统信息命令
[root@server ~] # head -n 1 /etc/issue                           # 查看操作系统版本,是数字1不是字母L
[root@server ~] # cat /proc/cpuinfo                               # 查看CPU信息的linux系统信息命令
[root@server ~] # hostname                                             # 查看计算机名的linux系统信息命令
[root@server ~] # lspci -tv                                                 # 列出所有PCI设备
[root@server ~] # lsusb -tv                                                # 列出所有USB设备的linux系统信息命令
[root@server ~] # lsmod                                                    # 列出加载的内核模块
[root@server ~] # env                                                         # 查看环境变量资源
[root@server ~] # free -m                                                   # 查看内存使用量和交换区使用量
[root@server ~] # df -h                                                       # 查看各分区使用情况
[root@server ~] # du -sh                                                    # 查看指定目录的大小
[root@server ~] # grep MemTotal /proc/meminfo     # 查看内存总量
[root@server ~] # grep MemFree /proc/meminfo       # 查看空闲内存量
[root@server ~] # uptime                                                   # 查看系统运行时间、用户数、负载
[root@server ~] # cat /proc/loadavg                               # 查看系统负载磁盘和分区
[root@server ~] # mount | column -t                               # 查看挂接的分区状态
[root@server ~] # fdisk -l                                                    # 查看所有分区
[root@server ~] # swapon -s                                              # 查看所有交换分区
[root@server ~] # hdparm -i /dev/hda                            # 查看磁盘参数(仅适用于IDE设备)
[root@server ~] # dmesg | grep IDE                                 # 查看启动时IDE设备检测状况网络
[root@server ~] # ifconfig                                                   # 查看所有网络接口的属性
[root@server ~] # iptables -L                                              # 查看防火墙设置
[root@server ~] # route -n                                                   # 查看路由表
[root@server ~] # netstat -lntp                                           # 查看所有监听端口
[root@server ~] # netstat -antp                                          # 查看所有已经建立的连接
[root@server ~] # netstat -s                                                 # 查看网络统计信息进程
[root@server ~] # ps -ef                                                        # 查看所有进程
[root@server ~] # top                                                            # 实时显示进程状态用户
[root@server ~] # w                                                               # 查看活动用户
[root@server ~] # id                                                               # 查看指定用户信息
[root@server ~] # last                                                            # 查看用户登录日志
[root@server ~] # cut -d: -f1 /etc/passwd                         # 查看系统所有用户
[root@server ~] # cut -d: -f1 /etc/group                            # 查看系统所有组
[root@server ~] # crontab -l                                                 # 查看当前用户的计划任务服务
[root@server ~] # chkconfig –list                                        # 列出所有系统服务
[root@server ~] # chkconfig –list | grep on                       # 列出所有启动的系统服务程序
[root@server ~] # rpm -qa                                                    # 查看所有安装的软件包
[root@server ~] # cat /proc/cpuinfo                                   # 查看CPU相关参数的linux系统命令
[root@server ~] # cat /proc/partitions                               # 查看linux硬盘和分区信息的系统信息命令
[root@server ~] # cat /proc/meminfo                                # 查看linux系统内存信息的linux系统命令
[root@server ~] # cat /proc/version                                   # 查看版本,类似uname -r
[root@server ~] # cat /proc/ioports                                    # 查看设备io端口
[root@server ~] # cat /proc/interrupts                               # 查看中断
[root@server ~] # cat /proc/pci                                            # 查看pci设备的信息
[root@server ~] # cat /proc/swaps                                      # 查看所有swap分区的信息

在vps上搭建nginx+twip

apache上搭建twip也试过,不过apache不愧是个吃资源的大户,于是准备改用nginx。网上搜了把发现还是很简单的,以下内容在原来的基础上略有修改。 1.安装需要的包

apt-get install curl libcurl3 libcurl3-dev

2.安装php组件

apt-get install php5-cli php5-cgi php5-curl spawn-fcgi

在最后添加:cgi.fix_pathinfo=1修改配置项:/etc/php5/cgi/php.ini 3.安装nginx组件

apt-get install nginx

4.启动php服务

1
2
killall -HUP php-cgi
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

5.配置nginx的配置文件,这里面需要注意下,有几个地方略作了修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server {
    listen   443;
    server_name  twip.somename.com:443;
    root   /var/www;

    location / {
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php last;
        }
        index  index.php index.html index.htm;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/$fastcgi_script_name;
        include    fastcgi_params;
    }

    location ~ /\.ht {
    deny  all;
    }
}

注意,因为我使用了加密连接,所以这里我监听的是443端口,server_name是你的域名root和fastcgi_param里的路径和你的api路径一致,我的是直接放在网站根目录下,如果你是放在yourdomain.com/twip下的话 可以改成/var/www/twip。 这段配置还有一个需要注意的地方就是要放在nginx.conf的http节点里面。由于我配置了ssl加密连接,所以还需要配置下相关证书。 在http节点里server节点外面加上配置好的证书路径即可。

ssl on;
ssl_certificate /etc/nginx/conf/ssl-unified.crt;
ssl_certificate_key /etc/nginx/conf/ssl.key;

关于证书的配置方法,因为我用的是startssl的免费证书,所以具体的方法可以看看他们的faq,非常简单。 最后就是部署twip了,这个也非常简单,到code.google.com上down下代码把config.php里的consume_key之类的填一下上传即可。 最后重启下nginx看看,/etc/init.d/nginx restart。   以上文章大部分参考的是在vps上搭建nginx+twip,在此借用希望不介意。

Linux禁用ping

禁止ping会有诸多不便,但是其带来的好处有时也令人不忍放弃,比如我,我有一台VPS之前因为搭了个VPN,结果没过多久后就遭到了洪水攻击,你懂得。。。后来把ping禁止掉后,换了下ssh的端口,立马清静了~

 

关于禁止ping的方法看了下网上很多人的帖子,其方式无外乎两类。一类通过修改内存加载的控制文件直接禁掉所有ICMP协议,另一类就是通过配置防火墙iptables规则来实现了。这两类方法各有优缺点,以下分别进行阐述。

 

第一类:修改内存加载的控制文件/proc/sys/net/ipv4/icmp_echo_ignore_all

这个方法也有很多种,最简单的就是直接修改文件:

关闭ping

echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all

开启ping

echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all

另外也可以通过控制命令sysctl来控制

sysctl -w net.ipv4.icmp_echo_ignore_all=1
sysctl -p

注:sysctl设置和显示在/proc/sys目录中的内核参数.能用sysctl来设置或重新设置连网功能,如IP转发、IP碎片去除及源路由检查等。用户只需要编辑/etc/sysctl.conf文件,即可手工或自动执行由sysctl控制的功能。

sysctl [-n] [-e] -w variable=value
sysctl [-n] [-e] -p (default /etc/sysctl.conf)
sysctl [-n] [-e] -a

常用参数的意义:
-w  临时改动某个指定参数的值,如:sysctl -w net.ipv4.ip_forward=1
-a   显示所有的系统参数
-p  从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载
如果仅仅是想临时改动某个系统参数的值,能用两种方法来实现,例如想启用IP路由转发功能:
1) #echo 1 > /proc/sys/net/ipv4/ip_forward
2) #sysctl -w net.ipv4.ip_forward=1
以上两种方法都可能即时开启路由功能,但如果系统重启,或执行了
# service network restart
命令,所设置的值即会丢失,如果想永久保留设置,能修改/etc/sysctl.conf文件
将 net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1

可见,该方法的优点在于其简单,但缺点确在于无法保持配置,而且直接修改配置文件禁用的是整个icmp协议,在很多情况下确实有其不便之处。

第二类:配置iptables防火墙规则

本人对iptables也只是个初学者,没法进行详细讲解,这里就贴几个网上找到的例子。

iptables普通配置文件 :

vim /etc/firewall.sh

iptables -F
iptables -N FIREWALL
iptables -F FIREWALL
iptables -A INPUT -j FIREWALL
iptables -A FORWARD -j FIREWALL
iptables -A FIREWALL -p tcp -m tcp –dport 110 –syn -j ACCEPT
# nginx web server
iptables -A FIREWALL -p tcp -m tcp –dport 80 –syn -j ACCEPT
# apache web server
iptables -A FIREWALL -p tcp -m tcp –dport 81 –syn -j ACCEPT
#ssh
iptables -A FIREWALL -p tcp -m tcp –dport 22 –syn -j ACCEPT
iptables -A FIREWALL -i lo -j ACCEPT
# dns
iptables -A FIREWALL -p udp -m udp –sport 53 -j ACCEPT
iptables -A FIREWALL -p tcp -m tcp –syn -j REJECT
iptables -A FIREWALL -p udp -m udp -j REJECT
#禁ping
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
#开启ping
#iptables -D INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP

生成firewall.sh文件

权限
chmod 755 /etc/firewall.sh

修改配置文件

vim /etc/init.d/rc.local

在最后一行加上
sh /etc/firewall.sh

iptables屏蔽IP :
#如果只是想屏蔽IP的话“3、开放指定的端口”可以直接跳过。
#屏蔽单个IP的命令是
iptables -I INPUT -s 123.45.6.7 -j DROP
#封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP
#封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP
#封IP段即从123.45.6.1到123.45.6.254的命令是
iptables -I INPUT -s 123.45.6.0/24 -j DROP

查看已配置的规则,使用如下命令

iptables -L

会输出以下内容

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

上面的规则说明,允许任何人从任何地方访问。

首先来创建一个Iptables的文件

nano /etc/iptables.test.rules

输入以下规则

*filter

# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn’t use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# Accepts all established inbound connections
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

# Allows all outbound traffic
# You could modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp –dport 80 -j ACCEPT
-A INPUT -p tcp –dport 443 -j ACCEPT

# Allows SSH connections for script kiddies
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
-A INPUT -p tcp -m state –state NEW –dport 30000 -j ACCEPT

# Now you should read up on iptables rules and consider whether ssh access
# for everyone is really desired. Most likely you will only allow access from certain IPs.

# Allow ping
-A INPUT -p icmp -m icmp –icmp-type 8 -j ACCEPT

# log iptables denied calls (access via ‘dmesg’ command)
-A INPUT -m limit –limit 5/min -j LOG –log-prefix “iptables denied: ” –log-level 7

# Reject all other inbound – default deny unless explicitly allowed policy:
-A INPUT -j REJECT
-A FORWARD -j REJECT

这看到比较复杂,但细看每一部分,你会发现,它只是关闭除了我们允许的所有端口,在这种情况下是80和443端口(标准的网络浏览器的端口)和前面定义的SSH端口。

激活这些新的规则

iptables-restore < /etc/iptables.test.rules

再来看看有什么不同

iptables -L

我们看到,只有上面定义的端口是关闭的,其余都是关闭的。如果是这样的,将保存Iptables文件

iptables-save > /etc/iptables.up.rules

为了确保iptables规则开始重新启动,我们将创建一个新的文件

nano /etc/network/if-pre-up.d/iptables

输入下面内容

#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules

更改一下权限

chmod +x /etc/network/if-pre-up.d/iptables

#添加屏蔽IP
#禁止此IP访问服务器
iptables -I INPUT -s 1.2.3.4 -j DROP

iptables -A INPUT -s 1.2.3.4 -j DROP
#禁止服务器访问此IP
iptables -A OUTPUT -d 1.2.3.4 -j DROP
如果要封某个网段:
iptables -I INPUT -s 1.2.3.0/24 -j DROP

#清空屏蔽IP
iptables -t filter -D INPUT -s 1.2.3.4 -j DROP
iptables -t filter -D OUTPUT -d 1.2.3.4 -j DROP

#一键清空所有规则
iptables -F

#查看

iptables -L INPUT

iptables -L

iptables-save(此命令将保存规则,下次开机自动执行)

#处理IP碎片数量,防止攻击,允许每秒100个
iptables -A FORWARD -f -m limit –limit 100/s –limit-burst 100 -j ACCEPT
#设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包
iptables -A FORWARD -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT