Port forwarding với iptables


Đôi khi, cần thực hiện portwarding 1 số máy trong LAN với iptables, với các hệ thống có firewall thì có thể làm điều này dễ dàng, tuy nhiên, đôi lúc giật gấu vá vai, đành phải tạm khắc phục nếu không có firewall, iptables sẽ giúp chúng ta làm việc đó
Bước 1: kiểm tra 2 thông số sau của máy

cat /proc/sys/net/ipv4/conf/ppp0/forwarding 
cat /proc/sys/net/ipv4/conf/eth0/forwarding

ppp0 và eth0 là 2 interface ví dụ. nếu return về 1 là OK, nếu không thì thay đổi 2 thông số đó thành 1. cách làm có thể google

echo '1' | sudo tee /proc/sys/net/ipv4/conf/ppp0/forwarding
echo '1' | sudo tee /proc/sys/net/ipv4/conf/eth0/forwarding

Tiến hành mở port

iptables -A PREROUTING -t nat -p tcp --dport 55555 -j DNAT --to 192.168.9.14:3389
iptables -A FORWARD -p tcp -d 192.168.9.14 --dport 3389 -j ACCEPT

Giải thích:

Dòng 1: iptables publish 5555 ra bên ngoài, mọi traffic tới port 55555 được điều hướng tới 192.168.9.14:3389
Dòng 2: Allow truy cập tới 192.168.9.14 3389

Đổi phiên bản office từ retail sang VL

Mở notepad, paste đoạn code bên dưới vào, save lại dưới tên active_office.cmd, sau đó nháy phải vào file cmd vừa tạo, chọn run as administrator, bấm phím bất kỳ để xác nhận

@echo off
Title Converter Office 2016 Retail to Volume

echo Press Enter to start VL-Conversion...
echo.
pause
echo.

for /f "tokens=6 delims=[]. " %%G in ('ver') do set win=%%G

set LICPATH=%ProgramFiles(x86)%\Microsoft Office\root\Licenses16

echo path %LICPATH%

if %win% GEQ 9200 (
cd /D "%SystemRoot%\System32"
cscript slmgr.vbs /ilc "%LICPATH%\ProPlusVL_KMS_Client-ppd.xrm-ms"
cscript slmgr.vbs /ilc "%LICPATH%\ProPlusVL_KMS_Client-ul.xrm-ms"
cscript slmgr.vbs /ilc "%LICPATH%\ProPlusVL_KMS_Client-ul-oob.xrm-ms"
cscript slmgr.vbs /ilc "%LICPATH%\client-issuance-bridge-office.xrm-ms"
cscript slmgr.vbs /ilc "%LICPATH%\client-issuance-root.xrm-ms"
cscript slmgr.vbs /ilc "%LICPATH%\client-issuance-root-bridge-test.xrm-ms"
cscript slmgr.vbs /ilc "%LICPATH%\client-issuance-stil.xrm-ms"
cscript slmgr.vbs /ilc "%LICPATH%\client-issuance-ul.xrm-ms"
cscript slmgr.vbs /ilc "%LICPATH%\client-issuance-ul-oob.xrm-ms"
cscript slmgr.vbs /ilc "%LICPATH%\pkeyconfig-office.xrm-ms"
cscript slmgr.vbs /ipk:XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99
)
if %win% LSS 9200 (
cscript "%ProgramFiles(x86)%\Microsoft Office\Office16\ospp.vbs" /inslic:"%LICPATH%\ProPlusVL_KMS_Client-ppd.xrm-ms"
cscript "%ProgramFiles(x86)%\Microsoft Office\Office16\ospp.vbs" /inslic:"%LICPATH%\ProPlusVL_KMS_Client-ul.xrm-ms"
cscript "%ProgramFiles(x86)%\Microsoft Office\Office16\ospp.vbs" /inslic:"%LICPATH%\ProPlusVL_KMS_Client-ul-oob.xrm-ms"
cscript "%ProgramFiles(x86)%\Microsoft Office\Office16\ospp.vbs" /inslic:"%LICPATH%\pkeyconfig-office.xrm-ms"
cscript "%ProgramFiles(x86)%\Microsoft Office\Office16\ospp.vbs" /inpkey:XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99
)
echo.
echo Retail to Volume License conversion finished.
echo.
pause

 

ARCHIVE-LOG và NO-ARCHIVE-LOG mode của Oracle là gì? Ưu nhược điểm?

ARCHIVELOG mode: Khi database được hoạt động ở chế độ này, database sẽ tạo backup cho toàn bộ các transaction đã thực hiện, vì vậy chúng ta có thể khôi phục lại database lại bất cứ thời điểm nào nếu muốn.
Ưu điểm: có thể thực hiện hot backup,ngay cả khi database đang online. Với file backup, archive log, hoàn toàn có thể khôi phục lại database nguyên trạng về bất cứ thời điểm nào khi cần thiết.
Nhược điểm: Tốn ổ cứng để lưu file archivelog, tuy nhiên, có các option để tối ưu lại file log sau khi đã backup thành công.

NOARCHIVELOG: Ngược lại với ARCHIVELOG, chế độ này ko backup cái gì cả, và cũng vì lẽ đó mà hiệu năng của database ở chế độ này là cao nhất.
Ưu điểm: Không tốn ổ cứng lưu file archivelog, ko tốn hiệu năng cho việc backup,database đc hoạt động vơi công suất cao nhất.
Nhược điểm: muốn khôi phục lại data là không thể nào. Chỉ khôi phục lại bản backup gần nhất thôi.

 

Cài đặt Fail2ban cho zimbra trên centos 7

Cài đặt epel-repo

# yum update
# yum install epel-release

Cài đặt fail2ban

yum install fail2ban

backup các file mặc định của fail2ban

# cp /etc/fail2ban/action.d/iptables-allports.conf /etc/fail2ban/action.d/iptables-allports.conf.backup
# mv /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.backup

Tạo file /etc/fail2ban/filter.d/zimbra.conf với nội dung sau

vi /etc/fail2ban/filter.d/zimbra.conf
# Fail2Ban configuration file
#
# Author:
#
# $Revision: 1 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
# Values: TEXT
#
failregex = \[ip=<HOST>;\] account - authentication failed for .* \(no such account\)$
\[ip=<HOST>;\] security - cmd=Auth; .* error=authentication failed for .*, invalid password;$
;oip=<HOST>;.* security - cmd=Auth; .* protocol=soap; error=authentication failed for .* invalid password;$
\[oip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, account not found$
WARN .*;ip=<HOST>;ua=ZimbraWebClient .* security - cmd=AdminAuth; .* error=authentication failed for .*;$
NOQUEUE: reject: RCPT from .*\[<HOST>\]: 550 5.1.1 .*: Recipient address rejected:

# .*\[ip=<HOST>;\] .* - authentication failed for .* \(invalid password\)
#
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =

File này định nghĩa các patten được coi là lỗi, có biểu hiện bất thường trong file log.

Tạo file có nội dung như sau

vi /etc/fail2ban/jail.conf
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 747 $
## The DEFAULT allows a global definition of the options. They can be overridden
# in each jail afterwards.
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
#ignoreip = 127.0.0.1/8 ip_public/32
ignoreip = 127.0.0.1/8
# "bantime" is the number of seconds that a host is banned.
bantime = 600
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3

# "backend" specifies the backend used to get files modification. Available
# options are "gamin", "polling" and "auto". This option can be overridden in
# each jail too (use "gamin" for a jail and "polling" for another).
#
# gamin: requires Gamin (a file alteration monitor) to be installed. If Gamin
# is not installed, Fail2ban will use polling.
# polling: uses a polling algorithm which does not require external libraries.
# auto: will choose Gamin if available and polling otherwise.
backend = auto

# This jail corresponds to the standard configuration in Fail2ban 0.6.
# The mail-whois action send a notification e-mail with a whois request
# in the body.

[ssh-iptables]

enabled = false
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=yourmail1@company.loc;yourmail2@company.loc]
logpath = /var/log/messages
maxretry = 5

# This jail forces the backend to "polling".

[sasl-iptables]

enabled = false
filter = sasl
backend = polling
action = iptables[name=sasl, port=smtp, protocol=tcp]
sendmail-whois[name=sasl, dest=yourmail1@company.loc;yourmail2@company.loc]
logpath = /var/log/zimbra.log

# Here we use TCP-Wrappers instead of Netfilter/Iptables. "ignoreregex" is
# used to avoid banning the user "myuser".

[ssh-tcpwrapper]

enabled = false
filter = sshd
action = hostsdeny
sendmail-whois[name=SSH, dest=yourmail1@company.loc;yourmail2@company.loc]
ignoreregex = for myuser from
logpath = /var/log/messages

# This jail uses ipfw, the standard firewall on FreeBSD. The "ignoreip"
# option is overridden in this jail. Moreover, the action "mail-whois" defines
# the variable "name" which contains a comma using "". The characters '' are
# valid too.

[zimbra-account]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-account]
sendmail[name=zimbra-account, dest=yourmail1@company.loc;yourmail2@company.loc]
logpath = /opt/zimbra/log/mailbox.log
bantime = 600
maxretry = 5

[zimbra-audit]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-audit]
sendmail[name=Zimbra-audit, dest=yourmail1@company.loc;yourmail2@company.loc]
logpath = /opt/zimbra/log/audit.log
bantime = 600
maxretry = 5

[zimbra-recipient]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-recipient]
sendmail[name=Zimbra-recipient, dest=yourmail1@company.loc;yourmail2@company.loc]
logpath = /var/log/zimbra.log
#findtime = 604800
bantime = 172800
maxretry = 5

[postfix]
enabled = true
filter = postfix
action = iptables-multiport[name=postfix, port=smtp, protocol=tcp]
sendmail-buffered[name=Postfix, dest=yourmail1@company.loc;yourmail2@company.loc]
logpath = /var/log/zimbra.log
bantime = -1
maxretry = 5

#[sasl]
#enabled = true
#port = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
#filter = sasl
# You might consider monitoring /var/log/warn.log instead
# if you are running postfix. See http://bugs.debian.org/507990
#logpath = /var/log/zimbra.log

Nhớ thay đổi thông tin yourmail1@company.loc, yourmail2@company.loc thành địa chỉ của mình và thêm IP của mình vào ignoreip =  nhé

Tiếp tục, sửa file sau:
/etc/fail2ban/action.d/sendmail.conf
thay đổi dòng Fail2Ban” | /usr/sbin/sendmail -f <sender> <dest> thành:

Fail2Ban" | /opt/zimbra/postfix/sbin/sendmail -f <sender> <dest>

Cuối cùng là bật fail2ban lên

# systemctl start fail2ban

# systemctl enable fail2ban

Monitor fail2ban

fail2ban-client status

 

 

Cài đặt cụm hadoop cluster 3 node – How to Install and Set Up a 3-Node Hadoop Cluster

I- Chuẩn bị
3 máy centos 7: <hostname>:<IP>
– node-master: 192.168.151.171
– node1: 192.168.151.172
– node2: 192.168.151.173
Phần môi trường cần cài đặt trên 3 máy:

java jdk 1.8 trở lên
yum install -y epel-release vim curl wget telnet
disable firewall hoặc mở sẵn port
service iptables stop
chkconfig iptables off

II- Kiến trúc hadoop cluster
Kiến trúc hadoop cluster gồm 2 loại node chính:
o Master node: lưu giữ thông tin về hệ thống file phân tán, tương đương với bảng inode của ext3, ngoài ra còn có nhiệm vụ lên kế hoạch phân bổ tài nguyên. Trong guide này, node master có 2 nhiệm vụ chính:
o Name node: quản lý hệ thống file phân tán, nắm thông tin block dữ liệu nào nằm ở đâu trong cluster.
o ResourceManager: quản lý các job của YARN và quản lý các job được xếp lịch chạy trên các node slave.
o Slave node: lưu dữ liệu thực và cung cấp sức mạnh phần cứng để chạy các job, trong lab này là node1 và node2:
o Datanode quản lý các block dữ liệu về mặt vật lý.
o Nodemanager, quản lý thực hiện các task trên node.

III- Cấu hình hệ thống.
1. Tạo file host trên mỗi node

192.168.150.171 node-master
192.168.150.172 node1
192.168.150.173 node2

2. Tạo keypair xác thực cho hadoop user
Master node sẽ sử dụng ssh để kết nối tới các node khác và quản lý cluster. Thực hiện:
Log in vào node-master với user hadoop , tạo 1 ssh-key gán cho user hadoop. Sau đó thử ssh bằng user hadoop vào từng node 1, nếu k hỏi password tức là thành công

ssh hadoop@node-master
ssh-keygen -b 4096
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@node-master
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@node1
ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@node2

3. Download và giải nén bộ cài hadoop
Đăng nhập vào node-master với user hadoop, download bộ cài hadoop từ trang chủ

cd
wget http://mirrors.viethosting.com/apache/hadoop/common/hadoop-2.8.4/hadoop-2.8.4.tar.gz
tar zxvf hadoop-2.8.4.tar.gz
mv hadoop-2.8.4 hadoop

4. Thiết lập biến môi trường.
Thêm folder hadoop vừa giải nén vào biến môi trường PATH

vim /home/hadoop/.bash_profile
Thêm dòng sau:
PATH=/home/hadoop/hadoop/bin:/home/hadoop/hadoop/sbin:$PATH

IV- Cấu hình Master Node
1. Thiết lập JAVA_HOME
Tìm vị trí cài đặt java, mặc định ở /usr/java/jdk1.8.0_171-amd64
Có thể tìm bằng cách:

update-alternatives --display java

Thêm các dòng sau vào /home/hadoop/.bash_profile

export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64

Đường dẫn JAVA_HOME thay đổi tuỳ từng lúc nhé. ở đây mình làm ra thế.
2. Đặt đường dẫn Namenode
Trên mỗi node đều cần thiết đặt file core-site.xml, ở đây ở địa chỉ:
~/hadoop/etc/hadoop/core-site.xml
Trong đó ~/hadoop/etc/hadoop/ là thư mục chứa file cấu hình của hệ thống hdfs, nhớ đường dẫn này, sẽ sử dụng ở các bước sau:
Nội dung file:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
        <property>
            <name>fs.default.name</name>
            <value>hdfs://node-master:9000</value>
        </property>
    </configuration>

Chỉnh sửa file hdfs-site.conf

<configuration>
    <property>
            <name>dfs.namenode.name.dir</name>
            <value>/home/hadoop/data/nameNode</value>
    </property>

    <property>
            <name>dfs.datanode.data.dir</name>
            <value>/home/hadoop/data/dataNode</value>
    </property>

    <property>
            <name>dfs.replication</name>
            <value>1</value>
    </property>
</configuration>

Lưu ý thuộc tính dfs.replication, thuộc tính này là số lần dữ liệu được nhân bản (nhằm mục đích dự phòng, node này chết thì còn bản sao ở node khác). ở đây mình có 2 node  có thể set mục này tối đa bằng 2 để dữ liệu được nhân bản trên cả 2 node (tốn tài nguyên). Không được đặt con số này nhiều hơn số datanode mà chúng ta có.
3. Thiết lập Yarn làm Job Scheduler
Đổi tên file mapred-site.xml.template thành mapred-site.xml. Nội dung:

<configuration>
    <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
    </property>
</configuration>

Lưu ý giá trị là yarn, tốt nhất tìm vị trí khoá như trên rồi sửa lại.
Sửa file yarn-site.xml

<configuration>
    <property>
            <name>yarn.acl.enable</name>
            <value>0</value>
    </property>

    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>node-master</value>
    </property>

    <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
    </property>
</configuration>

4. Cấu hình Slave
Khai báo danh sách các datanode mà ta có với namenode, sửa file ~/hadoop/etc/hadoop/slaves
Điền mỗi namenode 1 dòng

node1
node2

5. Cấu hình phân bổ RAM
Việc phân bổ ram có thể làm để những node có ram yếu có thể chạy được. các giá trị mặc định được thiết kế cho các máy 8GB ram trở lên. Dưới đây là những tuỳ chỉnh cho những node 2GB Ram.
6. Các thuộc tính phân bổ RAM
Một Yarn job được chạy với 2 loại:
– Một application manager: chịu trách nhiệm giám sát ứng dụng và phối hợp để phân phối excecutor trong cluster (phân phối xem node nào sẽ thực hiện job).
– Một số executor được tạo bởi application manager chạy các job. Đối với các mapredure job, chúng thực hiện các tiến trình map và redure song song.
Cả 2 app trên chạy trên slave node. Mỗi slave node chạy một NodeManager dạng deamon, chịu trách nhiệm đối với việc tạo container trên mỗi node. Toàn bộ cluster chịu sự quản lý của ResourceManager, lên kế hoạch phân bổ các container trên toàn bộ slavenode, dựa trên nhu cầu cần thiết cho mỗi action hiện tại.
Bốn hình thức cấp phát tài nguyên được cấu hình chuẩn để cluster có thể làm việc:
– Số bộ nhớ RAM có thể cung cấp cho Yarn container trên mỗi node. Giới hạn này nên để cao, nếu không việc cung cấp tài nguyên cho container sẽ bị reject, ứng dụng sẽ fail. Tuy nhiên, không được cấp toàn bộ số RAM trên node. Giá trị này được cấu hình trên file yarn-site.xml với key = yarn.nodemanager.resource.memory-mb
– Lượng bộ nhớ mà 1 node đơn có thể chiếm và số bộ nhớ cấp phát nhỏ nhất được cho phép. Được cấu hình tại yarn-site.xml với key = yarn.scheduler.minimum-allocation-mb
– Lượng RAM được cấp cho mỗi tiến trình map hoặc redure. Nên nhỏ hơn số bộ nhớ tối đa. Được cấu hình tại file mapred-site.xml với key = mapreduce.map.memory.mb và mapreduce.reduce.memory.mb
– Lượng RAM sẽ được cấp cho ApplicationMaster.
Hình minh hoạ cho các cấu hình này:

Ví dụ về cấu hình cho node 2GB RAM

Property                                   Value
yarn.nodemanager.resource.memory-mb        1536
yarn.scheduler.maximum-allocation-mb       1536
yarn.scheduler.minimum-allocation-mb       128
yarn.app.mapreduce.am.resource.mb          512
mapreduce.map.memory.mb                    256
mapreduce.reduce.memory.mb                 256

Sửa file /home/hadoop/hadoop/etc/hadoop/yarn-site.xml và thêm các dòng sau:

<property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>1536</value>
</property>

<property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>1536</value>
</property>

<property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>128</value>
</property>

<property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
</property>

Sửa file /home/hadoop/hadoop/etc/hadoop/mapred-site.xml và thêm các dòng sau:

<property>
        <name>yarn.app.mapreduce.am.resource.mb</name>
        <value>512</value>
</property>

<property>
        <name>mapreduce.map.memory.mb</name>
        <value>256</value>
</property>

<property>
        <name>mapreduce.reduce.memory.mb</name>
        <value>256</value>
</property>

V- Nhân bản cấu hình vừa thiết lập tới các slave node
1- Copy hadoop sang slave node:

cd /home/hadoop/
scp hadoop-*.tar.gz node1:/home/hadoop
scp hadoop-*.tar.gz node2:/home/hadoop

Kết nối tới node1, node2 qua SSH, giải nén 2 gói vừa copy sang

tar -xzf hadoop-2.8.1.tar.gz
mv hadoop-2.8.1 hadoop
exit

Quay lại node-master, copy config sang

for node in node1 node2; do
    scp ~/hadoop/etc/hadoop/* $node:/home/hadoop/hadoop/etc/hadoop/;
done

2- Format HDFS
HDFS sau khi tạo cũng cần phải được format trước khi sử dụng, tương tự như đối với bất kỳ file system truyền thống nào khác.
Trên node master chúng ta gõ lệnh

hdfs namenode -format

Đến đây thì việc cài đặt HDFS đã hoàn tất và sẵn sàng để chạy
VI- Chạy và monitỏ HDFS
1- Start và Stop HDFS
Mọi thao tác được thực hiện trên node-master

start-dfs.sh
stop-dfs.sh

Sau khi chạy lệnh start, master sẽ tự động SSH sang node1+node2 (qua key đã tạo ở trên) để tiến hành bật datanode. Kiểm tra các tiến trình đã được khởi động trên mỗi node bằng lệnh jps , kết quả như bên dưới, bao gồm PID và process name

21922 Jps
21603 NameNode
21787 SecondaryNameNode
19728 DataNode
19819 Jps

2- Monitor HDFS cluster.
Lấy thông tin về cluster đang chạy bằng lệnh:

hdfs dfsadmin -report

Lấy các thông tin về các lệnh được hỗ trợ bằng lệnh help

hdfs dfsadmin -help

Ngoài ra còn có thể truy cập trang web quản trị:
http://node-master-IP:50070

3- Test đẩy dữ liệu lên HDFS
Sử dụng lệnh hdfs dfs để thao tác với dữ liệu trên hdfs. Đầu tiên, ta tạo một thư mục mặc định, tất cả các lệnh khác sẽ sử dụng đường dẫn quan hệ tới thư mục home mặc định này.

hdfs dfs -mkdir -p /user/hadoop

Tạo thêm thư mục books bên trong hdfs

hdfs dfs -mkdir books

 

 

Thay đổi config trong postgres – Reload postgres configuration without restart

PostgreSQL có 2 file cấu hìnhL pg_hba.conf và postgresql.conf. Cả 2 file này đều nằm trong thư mục data của pg_home, hoặc đường dẫn: $PGDATA, hoặc /var/lib/pgsql/data
pg_hba.conf: chứa thông tin xác thực tới postgres, như quyết định user nào, được kết nối tới postgres theo hình thức nào.
postgresql.conf chứa các thông tin cấu hình về hệ thống như log, archive, etc

Thao tác reload cấu hình:
thực hiện như sau:

su - postgres
#make change
vi /var/lib/pgsql/data/pg_hba.conf
pg_ctl reload -D /var/lib/pgsql/data/

pg_ctl reload sẽ gửi SIGHUP tới tiến trình postgres để reload lại file cấu hình
Toàn bộ các thay đổi của pg_hba.conf có thể được reload theo cách này. trong khi đó, một số tham số trong postgresql.conf chỉ có thể được reload sau khi restart