Pages

Tuesday, 21 April 2020

发现一个好东西authbind

可惜这玩意是Debian系下的,centos原生不支持,好在有一个authbind-centos-rpm。
虽然这个项目已经年久失修,按页面上的教程rpmbuild -v -bb --clean SPECS/authbind.spec都会直接报错了,所以干脆就不要装rpm-build了,而是进行编译:
    git clone https://github.com/tootedom/authbind-centos-rpm.git
    cd authbind-centos-rpm/authbind/SOURCES
    tar xvf  authbind_2.1.1.tar.gz
    cd authbind-2.1.1/
    make && make install
接着开始配置,配置文件在/etc/authbind/,里面有三个目录:byport、byaddr、byuid。我们要用shadowsocks用户运行一个程序能够绑定80端口,在byport目录下建立80文件:/etc/authbind/byport/80,设置shadowsocks账户有80文件的使用权限,如果80文件可以被shadowsocks访问,则绑定就是成功的,否则绑定就是失败的。
    touch /etc/authbind/byport/80
    chmod 755 /etc/authbind/byport/80
    chown shadowsocks:shadowsocks /etc/authbind/byport/80
把ss文件内容改一改:
    nohup su - shadowsocks -c "/usr/local/bin/authbind --deep /usr/local/bin/ss-server -s 0.0.0.0 -p 80 -k yourpassword -m rc4-md5 &" > /var/log/ss
看看日志,这下绑定80端口成功了。
最后再优化一下相应的iptables设置,禁止SS访问本地内网:
    iptables -N SHADOWSOCKS
    iptables -t filter  -A SHADOWSOCKS -d 127.0.0.0/8 -j REJECT
    iptables -t filter  -A SHADOWSOCKS -d 169.254.0.0/16 -j REJECT
    iptables -t filter  -A SHADOWSOCKS -d 172.16.0.0/12 -j REJECT
    iptables -t filter  -A SHADOWSOCKS -d 192.168.0.0/16 -j REJECT
    iptables -t filter  -A SHADOWSOCKS -d 10.168.0.0/24 -j REJECT
    iptables -t filter  -A SHADOWSOCKS -d 0.0.0.0/0 -j ACCEPT