Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Sunday, November 27, 2016

linux iptables 设置仅22、80端口可访问

【设置仅22、80端口可访问】 

通过命令 netstat -tnl 可以查看当前服务器打开了哪些端口 
Ssh代码  收藏代码
  1. netstat -tnl  


查看防火墙设置 
Ssh代码  收藏代码
  1. iptables -L -n   


开放22、80端口 
Ssh代码  收藏代码
  1. iptables -A INPUT -p tcp --dport 22 -j ACCEPT  
  2. iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT  
  3. iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT  
  4. iptables -A OUTPUT -p tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT  


取消其他端口的访问规则 
Ssh代码  收藏代码
  1. iptables -P INPUT DROP  
  2. iptables -P FORWARD DROP  
  3. iptables -P OUTPUT DROP  



允许本地回环接口(即允许本机访问本机) 
Ssh代码  收藏代码
  1. iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT  

允许已建立的或相关连的通行(如数据库链接) 
Ssh代码  收藏代码
  1. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  

允许所有本机向外的访问 
Ssh代码  收藏代码
  1. iptables -A OUTPUT -j ACCEPT  



保存配置: 
Ssh代码  收藏代码
  1. service iptables save   


# 列出规则,供查看
iptables -L -n 
# stop iptables, 如果清空规则前没有停止,ssh 会断掉,必须重启系统
/etc/init.d/iptables stop
# 清空规则
iptables -F 
# 允许内网ip访问所有端口
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT 
# 允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT 
# 允许访问22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT 
# 允许访问80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT 
# 允许所有ip访问80端口
iptables -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT 
# 允许本地发起的连接返回数据到任意端口。本地作为客户端可以发起到任何ip和端口的请求,这条规则确保能够收到返回
#------------------when conntrack unkonw error use this
# sudo /sbin/iptables -A OUTPUT -m state --state NEW,ESTABLISHED -j ACCEPT
# sudo /sbin/iptables -A INPUT  -m state --state ESTABLISHED -j ACCEPT
# sudo /sbin/iptables -A OUTPUT  -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT 
#---------------------------------------------------------------
iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT 
# 允许80端口返回数据
iptables -A OUTPUT  -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT 
# 允许返回数据给所有ip所有端口 允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT 
# 除上面允许的规则,抛弃所有INPUT请求 (注意:如果22端口未加入允许规则,SSH链接会直接断开。)
iptables -P INPUT DROP 
# 除上面允许的规则,抛弃所有FORWARD请求
iptables -P FORWARD DROP 
# 除上面允许的规则,抛弃所有OUTPUT请求
iptables -P OUTPUT DROP 
# 备份
iptables-save > /etc/iptables/iptables.rules 
# (cat /etc/sysconfig/iptables > /etc/iptables/iptables.rules )
# 保存(ArchLinux系统下的路径可能和其他系统下的路径不同)
sudo /etc/rc.d/init.d/iptables save
# 重新启动
sudo service iptables restart
# (/etc/init.d/iptables restart)
# 列出规则,供查看
iptables -L -n 

# iptables 安装后 iptables 命令无效,可能是因为该用户的PATH不包括/sbin和/usr/sbin, 可用 sudo /sbin/iptables 运行

Sunday, May 17, 2015

ubuntu 15,jdk1.8上安装 单机hadoop 2.7成功

copy其他人的教程,他是用14+2.6实现,本人用的15+2.7实现,基本无差别
参考 http://blog.csdn.net/shomy_liu/article/details/43027783
注意他里面有点小错

最近需要hadoop,再加上 hadoop这么流行, 就打算开始学习hadoop, 关于hadoop的简介 就不再赘述了,只需先记住, HDFS(Hadoop分布式文件系统), MapReduce(计算模型) 是hadoop的 核心即可。
 首先  hadoop 平台的搭建有三种方式:
  •      单机版
  •      伪分布式版
  •      完全集群分布式          
首先先试着练习来安装 单机版hadoop

一、安装环境
          Ubuntu 15
         hadoop 2.7
         java jdk 1.8
        openssh

二、配置用户、组
     1, 创建hadoop组      
            在终端执行:
            sudo addgroup hadoop
           如下图
        2,创建hadoop用户
             在hadooop用户组添加hadoop用户
             sudo adduser -ingroup hadoop hadoop表示在hadoop 组 添加hadoop 用户
  
      3,为hadoop增加root权限
             赋予hadoop  root权限,就相当于每次执行权限指令时候,只需sudo 就可以,方法如下,修改/etc/sudoers, 如下图,增加              hadoop    ALL=(ALL:ALL) ALL,  执行  sudo  gedit /etc/sudoers  修改之后,如下图
         
         保存退出即可

三、安装SSH 服务
        首先SSH是一个安全的传输协议,可以进行远程登录,hadoop使用ssh 协议来进行数据通信
        建议先  切换到 刚刚 建立的 hadoop 用户下进行操作:  su hadoop
       1,安装ssh 服务
             sudo apt-get install openssh-server
         2,  建立ssh无密码登录本机
            执行  ssh-keygen 生成密钥  中间需要几个回车
           
        然后可以试试 ssh localhost 需要输入密码, 比较麻烦。如果把 key 拷贝到远程机器上,下次ssh链接的时候就无需输入密码登陆了   :  执行  ssh-copy-id  localhost   之后, 在继续ssh localhost就无需输入密码了。 然后在 执行exit 返回到 hadoop用户
如下:
 

四、安装java jdk
         运行hadoop ,jdk 是必需 的。 安装jdk 也比较容易;可以 自己选择版本下载手动安装, 也可以直接apt-get   ,这里为了方便,就直接安装apt-get的openjdk了
        1,直接 执行  sudo apt-get openjdk-7-jdk
        2,查看jdk是否安装完成   java -version
                  

五、配置安装hadoop
         hadoop 各个版本差别挺大, 但是作为练习 就直接用了最新版 2.6.0
        1,安装解压
           官网直接下载就好http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.6.0/
          一般是安装到 /usr/local , 假设下载的tar.gz 在downloads ,将其移动到 /usr/local :
          sudo cp hadoop-2.6.0.tar.gz  /usr/local
           之后进入/usr/local 目录下: 解压sudo tar -zxvf haddoop-2.6.0.tar.gz    
          解压之后 在该目录下 会多出一个 hadoop-2.6.0的目录,为了方便,一般 是重命名为hadoop:
          sudo  mv  hadoop-2.6.0  hadoop
         这就算安装好了,下面就是修改配置文件了
      2,修改配置文件(如果java是默认安装的话,不需要修改jdk目录)
           首先修改 hadoop文件夹的权限用户:  sudo chown -R hadoop:hadoop  hadoop
           修改/.bashrc文件,添加环境变量
            首先查看自己的jdk目录:update-alternatives --config java如下:
             
          我们只需要到根目录 也就是 :/usr/lib/jvm/jdk1.7.0_71 
          然后就是修改 hadoop的 hadoop-env.sh 
         sudo gedit /etc/hadoop/hadoop-env.sh
         修改export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_71
         如下:
           
保存退出  ,至此,单机版的配置 就基本完成了。 下面就是测试了:
  
六、测试单机版hadoop        
    1,首先格式化
           bin/hadoop  namenode -format
        之后出现: 表示格式化成功
        
   
  2、运行测试程序
        在hadoop目录下,hadoop-examples-2.6.0.jar这个是测试程序,里面包含了很多测试用的代码,我们运行一个经典的,wordcount程序: 就是 统计单词频率的一个程序, 首先我们需要建立一个input 文件夹,作为输入
    sudo mkdir input  
    然后随便复制文本进去: 这里就用hadoop目录下的  README.txt 作为测试样本。 
   sudo  cp README.txt input
   然后执行jar 包 运行样例:
    bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.6.0-sources.jar  org.apache.hadoop.examples.WordCount input output
   
   结果如下:
   
  稍等运行一会,会在/home/hadoop/下生成一个output目录,里面有part-r-00000_SUCCESS两个文件,看到_SUCCESS就知道已经成功了,打开part-r-00000看看,每个单词的出现次数都给你统计好了吧。
    执行 cat output/* 可以查看 单词的出现次数~ 
 
  
   至此, 单机版的hadoop 已经完成, 可以写自己的程序; 虽然单机版并不能体现云计算的优势 , 在实际应用中并没有什么意义 , 但是在程序的测试与调试过程中 , 它们还是很有意义的 。

Saturday, May 16, 2015

Windows 下安装 Ubuntu 双系统

  1. 准备磁盘空间
    在磁盘管理中将要分配给 Ubuntu 的卷删除。
  2. 设置 iso 文件
    • 将镜像下的 casper 文件夹下的 vmlinuz 和 initrd.lz 解压出来,并复制在 C 盘根目录下;
    • 将准备好的 iso 镜像文件拷贝到某盘根目录下(如D盘);
  3. 安装 EasyBCD 软件
  4. 设置向导
    • 打开 EasyBCD 软件,选择 Add Entries,选 NeoGrub,然后点 Install,接着是Configure
    • 然后就会弹出 menu.lst 文件,我们要编辑这个文件,因为系统就是这个文件找到我们的 Ubuntu 的;
    • 把下面的英文复制到 menu.lst 文件末尾
         title Install Ubuntu
         root (hd0,0)
         kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/ubuntu-11.10-i386.iso ro quiet splash locale=zh_CN.UTF-8
         initrd (hd0,0)/initrd.lz
      
      特别注意: ubuntu-11.10-i386.iso 是 Ubuntu 系统 iso 镜像文件的名字,需要根据所用版本进行更改; 对于有的电脑上你的第一个盘符并不是C盘,在磁盘管理中可以看出,所以安装时需将 (hd0,0) 改为 (hd0,1)【假设为第二个】; 64 位 Ubuntu 解压出来的文件为 vmlinuz.eti,因此须将上述代码中的 vmlinuz 改为vmlinuz.eti
  5. 重启
    重启,你就会看到有2个启动菜单给你选择,我们选择第2个 Grub 这个,选择install,然后等待一段时间,就会进入 Ubuntu 桌面了。
  6. 卸载镜像
    进入桌面之后,先在终端输入:
      $ sudo umount -l /isodevice
    
    这一命令取消掉对光盘所在驱动器的挂载,否则分区界面找不到分区。
  7. 安装
    一路 next 之后在安装类型界面,我们用自定义,即可以自定义分区的安装方法。
    选择在 Win7/8 中删除的空闲空间(以 40G 左右为例),点击创建,点击添加:
    具体分区如下(仅作参考): 分配 20G 给根目录,即 / ext4 分配 18G 给 /usr ext4 分配 120M 给 /boot ext4 分配 8G 给 /home ext4 分配 2G(所有剩下的,约为 2G)给交换空间 swep
    关于安装启动引导器的设备,会影响 Window 和 Ubuntu 的引导关系,此处默认即可。
  8. 重启
    注意:若重启发现原来 Windows 进不去了,打开终端输入命令:
      $ sudo gedit /etc/default/grub
    
    修改 GRUB_TIMEOUT="10",然后在终端中输入:
      $ sudo update-grub update
    
    命令会自动找到 Windows 启动项,并且自动更新 /boot/grub/grub.cfg 文件,这样重启就能进 Windows 了。
  9. 更改启动顺序将 Windows7/8 设为默认启动项
    若重启,发现 Windows 不是第一个启动项,则
      $ sudo mv /etc/grub.d/30_os-prober /etc/grub.d/06_os-prober
    
    即将 /etc/grub.d/30_os-prober 改名为 06_os-prober,再执行: $ sudo update-grub 即可。
  10. 进入 windows 进行善后工作
    最后进入 Window7/8,打开 EasyBCD 删除安装时改的 menu.lst 文件,按 Remove 即可。
    然后去我们的 C 盘删除 vmlinuzinitrd.lz 和系统的 iso 文件。
  11. Let's begin Linux。

Friday, May 15, 2015

ubuntu下创建eclipse桌面快捷方式

1.桌面目录创建一个名为“eclipse.desktop”的文件
并添加以下内容:

[Desktop Entry]
Encoding=UTF-8
Name=Eclipse Platfrom
Comment=Eclipse IDE
Exec=/home/jason/eclipse/eclipse
Icon=/home/jason/eclipse/icon.xpm
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Development;



注意:
1 Exec=/home/jason/eclipse/eclipse  
2 Icon=/home/jason/eclipse/icon.xpm  
这个地方要修改为你的安装目录。
2.然后给该文件赋权 ,运行“chmod u+x eclipse.desktop“命令即可。
3.直接cp上面代码的朋友注意了,cp回去编辑的时候注意去掉每行后面的空格。

Saturday, February 7, 2015

linux服务器任务自动执行

crontab -e执行schedule task

*/30 * * * * /home/004/wget.sh    每30分钟执行wget.sh程序

参考:
基本格式 :
*  *  *  *  *  command
分 时 日 月 周 命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache