-
-
Save sniper7kills/2e338804dc5df6d373594f31dac3beb9 to your computer and use it in GitHub Desktop.
| #/bin/bash | |
| #Ask some info | |
| echo -n "Enter ELK Server IP or FQDN: " | |
| read eip | |
| echo -n "Enter Admin Web Password: " | |
| read adpwd | |
| #Update System | |
| sudo apt-get update | |
| sudo apt-get upgrade -y | |
| #Java Pre-Req | |
| sudo add-apt-repository ppa:webupd8team/java -y | |
| sudo apt-get update | |
| sudo apt-get install oracle-java8-installer -y | |
| #Add Repo Info | |
| wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - | |
| sudo apt-get install apt-transport-https -y | |
| echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list | |
| sudo apt-get update | |
| #Elastic Search | |
| sudo apt-get install elasticsearch -y | |
| echo "network.host: localhost" | sudo tee /etc/elasticsearch/elasticsearch.yml | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable elasticsearch.service | |
| sudo systemctl restart elasticsearch.service | |
| #Kibana | |
| sudo apt-get install kibana -y | |
| cat <<EOC | sudo su | |
| cat <<EOT > /etc/kibana/kibana.yml | |
| server.host: "localhost" | |
| EOT | |
| exit | |
| EOC | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable kibana.service | |
| sudo systemctl restart kibana.service | |
| #NGINX Reverse Proxy | |
| echo "admin:`openssl passwd -apr1 $adpwd`" | sudo tee -a /etc/nginx/htpasswd.users | |
| sudo apt-get -y install nginx -y | |
| cat <<EOC | sudo su | |
| cat <<EOT > /etc/nginx/sites-available/default | |
| server { | |
| listen 80; | |
| server_name $eip; | |
| auth_basic "Restricted Access"; | |
| auth_basic_user_file /etc/nginx/htpasswd.users; | |
| location / { | |
| proxy_pass http://localhost:5601; | |
| proxy_http_version 1.1; | |
| proxy_set_header Upgrade \\\$http_upgrade; | |
| proxy_set_header Connection 'upgrade'; | |
| proxy_set_header Host \\\$host; | |
| proxy_cache_bypass \\\$http_upgrade; | |
| } | |
| } | |
| EOT | |
| exit | |
| EOC | |
| sudo systemctl restart nginx | |
| #Logstash | |
| sudo apt-get install logstash -y | |
| sudo mkdir -p /etc/pki/tls/certs | |
| sudo mkdir /etc/pki/tls/private | |
| cd /etc/pki/tls; sudo openssl req -subj '/CN='$eip'/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt | |
| cat <<EOC | sudo su | |
| cat <<EOT > /etc/logstash/conf.d/02-beats-input.conf | |
| input { | |
| beats { | |
| port => 5044 | |
| ssl => true | |
| ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" | |
| ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" | |
| } | |
| } | |
| EOT | |
| exit | |
| EOC | |
| cat <<EOC | sudo su | |
| cat <<EOT > /etc/logstash/conf.d/10-syslog-filter.conf | |
| filter { | |
| if [type] == "syslog" { | |
| grok { | |
| match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" } | |
| add_field => [ "received_at", "%{@timestamp}" ] | |
| add_field => [ "received_from", "%{host}" ] | |
| } | |
| syslog_pri { } | |
| date { | |
| match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] | |
| } | |
| } | |
| } | |
| EOT | |
| exit | |
| EOC | |
| cat <<EOC | sudo su | |
| cat <<EOT > /etc/logstash/conf.d/11-syslog-apache.conf | |
| filter { | |
| if [source] =~ "apache" { | |
| if [source] =~ "access" { | |
| mutate { replace => { "type" => "apache_access" } } | |
| grok { | |
| match => { "message" => "%{COMBINEDAPACHELOG}" } | |
| } | |
| } else if [source] =~ "error" { | |
| mutate { replace => { type => "apache_error" } } | |
| } else { | |
| mutate { replace => { type => "apache_random"} } | |
| } | |
| date { | |
| match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] | |
| } | |
| } | |
| } | |
| EOT | |
| exit | |
| EOC | |
| cat <<EOC | sudo su | |
| cat <<EOT > /etc/logstash/conf.d/30-elasticsearch-output.conf | |
| output { | |
| elasticsearch { | |
| hosts => "localhost:9200" | |
| manage_template => false | |
| index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" | |
| document_type => "%{[@metadata][type]}" | |
| } | |
| } | |
| EOT | |
| exit | |
| EOC | |
| sudo systemctl daemon-reload | |
| sudo /usr/share/logstash/bin/logstash-plugin install logstash-input-beats | |
| sudo systemctl enable logstash.service | |
| sudo systemctl restart logstash.service | |
| #Packetbeat | |
| sudo apt-get install packetbeat -y | |
| cat <<EOC | sudo su | |
| cat <<EOT > /etc/packetbeat/packetbeat.yml | |
| packetbeat.flows: | |
| timeout: 30s | |
| period: 10s | |
| packetbeat.protocols.icmp: | |
| enabled: true | |
| packetbeat.protocols.amqp: | |
| ports: [5672] | |
| packetbeat.protocols.cassandra: | |
| ports: [9042] | |
| packetbeat.protocols.dns: | |
| ports: [53] | |
| include_authorities: true | |
| include_additionals: true | |
| packetbeat.protocols.http: | |
| ports: [80, 8080, 8000, 5000, 8002] | |
| packetbeat.protocols.memcache: | |
| ports: [11211] | |
| packetbeat.protocols.mysql: | |
| ports: [3306] | |
| packetbeat.protocols.pgsql: | |
| ports: [5432] | |
| packetbeat.protocols.redis: | |
| ports: [6379] | |
| packetbeat.protocols.thrift: | |
| ports: [9090] | |
| packetbeat.protocols.mongodb: | |
| ports: [27017] | |
| packetbeat.protocols.nfs: | |
| ports: [2049] | |
| output.logstash: | |
| hosts: ["$eip:5044"] | |
| ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"] | |
| EOT | |
| exit | |
| EOC | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable packetbeat.service | |
| curl -XPUT 'http://localhost:9200/_template/packetbeat' -d@/etc/packetbeat/packetbeat.template.json | |
| sudo /usr/share/packetbeat/scripts/import_dashboards | |
| #Metricbeat | |
| sudo apt-get install metricbeat -y | |
| cat <<EOC | sudo su | |
| cat <<EOT > /etc/metricbeat/metricbeat.yml | |
| metricbeat.modules: | |
| - module: system | |
| metricsets: | |
| - cpu | |
| - load | |
| - core | |
| - diskio | |
| - filesystem | |
| - fsstat | |
| - memory | |
| - network | |
| - process | |
| enabled: true | |
| period: 10s | |
| processes: ['.*'] | |
| output.logstash: | |
| hosts: ["$eip:5044"] | |
| ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"] | |
| EOT | |
| exit | |
| EOC | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable metricbeat.service | |
| curl -XPUT 'http://localhost:9200/_template/metricbeat' -d@/etc/metricbeat/metricbeat.template.json | |
| sudo /usr/share/metricbeat/scripts/import_dashboards | |
| #FileBeat | |
| sudo apt-get install filebeat -y | |
| cat <<EOC | sudo su | |
| cat <<EOT > /etc/filebeat/filebeat.yml | |
| filebeat.prospectors: | |
| - input_type: log | |
| paths: | |
| - /var/log/*/*.log | |
| - document_type: syslog | |
| paths: | |
| - /var/log/syslog | |
| output.logstash: | |
| hosts: ["$eip:5044"] | |
| ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"] | |
| EOT | |
| exit | |
| EOC | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable filebeat.service | |
| curl -XPUT 'http://localhost:9200/_template/filebeat' -d@/etc/filebeat/filebeat.template.json | |
| sudo /usr/share/filebeat/scripts/import_dashboards | |
| sudo systemctl restart filebeat | |
| sudo systemctl restart metricbeat | |
| sudo systemctl restart packetbeat | |
| ### | |
| # CREATE CLIENT INSTALL SCRIPT | |
| ### | |
| cat <<EOS > ~/ELK-client-install.sh | |
| sudo apt-get update | |
| sudo apt-get upgrade | |
| #Add Repo Info | |
| wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - | |
| sudo apt-get install apt-transport-https | |
| echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list | |
| sudo apt-get update | |
| #CERT | |
| sudo mkdir -p /etc/pki/tls/certs | |
| cat <<EOC | sudo su | |
| cat <<EOT > /etc/pki/tls/certs/logstash-forwarder.crt | |
| $(sudo cat /etc/pki/tls/certs/logstash-forwarder.crt) | |
| EOT | |
| exit | |
| EOC | |
| #Packetbeat | |
| sudo apt-get install packetbeat | |
| cat <<EOC | sudo su | |
| cat <<EOT > /etc/packetbeat/packetbeat.yml | |
| packetbeat.flows: | |
| timeout: 30s | |
| period: 10s | |
| packetbeat.protocols.icmp: | |
| enabled: true | |
| packetbeat.protocols.amqp: | |
| ports: [5672] | |
| packetbeat.protocols.cassandra: | |
| ports: [9042] | |
| packetbeat.protocols.dns: | |
| ports: [53] | |
| include_authorities: true | |
| include_additionals: true | |
| packetbeat.protocols.http: | |
| ports: [80, 8080, 8000, 5000, 8002] | |
| packetbeat.protocols.memcache: | |
| ports: [11211] | |
| packetbeat.protocols.mysql: | |
| ports: [3306] | |
| packetbeat.protocols.pgsql: | |
| ports: [5432] | |
| packetbeat.protocols.redis: | |
| ports: [6379] | |
| packetbeat.protocols.thrift: | |
| ports: [9090] | |
| packetbeat.protocols.mongodb: | |
| ports: [27017] | |
| packetbeat.protocols.nfs: | |
| ports: [2049] | |
| output.logstash: | |
| hosts: ["$eip:5044"] | |
| ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"] | |
| EOT | |
| exit | |
| EOC | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable packetbeat.service | |
| #Metricbeat | |
| sudo apt-get install metricbeat | |
| cat <<EOC | sudo su | |
| cat <<EOT > /etc/metricbeat/metricbeat.yml | |
| metricbeat.modules: | |
| - module: system | |
| metricsets: | |
| - cpu | |
| - load | |
| - core | |
| - diskio | |
| - filesystem | |
| - fsstat | |
| - memory | |
| - network | |
| - process | |
| enabled: true | |
| period: 10s | |
| processes: ['.*'] | |
| output.logstash: | |
| hosts: ["$eip:5044"] | |
| ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"] | |
| EOT | |
| exit | |
| EOC | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable filebeat.service | |
| #FileBeat | |
| sudo apt-get install filebeat | |
| cat <<EOC | sudo su | |
| cat <<EOT > /etc/filebeat/filebeat.yml | |
| filebeat.prospectors: | |
| - input_type: log | |
| paths: | |
| - /var/log/*/*.log | |
| - document_type: syslog | |
| paths: | |
| - /var/log/syslog | |
| output.logstash: | |
| hosts: ["$eip:5044"] | |
| ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"] | |
| EOT | |
| exit | |
| EOC | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable filebeat.service | |
| sudo systemctl restart filebeat | |
| sudo systemctl restart metricbeat | |
| sudo systemctl restart packetbeat | |
| EOS |
hi friends
this script still working now?
there some changes to do on this at today?
ok i make some change to work with version 6 of logstash,elastic (onli v6 repository link) and ai launch the script on my fresh install of ubuntu 16.04, but at the end of installation i received this message:
Executing /lib/systemd/systemd-sysv-install enable filebeat
Warning: Couldn't read data from file "/etc/filebeat/filebeat.template.json",
Warning: this makes an empty POST.
curl: (7) Failed to connect to localhost port 9200: Connection refused
sudo: /usr/share/filebeat/scripts/import_dashboards: command not found
i enable a log of elastic and found this:
java.lang.IllegalStateException: Unable to access 'path.data' (/usr/share/elasticsearch/data) etc....etc....
Please can someone help me?
i think there is an issue here, when i do "cat /etc/elasticsearch/elasticsearch.yml" it contains only a single line.
network.host: localhost